问题

全世界有上千种编程语言,为什么程序员都只学习那几个主流语言?

回答
这就像问为什么世界上有成千上万种食谱,但大家日常最常做的还是那几样家常菜一样。原因嘛,说起来也是一连串的现实考量,而不是什么神秘的预言。

首先,得谈谈“效率”。程序员也是人,要吃饭,要养家,要在这个世界上生存。学习一门新的编程语言就像学习一门外语,或者说,学习一项新的复杂技能。这中间需要投入大量的时间和精力去理解它的语法、特性、生态系统,还有各种最佳实践。

想想看,如果你想尽快找到一份能养活自己的工作,你会选择去研究一门极小众、几乎没有公司在使用、招聘需求几乎为零的语言,还是去学习一门大家都需要、市场需求旺盛、岗位众多的语言呢?答案显而易见。主流语言之所以主流,很大程度上是因为它们被广泛应用,这意味着大量的企业在使用它们开发各种各样的产品,从网站、手机应用到服务器端系统,再到数据分析和人工智能。这些公司为了维持和发展业务,自然会招聘大量熟悉这些语言的程序员。所以,从经济和职业发展的角度来看,学习主流语言是最高效的选择。

其次,是“生态系统”。一门编程语言的光芒不只在于它本身的语法有多么优雅或者强大,更在于围绕它建立起来的庞大生态系统。这包括:

库和框架(Libraries and Frameworks): 这是程序员的“工具箱”。主流语言通常拥有海量的、成熟的第三方库和框架,可以帮助程序员快速构建功能,解决复杂问题,而无需从头开始造轮子。比如,想做个网站,有了像Python的Django或Flask,JavaScript的React或Vue.js,你就能事半功倍。如果一门语言没有这些现成的工具,你可能就要花费数倍的时间去自己实现,那效率可想而知。
开发工具(Development Tools): 好的集成开发环境(IDE)、调试器、性能分析工具、版本控制系统(Git是必须的)等等,这些工具能极大地提升开发效率和代码质量。主流语言通常有非常完善的开发工具支持,能够提供语法高亮、代码补全、智能提示、错误检查等功能,让编写代码的过程更顺畅。
社区支持(Community Support): 当你遇到问题时,能否快速找到答案至关重要。主流语言拥有庞大的开发者社区,这意味着你可以在Stack Overflow、GitHub、各种论坛、博客上找到海量的问题解决方案、教程、技术文章,甚至可以直接提问并获得帮助。一个活跃的社区就像一个巨大的知识库和互助网络,能让你少走弯路,快速成长。
文档(Documentation): 好的官方文档和社区贡献的教程,是学习和使用一门语言的重要资源。主流语言通常有清晰、全面、易于理解的文档,这大大降低了学习门槛。

再者,“行业标准和规范”也是一个重要因素。在很多行业,特别是一些大型企业或者对稳定性和安全性要求极高的领域,已经形成了事实上的技术栈标准。例如,很多企业可能会选择Java来构建其企业级应用,因为Java在过去很长一段时间里都是企业级开发的宠儿,积累了深厚的技术基础和丰富的经验。如果你想进入这些行业,学习他们正在使用的语言就是最直接的途径。

而且,编程语言的学习曲线也并非所有语言都是平等的。有些语言设计得更直观,更易于入门,上手快,这些语言自然更容易被初学者和想要快速产出的人所青睐。而一些语法复杂、概念晦涩的语言,即使功能强大,也可能因为学习成本过高而被一部分人望而却步,除非有特定的需求驱动。

最后,还有一个“惯性”和“风险规避”的问题。一旦一家公司建立了自己的技术栈,尤其是大型公司,要推翻重来或者引入全新的技术栈,会面临巨大的投入和风险。他们需要考虑培训现有员工、兼容现有系统、招聘新人才等等一系列问题。因此,大多数公司更倾向于在现有的成熟技术上进行迭代和扩展,而不是冒险尝试一个全新的、未经充分验证的语言。这种惯性使得主流语言能够持续保持其市场份额。

所以,你看,程序员们集中学习那几个主流语言,并不是因为他们没有眼光或者不愿意尝试新鲜事物,而是因为这是一种经过现实检验的、效率最高、风险最低的职业选择。这些主流语言之所以能成为主流,是因为它们在上述的各个方面都表现出色,能够满足绝大多数开发者和企业的需求。当然,这并不意味着小众语言就没有价值,它们往往在特定的领域有其独特的优势和应用场景,吸引着那些有特定需求和兴趣的开发者去深入研究。但对于大多数人来说,选择主流语言,就是选择了更平坦的学习道路、更广阔的就业机会和更丰富的资源支持。

网友意见

user avatar

学编程是用来做事的,不是装逼的。主流那几种C++, Java, Javascript, Python,特点是各有各的缺陷(有的还很严重,比如JS那渣设计让人吐槽不能),但是做擅长领域的事情都很高效。虽然在学术上不完美,但工程上过得去就行了。软件开发说到底是一个工程问题。

还是拿Javascript这门渣做例子,虽然丑,有些设计不着边际,但架不住用的人多(浏览器打下的底子,有哪个语言的解释器普及到像浏览器那样每台机子都有吗?),所以有问题有社区帮你解决,从低层比如babel到高层(各种库)全方面支持,踩到坑Stackoverflow分分钟有答案。越是支持充分,用的人越多,人越多支持越充分,这是个良性循环。至于语言本身的问题,上网发帖骂两句发泄下就好了(甚至都不用亲自骂,槽点早就有大牛写好了,你去点个赞就行),骂完还是真香。

你要是换一门学术上完美但是冷门的语言呢?比如Lisp... 做个项目都组不到团,招聘一下,来的人大致都是只写过玩具代码的。踩到坑上google一搜,屁都没有,只好自己解决。搜开源库要不没有只能自己造轮子,要不就是个0.1版几年前的库,原作者生死不明,Github上开个ticket没人理。再完美有什么用呢?

所以说到底,写程序是为了做事,赚钱,不是出来装逼的。就比如现在找个工作都得英语六级,你去读个毛利语博士学位然后嚎叫你多小众多珍贵,你看有没有人理你啊

user avatar

编程语言是用来写软件的,只是写软件的工具而已。等你掌握编译原理之后也能随便自己设计点不同的编程语言来,只是通常都会存在设计问题,也没有针对性优化而已。

假如你现在用一个自己设计的语言来编程序,我们先假设你设计的非常好,但是一般总归有bug的,你还负责一直给编译器改bug吗?(其他小众语言同理)就算有些语言始终有支持,但是语言冷门导致的就是学习的人少,做大工程的时候你怎么招人?难道招了人之后再额外投入资源培训?还有就是冷门语言基本上是没有生态圈的,意味着没有现成的东西可以用。好比你现在想用分布式计算模型比如说Spark的RDD,难道你要自己实现一遍?

编程不等于软件开发,普遍还是不理解......

类似的话题

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有