各个主流编程语言(Java,C/C++,PHP,Python,C#,Delphi,Ruby,Golang,Scala,Erlang etc.)的优劣 | 马犇-技术博客

各个主流编程语言(Java,C/C++,PHP,Python,C#,Delphi,Ruby,Golang,Scala,Erlang etc.)的优劣

来源:本站原创 微信技术群总结 超过5,474 views围观 0条评论
【今日话题】各个主流编程语言(Java,C/C++,PHP,Python,C#,Delphi,Ruby,Golang,Scala,Erlang etc.)的优劣和适用场景 — 黑夜路人

1. php适合编写网站,其他比如socket也能做,但是实现起来麻烦 — godfery

2. 不记得是那个大神说的了 Life is short, you need python — hilojack

3. erlang 对面向对象语言的从业者来说思想上的改变 — 骑行西藏

4. 我个人感觉,c/c++最适合编写底层模块,包括Windows和Linux/Unix的,当然写界面也可以,不是特长而已,c/c++的优点我就不说了,挑主要缺点说一下:不支持垃圾回收,容易引起内存泄漏;以头文件方式提供动态库函数,修改头文件将引起大规模编译,测试工作量巨大;语言支持跨平台移植但局限性很大,依赖各平台的编译环境,为了跨平台需要写非常多的ifdef语句;还有很多,一下子想不起来。 — 水浸街

5. php是我最喜欢的语言,群里很多php大牛,我也只说一下缺点吧:脚本语言的通病,就是无法在编译时排除问题,一般的编译语言只需要保证逻辑没问题就可以了,而php我总担心在某行代码会少个什么符号,或者变量名错了一个字母什么的,自测时没走到那个分支导致代码上线后才爆出问题,这让我有很大心理压力,不得不在每次修改很少一点东西后作完整的白盒测试。 — 水浸街

6. java呢,应该说上述c/c++和php的缺点都没有,很适合用来作大型软件开发,事实上我们公司的主要开发语言就是java,java有非常多的成熟框架,这算是优点,有时候也是缺点,也许你只想要一个独木船,但java会给你一艘航空母舰,还有就是作为编译语言,java的性能居然被php轻易秒杀。 — 水浸街

7. Golang只是大概了解一下,个人非常看好,单就语言看有java的优点同时又没有java的缺点,Goroutine简直是神一样的存在,当然任何语言都有自己的缺点,只是我还不了解而已,今年我会找机会在一个项目中尝试使用Golang的。 — 水浸街

8. delphi是我最喜欢的Windows开发工具,控件、事件驱动是我最喜爱的方式,不过很少写Windows程序了,卖掉之后我就很少了解动态,据说现在也支持Android开发,另外,负责研发Delphi的那谁出走微软主持开发出的C#,虽然语言很棒,不过用C#就意味着只能在Windows平台下跑,最近听说也可以在Linux下跑了,具体不大清楚。暂且说这些吧,其它的不了解。 — 水浸街

9. PHP那个,我们严禁线上改代码,然后用些好点的IDE就能解决了。IDE语法提示,像PHPStorm,有洁癖的都在右侧的analysis completed不能出现绿色以外的颜色,加上适当的使用PHPUnit,解决问题。 — XiangZ

10. 写Go一年多,gc会带来一些苦恼,另外要用好协程,对临界区编程要很清醒!还有就是良好的接口设计非常重要!也体现对软件设计的功底 — 项超
回复: 不用搞太大内存,这个问题可以避免 — 黑夜路人
回复: 但是像长连接这样的服务,一台机器往往需要比较大的内存 — 项超

11. 问: @XiangZ 严禁线上改代码,那配置文件用什么方式实现的?IDE那个,我才开始使用phpstorm,确实很不错,不过一个稍微大一点的系统有多人在开发、维护,很难对所有人都要求做到这一点

答: 发布代码,用发布脚本,线上配置文件如果经常改动,那是有问题的吧,定义一套团队的规范,比如格式化,我们就用phpstorm默认的格式化模板,定期code review,既然团队已经够大,对代码没有更高的规范要求,是很可怕的事情,很多东西需要团队氛围去引导的。另外我们团队还使用vagrant,让团队成员的环境统一。 — XiangZ

答: 我们是把代码和配置文件分开管理 代码仓库不能包含配置文件  服务器上代码用git拉 配置文件另发 — -_-

答: 差不多,我们也是线上维护一套配置仓库,发布脚本去处理配置问题 — XiangZ

12. Go在服务端编程上既有php的编写效率,有具备高性能特点,为什么在现在的公司使用中还没有推广开来……还是说只是时间问题? — 项超

回复: 项目都占据了开发很多时间,没有时间搞吧,新项目用团队有学习成本的 — 夏天

回复: 就是时间,现在成熟的开源库应该还很少. 前段时间看到一个node.js的大牛发声明转go,接着还会有很多,慢慢就会流行起来的 — 水浸街

回复: 这是个恶性循环,你不搞,大家都不搞,成熟的库就不会多,于是又会因为没有成熟的开源库选择观望……唉. 不过根据我使用的经历,的确go现在质量高的开源库不多! — 项超

回复: 开发效率还是比不上动态语言,但质量会有所提高 — twin

13. 其实写好go还是有难度的,go避免了node的回调式编程,但是带来了并发编程的难度,这一点没有深入用过体会不到. 而且我感觉纯php思维不适合转到Go,尤其是没有一点写c扩展经验的. 写go的时候,首先面对的就是协程和通道,这里就要处理共享变量的访问,也就是临界区问题! — 项超

14. Go 比较适合做一些系统级的服务开发,如果一股脑都当脚本语言用,那就玩大发了。没点C和系统编程的底子,要想用好Go还是有点吃力。 — 老虎

15. 对,相对php,Go还是比较底层的,起码它还有指针 — 项超

16. 玩C的可以用Go做一些事情,就算类库质量不好,起码还有cGo补充。Go想真正的推广起来,整个生态系统必不可少。为啥java一直高居各类语言榜首?这个与java的整个生态系统息息相关。 — 老虎

17. 这个应该没有太高的门槛,我去年才开始接触php,对着php官网在线文档写代码,至今在两个小项目中使用了,没觉得有什么问题,向go转变应该也是同理,语言本身并没有太大的难度,关键还是一些习惯用法、熟悉一些库的调用,比如向外访问的网络、数据库支持库,内部的字符串、日期处理,熟悉这些基本就可以开始工作了,其它的可以慢慢学 — 水浸街

18. 如果Go能够推出像hadoop这类的明星级产品,就不一样了 — 项超

19. Go的直接竞争对手不是php,是node.js、erlang — 水浸街

20. Go上手简单,写出高质量代码比较有难度! — 项超

21. Golang的定位就是 Next C 作为替代C干一部分活。很多人,拿着Go当万金油玩,能玩好吗? — 老虎

22. 说得有点绝对,一种语言能做什么,除了语言开发者主导,也要靠大家去挖掘、推动,比如javascript,以前一直是运行于浏览器作前端开发,后来出了phonegap就可以作app开发,出了node.js就可以作后端开发. 江湖传言,google可能会让golang作为android的开发语言,就如苹果的swift一样。语言本身是没有什么问题的,有编译器、底层库加上IDE就可以了 — 水浸街

23. 每个语言都有自己擅长和不擅长做的事情,能做是一回事,能否在各个场景,特性,生态系统上平衡做好就是另外一回事了。 — 老虎

24. 我感觉Go应该不擅长写操作系统,存储引擎,图形渲染,嵌入式这些…… 但是用它写编译器应该不错 — 项超

25. 明星级产品,有吧,docker应该可以算一个
项超和老虎的意思,我能理解,如果一上手就是搞web开发的,让他去搞偏底层的golang,门槛就很高,很多用php的站长并不是科班出生,但是他们也能把整套lamp用的很好,要是让他们去用go写出偏底层的应用,不能绝对的说没有,只是这样的太少了,操作系统,网络,编译原理甚至数据结构的功底就体现了。语言确实不难,就像计算机专业很多刚入门的都写C类似。 — XiangZ

26. Java执行效率不低,全平台通用 – 崔玉松

27. 不想吐槽java 但目前的java程序员大部分都很山寨,再说要全平台通用干嘛 有虚拟机的程序就别装逼,再快也就那怂样 — 闵敢

28. 什么语言都是工具,找到大家一起用的顺手的就好了!发挥多大的作用还看用的人! — 付保海

29. 不同场合用不同语言,web就用php,后端就python或lua脚本+C [憨笑] — 马犇

30. 太偏激了,我发现这些人偏向某个语言的时候总是把自己的有点比别人的缺点,放着别人的优势不提,Go才几个知名项目,JAVA满世界都是优秀的项目,虽然我和徐立关系很好,不得不喷下他 — 崔玉松

31. 欣赏go,但是达到大项目稳定阶段还需要时间 —  七文