聊聊编程语言官方澳门新永利下载:,知乎整理

最近已经开始渐渐改变自己的生活习惯了,现在是凌晨1点12分。已经有一个星期没有熬夜到这个点了。突发奇想,写一篇关于编程语言的BLOG。

一个程序员是否优秀跟他掌握语言的数量没有任何关系。而是跟他的接受能力、思维能力学习能力有关。优秀的程序猿,应该掌握需要时可极快掌握一门编程语言的能力。@川杏之

我们应该选择什么编程语言?
相信业界的人很多都听说过PHP是最好的语言这个段子。它到底是不是最好的语言呢?我觉得这个东西很难找到一个标准。举些例子来看看?

官方澳门新永利下载 1

如今世界大部分软件都是由C编写。操作系统也是由C语言编写。但是我们能够说C语言是最好的语言吗?他的强制类型约束,以及虽然本身很简单,但是要写好C语言需要付出可能比其他语言更多的时间,特别是相对于动态语言如javascript和python这些语言来说更是如此。这使得许多人对C语言可以说是望而却步。从编程易用性来说它就不是一个很好的选择。

从人角度来讲,优秀跟语言无关,优秀是一种能力,有的人只用一种语言,但是钻的很深,有的会很多种语言,涉猎面广。

我们来看看JavaScript,我个人并没有资格来评价这门语言。因为我对他的接触并不是很多,
只是平时有用JQuery写一下前端代码。现在看看JavaScript它的覆盖面积已经不是我们这些写后端代码的人能够想象。各种不同场合的框架Node.js,
Vue.js甚至连桌面端都出来了,更坑爹的是它居然以后还能用来玩转VR。这。。。。。。有人统计在GITHUB上代码量覆盖率最大的是JavaScript。它作为ECMASCRIPT的一种实现,似乎现在也就只有它这一种实现,几乎所有新的前端语言,最后都会转换成javascript再被浏览器解析。这已经不是一般的垄断了。-.-
ES6感觉会吸引更多的人到这个阵营来。这看起来这门语言正在引领我们世界的潮流。但是说起脚本语言,那些看不起脚本语言的人总是拿它的性能说事。。。。。这个。。。我们后面再聊。

钻的深的要成为某领域专家,涉猎广的要成为一个方便好使的多面手。前者在大公司更多,后者创业型更多。大公司分工细,容易出专家,长期深耕在一两个领域,小公司快速灵活,偏向多面手,需要的时候你能快速搞出来。

看看Python,这是我大学快毕业的时候选择它作为我工作的语言。很幸运的,能够靠掌握它找到工作一份可以养活自己的工作。并且已经用它开发了一年了。(T_T终于不用写Java了)Python这个东西确实是很简单。而且很容易就可以用它编写出Web程序,它有各式各样的web框架,tornado,
django,
flask?我一直都很喜欢这门语言,它的库简直像社区说形容的。像电池那样,要用的时候很方便就能够加入到代码里面去。现在说说它比较奇怪的地方,据说它的作者为了整合一些规范的东西,Python搞了两条分支,一条2.7.X
一条3.5.X,当初毫不犹豫地选择了2.7,因为我发现个人比较喜欢2.7的语法,起码打印不需要加括号吧。比较简练。如果写Python需要考虑到兼容性,不得不写上不少额外的代码,还好这方面还不算太复杂。Python有很多工具包都为你提供的工具来让你可以更加轻松地写出兼容的代码。还有就是Python有很多优秀项目可以供我们学习,由于太多了,所有有选择困难症的我,一直也没找到自己想要投入的方向。(可能也跟本人的浮躁有很大关系吧)。另外要提一下的就是Python的元编程能力。我不知道Python3怎样。Python2的元编程能力我只想加个….。并不是说它不能进行元编程。只是相对于Ruby这些语言来看,Python的元编程的语法实在是不那么优雅,如果想玩玩元编程的话,而且又是个比较喜欢优雅语法的人。Ruby或许是更好的选择。

从语言角度来讲,每种语言都有自己更专长的范畴。导致语言有分工的原因既和语言本身有关,不过更多的还是语言背后的生态圈有关。C/C++偏向性能苛刻的场景,Java目前BAT三家web开发的主流语言,有很多开源框架和中间件来支撑高并发大流量的web架构搭建,PHP小网站快速开发,只要你没太多代码洁癖只求快速上线有流量再说,PHP非常适合这种起步场景,Python灵活快速的各种工具开发,python后面的开源包足够多,语言本身也不重,依赖这些包和库能快速产出工具或者web网站,obj-c/swift做苹果app专用,JSCSS做web前端。@楚中天

