2020年,5种将死的编程语言,不要浪费时间去学习了


2020年,5种将死的编程语言,不要浪费时间去学习了

文章插图

1Perl【2020年,5种将死的编程语言,不要浪费时间去学习了】曾几何时,几乎每个人都在使用Perl语言编程 。但是那些经常使用的人慢慢地发现,关于这个Perl语言似乎总是有点不对劲 。至少我知道有这么个叫做“piecemeal”的编程语言,它的创造者似乎就只是将这个功能堆在另一个功能上面而已,并没有好好考虑将它们结合在一起 。
事实上,甚至是它的创造者也不得不承认这种编程语言是有问题的 。经过完整地改造之后,现在的开发工作开始倾向于使用Perl6,这个大概是在2000年的时候 。至于Perl?俨然已经销声匿迹了!所以完全没有必要去学习它了 。顺便说一句,下面这个“Goodbye World”就是用Perl写的:
#!/usr/bin/perlprint “Content-type: text/html\n\n”;print “Goodbye, world!\n”;上面这个例子会出来一个网页 。现在的Perl,由于可以作为CGI脚本语言,所以使用的最广泛的是在生成web页面上 。但是为了适应时代的变化,我们最好还是将Perl语言“弃之如敝履” 。
2Ruby关于Ruby,可以这么唱“十年之后,我不认识你你不属于我……” 。因为就在10年前,Ruby语言可谓是风靡一时 。它出生于1995年,5年左右达到它的鼎盛时期 。如果你经常使用的话,绝对会义无反顾地爱上它 。但是,像我们这些学着C语言风格长大的孩子在学习Ruby时往往会觉得有点囧 。
下面是用Ruby写的“Goodbye World”:
puts ‘Bye bye, Miss American Ruby! Drove my Chevy to the Levie…’puts ’2011 was the day that Ruby died, yeah…’下面是一个用于计算阶乘的例子:
def fact(n)if n == 01elsen * fact(n-1)endendputs fact(ARGV[0].to_i)我测试了这个例子,来计算1000的阶乘 。下面是结果(由于篇幅限制,中间略过了2569个数字):
ruby fact.rb 100040238726007709377354370243392300…0000000从各方面来看,Ruby都很好,几乎是一片赞誉声……除了Twitter 。在2011年4月,Twitter宣称他们已经将几乎大部分的代码都改写过了,以便不必使用Ruby和它的web框架——Ruby on Rails,据他们所说这个平台非常之低效 。不过,我想说的是,也正是那一天起,Ruby开始走下坡路,使用的人数也是越来越少 。
3Visual Basic.NET十年前,我应聘到一个需要重写大量代码的公司,名字我已经忘记了,主要工作就是将VB6转换为Visual basic.NET 。大概就只干了一两个月吧,我就跳槽了:真心太痛苦了 。
微软钟爱于BASIC编程语言的扩展可以一路追溯到1991年,那时他们刚刚采购了来自Alan Cooper的一个非常酷(对于那个时候而言)的可视化编程设计 。Alan Cooper初期使用的是别的编程语言,但是比尔盖茨让他换成BASIC语言,因为盖茨认为那是当时最为简单的编程语言 。于是乎,大名鼎鼎的Visual Basic,就从BASIC中衍生出来——对象这一概念以及新的编程技术问世了 。
后面又发生了一些很有意思的事情 。Borland Delphi的创造引领者,Anders Hejlsberg也到微软工作,并且引领创建了一个新的编程语言——C# 。这种编程语言非常类似于Java语言 。刚开始的学习或许有点难,但是一旦上手,你绝对会对它爱不释手 。C#很快就成为了微软的旗舰编程语言 。现在的话,在软件行业中,有很多很多需要C#的工作岗位,不少都是高薪聘用的 。
虽然针对自己的CLR运行,微软创建了C#,但是它的工程师们另外还创建了一个盖茨深爱的BASIC语言版本,命名为Visual Basic.NET 。该编程语言借用了BASIC语言的语法,但是它的编码方法却与C#相似 。虽然Visual Basic.NET也在发展,但是优胜劣汰总是不可避免的——大家都选择了C#,于是Visual Basic.NET就成为了明日黄花 。
下面是摘自微软网页上的一段Visual Basic.NET程序:
‘ Allow easy reference to the System namespace classes.Imports System‘ This module houses the application’s entry point.Public Module modmain‘ Main is the application’s entry point.Sub Main()‘ Write text to the console.Console.WriteLine (“Hello World using Visual Basic!”)End SubEnd Module(这里的“Hello World”也可以替换成“Goodbye World”,这个没关系 。)
4Adobe Flash和AIR从技术上讲,这些都是平台,而非编程语言 。我之所以将它们包含进来是因为如果你想要使用它们,就必须安装Adobe自己的ECMAScript版本,即ActionScript 。ActionScript是JavaScript(当前最流行的编程语言之一,因为它能用于所有的浏览器)的一个近亲 。ActionScript在ECMAScript(这是JavaScript实现标准的官方名称)中增加了一些细节;但是除了Adobe Flash,其他地方几乎没有ActionScript的用武之地 。
你使用Flash不?乔布斯非常讨厌它,并且也不允许iPhone使用它 。然后随着iPhone(以及随后的iPad)的逐渐普及,Web开发人员不得不创建不必依赖于Flash的网站 。那些以ActionScript为生的开发人员也不得不纷纷下岗 。(我曾经看到过一个Flash开发人员指责另一个JavaScript开发人员毁了他的职业生涯 。)
Adobe也曾试图通过AIR以求得其编程平台的一线生机,于是配建了一个用于构建AIR app的工具,称为Flex 。至于AIR,许多人都说,这是一场灾难 。不过我们目前也不知道为什么Adobe会推出AIR,可能是想用AIR取代Flash?也可能是想要AIR和Flash相亲相爱共同发展?
记得有一段时间,得益于Twitter平台——TweetDeck(要求用户在电脑上安装AIR运行时)的使用,AIR很是红火了一阵子 。那时大概有数以百万计的pc AIR应用被开发出来,只是后来Twitter在2011年买了TweetDeck之后,又改写本地代码取代了AIR 。于是乎,AIR的辉煌就到此为止 。
随着Flash和AIR的逐渐逝去,Adobe的ActionScript也开始向世界吻别 。下面是一些用ActionScript写的代码示例 。
package {import flash.display.*;import flash.text.*;public class HelloWorld extends Sprite {private var greeting:TextField = new TextField();public function HelloWorld() {greeting.text = “Hello World!”;greeting.x = 100;greeting.y = 100;addChild(greeting);} }}(你可能会发现这与JavaScript非常相似,都使用var、function和new,并且也使用小数点来访问成员变量 。)
5Delphi’s Object Pascal首先我得向我曾经的好伙伴Delphi表示歉意,因为我不得不公布Object Pascal的“死讯” 。well,Delphi(用于发Object Pascal的工具)历经变迁之后,依然苟延残喘着(它起源于Borland公司,现在抱着Embarcadero公司的大腿) 。
早先Delphi和它的Object Pascal语言确实给我们提供了一个良好的工作环境:虽然有点啰嗦,但是编译器很快,而且相比Visual Basic(这里指的是pre-Visual Basic.NET,1995年左右),创建Windows程序更容易 。
但是它的优势并没有持续下去 。也很难说是什么原因,因为这个平台真心是不错的 。就在这时,Borland公司开始在其Delphi的产品线上支持C#和C++ 。发展到后来,Borland公司甚至直接将Delphi卖给了Embarcadero公司,然后Embarcadero公司继续使用Delphi开发产品 。话说,它做得相当不错,但是重点再也不是Pascal了 。当然,你依然可以用Pascal编程,但是几乎没人走这条路了 。事实上,我们可以使用Delphi建立许多不同的平台,包括iOS、Android,以及Linux操作系统 。
但是,如果你去Embarcadero公司的网站看看,你会发现他们主要是在促进Delphi’s C++ 的支持 。因此,换言之就是,Object Pascal已然逝去了 。写到这里,我不禁悲从心来,因为我花了很多很多时间来学习Pascal语言,特别是Delphi’s Object Pascal 。但是没办法,现实就是如此残酷,不转行就只能饿死 。
下面请看Object Pascal的代码:
program HelloWorld;beginwriteln(‘You say goodbye.’)