欢迎来到天天文库
浏览记录
ID:17902648
大小:34.41 KB
页数:10页
时间:2018-09-09
《30种编程语言的比较选择问题》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、30种编程语言的比较选择问题本文涉及到的编程语言:C、C++、Java、C#、Prolog、VB、Scala、Clojure、Haskell、Ada、Python、Ruby、Pascal(Delphi)、Fortran、Lisp、matlab、Perl、Erlang、Boo、Tcl、Bash、Cshell、Objective-C、PHP、PL-SQL、Transact-SQL、ASP、JSP、Lua、smalltalk、R、D,golang,rust涉及到的工具:sed、awk、grep我们现在学一门语言,大部分是要用到了才
2、学(基本上是中国的公司用什么我们学什么),基于兴趣的不多。比如,大头肯定是C++和java,因为这个最容易混饭吃。最近多玩用了Erlang,还有不少公司跟风上了Erlang,让这个沉默了好久的语言忽然被明星了。大公司一般除了C++外,都会招Java,事实上,互联网公司,Java占了半壁江山(当然,没选java架构的除外,有不少.net族的)。所以,生活在贫困线上的广大中国程序猿很少有人会去看看诸如scala之类的玩意。不过作为胶水,python、perl还是有一定的用户量的。随着互联网迭代速度的加快,很多公司甚至用pytho
3、n直接写大吞吐的后台,腾讯的python情结就比较重。而随着网络安全重要性的提高,大部分的网络安全从业者选择了python作为攻击式的语言,因为快又方便。要不很难应对变化更快的poc。而随着开源软件的兴起,storm,kafka等也使用了小众的clojure,scala等。但是我们看到在最核心的nginx,ats,lvs等基础架构,还是c一支独大。最多有在之上的lua插件系统(lua真是个好伴侣)似乎,我们生活中只有这么几种语言。。。貌似,遇到一个问题,我们该选择什么语言呢?虽然每个语言本质上都是图灵完备的,但是能用prol
4、og写出来的东西,如果用别的语言写,会无比痛苦。这就是不同语言存在的原因:不同的问题,不同思考方式(编程范式)。·解决问题case:已知大量事实,和事实之间的约束,要求挖掘关系。果断用prolog族语言。例如,汉诺塔、地图着色、数独问题、八皇后问题等这种考验智商,并且需要从已知规则中发现模式的问题。拥有一大堆已知案例的应用(例如大部分的人工智能情况)除非你是研究者,程序员一般是遇不到这种问题的。当然顶级的程序员也确实得具备解决这些问题的能力。但是他们就算解决也是用c解决的。这属于叫好不叫座的科研型语言。·应用程序case:从
5、小到超大型应用程序,非完全互联网应用这也是大部分软件公司遇到的情况。一般有几种没办法分出高下的解决方案:C++,Java,C#,VB。当然,这里面可以有CLR和JVM的不同衍生。例如,理论上,你也可以用scala来代替(不过估计大型公司不会冒这个险)。还是在理论上,你也可以用函数式编程的Clojure和Haskell来做(估计没人会那么傻)。还是在理论上,也可以用Ada这种强悍的通用语言,但估计没人愿意接受比C++还复杂的编程语言。理论上(基本只能在理论上),不嫌弃的话smalltalk也行。还是在理论上,python、ru
6、by等配合一定的图形界面库也可以胜任(但项目大到一定的程度是,你会欲哭无泪)。但是,我另起一行。有个语言:D语言。我个人不认为不可以列入首选名单。但是貌似知名度不行啊。。。。企业支持少啊。。。。。确实是门优秀的语言。C++太尾大不掉,需要一种语言,让C++成为纯粹的C++。最近谷歌强势的推出了golang,背景是后台程序员C++写的好的太缺,python写的后台实在是效率不行。于是一个在这之间的,注重工程管理的,并且是全静态编译的golang诞生了,你会发现其拥有C++匹配的效率,也拥有python般丰富的编程库。其go和c
7、hannel机制着实让人着迷,一出来就吸引了大量的后台开发人员,有的公司甚至后台全面转向go。但是其之前版本的内存回收机制比较烂,所以也有无数坑。现在的golang已经基本解决了这些问题,编译器也用golang重新实现了。可以说已经产品化了。与golang竞争抢这个市场的还有rust,这是一个为并行而生,意在取代c++的编程语言。与golang的定位是相同的,但是目的是不同的。rust复杂,很复杂,上手难,但是一旦你掌握,这将是一个很强大的武器。已经有公司放弃golang转向rust的。但是这个语言的致命缺陷就是复杂,我们已
8、经有一个复杂的C++了,他啥都能干,还要一个rust做什么?当然,我不能把rust拍死,毕竟这门语言的牛逼程度时比较逼近C++的。不过我高度怀疑其会较好不叫座。稍小一点规模的,无法接受面向对象的程序员,有不少用C的。虽然OOP程序员看他们像是不开化的人,但是他们有他们的哲学(我从嵌入式开发
此文档下载收益归作者所有