我应该学Python还是Java


python2016832434

首先,无论哪种语言是你的选择,如果你在学习语言的同时学习计算机科学基本原理,你将会做得更好。据我所知,似乎对计算机执行的“内脏”不甚了解的程序员,从来都不如那些对此拥有更加深入理解的人,而那些在计算机科学领域缺乏深度的人都无法在编程上做到卓越。

虽然我的个人档案绝大部分是公开的,为了回答这个问题多说两句是必要的。截止到2004年,我在弗吉尼亚联邦大学(VCU)计算机科学系教学。VCU的CS编程是面向Java的,意味着Java是公开的教学语言。在一九九几年,我在硅谷附近生活工作,主要采用C++进行工作。在一九八几年,使用的是C和Fortran。现在我在里士满大学4英里的地方工作(但是我不教学),我们是一家Java和Python商店。我们购买了一些作者授权的程序包,但是我们用Python把它们粘合起来。

十几年前,在电子工程师编程中教学,我似乎经常为以Java为编程起点的学生“去编程”。我所教的班级,大部分是大三大四的学生。他们对最有用的编程概念所知甚少:指针。其他语言中非类对象的概念使他们迷惑不解,内存中的数据内部表现对他们来说就像外星人。但是这就是为什么他们获得了大学学位,不是吗?

在里士满大学,我再次被Java和Python的操作对比搞得混乱,我认为它们应该结合学习。

1.Python不需要“设置”。一个完整的Python环境已经存在于Linux机器,Mac也是如此。对于Linux,其中的yum,或者Yellowdog Updater、Modified是用Python写的,所以Python就在这里。Java需要大量的设置。所以,如果你想开始学习Python编程,只要在命令行输入Python。开始学Java,先找个老司机,你懂的。

2.我们已经购买的JAVA写的系统需要忍受安装一个指定版本的JAVA,还有胖客户端同样有此需求。支持JAVA看上去更昂贵。我们的确还没有一个类似规模的Python系统,但是没人期望配置管理成为一个问题。从教育的立场来说,这听起来像是一个受挫的好方法。

3.Python有它自己的特质。在JAVA中,每个对象必须是某个类的内存。但是在Python中每个变量具有独特的风味,变量并不代表对象(对象:在内存中拥有一个地址的东西)也不是指针,也不是引用。最好把它想象为一个基础实体的临时名称,就像柏拉图理想国的山洞寓言。从学习的立场来说,这对于具有35年经验的我们可能比初次学习编程者更加困难。

4.一些公司被Python2写成的大量遗留代码所困。结果,Python遭受这样的错觉:Python的类型是多么严格或者松散,以及Python需要多么严格的实施。切记由于Python主要通过“名称”对象来工作,当我们讨论Python的对象时,它并不是我们讨论的其他语言的对象,我们不是在讨论同一个东西。Python的确提供了一些相当无缝的类型转换法,这让Python的类型概念看起来比它实际上要更不严格。学习Python3合乎情理,但是大部分的工作职位还在用Python2.

5.相比于JAVA,Python更加简洁。私以为,不断发展的手关节问题欢迎这种特征。事实上,我的C++代码由于过多使用操作符重载和三元操作符而饱受批评。这可能不是一个学习的良好体验,因为对大部分人来说,能被拼读出来的东西更加容易学习。

6.如果你计划获得一个普遍的编程职业,以招聘预期来选择一门语言是没有意义的。在我35年的不间断职业生涯中,我从以下语言中挣到钱然后又忘记它们:6502 assembly, 8086 assembly, Fortran 66, Pascal……就是这么漂移。现在我用则必用Python,除非我被要求使用JAVA.

最后,请回到开头读读“首先”那一段。
本文翻译自Quora.


永远年轻,永远热泪盈眶。