资讯专栏INFORMATION COLUMN

采用一门新编程语言,或不采用

noONE / 1783人阅读

摘要:在此过程中还有其它语言我发现有意思,但是没有找到足够时间或实践机会去真正学习它们,或浮现在脑海。或许我应当尽量发起下一步我们应当采用哪种语言的某种共识不过我担心兴趣不够而剩下和的老路。

我大体上对编程语言感兴趣。特别低,我一直对另一门编程语言 如何能够提供给我表达程序的新特性以及允许我成长为一名程序员 感到好奇。

我在校时学到了第一门语言。那儿的电脑------一屋子都是PET 2001,那时候他们是新潮的------只有BASIC,很快就让我失望了。在大学,我开始了一门Pascal的课程,闲暇做了很多编程。Pascal很快填补了我在BASIC发现的恼人的不足。

带着兴趣我学习了FORTRAN基础,但是从来没有真正用过。Modula 2 出现了,甚至有更大的编程分配,但是没有真正引起我的兴趣。我发现Ada更有意思,不过在进程控制课程之外很少有机会使用。我接触了一点儿Forth,但是再一次没有真正的应用程序来实践。

当我接触C时,最终被吸引住了。那是,最终的,“真正的语言”,在某种程度上,我可以完全掌控的一门语言,不仅在技术情景------对于我的大部分专业生涯,它是让我过得很好的主要因素之一。

我在大学还学了其它有意思的语言,比如,Tcl,不是最伟大的语言,但它是一个非常易于嵌入的解释器。很快,我把它嵌入了我写的每一个主要程序。我学了一点儿Prolog,但还不够,我很遗憾。

但是我对函数式语言产生了极大兴趣,并在那个领域取得了更多进步------主要是Lisp、Hope、ML,Lisp是我自己构建实现的唯一语言------或者,不止一个。起初对于一项任务,和一名合作学生一起,在Modula 2上。我们不喜欢那门课程里的某些要求,没有如此多的实现语言,因此随后,我们用C做了一个相似的。数年后,我用Java做了一个Lisp解释器,后来还用C做了另一个Lisp解释器。所有这些都不是真正完全的------特别是后面的垃圾回收有点儿着急,回收了它不应该回收的东东,但是两者都实现了一个小型但“真正”的Lisp,能够使用递归和高阶函数,有可用的基本内建命令。在此期间我用Go写了一个,它是它们当中最完整的,尽管还在我收藏的玩具语言分类、而不是有用的编程环境。

正如前面提到的,C对于我的大部分专业工作是有帮助的,也是我目前在用的。但是其他语言进入了视野,主要是Perl。当我想尝试某个东东或不得不只实现一点儿功能时,Perl甚至变成了我的默认语言。这不是因为我对Perl的技术有点有着高度评价,不过它随处可用,每个人了解它,因此和C比起来,很多事情用Perl不可否认地更加容易,所以Perl已经变成了一种习惯。虽然我不是Perl的最大粉丝;我发现它处处不雅和粗野,总在试图鼓励其它语言的有疑问的编程习惯。还有,它用相对较少的努力就能把事情搞定。

在此过程中还有其它语言我发现有意思,但是没有找到足够时间(或实践机会)去真正学习它们------LUA、SNOBOL,APL(或J)浮现在脑海。我迟早不得不要用JavaScript工作,但是我认为它非常无聊。

然后我看了越来越多的Go。Rob Pike的一篇文章最终让我深入进去,关于我一直想去做的东东。现在它貌似是一门好的语言,内建了伟大思想,还有继承了与C和其后代语言一起成长的程序员的习惯。Go有潜力把我带回20年前我脑子里充满C的那种愉悦,结合了一门最终的优雅语言(虽然不如Lisp或更加现代的函数式语言优雅)的舒适和实用(像Perl)。我将拭目以待;现在除了一些简单程序和用Go实现的上面提及的Lisp解释器,我没有做更多。

后来有了Haskell。我在90年代早期就对Haskell感到好奇,当时我做为一名学生(参考上面)接触了其它函数式语言。有人给我一篇关于在ACM SIGPLAN Notics上面的Haskell的文章。Haskell那时候还是新的,但是它已经成长了数十年,它仍然存在,我认为这是好的信号。由于我总是喜欢函数式编程,这或许是我一起成长的语言。

现在对我来说,采用一门新语言的最大障碍不是学习的难度和为了实际任务的加速学习,而是其他人。让我遗憾的是,我的工作场所有一种文化,人们大部分在独立地做他们的开发项目,当原作者在度假、或者原作者离开后做进一步开发时,其他人能够修复问题,这仍然被认为是重要的。当然我同意这一点。但是当其他人只是对同样事情不感兴趣时,才会使得采用一门新语言变得困难。哎,他们好像不是这样。

除了使用shell脚本,我们工作时用C,差不多也用Perl,不过我爱用Go或Haskell工作。我愿意在工作中使用,来让我的工作更加简单和有趣。但是由于没有人能够接手用这些语言做的项目,我还不能那样做。(有个人对Go有足够的兴趣,我猜的,但他是名学生,一两年后会离开我们。)太让人失望了。或许我应当尽量发起 下一步我们应当采用哪种语言的 某种共识------不过我担心兴趣不够而剩下C和Perl的老路。毕竟,他们已经采用Perl做为一门新语言甚至不到20年,那么,为什么同样的情景这么快就再来一次呢?

原文地址:http://jyrgenn.dreamwidth.org/30953.html
文章首发:腊八粥

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/87536.html

相关文章

  • 采用一门编程语言或不采用

    摘要:在此过程中还有其它语言我发现有意思,但是没有找到足够时间或实践机会去真正学习它们,或浮现在脑海。或许我应当尽量发起下一步我们应当采用哪种语言的某种共识不过我担心兴趣不够而剩下和的老路。 我大体上对编程语言感兴趣。特别低,我一直对另一门编程语言 如何能够提供给我表达程序的新特性以及允许我成长为一名程序员 感到好奇。 我在校时学到了第一门语言。那儿的电脑------一屋子都是PET 20...

    zhiwei 评论0 收藏0
  • 编程模型(范式)小结

    摘要:参考链接面向对象编程模型现在的很多编程语言基本都具有面向对象的思想,比如等等,而面向对象的主要思想对象,类,继承,封装,多态比较容易理解,这里就不多多描述了。 前言 在我们的日常日发和学习生活中会常常遇到一些名词,比如 命令式编程模型,声明式编程模型,xxx语言是面向对象的等等,这个编程模型到处可见,但是始终搞不清是什么?什么语言又是什么编程模型,当你新接触一门语言的时候,有些问题是需...

    miya 评论0 收藏0
  • JAVASCRIPT OBJECTS

    摘要:构造函数第一种途径是使用的构造函数,方式。一个构造函数和其他函数一样除了自身细节上有些许区别惯常的做法是将函数名首字母大写以表示其存在目的是作为一个构造函数。关键字的作用就是创建一个新对象,并将构造函数内的指向这个新创建的对象。 ECMAscript 说明文档对这门语言的定义是一门适于在宿主环境中执行计算及操作计算对象的面向对象的编程语言。简单的说,JavaScript是一门面向对象(...

    taowen 评论0 收藏0

发表评论

0条评论

noONE

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<