过去一周最热门的 5 条开发者评论
这是每周精选的精彩开发者评论,您可能错过了。欢迎并鼓励您使用#bestofdev标签来推广帖子和评论。
@humrochagf回复了《改变我一生的编程语言!》这篇文章,并分享了自己与不同编程语言的联系:
《这是一个价值 1000 欧元的 Node 脚本吗?》这篇文章读起来非常有趣。@antontsvil在文中谈到了确保你真正遵循所有要求的重要性:
这是一个令人痛心却又似曾相识的警世故事。你以为自己了解客户的需求,结果倾注所有心血打造完美产品后,却发现自己完全误解了他们的需求!教训就是:在尝试解决问题之前,务必先彻底理解问题所在😉
@andrewbrown在这个讨论串中给出了一个很棒的答案:如果你的经理让你在接下来的两周里从事任何“有趣且有意义”的工作项目,你会做什么?我个人非常期待看到这最终成为现实。
我会完成我的 AWS 星际迷航卡拉OK应用程序,用户可以在其中输入卡拉OK配乐,它会将视频照片剪辑在一起,让星际迷航角色唱歌。
所以我可以制作类似这样的东西:
在 AWS 上转录《星际迷航:下一代》全季需要花费 500 美元,但我有足够的积分来做到这一点。
</div>
JavaScript 是最令人困惑的编程语言吗? @curtisfenner对此有一些补充说明和例子:
我认为假装所有语言都一样是不诚实的,而且适得其反。事实上,TypeScript 的诞生正是源于这样一个棘手的现实:在大团队中编写 JavaScript 的成本远高于实际所需。
JavaScript非常令人困惑,以至于“令人困惑”与“容易预测”和“理解它并不复杂”完全相反。
以下仅列举 JavaScript 复杂难懂之处的一小部分:
{var x = 1; {var x = 2;} console.log(x)}是2,但{let x = 1; {let x = 2;} console.log(x)}使1。
doThing(arg, (x) => { this.receive(x); });通常会有效,而doThing(arg, function(x) { this.receive(x); });通常不会。
[1, 2, 3, 10, 20, 30].sort()是[1, 10, 2, 20, 3, 30]。["x", "y", "z", "a", "b", "c"].sort((a, b) => a - b)不会改变顺序。
"slice" in []但却for (let p in []) {console.log(p);}什么也没打印出来。
"𝕋𝕋".length是4,但Array.from("𝕋𝕋").length也是2
{[{}]: 10}["[object Object]"]尽管10这显然说不通。
(a => a).length是1,Array.from((a, b) => a + b)也是[undefined, undefined]。
arr.push,,arr.pop不arr.splice返回数组,但修改它;修改arr.sort并arr.reverse返回数组;arr.concat,,不修改数组。arr.slicearr.map
0 == "0"但是0 == ""……"" != "0"
当然,这些都有(相对简单的)解释。然而,每一种都代表着你必须了解的“琐碎知识”,才能真正理解实际应用中的 JavaScript 代码;它们都是程序员为了避免被 JavaScript 搞得晕头转向而必须(反复)克服的众多障碍之一。显然,这只是 JavaScript 引发困惑的几个典型例子;了解这些并不意味着你就不会被 JavaScript 搞得晕头转向。
不过,JavaScript 绝对不是最令人困惑的语言。我也同意,它正在变得越来越好(尤其是像 TypeScript 编译器这样的工具的出现,使得编写纯 JavaScript 代码变得更加容易)。(不幸的是,正如上面的列表所展示的那样,这也使得 JavaScript 变得更加复杂,因为“传统”特性与行为略有不同的“现代”特性并存。)
作为一个努力跟上编程语言理论步伐的人,我担心人们对编程工具会感到自满。我们今天所处的阶段显然远未达到编程工具的“巅峰”(毕竟,编程语言本身到现在也只有大约60年的历史),这意味着还有很多可以改进的地方。认识到我们已经取得了长足的进步固然重要,但同样重要的是,我们不能忽视那些仍然可以改进的领域。
(以上情况并非 JavaScript 独有,但我确实认为 JavaScript 是更容易让人感到困惑的语言之一。C 语言可能是另一种经常被认为是“足够好”的语言,尽管它也有很多需要改进的地方。)
针对苹果公司想要从 macOS 中移除脚本语言一事, @codemouse92发表了一些关于“脚本语言”一词本身以及苹果公司潜在动机的看法:
我一直觉得“脚本语言”是个模棱两可的词。它缺乏正式定义,却被随意地用来指代任何开发者认为“不是真正的编程语言”的语言(同时还带着资产阶级式的鄙夷)。
如果他们指的是“解释型语言”,那确实是一个具体的概念,但也意味着要放弃 Java。
什么叫“老旧”?Python什么时候变成“老旧”语言了?它可是当今最流行的应用程序开发语言之一,我的天哪!(顺便一提,Ruby和Perl也根本算不上“老旧”。)
不过,我倒是有个想法……我觉得苹果只是想“鼓励”(其实是强迫)开发者使用他们自家的编程语言,开发更多苹果独占软件。这又是老一套的“围墙花园”策略。
但四年前,苹果开始明目张胆地阻止Linux与iDevices通信,于是我便开始抵制苹果产品。(没错,技术支持也证实了这一点。)他们就是喜欢搞这种肮脏的勾当。
苹果爱好者们:来Linux吧!花园篱笆这边才是真正的自由。 ;)
下周见,期待更多精彩评论✌

帖子写得真棒!我在计算机科学课上接触过Prolog,当时学得很吃力。也许是时候重新拾起它,看看你推荐的这本书,再试一次了。
对我而言,我接触过的每一种编程语言都在某些方面改变了我的生活。
每种语言都让我接触到不同的看待事物的方式☺