看到「学什么新语言」这个问题,推荐这本书

2021-08-21 12:45:24 +08:00
 pocarisweat

《七周七语言:理解多种编程范型》 https://book.douban.com/subject/10555435/

书里囊括了颇有代表性,但很多程序员未必了解的 7 种语言:

书的篇幅没有那么长,这些语言也未必能用在实际工作上,但一定能打开你的眼界。书里介绍的语言,和 vczh 之前推荐的几门编程语言( https://www.cnblogs.com/geniusvczh/archive/2013/04/27/3047560.html , Go 语言粉丝请不要点开这个链接!)也高度重合。

这里( https://segmentfault.com/a/1190000002944730 )还有一篇对作者的采访。他甚至后来还写了第二本书( https://book.douban.com/subject/26921107/ ),包括 Lua 、Idris 、Elm 、Elixir 等。

「语言都是工具」这话本身是没错的,但喜欢说这句话的人时常是在表达一种虚无主义的态度,即「什么语言都一样」。但锤子和螺丝刀都是工具,大概人们也不会混用它们吧?

5875 次点击
所在节点    程序员
34 条回复
wangxiaoaer
2021-08-21 22:04:20 +08:00
很多人喜欢说的是语言无所谓,学习语法很快,但是我觉得不同语言最主要的是思维方式的不一样,这个没有想象中那么简单。虽然一个合格的开发人员可以快速学习其他语言,但是把切换语言当作是换种饮料那种成本很低的想法不太合适。
roundgis
2021-08-21 22:57:29 +08:00
如果沒有目標那就學好英文
hobochen
2021-08-21 23:05:33 +08:00
语言是用来解决问题的,所以我还是觉得要学点对解决问题有用的语言。

比如你要写点儿依赖又多、性能又有要求的系统,你可能就只能写 C++。
比如你要在个 VM 上写点儿复杂业务逻辑,那学 C#或者 Java 准没错。
比如你要去魔改 linux kernel 或者给 kernel 写驱动,那就学点儿 C 。
比如你要去搞机器学习,把自己变成胶水层工程师,那就学点儿 Python (而且真的只需要一点儿)。

如果你连自己想要解决什么问题都没搞清楚,就想着学点儿新语言,那么我觉得你只是在学习新的系统库 API 和语法糖。
hobochen
2021-08-21 23:09:29 +08:00
出于我个人的喜好,我建议去学 C++和 Haskell 。

C++绝对不是一个让人学起来用起来身心愉悦的语言,但是精通 C++的过程能让你确立足够的审美和对计算机工程有足够的了解。

Haskell 则是一个,大多数人没接触过,但很有意思的世界。
lanlanye
2021-08-21 23:32:56 +08:00
学什么语言取决于要做什么工作,不过不同语言通常是根据不同思想设计出来的,多了解一些或许会有新的收获。
Ps. 我觉得 Go 也没那么糟嘛。
adoal
2021-08-22 01:11:10 +08:00
说“语言都是工具”,还有很大可能并不是楼上的技术大牛们互相不认可的技术原因,只是说这话的当事人凑巧职业生涯的开始是在程序员岗位上,但毫无心思深入钻研编程技术,一心想着“我只是现在做 crud,我可以在甲方(发包单位或公司里业务部门)的鞭打下去摸清楚业务需求从而跟公司业绩直接贴近,我想未来脱离这些乱七八糟的细节,做一个只要能拿技术吹水就行不需要真抠细节的管理者”。
WuSiYu
2021-08-22 02:59:40 +08:00
“语言都是工具”这句话可对可错,主要得看所处的环境 /圈子

对于 PL 圈或类似圈子、对编程语言本身有研究的人,自然不会太认同,毕竟从设计角度上他们都有非常大的差异
对于更加普遍的软件开发者而言,选择一个语言往往是被迫的,学习语言的选择也会被本地就业环境左右;从相对功利的角度去看,不管语言本身的各种差异如何,反正都是上班的工具了
mazhimazh
2021-08-22 10:31:48 +08:00
学 Java 语言,看我的系列丛书《深入解析 Java 编译器:源码剖析与实例详解》、《深入剖析 Java 虚拟机:源码剖析与实例详解》
plko345
2021-08-22 16:31:48 +08:00
@powerman 可是,无论在哪个邻域,“工具”都非常重要,为什么到你这就变成很无用的了
secondwtq
2021-08-22 21:07:07 +08:00
楼主确实有点来错地方的意思。
和“编程语言”打交道的人并不全是一样的,至少可以分成两类非常不同的人:
一种人接触编程语言是为了解决某个和编程语言没太大关系的问题。
另一种人接触编程语言就是为了折腾编程语言。

至于这两种人的事情对另一种人有什么好处,这个现在还很不好说。但是可以肯定的是当两种人碰到一起讨论编程语言时必然会出现各种鸡同鸭讲的状况。目前看来本站前者居多。
lancelock
2021-08-23 10:32:48 +08:00
语言只是工具,一句毫无逻辑的话,我不知道为什么很多人跟风说,好像喊口号一样。

首先这就不是一句完整的话,你抛出了一个观点,然后呢,你的结论是什么?
姑且认为你的结论就是 "用什么语言都没啥区别",那么你就需要一个条件(工具都没有区别)来支持你的观点。

如果所有工具都没啥区别,那那么多发明家、科学家一辈子都在折腾啥?闲的蛋疼是吧
NoDocCat
2021-08-23 15:06:01 +08:00
你和一帮拿着螺丝刀拧水龙头的人,有什么好聊的呢?
ljzxloaf
2021-08-24 05:46:41 +08:00
有用 C 写 crud 的吗
O5oz6z3
2021-08-24 06:34:30 +08:00
一个想法,不一定对。编程语言就和球类运动似的,球类运动也分乒乓球、网球、桌球、排球、保龄球、篮球、足球、棒球、橄榄球、高尔夫球……

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/797161

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX