我眼中的各种编程语言

2013-10-30  来源:本站原创  分类:编程  人气:1 

所有的编程语言我都讨厌。曾经我想自创一门语言,但我没搞明白到底需要一门什么语言,所以也从未开始过。 许多时候,你没法选择使用哪种语言。不管我在用哪种语言,我都尝试去接受它的优点和缺点。

Java

喜欢Java的人肯定喜欢打字。我指的就是敲打键盘上的键。你得不断地重复又重复。

设计Java系统的人是个疯子,他解决问题的方式就是,设计模式。如果你把设计模式看作是这个语言中解决问题的一种方式,那么你会发现Java里有许多这样的设计模式。

另一方面,Sun的这些家伙的确是费了点心思在Java规范上的,这使得它能运行在嵌入式系统上,所以这块我们还是坚持在使用它。我很难相信Python或者C在我的手机桌面系统上运行。

还有,那些个目录又是怎么回事?我必须得使用Eclipse,因为只有它知道怎么跳过那1000个字长的路径名。如果我在应用的同一个目录下放10个类,会不会 伤害到某些人?

C

C是精确的。当我用C写程序的时候,如果搞定了,我知道它是靠谱的。它就像是用一把小刷子在画一幅巨作。在这么详细的层面上写代码需要一种不同的心态。当你坐下来写C的时候,在动手之前你就得规划好到底怎么写。否则后面肯定得费很多工夫去改。

如果你的经验足够丰富,内存泄露这种事就不太会找上门。它的第二特性——malloc/free总是形影不离。你不能忘了任何一个。否则就像是忘了冲水或者关灯。你就这么做就是了。

有句话说得好,如果你打算给房子上漆,一把好刷子可远远不够。我猜你肯定想要个大滚轴。如果让我写一整个应用或者系统,能不用C的话我肯定不用。

C程序想要进行改动可得费老劲了。当我写算法的时候,我知道第一遍肯定是不会对的,所以我通常都先用Python写,搞定了之后再翻译成C的。

C++

它就是个有string类的C。同时还有数组,列表,队列等东西,你可以用它们来实现你想要的。一言以蔽之:别想着自创新模板。这太困难了。除了这个,C++还改良了一下C,用C++你可以写出非常不错的软件。它这个额外的特性使得它可以用于一些大型系统上,只要大家都还遵循同样的约束的话,难度还不算太大。

JavaScript

这是个没人喜欢的语言。不过它喜欢你。当你刚开始学习它的时候,你可能会写出一些非常糟糕的代码,把对象用作字典,别的对象作KEY,不过这样也是OK的,因为这些代码运行起来也没有什么问题,只要浏览器还支持JavaScript就好。

JavaScript没有连接器,因此所有的代码都共享一个命名空间,不过还好大家都知道这一点,所以还能一起和谐相处。

CoffeeScirpt

CoffeeScirpt是一个解释器,它将那些长得像Ruby的奇怪的语言逐行地翻译成JavaScript。它是一个拥有所有外来语法的JavaScript——括号,方括号,额外关键字移除。只有代码的基本含义还保留着。

CoffeeScirpt挺不错的。如果你要写很多代码的时候,它能让你提高至少25%的效率。你可以一次在屏幕上看到更多行的代码。

当你用CoffeeScript写代码的时候,你得时刻记住这是要生成JavaScript的。问题就在这。你得先去学习JavaScript。项目来的新人都得先学JavaScript,然后才能学CoffeeScript,最后才能去学习项目代码。

node.js

我也希望能爱上它。我觉得我给过它机会了。它的回调让我无法忍受。我知道会有这么一天,因为某个原因,其中一个回调并没有出现,然后我的应用就会堵在那一直等待。真是要了命了。

还有一点就是,它几乎没有内建任何东西。如果你要做某件事情,总是会有一大堆模块来实现这个功能的。该选哪个呢?如果出现问题了,哪个模块会有人来支持?

Scala

Scala是一门函数式,强类型的语言,它会编译成JVM代码。

我是在工作中学的Scala。有一家初创公司的生产系统用的是它,我是在后期才加入他们的。

这让我看到了Scala丑陋的一面:类型推导。类型推荐被它用到了极致。每个对象都有类型,不过想确定它是什么类型的,你得检查不同分层上的好几个文件才行。Scala也继承了Java的文件夹的坏毛病,因此你要查找某个类型的话得进入好几层目录才能找到对应的那个文件。

简而言之,Scala是极好的——对于那些最初的开发人员而言。新加入的成员为了熟悉现有的代码,得有一个很长的学习曲线。

Erlang

