像 rails 这种注重人性化,注重程序员感受的技术,很难再冒出来了。就算有,也被资本宣传的汪洋大海给淹没了。
现在资本说哪个语言优美,哪个语言就优美,敢说它不优美的要么眼光不行,要么就是没有真的懂这个语言,没有评价资格。就像皇帝新装里的那些成年人,没有人敢说黄帝没穿衣服,谁说出这个真相谁就是“愚蠢”的人。
没错,我说的就是 golang,挺佩服王垠的,他敢说 golang 不优美。
除了吐槽之外,再给你看几句引述,都来自于你佩服的王垠:
很多 JavaScript 程序员也盲目地鄙视 Java,而其实 JavaScript 比 Python 和 Ruby 还要差。……Python 凑合可以用在不重要的地方,Ruby 是垃圾,JavaScript 是垃圾中的垃圾。原因很简单,因为 Ruby 和 JavaScript 的设计者,其实都是一知半解的民科。
Python 的变量定义和赋值不分,所以你需要访问全局变量的时候得用 global 关键字,后来又发现如果要访问“中间层”的变量,没有办法了,所以又加了个 nonlocal 关键字。Ruby 先后出现过四种类似 lambda 的东西,每个都有自己的怪癖…… 有些人问我为什么有些语言设计成那个样子,我只能说,很多语言设计者其实根本不知道自己在干什么!
今天我来谈一下另外一种错误的倾向,这种倾向也导致了很多错误,并且继续在导致错误的产生。今天我要说的错误倾向叫做“试图容纳世界”。这个错误导致了 Python,Ruby 和 JavaScript 等“动态语言”里面的一系列问题。
我不评价王垠说的到底有没有道理,因为我觉得不够资格,引用这些只是为了告诉你,diss 之前也是要做做功课的,至少王垠并不如你“幻想”的那样认为 Ruby/Rails 很优美。
再多送一段我个人觉得比较有意思的:
所以初学者要想事半功倍,就应该从一种“合理”的,没有明显严重问题的语言出发,掌握最关键的语言特性,然后由此把这些概念应用到其它语言。哪些是合理的入门语言呢?我个人觉得这些语言都可以用来入门:Scheme、C、Java、Python、JavaScript……
你多虑了,我并没有把王垠的话奉为真理。在 diss golang 这件事上,我是很佩服王垠的。
相反,一些码农把 google 奉为真理,google 推出什么语言他们就追什么语言,google 推什么框架他们就追什么框架。
现在比较可悲的是连技术领域都是被资本控制的,连哪项技术好哪项技术不好的发言权,都控制在资本手中,而使用技术的开发者却没有了评价的权力,当然也可以评价,只是声音完全被资本的水军给淹没,没有几个人听得到。
no no no,可以说 rails 给资本压榨提供了方便,但 rails 不是资本压榨的结果,rails 开始于 2005 年(碰巧 django 也是这年诞生),那时候资本在技术领域还没有一手遮天。
哪个资本闲着没事还去宣传技术?
Rails 本身不适合业务急速扩张的场景,倒不是 Ruby 本身的 scalability 问题,是团队的 scalability 问题。急速扩张大量需求的是蓝领工程师,Rails 作为蓝领工具没有特别优势,甚至还有不少劣势。
归根结底还是因为软件相关行业利润太高,能堆人解决的问题都不是问题;rails 工程师大多是 generalist,堆人的公司也用不上。
软件开发的问题本来就不应该是堆人能解决的问题。我不知道有多少人赞同。但我知道很多公司在把人往这方向培养。从参加工作以来我就一直想知道,多少人招聘的时候对面试者的隐含要求不是“能力比自己低”?恐怕这些人连这个话题都不敢讨论。
公司隐含的要求是:员工要能解决问题,并且还要平庸,所以让员工变得平庸的技术反而能大行其道。
PHP 能火的很重要一个原因就是:它那混乱的语法让程序员一定程度上变得思维混乱,口笨舌拙,更利于控制。
从业这么多年我还发现一个更残酷的真相:公司的管理层甚至老板,都是先用各种套路把员工弄得晕头转向、失去尊严、心理防线崩溃以后,才给员工安排真正的工作。
所有这些残酷的真相,都导致一个残酷的现实:编程离兴趣越来越远,离艺术性越来越远,离生存越来越近。一切都在内卷化。
在十几年前,编程界还是有很多让人尊敬的大牛的,不管国内还是国外,现在也有大牛,不过大都是商业包装起来的、离资本越来越近离技术越来越远的大牛,或许他们技术上真的有两下子,不过总觉得他们离技术很远离资本很近,简单的说,就是他们的口碑不是真正的程序员口口相传建立的,而是水军代替程序员口口相传建立起来的,国内这个现象尤甚。
“有多少本身很喜欢 ruby 的同学在被迫写其他语言”?诶 你咋看不到,有多少人,用 ruby 用得开心,用其它语言也很开心,反正就是做什么事情都很开心,因为他就是一个开心的人?
他这个人积极乐观向上,在哪里 都乐于分享自己的成功经验。而不是 ruby 或某个语言成就了他。 —— 他干啥啥行。
"diss 之前也是要做做功课的,至少王垠并不如你“幻想”的那样认为 Ruby/Rails 很优美。"
楼主此贴压根就没幻想你所说的"王垠认为 ruby/rails 很优美",楼主此贴说的是王垠 diss golang. 你只是为了 diss 楼主而 diss。王垠吐槽 ruby,js 人尽皆知,用做什么功课?
我倒不这么觉得。你说的是“坏”,是态度的问题;我更愿意相信他们是“蠢”,是(思考)能力的问题。
对公司来说,是浪费财力的同时生产更低效而不自知。对技术领导来说,是限制了自己的成长,给自己的未来的发展设置了上限、提早淘汰而不自知。
有不少公司招新人进来不让接触根本的东西,自己封装了一层“指导原则”的东西,招进来的人在这个框架上工作,甚至连编程语言(Ruby)本身、技术框架(Rails)本身都没怎么掌握,就被赶鸭子上架,照葫芦画瓢的 copy and paste 写代码。而这就是他们追求的“软件工程”,口口声声“软件工程目的就是为了实现低水平的程序员都能完成工作”,这恐怕是你们自己的目的吧?同样是程序员,你就这么孤傲自大?凭什么别人做的事只能比你低级?只因为你先进入公司?只因为你职位级别更高?工作年限?不好意思,干了十来年的代码都写不干净的我还没少见。
这在我看来就是对员工的愚化,聪明的都会走掉,蠢的才会被留下。
我理想中的团队是个精英团队,扁平化管理,每个人用自己的长处彼此互相帮助,而不是金字塔型的编码机器。编程是脑力劳动,不是体力劳动,不要用行动来侮辱这个行业。
这个话题很值得好好聊。
公司隐含的要求是:员工要能解决问题,并且还要平庸,所以让员工变得平庸的技术反而能大行其道。
是不是有点因果倒置,平庸员工都能解决问题的技术就应该大行其道。别人都上先进生产线,招高中毕业生,培训 2 天直接上岗,你还非要找 20 年经验老手工师傅。当然不是说老手工师傅不行,只是适合的场景不一样。
有不少公司招新人进来不让接触根本的东西,自己封装了一层“指导原则”的东西,招进来的人在这个框架上工作,甚至连编程语言(Ruby)本身、技术框架(Rails)本身都没怎么掌握,就被赶鸭子上架,照葫芦画瓢的 copy and paste 写代码。
copy paste 写代码跟公司没什么关系,没有公司会禁止员工进步。就软件行业来说,大批优秀开源项目、文章等学习资料唾手可得,进步不了怪公司有点说不过去。
总结:平庸员工就能以可接受质量完成工作是生产方式优秀的体现,有上进心的人可以没有障碍(科学上网不算)的接触业界先进知识是行业优秀的体现。
你这总结得也太轻率了。“平庸员工就能以可接受质量完成工作”是我们应该追求的目标?还是优秀人才难招聘(或者不愿招聘)、难培养(或者没能力培养)的结果?软件工程目的真的就是为了实现低水平的程序员都能完成工作?
我们很多情况下不过是把客观因素造成的结果当成主观目标来追求,把真正应该追求的目标给放弃了,从一开始就放弃。当然这也容易给水平一般的管理者营造自己的舒适圈。
我们不说“平庸”,“低水平”,我们说平均水平
软件工程目的真的就是为了实现低水平的程序员都能完成工作?
软件工程的目的是利用现有资源完成目标。精英工程师是稀缺资源,绝大部分公司不可能全员精英,如何利用好平均水平工程师才是关键。
还是优秀人才难招聘(或者不愿招聘)、难培养(或者没能力培养)的结果?
同上点,优秀人才稀缺是不可改变的现实,请不要把人才培养的责任推给企业,企业顶多占 20%,个人因素最重要。
“
平庸平均水平员工就能以可接受质量完成工作”是我们应该追求的目标?
是。
像 rails 这种注重人性化,注重程序员感受的技术,很难再冒出来了。
LZ 应该是认为 Ruby/Rails 是优美的,这没有问题吧?除非“人性化,注重程序员感受”这些点不是优美语言的特质,这楼主也不会同意的。
现在资本说哪个语言优美,哪个语言就优美,敢说它不优美的要么眼光不行,要么就是没有真的懂这个语言,没有评价资格。就像皇帝新装里的那些成年人,没有人敢说黄帝没穿衣服,谁说出这个真相谁就是“愚蠢”的人。
这句话的意思总结一下就是:资本控制下宣称的优美的语言都是虚假的,只有那些敢于说真的话的才是“眼光行,真的懂”。但是资本控制很强权,没人敢说出真相。
挺佩服王垠的,他敢说 golang 不优美。
而第三句就是 LZ 甩出的论据:因为王垠不代表资本,代表的是“眼光行,真的懂”的个体,所以他敢说 Go 不优美这是值得 LZ 佩服的。换言之——LZ 是相信王垠的眼光和判断的。
以上是我对主楼的语言逻辑的分析,我自己觉得没什么问题,如果有你不妨点出来就好。
那么在此分析之下很显然 LZ 的言语是自相矛盾的,因为他相信和佩服的王垠并非只是 diss 了 Go,他也一样 diss 了 Ruby/Python/JavaScript 等等语言。特别是 LZ 他又认为 Ruby 是优美的,那……要不然 LZ 先和王垠探讨一下达成一个共识?
我之前回复有问题的地方在于我默认 LZ 会觉得王垠认为 Ruby 优美并且不会 diss Ruby 的,因为只有这样他拿王垠 diss Go 的论据出来才对他的论点有足够的支撑。但显然我错了,因为王垠 diss 其他语言的时候压根就没想过是不是要和资控言论唱反调,人家只是出于自己的判断想 diss 就 diss 了。OK,我的错我承认。@gaicitadie 抱歉的确是我多虑了。
不过 LZ 这个论点是不是也不应该拿王垠的言论来充当论据呢?因为王垠的出发点很显然不是 LZ 想要表达的事情。
Umm...我来回一个水帖,分享一个基于真实事件的故事。
年后,老张把我拽到了现任公司,说有个比较大的新项目,要我来狠干一票。项目开始前,经过冷静客观的分析,Rails 成为最合适的选择。
我信心满满地跑到了老张的工位,“老张,上 Rails 吧,没毛病。”
……(省略五千字对话)
老张叹了口气,对我说:“兄弟!虽然是我把你拽来的,可是你要是用 Rails,我就得下岗了呀!”
我回头看了看角落里 navicat 手动连 mysql 导入 sql 改表结构的 java 程序员,又瞧了瞧隔壁红着眼睛盯着屏幕里《企业中台建设方案》ppt 的架构师,又瞅了瞅老张桌子上积满灰尘的《人工智能时代》,有点儿出神。突然,大厅里响起了一声谩骂:“艹!谁 TMD 本地启服务不改服务名?!”我被这一声怒吼唤回了神,默默地回到了座位上,运行 rails new 新建了一个项目,然后用力敲击键盘,在 home page 用 h1 字号写下了一句“Hello,world!”
五个月过去了,新项目迟迟还没有启动,在一个微风扶面,带着丝丝凉意的夜晚,我和老张走在下班必经的小树林里。
“老张,那项目啥状态了?啥时候开干啊?”
“嗨!别提了,半路杀出来个阿里,抢走了好多核心业务。合同还没签下来呢。”
老张点了根儿烟,接着说,“MD!老子在大老板那牛逼都吹出去了。”
我拍了拍老张对他说,“能拿下点儿,是点儿,在甲方那再使使劲儿,别总微服务,人工智能的,区块链的,不新鲜了。”
老张狠狠掐灭了眼头儿,“行,等信儿吧,我再约他们喝一顿。先走了。”
老张钻进了他的 suzuki 小汽车,一溜烟儿开走了。
昨天一大早,老张来到我的工位,“兄弟,拿下来了!未来三年都有吃的啦,后台管理的增、删、改、查全是咱们的!”
“额,恭喜恭喜啊,这回你年终奖少不了吧。”
“嗨呀!哪有,多亏你帮我弄的 ppt,把那群家伙唬得一愣一愣的,啥边缘计算,WebAssembly 的他们都没听过,哈哈哈!”
我冲着老张微微一笑,“那这回我上 Rails 更没毛病了吧。”
老张撮了撮手,“那啥,用不用 Rails 咱们回头再聊,反正甲方指明了 java 微服务不能少。啊,对了!还说要用个什么微前端的东西,你抽空也研究一下吧。”
“那……”我没来得及说话,老张的电话响了,“哎呦!王总啊!……对对对,拿下来了,拿下来了!……哪里哪里,还是您指导有方啊!……”
我看着老张,他变了,他再也不是那个曾经跟我一起喝着美年达通宵改 bug 的老张了。
我缓缓地在终端打下 subl,启动 Sublime text,然后把那行 h1 标题中的 hello 改成了 F**k you。
快下班了,我在电脑旁出神,老婆的来电响了许久我才拿起电话。
“我爸手术安排在下周了,手术费还差两万。”
“行,知道了,我想想办法。”
“对了,尿布到了,放在门口超市,你回来的时候取一下啊。先不说了,又尿了……”
我望着桌边崭新的《算法导论》,慢慢抚摸着陪伴我 8 年的 filco 键盘,把那行 h1 标题中的 world 改成了 life。
全文完。
在看这个的时候,conscrypt 内存又泄露了。https://github.com/google/conscrypt/issues/835
之前漏了一次,感觉修了有一年,刚修好,又漏了。这次好在漏的比较慢。
之前 fastjson 有安全漏洞,修了 n 次。
google 的 package 有内存泄露,修了一年,没修干净。 阿里的 package 有安全问题,修了 4、5 次了,也不知道完全修好没。
然后大家都认为,java 工业化做的特别好。
golang 和 ruby 的风格相差太大。go2 要加泛型,结果不少用户在讨论是否违反了大道至简的哲学……
真心希望这种宗教、禅学不要祸害那么多编程语言
个人喜欢c#和ruby,恰好这两个的主要竞争对手都是热门语言。
日本招 rails 的挺多,虽然还是没 JAVA 多!
https://www.green-japan.com/search_key/01?key=2vkn2gx21xjyx34dfj15&keyword=Rails