[翻译Joel On Software]选择一门语言/Choosing a language
Choosing a language
选择一门语言
by Joel Spolsky Sunday, May 05,2002
Why do developerschoose one programming language over another for a given task?
为什么对一项给定的任务,开发者会偏向于选择某一门语言?我啥事也干不了。
Sometimes I choose raw C when I needblazing speed.
有时候当我需要飞速的时候我会选择原始C语言。
When I want something that will run onWindows with as small a distribution as possible, I often choose C++ with MFC staticallylinked.
当我要写个东西运行在Windows而且希望发布包越小越好的时候,我通常会选择静态链接的MFC C++。
When we need a GUI that will runon Mac, Windows, and Linux, a common choice is Java (although the GUI willnot be perfect, it will work.)
当我们需要一个能够在Mac,Windows和Linux上面运行的GUI界面程序的时候,一个通常的选择就是Java(虽然GUI界面不完美,但至少是能工作的)
For rapid GUI development and reallysmooth UIs, I like Visual Basic, but I know that I'm going to have to pay theprice in the size of the distributable and the fact that I'll be locked intoWindows.
对于快速的GUI开发和非常平滑的界面开发,我喜欢Visual Basic,但我知道我要付出的代价是发布包的大小和我会被框定在Windows平台上。
For a command-line tool that must run onany UNIX machine and doesn't need to be fast, perl is a good choice.
对于必须运行在UNIX机器上的命令行工具,而且不需要非常快的话,perl是个不错的选择。
If you have to run inside a web browser,JavaScript is the really the only choice. In a SQL stored procedure, youusually get to choose between one vendor's proprietary SQL derivative or gohome.
如果必须要运行在web浏览器里,JavaScript实际上是唯一的选择了。在一个SQL写成的存储过程里,你通常要选择一个供应商所有的SQL方言或者 放弃。
What's the Point?重点是什么?
But I hardly ever choose a language basedon syntax. Yeah, I prefer the {}; languages (C/C++/C#/Java). And I have lots ofopinions as to what makes a "good" syntax. But I wouldn't accept a 20MB runtime just to get semicolons.
但我几乎不会因为语法选择一门语言。是的,我更喜欢{};语言(C/C++/C#/Java)。而且对于什么是“好”的语法我有很多观点。但我不会为了要分号而接受一个20MB的运行时库。
Which makes me wonder a bit about .NET'scross-language strategy. The idea is, choose any language you want, there arezillions, and they all work the same way.
这让我对.NET的跨平台策略感到有点惊奇。想法是,选择任何你想要的语言,已经有不计其数的语言,他们的工作方式都是相同的。
VB.NET and C#.NET are virtually identicalexcept for tiny syntactic differences. And other languages that want to be partof the .NET world need to support at least a core set of features and types orthey won't be able to Play Well With Others. But how do I develop a UNIXcommand line utility in .NET? How do I develop a tiny Windows EXE in less than16K in .NET?
VB.NET和C#.NET除了略微的语法不同之外几乎是一样的。并且其他的语言如果想要成为.NET世界里的一员的话,就必须支持一堆核心的特性和类型,否则他们就无法和.NET世界里的其他成员很好共存。但是我要如何才能使用.NET创建一个UNIX命令行呢?我如何才能使用.NET创建一个小于16K的Windows可执行程序。
It seems like .NET gives us a"choice" of languages precisely where we couldn't care less about it-- in the syntax.
看起来.NET似乎给了我们一种语言选择,在语法上要操心更多。
[翻译Joel On Software]选择一门语言/Choosing a language的更多相关文章
- 如何设计一门语言(十)——正则表达式与领域特定语言(DSL)
几个月前就一直有博友关心DSL的问题,于是我想一想,我在gac.codeplex.com里面也创建了一些DSL,于是今天就来说一说这个事情. 创建DSL恐怕是很多人第一次设计一门语言的经历,很少有人一 ...
- 【Go语言学习笔记】为什么要选择Go语言
一门语言的兴起一定有他的原因,所谓天下苦Java久矣,Go的到来可以说很多后端开发的福音,尤其是在微服务.分布式这么火的今天,那么,他的优势到底是什么呢? 首先,我们需要现有后端语言的优势痛点: 其实 ...
- 如何设计一门语言(八)——异步编程和CPS变换
关于这个话题,其实在(六)里面已经讨论了一半了.学过Haskell的都知道,这个世界上很多东西都可以用monad和comonad来把一些复杂的代码给抽象成简单的.一看就懂的形式.他们的区别,就像用js ...
- 早日选择一门自己喜欢的,然后瞄准目标,不达目的誓不罢休。像文章的作者一样成为一名成功的IT人士。
hawk的奋斗历程. 来自:LinuxForum :http://www3.linuxforum.net/ 原址:http://www.linuxforum.net/forum/gshowflat. ...
- 选择Go语言的12个理由
编者按:多核化和集群化是互联网时代的典型特征,那语言需要哪些特性来应对这些特征呢?多数语言在语法层面并不直接支持协程,而通过库的方式支持的协程的功能也并不完整,比如仅仅提供协程的创建.销毁与切换等能力 ...
- InnoSetup 安装选择不同语言,修改软件配置参数,达到安装语言就是软件语言效果
需求 在软件安装时,选择中英文安装界面,选择的中英文界面就是对应软件内界面语言. 在软件安装时,选择中文界面,打开软件就是中文界面. 在软件安装时,选择英文界面,打开软件就是英文界面. 实际上,就是在 ...
- Windows 7 SP1 多国语言包(MUI language packs)官方下载
为了装一款 Gal Game (为毛不是装 H-Game?),使用 APP 还是太辛苦了,反正相信童鞋们也都用上“瘟妻”了嘛,装个日文的语言包基本上就可以解决问题了.大家都知道只有旗舰版(Wind ...
- Oracle PL/SQL 语言(Procedural Language/SQL)
Oracle PL/SQL 语言(Procedural Language/SQL)是结合了结构化查询与 Oracle 自身过程控制为一体的强大语言,PL/SQL 不但支持更多的数据类型,拥有自身的变量 ...
- 着色语言(Shader Language)
摘抄"GPU Programming And Cg Language Primer 1rd Edition" 中文名"GPU编程与CG语言之阳春白雪下里巴人" ...
随机推荐
- localstorage是什么,它有哪些作用
localStorage作为HTML5本地存储web storage特性的API之一,主要作用是将数据保存在客户端中,而客户端一般是指上海网站设计用户的计算机.在移动设备上,由于大部分浏览器都支持 w ...
- fio 测试磁盘
root@rook-test:/# ceph osd status+----+-----------------------------+-------+-------+--------+------ ...
- js 删除节点,jquery遍历通过内容定位节点
$(".class1 .class2").each(function (index, item) { var gettedValue = $(item).find(".c ...
- spring 在web容器启动时执行初始化方法
开发框架:spingMVC+myBatis 解决方案:给web容器添加一个Listener类,在容器启动的时候执行Listener的“初始化”方法,在这个初始化方法中执行查询数据库的所有操作,然后将数 ...
- NavMesh KeyNote
[NavMesh KeyNote] 1.NavMesh.CalculatePath(srcPos, desPos) 若srcPos,desPos相等,则CalculatePath返回false. 2. ...
- Django1.8:403错误:CSRF verification failed. Request aborted.
问题:Django 403错误:CSRF verification failed. Request aborted. 原因:需要加cookie验证 解决方法: 1.在view.py中增加 fr ...
- 【转】从源码浅析MVC的MvcRouteHandler、MvcHandler和MvcHttpHandler
原文:http://www.cnblogs.com/jeffwongishandsome/archive/2012/01/08/2316521.html 熟悉WebForm开发的朋友一定都知道,Pag ...
- Django之XSS攻击
一.什么是XSS攻击 xss攻击:----->web注入 xss跨站脚本攻击(Cross site script,简称xss)是一种“HTML注入”,由于攻击的脚本多数时候是跨域的,所以称 ...
- HHVM中文网
HHVM中文网 百科资料 下载安装 HHVM文档 HHVM&Hack博客 <Hack与HHVM权威指南> 更多Facebook技术站 HHVM中文网 Facebook出品高性能服 ...
- Linux gprof命令
一.简介 gprof是GNU工具之一,它在编译的时候在每个函数的出入口加入了profiling的代码,运行时统计程序在用户态的执行信息,可以得到每个函数的调用次数,执行时间,调用关系等信息,简单易懂. ...