所有的编程语言我都讨厌。曾经我想自创一门语言,但我没搞明白到底需要一门什么语言,所以也从未开始过。
许多时候,你没法选择使用哪种语言。不管我在用哪种语言,我都尝试去接受它的优点和缺点。
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的。
原创文章转载请注明出处:
http://it.deepinmind.com
英文原文链接
分享到:
相关推荐
该文档是Anders在比利时的TechDays 2010及荷兰DevDays 2010分别进行了一场演讲,阐述了他眼中对于编程语言的发展趋势及未来方向,本文便对他的观点进行了总结。需要的可以下载使用~不方便,请下方留言!
从 Perl 最早的文本处理语言开始,它已经发展成为一种非常复杂的,通用的编程语言,以及完整的开发环境,包括调试器,调节器,交叉引用,编译器,库,语法提示编辑器,以及所有其它“真正”的编程语言所具有的所有...
良好的编程习惯是编程者的基本素养,它不仅有助于个人代码质量的提升,还能让团队协作更加...这些良好的编程习惯不仅适用于单片机编程,也普遍适用于各种软件开发项目,能够提高代码质量,减少错误,提升团队协作效率。
面向接口编程是一种编程范式,它是面向对象编程(OOP)的一个重要组成部分,而非独立的编程思想。在面向接口编程中,我们关注的是定义清晰、明确的行为规范,而不是具体的实现细节。接口作为一种契约,规定了类必须...
JavaScript函数式编程是一个存在了很久的话题,但似乎从2016 年开始,它变得越来越火热。...Haskell等纯函数式编程语言的。而本文旨在聊一聊我眼中的函数式编程在JavaScript中的具体实践,之所以是
Visual C++ 6.0是微软发布的一款集成开发环境,支持C++编程语言,它提供了图形化的用户界面(GUI)来编写、调试和管理代码。对于新手来说,它简化了代码编辑、编译和调试的过程,而对于专业人士,其强大的调试工具和...
【标题】"CTFshow-菜狗杯-WEB-变量循环取值-我的眼里只有$" 指的是一项网络安全竞赛中的Web题目,该题目重点在于理解PHP编程语言中的变量循环取值机制。在CTF(Capture The Flag)比赛中,参赛者通常需要解决各种...
讲述一个程序员成长的六个阶段: 1、能熟练地使用某种语言,这相当于练武中的套路和架式这些表面的东西。 2、精通基于某种平台的接口(如win的API),以及所对应语言的...这时,Win32或Linux在眼里是没有什么区别的。
标题与描述强调了汇编语言复习的关键点,涵盖了计算机...综上所述,汇编语言的学习涉及计算机原理、数据表示、存储器管理、指令集分析等多个层面的知识,掌握这些基础是深入理解低级编程语言和提升程序开发能力的关键。
指针是C和C++编程语言中一个非常核心且复杂的概念。它不仅是语言的难点之一,也是其强大功能的一个重要体现。理解指针需要掌握以下几个关键的知识点: 1. 指针的基本概念 指针是一种特殊类型的变量,它存储的是另一...
尽管存在争议,C++仍然是当今最受欢迎的编程语言之一,广泛应用于各种关键系统和应用中。比如,主流的网络浏览器如Chrome、Firefox、Internet Explorer和Opera都大量使用了C++。即使是苹果自家的Safari浏览器,也...
Java是一种广泛使用的面向对象的编程语言,以其“一次编写,到处运行”的特性而著名。五子棋源码是用Java编写的,这意味着它遵循了Java的语法、类库和面向对象的设计原则。开发者可能使用了Java Swing或JavaFX来构建...
学过CSS的人都知道,它不是一种编程语言。 你可以用它开发网页样式,但是没法用它编程。也就是说,CSS基本上是设计师的工具,不是程序员的工具。在程序员眼里,CSS是一件很麻烦的东西。它没有变量,也没有条件语句...
《R的极客理想·工具篇》首先介绍了R的工具包、时间序列包和性能监控包,然后阐述R语言与其他编程语言的通信以及R语言作为服务器的应用,最后阐释R语言与各种数据库的通信以及R语言与Hadoop集成。附录介绍了Java、...
源码是程序员用编程语言编写的原始指令,通过它们我们可以洞察游戏的工作原理和设计思路。 首先,我们可以从中学习到游戏开发的基础知识。游戏通常由多个部分组成,包括用户界面(UI)、游戏逻辑、动画、声音管理、...
【汇编语言程序设计教学改革】是针对当前高校计算机专业中汇编语言课程面临的挑战而进行的探索。...通过这样的改革,汇编语言将不再是学生眼中的难题,而是成为他们理解计算机系统、提升专业素养的有力工具。
Ruby作为一门现代的编程语言,凭借其动态性、灵活性和简洁的语法,为开发者提供了前所未有的编程体验。尽管在工业级应用中可能面临一定的挑战,但Ruby在快速开发、原型设计和Web应用等领域展现出了巨大的潜力。掌握...