Erlang也是我曾经想爱上的一位。我真的努力了。它是一门美丽的函数式语言,它可以写出很精致的小模块,它们以一种精确的方式进行通信,你的系统可以运行10年以上,因为它能处理未知问题,如果必要的话还会重启,然后继续运行。

不过它的结构太复杂了。开发似乎要停留在伯克利发明socket的那个年代。当前时代所需的东西几乎一样都没有。为什么开发一个简单的WEB服务需要费这么大的工夫?

Go

Go很容易学习,对于新人而言也是如此。它使用40年前的语言概念来构建一个健壮的异步系统,但它让你能像写同步代码一样编程。你可以不费吹灰之力写出1000个可以安全工作的线程。

在库支持方面它仍需要改进。当我想做某事的时候,该用哪个库——github上2011年的那个,还是2013年开始的那个半成品?一个是官方主页链接的,不过它的官方主页看起来并不是最新的。好吧,我觉得我还是自己写一个吧。。。

还有,为什么追加元素到数组里也这么费劲?

Python

在Python里,不管你想做什么都会有一个对应的库,如果你用的是Linux,它绝对是不二选择,因为它可以一键安装。

如果你想做些数字处理或者科学运算,选择Python吧,你值得拥有。

Python中的字符串即可能是文本的也可能是二进制的,因此你得上来就学习下文本编码的东东。

Python 3

Python 3和Python有许多共同的特性,不过它却是门不同的语言。由于它比较新,因此支持的并不是很好。我也想使用它,不过总会有那么一个库,它是只支持Python 2的。

