C#,入门教程(40)——主流编程语言C,C++,C#,Java, Go,Python的对比与建议

作者从可怜的汇编语言开始学习、应用计算机编程,几十年来涉足过商业软件、工业软件及大型互联网系统的开发,本文试图从多个层面、多角度对C,C++,C#,Java,Go(Golang),Python等主流编程语言进行简单的对比,便于初学者、项目甲方理性选择合适的开发语言。

注:编程语言没有几代的说法,只有应用场景的不同。Matlab(其中的m语言可以算“类”编程语言)、SQL 不能算常规意义上的编程语言。

很多年以前大声疾呼大家学习C/C++,而不是Visual Basic,效果不好,大家更愿意相信不会编程的大学老师、培训教师与流行书籍的建议,但事实是,学习VB者最先被淘汰。现在大声疾呼大家学习C#,不知应者几何?

1 困难的选择

人的选择与行为决定于目标。

选择语言如同选择 武术门派 趁手武器,须考虑近期目标与长期目标:

(1)完成学业本职工作

一旦入了门派,BOSS(帮主 或 甲方)说用啥就学啥,你没有自主权。

(2)增加未来 就业跳槽 的选择面

最好什么语言都懂点。入丐帮最好!

其实表面上看,每种语言都差不多,成为一个万金油比较好!

(3)因喜欢而编程(华山论剑?)

建议选择从C#入门,C/C++、java 、python等均可迅速掌握

因而,本文是写给立志于成为一个程序员的读者。

2 靠谱的建议

人的一生,你的周边充斥着各式各样的、多数不靠谱及少靠谱的编程建议。

从那些途径获得编程语言的建议,比较靠谱呢?

(1)学校老师(本帮帮主)

不太靠谱。

老师们(作者曾经也是大学老师,说话有一些发言权)的编程主要是为了完成论文、出书、做课题和评职称,大多没有能力与经验参与商业化软件的开发,正如“前门的把式——中看不中用”。他们是好老师,但都大多不是合格的程序员。

(2)培训机构(马路卖艺者)

特不靠谱。

培训机构(出版社)基本上是哪个热门就培训哪个,宣传哪个,出版哪个,集中精力以培训、辅导、出版、视频等方式尽快攫取商业利益为目的。至于这个语言是不是好,,以能不能赚钱为唯一选择标准。

(3)技术部门前辈(前辈)

这个凑合。最好是20年以上从业经验的,不一定要找大厂的。大厂程序员的综合能力一般都比较差,懂架构的不善于编程,懂编程的无架构思维。

来自于中、小型技术团队的Leader最有发言权。

(4)最好的老师是问题,是练功

所谓练功就是你想解决什么实际问题?实现什么功能?

然后没完没了地去实现、去完善、去升级与改版。

写这句话的时候,想起《少林寺》中李连杰提水桶的画面。

当然不是为了本职工作 或作业。只要放弃害人的游戏、无聊的电视、无脑的短视频,不长的时间,你就是编程高手。语言其实不重要了。

3 选择的因素

3.1 论选择

人的一生 = 无数次错误的选择90% + 很多不明不白的迫不得已的选择9.5% + 极少正确的选择0.5%

理性的选择 = 方程组(各种选择因素)

感性的选择 = 抓阄(或翻硬币)

无论是理性的 或是 感性的 ,实际上都无法确认是否一定正确,更别提是不是最好的。然而,火车毕竟到站了,都得下车,下车再说吧。

最失败人的首先输在不敢选择;次之也是可悲的,是没有权力去选择;稍好的是选择了错误的选择;再稍好的是做了选择也未知结果;没有更好的了。

比好只是酒桌文化,比烂才是殊途同归的真实生活。

3.2 选择的因素

以下的文字是对于试图将编程作为生活技能而言的,理性的选择。

3.2.1 适用性(系统、性能与场景)

语言的适用性主要考虑编程能力要覆盖哪些:(1)操作系统,Windows All或指定版本?Linux什么版本?Unix?Andriod?iOS?(2)高性能需求场景或没有性能需求的场景;(3)应用模式:PC桌面应用?浏览器应用?手机或平板桌面?(4)高交互式应用,比如游戏,或低交互性应用如web服务器监控程序。

如果将语言比作武器,C/C++是佩刀——练武之人常备武器,python是飞镖——玩着热闹却杀不了人,Java/C#是剑——侠客必备的实用而飘逸之器,go是大刀——看似强大干不了很多细活,而且刀柄握在google手里。

3.2.2 生态(组件与开源)

语言生态是指可以获取的语言规范、指南、公开资料、组件与支持、技术社区的成熟度、开源代码质量与数量等等。简单地说,生态就是能够获得资料或代码的质量与数量。

生态与历史密切相关,C/C++的生态是最好的,代码与资料可信度很高;pyhton的生态也不错但大多限于AI领域,而且代码质量一般,无法工业应用;java生态很好,不过大多局限于互联网应用;C#的生态最好,其组件大多由工业化或商业化软件开发商提供,开源代码质量最高,世界上绝大多数商业化与工业化的软件及顶尖游戏都选择C#作为开发语言。

3.2.3 开发环境

编程的最终结果是可以被用户使用的产品,其核心需求无非三条:(1)好用;(2)好看;(3)稳定。

因而大家都追求好的开发环境,期望将时间更多花在算法等核心代码上。

选择具备良好开发环境的语言是明知的选择。

Visual Studio & Visual Studio Code 无疑已经是绝尘之马。

3.2.3 团队开发

团队开发的核心问题是代码可重用、低成本维护。

3.3 选择方程组

选择方程组从更细节的方面给出一写对比,供大家参考。

以下表格为作者经验与一面之词而已。

3.3.1 按软件的系统层级

3.3.2 按操作系统

3.3.3 按用户角色

3.3.4 团队开发适应性

3.3.5 按语言生态

3.3.6 按开发环境

理性选择未必是最佳选择,因为世界上没有最佳选择,选就是了。

猜你喜欢

转载自blog.csdn.net/beijinghorn/article/details/128933465