Joel on Software

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的更多相关文章

  1. 如何设计一门语言(十)——正则表达式与领域特定语言(DSL)

    几个月前就一直有博友关心DSL的问题,于是我想一想,我在gac.codeplex.com里面也创建了一些DSL,于是今天就来说一说这个事情. 创建DSL恐怕是很多人第一次设计一门语言的经历,很少有人一 ...

  2. 【Go语言学习笔记】为什么要选择Go语言

    一门语言的兴起一定有他的原因,所谓天下苦Java久矣,Go的到来可以说很多后端开发的福音,尤其是在微服务.分布式这么火的今天,那么,他的优势到底是什么呢? 首先,我们需要现有后端语言的优势痛点: 其实 ...

  3. 如何设计一门语言(八)——异步编程和CPS变换

    关于这个话题,其实在(六)里面已经讨论了一半了.学过Haskell的都知道,这个世界上很多东西都可以用monad和comonad来把一些复杂的代码给抽象成简单的.一看就懂的形式.他们的区别,就像用js ...

  4. 早日选择一门自己喜欢的,然后瞄准目标,不达目的誓不罢休。像文章的作者一样成为一名成功的IT人士。

    hawk的奋斗历程. 来自:LinuxForum  :http://www3.linuxforum.net/ 原址:http://www.linuxforum.net/forum/gshowflat. ...

  5. 选择Go语言的12个理由

    编者按:多核化和集群化是互联网时代的典型特征,那语言需要哪些特性来应对这些特征呢?多数语言在语法层面并不直接支持协程,而通过库的方式支持的协程的功能也并不完整,比如仅仅提供协程的创建.销毁与切换等能力 ...

  6. InnoSetup 安装选择不同语言,修改软件配置参数,达到安装语言就是软件语言效果

    需求 在软件安装时,选择中英文安装界面,选择的中英文界面就是对应软件内界面语言. 在软件安装时,选择中文界面,打开软件就是中文界面. 在软件安装时,选择英文界面,打开软件就是英文界面. 实际上,就是在 ...

  7. Windows 7 SP1 多国语言包(MUI language packs)官方下载

      为了装一款 Gal Game (为毛不是装 H-Game?),使用 APP 还是太辛苦了,反正相信童鞋们也都用上“瘟妻”了嘛,装个日文的语言包基本上就可以解决问题了.大家都知道只有旗舰版(Wind ...

  8. Oracle PL/SQL 语言(Procedural Language/SQL)

    Oracle PL/SQL 语言(Procedural Language/SQL)是结合了结构化查询与 Oracle 自身过程控制为一体的强大语言,PL/SQL 不但支持更多的数据类型,拥有自身的变量 ...

  9. 着色语言(Shader Language)

    摘抄"GPU Programming And Cg Language Primer 1rd Edition" 中文名"GPU编程与CG语言之阳春白雪下里巴人" ...

随机推荐

  1. Usage of “symmetrical” and “symmetric”

    What is the appropriate usage of "symmetrical" and "symmetric" (using the geomet ...

  2. Windows phone 自定义控件(无外观控件)——ColorPicker

    编码前 在上一篇博客中,写的是一个UserControl的子类,它具有固定的外观(虽然也可以通过样式来进行修改,但受到的限制很大).如果你想要使用这个控件的逻辑,但是希望在使用的时候可以更改控件的外观 ...

  3. 转)ubuntu安装clang

    主要参考:http://blog.csdn.net/firebird321/article/details/48528569 1.下载源码 去http://llvm.org/releases/down ...

  4. 转 Appium for Mac 环境准备篇

    转发地址:http://www.cnblogs.com/oscarxie/p/3894559.html 1. 爬墙因为后续安装过程中可能会碰到墙的问题,所以首先得解决爬墙的问题.我的方便,公司提供代理 ...

  5. 42-python中的矩阵、多维数组----numpy

    xzcfightingup   python中的矩阵.多维数组----numpy 1. 引言 最近在将一个算法由matlab转成python,初学python,很多地方还不熟悉,总体感觉就是上手容易, ...

  6. ADF学习实用网站

    ADF中所有组件工功能例子 http://jdevadf.oracle.com/adf-richclient-demo/faces/components/dialog.jspx;jsessionid= ...

  7. Halcon开发环境和数据结构介绍——第1讲

    1.Halcon是什么?如何初步了解Halcon? 这点我讲得不太好,不如给大家看看三个链接: ① Halcon官方网站:https://www.mvtec.com/products/halcon/ ...

  8. Golang之Mysql操作

    话说当年武大郎对着电脑一顿噼里啪啦,,,对mysql增删改查 增加insert package main import ( "fmt" "github.com/jmoir ...

  9. PAT 1035 插入与归并(25)(代码+思路+测试点分析)

    1035 插入与归并(25 分) 根据维基百科的定义: 插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列.每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置.如此迭代直到 ...

  10. codevs1246 丑数

    题目描述 Description 对于一给定的素数集合 S = {p1, p2, ..., pK}, 来考虑那些质因数全部属于S 的数的集合.这个集合包括,p1, p1p2, p1p1, 和 p1p2 ...