相关文章
  • 我眼中的各种编程语言 2013-10-30

    所有的编程语言我都讨厌.曾经我想自创一门语言,但我没搞明白到底需要一门什么语言,所以也从未开始过. 许多时候,你没法选择使用哪种语言.不管我在用哪种语言,我都尝试去接受它的优点和缺点. Java 喜欢Java的人肯定喜欢打字.我指的就是敲打键盘上的键.你得不断地重复又重复. 设计Java系统的人是个疯子,他解决问题的方式就是,设计模式.如果你把设计模式看作是这个语言中解决问题的一种方式,那么你会发现Java里有许多这样的设计模式. 另一方面,Sun的这些家伙的确是费了点心思在Java规范上的,这

  • 趣图:程序员眼中的编程语言 2014-08-16

    下图是一个搞笑的图片--程序员眼中的编程语言. 图片的横轴是编程语言. 纵轴是各语言的程序员.粉丝.信徒. 中间的各个小图片则是,粉丝眼中的编程语言的形象. 比如说, 第一行第一列,是Java程序员看Java语言的样子,一幢现代化的大厦. 第一行第二列,是Java程序员看C语言,一个年老过时的骨灰级老头. 当然,C程序员看Java语言也比较搞,见第二行第一列.呵呵. 其它的大家自己看吧.还有另外一个关于操作系统的<趣图:粉丝眼中的操作系统> 本文来自:http://coolshell.cn/?

  • 开发者眼中的编程语言-- 2014-08-29

    摘要:对于想加入开发队伍的初学者来说,入门的编程语言究竟要先选哪一个呢?是永恒经典的C语言,还是方兴未艾的Object-C抑或其它神器?本文为大家简述下当前流行的八款入门神器,看看各位开发者眼中的编程语言是怎样的. 对于想加入开发队伍的初学者来说,入门的编程语言究竟要先选哪一个呢?是永恒经典的C语言,还是方兴未艾的Object-C抑或其它神器?若想直接得出确切的答案,这无疑是程序员界的哥德巴赫猜想:萝卜白菜,各有所爱,每种语言都有自己的优点和缺点.不过,对于初学者来说,先为自己做个初步定位,是有

  • 程序员眼中的编程语言 2012-09-08

    下图是一个搞笑的图片--程序员眼中的编程语言. 图片的横轴是编程语言. 纵轴是各语言的程序员.粉丝.信徒. 中间的各个小图片则是,粉丝眼中的编程语言的形象. 比如说, 第一行第一列,是Java程序员看Java语言的样子,一幢现代化的大厦. 第一行第二列,是Java程序员看C语言,一个年老过时的骨灰级老头. 当然,C程序员看Java语言也比较搞,见第二行第一列.呵呵. 其它的大家自己看吧.还有另外一个关于操作系统的<粉丝眼中的操作系统> (转载本站文章请注明作者和出处 酷壳 – CoolShel

  • 趣图:粉丝眼中的操作系统 2014-02-24

    在发布完<趣图:程序员眼中的编程语言>一文后,发现网上还有一个关于操作系统的.如下所示. 图片的横轴是三大操作系统. 纵轴是各操作系统的粉丝和信徒. 中间的各个小图片则是,粉丝眼中的操作系统的形象. 关于操作系统 下面这一张图也很有意思 本文来自:http://coolshell.cn/?p=1998

  • 我眼中的CTO:立足现在,着眼未来 2014-05-21

    摘要:本文首先通过国内外行业内对CTO的定义及工作职责的介绍,归纳出在本人眼中CTO所应该具备的三个基本方面的知识与技能,即技术方面.商务方面以及项目管理方面的知识与技能.其次是提出衡量一个CTO是否杰出的两个因素.其中主要因素是对技术未来发展趋势的把握,另一个因素是能够根据企业实际情况制定出合理的技术路线.在谈到把握未来技术发展趋势时,本人根据自身经验对未来技术发展进行了预测,认为未来技术的发展主要三个方面的整合.即软件的应用及架构整合,硬件的整合,用户体验的整合.最后在文章的结尾介绍了本人参

  • 程序员眼中的苹果Swift语言:简单 易学 高效 2015-02-27

    [摘要]Swift正式曝光在镁光灯前,叹息声.惊呼声此起彼伏.不过不用太过担心,Objective-C.Swift能够在同一个应用程序中并存. 对于苹果开发者来说,如今已经进入了"Swift时代".虽然编程语言Objective C备受喜爱,不过它作为苹果主流编程语言的日子已经所剩无几.随着WWDC开发者大会的落幕,Swift即将取而代之,成为苹果新iOS 8.OS X Yosemite的新宠. 美国时间6月2日举行的苹果WWDC大会上,Swift正式曝光在镁光灯前,叹息声.惊呼声此起

  • 粉丝眼中的操作系统 2012-09-08

    在发布完<程序员眼中的编程语言>一文后,发现网上还有一个关于操作系统的.如下所示. 图片的横轴是三大操作系统. 纵轴是各操作系统的粉丝和信徒. 中间的各个小图片则是,粉丝眼中的操作系统的形象. 关于操作系统,还有这一张图也很有意思. (转载本站文章请注明作者和出处 酷壳 – CoolShell.cn ,请勿用于任何商业用途) --------============ 感谢 42qu.com 为本站提供 VPS ============--------

  • 一个开发眼中的运维 2015-02-25

    在云计算时代,开发和运维的结合变得越来越重要.在 DIFF论坛第一期,前新浪SAE运维主管, 郑志勇,分享了<一个开发眼中的运维>根据自己从开发人员转型运维之后的心得,谈如何把在开发上的运用抽象思维方式运用到运维领域. 1. 运维不是什么? 运维不是打杂的,运维不是客服,运维也不是服务开发的,但要做好合作. 2. 运维是什么? 运维服务于整个产品,保证架构合理,系统稳定.运维只对业务稳定负责,所有的工作都是奔着这个去的. 3. 你如何写程序,写程序的目的是什么? 程序是为了完成特定的功能.为了

  • 编程语言 Perl 2008-09-13

    Perl 网站 : http://www.perl.org/ Perl是一种脚本语言. 最初的设计者为拉里·沃尔(Larry Wall),它於1987年12月18日發表.Perl借取了C.sed.awk.shell scripting 以及很多其他程式語言的特性.其中最重要的特性是他内部集成了正则表达式的功能,以及巨大的第三方代码库 CPAN. Perl原名pearl,但是在這個語言官方發表前,拉里·沃尔發現已經有個程式語言"pearl",便將這個程式語言的名字改成Perl.对于Per

  • 动态类型编程语言 Ruby 2008-09-15

    Ruby 网站 : https://www.ruby-lang.org/ Ruby是一种跨平台.面向对象的动态类型编程语言.Ruby 体现了表达的一致性和简单性,它不仅是一门编程语言,更是表达想法的一种简练方式. Ruby的作者于1993年2月24日开始编辑Ruby,直至1995年12月才正式公开发布于fj(新聞群組).之所以称为Ruby,是因为Perl的发音与6月的诞生石pearl(珍珠)相同,因此Ruby以7月的诞生石ruby(红宝石)命名. Ruby明显比其他类似的编程語言(如Perl或P

  • 编程语言 Erlang 2008-11-09

    Erlang 网站 : http://www.erlang.org/ Erlang是一个结构化,动态类型编程语言,内建并行计算支持.最初是由爱立信专门为通信应用设计的,比如控制交换机或者变换协议等,因此非常适 合于构建分布式,实时软并行计算系统. 使用Erlang编写出的应用运行时通常由成千上万个轻量级进程组成,并通过消息传递相互通讯.进程间上下文切换对于Erlang来说仅仅 只是一两个环节,比起C程序的线程切换要高效得多得多了. 使用Erlang来编写分布式应用要简单的多,因为它的分布式机制是

  • 编程语言 Scala 2008-11-11

    Scala 网站 : http://www.scala-lang.org/ Scala是一门现代的多范式编程语言,志在以简练.优雅及类型安全的方式来表达常用编程模式.它平滑地集成了面向对象和函数语言的特性. Scala是面向对象的:Scala是一个纯面向对象语言,在某种意义上来讲所有数值都是对象.对象的类型和行为是由class和trait来描述的.Class的抽象可由子类化和一种灵活的基于mixin的组合机制(它可作为多重继承的简单替代方案)来扩展. Scala是函数式的: Scala还是一个函

  • 编程语言 Scheme 2009-03-25

    Scheme 网站 : http://groups.csail.mit.edu/mac/projects/scheme/ Scheme语言是LISP语言的一个方言(或说成变种),它诞生于1975年的MIT,对于这个有近三十年历史的编程语言来说,它并没有象 C++,java,C#那样受到商业领域的青睐,在国内更是鲜为人知.但它在国外的计算机教育领域内却是有着广泛应用的,有很多人学的第一门计算机语言就 是Scheme语言. 它是一个小巧而又强大的语言,作为一个多用途的编程语言,它可以作为脚本语言使用

  • Falcon编程语言 2009-04-02

    Falcon编程语言 网站 : http://www.falconpl.org/ Falcon编程语言(The Falcon Programming Language),和 Falcon P.L., Falconpl 或者简称Falcon, 是一个开源, 多范式 编程语言. 设计和实现由Giancarlo Niccolai领导. 不同于关注于一个编程风格或范式(paradigm),Falcon在一个简单的框架(framework)里融合了几种不同的风格.在实现级别上,Falcon是服务概念驱动的

  • 商用编程语言 COBOL 2009-04-12

    COBOL 网站 : http://www.microfocus.com/solutions/cobol/ COBOL(面向商业的通用语言,又称为企业管理语言.数据处理语言等,Common Business Oriented Langauge)是最早的高级编程语言之一,是世界上第一个商用语言. COBOL是一种面向数据处理的.面向文件的.面向过程(POL)的高级编程语言,是一种功能很强而又极为冗长的语言. COBOL适合于具有循环处理周期的环境(例如打印工资支票)以及数据操纵量相当大的环境.CO

  • 编程语言可扩展框架 LayerD 2009-05-26

    LayerD 网站 : http://www.oschina.net/action/project/go?id=8740&p=home LayerD是为了建立一个可扩展框架的编程语言.它具有无限的编译时间可编程,模块化设计,热插拔代码生成的,统一的高层次语义,多源语言,整合的 RAD工具,编译器和语言,发展领域特定语言,抽象的软件开发,广泛的功能代码生成和元编程.它的实施能够实现软件的. NET和Java字节码使用一种高级语言是可扩展的编程编译时的功能.有一个Java的前端,使这一新的编程框架使

  • 编程语言 OCaml 2009-06-01

    OCaml 网站 : http://caml.inria.fr/index.en.html Objective Caml(OCaml)是Caml编程语言的主要实现,由Xavier Leroy,Jérôme Vouillon,Damien Doligez,Didier Rémy及其他人于1996年创立.OCaml是开放原始码项目.此项目的管理和大部分维护工作交由INRIA. 由于caml的读音与camel一致,Ocaml的吉祥物自然被定为骆驼,而以Ocaml服务为主的软件也通常以骆驼的形象作为其L

  • 逻辑编程语言 Prolog 2009-07-12

    Prolog 网站 : http://www.gprolog.org/ Prolog(Programming in Logic的缩写)是一种逻辑编程语言.它建立在逻辑学的理论基础之上, 最初被运用于自然语言等研究领域.现在它已广泛的应用在人工智能的研究中,它可以用来建造专家系统.自然语言理解.智能知识库等. Prolog语言最早由Aix-Marseille大学的Alain Colmerauer与Phillipe Roussel等人于60年代末研究开发.1972年被公认为是Prolog语言正式诞生

  • Google的编程语言 Go 2009-11-11

    Go 网站 : http://golang.org/ Go是Google开发的一种编译型,並發型,并具有垃圾回收功能的编程语言. 罗伯特·格瑞史莫(Robert Griesemer),罗勃·派克(Rob Pike)及肯·汤普逊于2007年9月开始设计Go语言,,稍后Ian Lance Taylor, Russ Cox加入项目中.Go语言是基于Inferno操作系统所开发的.Go语言于2009年11月正式宣布推出,成为开放源代码项目,并在Linux及Mac OS X平台上进行了实现,后追加Wind