如何评价王垠的《Go语言,Docker和Kubernetes》

Python017

如何评价王垠的《Go语言,Docker和Kubernetes》,第1张

<Go语言,Docker和Kubernetes>,看了题目好激动,还以为有什么干货,点进去一看啥东西没有,一篇水文而已,这人工作几年了?不好,你们让大家评论这样的文章,是故意的吧?

我以前写Java,最近主要写Ruby,以及一点点JavaScript。

我觉得文章中有几点,是很可取的:

编程使用什么工具是重要的,然而工具终究不如自己的技术重要。很多人花了太多时间,折腾各种新的语言,希望它们会奇迹一般的改善代码质量,结果最后什么都没做出来。选择语言最重要的条件,应该是“够好用”就可以,因为项目的成功最终是靠人,而不是靠语言。

很多时候我们忙于学习不同的语言,而忽略了语言的最终目的,是写出可以解决问题的程序。

IntelliJ还可以进行非常迅速的结构变换,这让你就像艺术家在构造一个雕塑作品。最开头我可以大刀阔斧,把代码劈成大致的形状,然后再把它仔细推敲,揉捏成更好,更容易理解,更具魅力的形状。

是的。用IntelliJ来Refactor Java代码的体验,的确比 用RubyMine来Refactor Ruby代码、用WebStorm来Refactor Javascript代码的体验,要好太多太多了。虽然后者的体验也强于用Vim时候的体验,但用IntelliJ来的更加畅快淋漓,而且从来不用担心因为Refactor而出现命名错误(如果不用Reflection的话)。

很多人讨厌Java,其实是因为早期的GoF Design Patterns,试图提出千篇一律的模板,给程序带来了不必要的复杂性。然而Java语言本身,其实跟Design Patterns并不是等价的。Java的设计者跟Design Pattern的设计者,完全是不同的人。你完全可以使用Java写出非常简单的代码,而不使用Design Patterns。

我自己对于一些大公司规定的模式,比如“Programming towards Interface, not implementation”十分反感——这样子造成了很多interface,只有一个implementation;而在读代码的时候,就要跳转很多个文件,才能找到需要的内容。但我觉得这是写代码的人得问题,和Java无关。只是很多人在写Java的时候,太从字面上理解“Programming to Interface”了。

然后我不太同意的:

Python凑合可以用在不重要的地方,Ruby是垃圾,JavaScript是垃圾中的垃圾。原因很简单,因为Ruby和JavaScript的设计者,其实都只是民科。

我个人很喜欢Ruby的设计的,主要来自于MetaProgramming的部分——真的可以让代码量少很多。来自于更高级别抽象的代码量减少,直接意味着,整个程序变得更容易阅读和理解。我不觉得民科设计出来的东西,就意味着这个东西不好。而且Ruby程序,debug起来还是很容易的:RubyMine对于断点StepTrace也有很好的支持。而且,因为是Script Base的语言,可以很容易的去阅读/修改Library的代码,从而很快地理解对应的Library。

JavaScript还是有些坑的,比如没有原生的Class(ES6的class看起来只是function的一个syntax suger)、神奇的prototype和this的关系问题;但理解了原理,这些坑还是挺容易避免的。而且也有很多用JavaScript开发的不错的App和框架,异步编程的思想也很好(当然 思想这种东西,都任何语言都是可以支持的)。“垃圾中的垃圾”就太偏颇了。

对于Go / Scala / Clojure我几乎没有了解,无法评论。

然后讲一下,我对于Java很反感的地方:长,function不是object。

1. 依稀记得 当年写各种Data Access Object,里面有若干Getter / Setter,虽然用IDE可以自动生成Getter和Setter,但依然……读起来/维护起来 很辛苦。

2. 以前写Android程序,加EventListener。其实只是一个function而已,但只能通过Anonymous Class、在里面define function的方式——加一个EventListener,2层缩进就出去了。让代码变得好丑。

(在Java8里面,支持了Lambda,应该有所缓解吧;这里我还不是很清楚)