Ruby这门语言一直是在业界比较受好评的语言。我个人也很喜欢,我曾经一度想转到Ruby阵营去,以后有时间可以作为兴趣来继续研究。上面说了Ruby的元编程。它的元编程能力确实很不错。可能这一点继承了Lisp那边的思想吧?它的猴子补丁这个特性让人又爱又恨。你可以在任何地方重写一个类的任何方法。比如String类。这样可能会修改原有类的行为。这个比较危险,但是对于喜欢捣鼓东西的黑客而言,这种特性可能更加符合一个黑客的性格吧。如果时间允许真的是极力推荐这门语言。我现在也只是看过它的两本书。只能说是略知一二吧。不得不说的就是它的ROR框架(Ruby
On
Rails),用来搭建网站真的是一流,特别是你不想写太多代码的情况下。它能够帮你生成很多东西。比起Python阵营里面比较流行的Django开发框架。ROR搭建起网站来更有效率,更简单。另外,他十分重视代码生成这方面的东西。一个个人感觉它比Django要出色的地方是,在URL设计方面它会比较关注RESTful风格,当你用ROR定义一个模型它可以生成对应的RESTful风格的url,也让一些初学者能够方便地体验一下RESTful的风格吧。另外测试方面,当生成一些models,或者views框架本身会顺带地生成对应的测试脚手架。能够方便开发者编写对应功能的单元测试。这方面Django做得相对没那么完善吧,看起来似乎也没那么重视测试方面的东西。这门语言,我还是比较推崇,只是它的能力太强了,你可能不小心就会修改到一些会让你感到意外的东西。所以选择也要三思。

至少学6种程序语言。

其中包括一种支持类抽象的(Java和C++),一种支持函数抽象的(如Lisp或ML),一种支持语义抽象的(Lisp),一种支援声明规范的(如Prolog或C++模板),还有一种支援协程的(Icon或Scheme),另外一种支持并发的(Sisal)。@
Google 研究总监 Peter Norvig。

这门语言可能大家都很少听过吧。像Javascript是ECMAScript标准的一种实现,Elisp也是lisp方言的一种实现。lisp方言有很多,这里不一一举例。国外的程序员十分推崇lisp。它的函数式编程风格让很多程序员无法自拔。更重要的是它的思想,能够编写出灵活性,品质都很高的软件。(伟大的Emacs编辑器已经很能说明问题了,它跟C语言就是Emacs的主要开发语言。[估计也没有第三种语言了吧]),而我个人也在用Emacs编辑器,顺带地也学习了一些Elisp。不过学得并不是很……。只是勉强还是能够看懂一些代码的。我的一些Emacs配置是在参考别人的Emacs配置的基础上把看得懂的摘抄了一些下来。勉强能应付现在这种强度的配置插件开发吧。不过生产环境上几乎没什么用,也没有什么公司会拿它来搞。(当然指的是国内的公司),国外的公司就不好说了。看过《黑客与画家》的朋友应该知道本书的作者工作的时候就是用Lisp来进行开发的。而且开发出了灵活性很高的系统。国内现在貌似有个用的挺多的Erlang,也是函数式风格的编程语言。(T_T这个没有深入了解过,不好说。)

2015年2月编程语言排行榜,JS排名创历史纪录

JavaScript不断走强。本月它超过了php,现在的位置排名第六。另外,Objective-C的日子似乎已经结束。一年时间,Objective-C份额下降超过5%。现在排到第四的位置,在C++之后。Objective-C之前排在第三位的位置长达超过2.5年。

官方澳门新永利下载 2

首先是C语言:这门语言应该不用多少了,很多程序员的入门语言都是这门,但是很少有人能学的精通的,C语言更偏向于底层,是面向过程的语言,我目前正在研究操作系统的内核结构,很多情况下是要有C语言的汇编的功底的。所以C语言强烈建议掌握。

其次是Java:Java应该算是比较优秀的面向对象的开发语言了,所以,如果要想掌握面向对象的思想的话,学习Java是一个非常不错的选择,并且Java的资料也是非常之多。而且针对于Java的开源项目也是很多的。

接着是C++:这门就不用了,是C语言的扩展版本,属于面向对象的范畴,很多操作提供的内核也使用了C++进行开发,有必要掌握一下。

接着是Objective-C:如果要进行IOS的开发的话,这门要掌握了,但这们也是以C语言为基础的,所以题主可以看到C语言的强大了吧。

接着是几个脚本语言:PHP、Python、JavaScript、Perl、Ruby等,我认为脚本语言还是要掌握一门的,比如Python、Perl还有Shell
Code都是不错的选择,毕竟有时候脚本还是非常方便的。@杜一

还有啥?Java,
C#这些语言我没什么好感这里就不详细说了吧?可能因为第一印象就不好吧?
(原谅我,当初在学校的时候被逼着学,现在已经不想搞了T_T)所以可能我没办法很客观地做出判断,惹怒他们的粉丝就不好了吧?

越多越好

语言其实是件非常重要的事情,它很大程度上决定了个体的思考方式和群体的文化特征,首先,你是用语言在思考问题,它的表达能力和逻辑结构,直接影响了对问题如何进行抽象,其次,你还需要用语言和他人进行交流,拥有共同的文化背景和审美趣味的人,会用更少的词汇,更短的时间,进行更有效的沟通,这直接带来了效率的提高,以及更优雅合理的产出物。

我想简短地描述我所用过的一些值得学习的语言,并给出对学习这门语言的推荐程度,1-3星,篇幅有限,会非常简短,更多的介绍请自行查找。

官方澳门新永利下载 3

以下按各语言诞生的时间排序:

—–  2014.5.12 更新 PHP,Perl,AWK ——

—– 2014.5.30 更新 Unix Shell ——

Lisp 1958,3星

Lisp是我最喜欢的语言,尽管它的诞生年代已经相当久远,但它的特性远远超越了时代,动态类型,垃圾回收等等当今已经司空见惯的特性略去不谈,最重要的是,它是第一门homoiconicity
language
,简单说就是代码的结构和数据结构保持一致,这意味着,它拥有所有抽象可能性中最强大的一种抽象,即用代码来生成和表现代码,比如宏,了解这件事情,对学习编程,其实也就是学习如何抽象事物,非常,非常地有帮助,其次,Lisp的列表结构和完全函数式编程,让理解和学习递归这种基本而重要的思考逻辑,变成了非常自然的事情,这是程序员必须要学习,并且要花相当多时间学习的语言。

Smalltalk 1972,3星

第一门真正的面向对象语言,而且在今天,它对面向对象思路的描述,即消息传递机制,几乎已经得到了广泛的认可,所有后续的面向对象语言,如Java,Ruby,Python,都受到了直接的影响,还有大量的设计模式,比如众所周知的,用于设计用户界面的MVC模式,都是从Smalltalk中诞生的。而后面这些面向对象语言,都或多或少地对Smalltalk的设计进行了一定的改动,想要真正理解面向对象,需要认真学习一下Smalltalk。

C 1972,3星

C语言不用多说了,因为它和Unix的绑定关系,使他成为了必须学习的语言,关于语言本身,指针的概念和操作也对于了解计算机系统的实现相当有帮助,而函数指针和宏,也赋予了C一定的抽象能力,尽管大部分情况下,是对智力很严峻的考验。

Scheme  1975,  3星

Lisp的一种最简化的方言,它是最适合入门Lisp,尤其相较繁杂的Common
Lisp来说。

AWK 1977,1星

和C一样,它也来自于Unix(AWK中的K就是 Unix创造者之一的Brian
Kernighan),而且本身就是个很强大的文本处理工具。不过,语言自身相对简单,构筑复杂程序时比较力不从心。它非常适合于和Sed一起,进行各式各样快捷而强大的文本处理,直到有了Perl。

Unix shell (Bourne shell/C shell)  1977,  3星

Shell一直是跟随着操作系统诞生而成长的,但直到第七版Unix,Stephen
Bourne编写的Bourne
shell(也许你更熟悉sh这个命令名),它才真正成为了完善的脚本编程语言,而之后编程奇才
Bill Joy(嗯,他写了那个我不喜欢的vi)开发的C
shell(csh)则更勇于向前迈进。时至今日,Shell的一些语法特征从编程上来说,稍显老旧,但是,它依然是最值得学习的语言之一。原因有二,首先,Shell语言是非常好的粘合剂
,它有很多种方式,让不同的程序之间,不同的进程之间协同工作,这种从进程角度组织复杂程序的思想(也是Unix哲学的核心,简洁而单纯地将一件事做好)是非常有意义的,其次,出于命令行(CLI)的要求,Shell程序天生就追求更短更简化的写法(有时不免有些晦涩),这让Hacker们感觉非常爽,直接启发了日后Perl等Hacker专属语言的诞生。所以,我认为Shell是程序员必须熟识的语言之一。

C++ 1983,2星

C++也是用途非常广泛,不用再多说的语言,它的泛型是一种相对独特的抽象,值得学习,而其他方面,如果你熟悉了C,Lisp和Smalltalk,那么C++对你来说不会有太多需要花大力气研究的东西。

Common Lisp 1984,2星

Lisp当前最流行的实现,非常庞大而复杂,除了Lisp本身的特性之外,还有面向对象等等在其他语言中引入的特性,但Common
Lisp对这些特性的实现,有赖于Lisp本身的强大,而变得非常精巧和简洁,比如多重继承。

Emacs Lisp  1985,  2星

Emacs中的Lisp方言,相较Common
Lisp,功能和特性省略了太多,在编写复杂程序时,会相当捉襟见肘,但是,它依然是Lisp,而且可能是我们工作中最常用到的Lisp方言。

Perl 1987,2星

Perl也是我非常喜欢的语言,它诞生于Unix文化,受Shell,Awk等语言影响极深,深深执着于以行为单位对文本的操纵,它的哲学实际上是非常受Hacker文化的影响,强调用让人惊讶的方式完成代码。这在高手眼中酷的一塌糊涂,但在新手眼中则犹如天书。随着无数高手加入社区,Perl也逐渐发展壮大成了能够独挡一面的泛用编程语言,但尽管如此,即使到了Perl
6,它也没有丢掉骨子里那种崇尚酷炫,欣赏创造力的精神,这也是我喜欢它的原因。时至今日,Perl的Hacker精神和创造力逐渐被Ruby所继承,而用它写实用性Unix脚本的人也转向了Python。但无论如何,如果想知道Hacker是怎样思考,怎么做事情的,那么Perl和Perl社区,实在可以说是非常好的选择。

Python 1991,2星

非常流行的Python,可能最主要的意义就是Python之道,即无比强调代码的可读性,以至于强制随进来控制代码块,“做一件事情只有一种显而易见方法”的哲学,我觉得Python是非常适合工程学的语言,比Java更好,更规整而又相对来说灵活,同时Python又足够简单,因此,可以认为Python是所有语言中最适合首先入门来接触计算机科学的语言,很多大学也都是这么做的。

Ruby 1995,3星

Ruby是除了Lisp之外我最喜欢的语言,也是我现在做KnewOne最主要用到的工作语言,它的主要设计哲学是“一切为了让编程更快乐”,因此,Ruby继承了Perl的Hacker精神,同时又相当统一和优雅,它强调发挥程序员的创造力,语义模糊而多样,对同一个任务,有多种不同的解决之道,这和上面Python的哲学背道而驰,也是我喜欢Ruby的原因。函数式编程,面向对象,混入(Mixin),元编程(用代码来生成代码),种种不同的设计思维,在Ruby中得到了很好的融合贯通。不过,正因如此,在Ruby社区中,人们想要互相理解对方的设计思考过程,相比Python来说是要更费力,对程序员要求更高的,所以,Ruby并不适合做为学习编程的入门语言,而更适合在你学习了很多编程语言,熟悉了编程之后,成为最长久(目前来看)的陪着你一起完成日常工作的伴侣,因为每时每刻,Ruby都让编程充满愉悦,Code
Ruby,Be Happy。

Java 1995,1星

Java可能是世界上最流行的语言,不过我对它持有非常强烈的偏见,我一直认为这是一门由聪明的人设计,用来控制一帮智力平庸的码农,让他们不至于捅出什么篓子的语言,基本上所有的设计特性,都是为了压抑创造力,让程序员变成按部就班拧螺丝钉的机器来考虑的。不过,Java拥有可能是所有语言中最强大的虚拟机平台JVM,在其上诞生了无数优秀的软件,为了JVM,Java还是值得学习一下的,不过这门语言也是实在太简单了,假设一个人学习Lisp或C需要一个月,学习Python或Ruby或Perl需要一周,那么学习Java,也许只需要一天就可以,因为就语言本身来说实在没那么多可学的。

PHP 1995,0星

六七年前,在还不能自主选择公司的技术框架的时候,我被迫用过两三年的PHP做为主要的工作语言。现在,在接触很多语言之后,想起PHP,最主要的感觉就是拼凑,一种无原则的实用主义,它在九十年代末期为web开发诞生,并非一开始就以泛用型编程语言为目标,在整个发展过程中语言的进化相当混乱,不断从各种其他语言中拼贴特性。其实,PHP在web开发领域相当强大,有很多不错的web框架及函数库,语言自己也内置了不少很好的支持。但做为学习编程用的语言,它会非常,非常有害,我几乎没有见过一个PHP程序员有代码洁癖的,语言自身的混乱,造成了程序员表达上的混乱,久而久之,就形成了“能用就好,实现功能就行”的习惯。这门语言做为糊口的工具还是可以的,但远远谈不上编程的美,完全不推荐学习。@李路

发表评论

电子邮件地址不会被公开。 必填项已用*标注