那些年,Linus torvalds大神喷过的技术
Linus Torvalds 被认为是最伟大的程序员之一,因为他写出了使用最广泛的软件,如 Linux 内核和 Git 版本控制系统。但是他这个人经常因为讲话带有情绪,甚至是因为带有脏话的意见而饱受非议。 |
有些时候,Linus Torvalds 认为那些工作没做好,或者持有不同观点或竞争关系的公司和组织,不管是正面的还是背面的,他的话里都是带着火药味的。
尽管大多数情况下,Torvalds 愤怒的主要原因都是技术惹的祸,跟技术有关。但是,我们还是不要期望已经45岁的 Torvalds 在情绪上能够缓和多少。好了,基于以上背景,我们来了解一下 Torvalds 多年来对这11项技术有哪些不满的意见。
历史:Emacs 早已经是 Unix 和类 Unix 系统,包括 Linux 最常用的文本编辑器之一。GNU Emacs 是使用最广泛的 Emacs 实现。它是由 Richard Stallman 创建,并在1985年发布了第一个版本,之后变为 Stallman 的 GNU 项目之一。尽管 GNU Emacs 很受欢迎,但并不是每个人都喜欢它,表现最明显的就是 Linus Torvalds。
有趣的是,尽管 Torvalds 多年来毫不间断的抱怨”真正的 Emacs“(即GNU Emacs),但他的首选编辑器是uEmacs,一个不同的 Emacs 实现,叫做 MicroEmacs 的定制版本。
“无数只猴子在 GNU Emacs 项目上打字,这也注定他们永远不会成为一个好项目。” ——-1995年
“真正的 Emacs 是魔鬼工具。” ——-2012年
历史:GNOME 是一个可以在多数 Linux 发行版获取的开源桌面环境,它提供了一个图形化的用户界面和多种应用。
Linus Torvalds 与 GNOME 的关系在很长一段时间里都是很微妙的,使用之后再放弃,然后再使用。也经常在如 Xfce 和 KDE 这样的环境里相互切换。Torvalds 对 GNOME 的抱怨通常都与难以通过接口解决特定问题和难以定制环境有关。不过 Torvalds 现在再次使用 GNOME 对于 GNOME 基金会来说倒是一个好消息。
“我觉得 GNOME 有局限的主要原因就是它自身所拥有的局限性。”
——–2007年2月16日
“我还没遇到谁会喜欢邪恶混乱的GNOME-3。” ———2011年8月
“整个GNOME-3的用户体验几乎完全是失败的,’在默认配置下,我们连解决问题的最基本的工具都不给你,但你可以通过非官方的扩展解决它‘。”
————2012年6月1日
历史:HFS+ 是由苹果公司开发的一个文件系统,也被称为 Mac OS 扩展容量硬盘驱动器格式。它最早在 Mac OS 8.1 中实现,现在的 Mac OS X 还在使用 HFS+。
多年来,Linus Torvalds 一再表明他不屑于使用 HFS+,最大的一个大问题就是它不区分大小写,他觉得这是一个非常差的设计选择。
“在某些方面 OS X 实际上是不如 Windows 来进行编程。他们的文件系统就是垃圾。“ ———2008年2月
“HFS+真正恐怖的不是它不是一个好的文件系统,而是人们觉得他们有好的想法并积极设计一个差劲的文件系统。” ———2014年12月23日
“坦率地说,HFS+ 可能是世界上最差的文件系统。“ ——–2014年12月22日
历史:Java 首次由 Sun Microsystems 公司于1995年作为专有软件发布,是目前使用最流行的编程语言之一。在早期,Linus Torvalds 曾对 Java 寄予厚望和它的“一次编写,随处运行”的功能,觉得这可能有力的推动 Linux 操作系统的发展。
然而,Torvalds 觉得 Sun 拙劣的语言设计和 Java 虚拟机只能应用于桌面环境,所以它注定要失败。多年后,Java 没有像他预言那样,Java 语言已经很繁荣,而且代码已经开源,但 Torvalds 似乎仍然没有对 Java 有很高的评价。
“本质上我看到的只是 Java 引擎在走下坡路,因为它别无去处。”
———-1998年8月
“我不关心Java。多么可怕的语言。“ ———–2011年11月
历史:Hurd 是基于 CMU Mach 内核的一个微内核,它作为 GNU 项目的一部分也取代了 Unix 内核。尽管 Hurd 从1990年起已经开发很长一段时间了,但它仍不适合用于生产环境。相反,很讽刺的是,GNU 的其他组件作为 Linux 内核而流行了起来。
Linus Torvalds 说,如果 Hurd 能早点准备好,他可能甚至不会麻烦的把创建 Linux 作为首要任务。此后,Torvalds 不喜欢微内核,所以经常发表对 Hurd 的负面看法。
“我认为Hurd已经死了。它有一个’大版本’,人们忘记了的细节,并且忘记承认他们出的问题。“ ———2004年10月
“Hurd不是一个真正的微内核,它是如此的可憎,以至于所有其他的微内核看上去都很糟糕。” ———–2006年5月15日
“简而言之:向毒品说不,向Hurd说不。” ———–2001年10月4日
历史:C ++ 是由 Bjarne Stroustrup 创造的,他想建立一个系统编程语言,有 C 的速度和效率,并有类似 Simula 语言一样的程序组织。Linus Torvalds 发现用 C++ 实现 Linux 内核代码并不是最优选择。
从那时起,他对 C++ 的不给力发表了非常强烈的意见,大致上是说 C++ 是差劲的设计选择,它只会被次品程序员使用。
“事实是,C++编译器不值得信任。整个C++异常处理从根本上是错误的。“ ———-2004年1月19日
“尽管 C++ 可以用于原型或简单的 GUI 编程,但它不能使事情更简单。C 语言虽然并不精益于系统编程语言,但它积极鼓励你使用简单和直接的结构。“
————-2007年9月7日
“C ++ 是一个可怕的语言。” ————-2007年9月6日
历史:Mach 是一个微内核,在1980年代后期在卡内基梅隆大学开发,用于替代 Unix 的 BSD 内核。它后来被用作其他内核的基础(并不都是微内核),如 GNU Hurd 和苹果的 Mac OS X。
鉴于 Linus Torvalds 不喜欢微内核,他多年来多次对 Mach 表示不满就不值得奇怪了。具有讽刺意味的是,Steve Jobs 曾试图聘请 Torvalds 在 OS X 工作,但是当 Torvalds 被告知这将意味着放弃Linux 发展时拒绝了这份工作,更何况他要在 Mach 的基础上工作。
“我对 Mach 的个人评价不是很高。坦率地说,它是一堆垃圾。它包含了所有你能制造出来的设计错误,甚至有些错误是设法弥补自身错误而造成的。“
———-2001年
”我认为开发 Mach 的人是不称职的白痴。“ ———2006年4月20日
历史:GNU 编译器集(GCC),1987年首先被用来作为 GNU 操作系统的 C 编译器。它后来被扩展到各种平台的一些其他语言的编译前端(C ++,Objective-C,Fortran,Java,Ada 和 GO)。它已经在许多类 Unix 操作系统中占主导地位(和默认值),如 Linux,这意味着 Linus Torvalds 非常熟悉它——不管它是好还是坏。
“老天爷,那个 GCC 4.9.0 编译器不应该被允许从幼儿园毕业。
——–”2014年7月24日
“GCC是废话。 ———2006年11月28日
历史:XML 是 W3C 开发的一种用于编码文档的标记语言,它作为通用标记语言(SGML)的一个子集,在1998年首次发布。虽然本来是为了机器和人简单易读,但不是每个人都这样认为。
Linus Torvalds 就是其中之一,这有助于解释他不喜欢这种格式。
“XML 可能是设计的最糟糕的格式,作为一种文件格式,它真的没有扩展能力,它通常是一个完全的灾难。“ ———2014年3月6日
“XML 是胡扯。解析 XML 对人类来说是讨厌的,甚至对计算机来说也是一场灾难。没有理由让这个可怕垃圾存在。 ———“2014年3月6日
历史:Solaris 是基于 Unix System V 创建专有操作系统,由 Sun Microsystems 于1991年首次发布。Sun 在2005年决定通过 OpenSolaris 项目开源 Solaris 代码,Linus Torvalds 对 Linux 的新竞争有几次公开言论。
对于 Torvalds 和 Linux 幸运的是,2010年后甲骨文收购了 Sun,并终止了 OpenSolaris(虽然它的衍生品还活着),并决定把的 Solaris 再次转为专有操作系统。
“仍然有很多人喜欢 Solaris,但我与他们积极竞争,所以我希望他们死。”
———2005年2月
“Solaris/x86 是个笑话” ———-2004年12月
历史:MINIX 是一个类 Unix 操作系统,由 Andrew Tanenbaum 创建并于1987年作为专有软件发布,后来开源了。Tanenbaum 是阿姆斯特丹 Vrije Universiteit 大学的教授。
Linus Torvalds 认为 Tanenbaum 有影响力的原因之一,是他对 Unix 感兴趣并摆在首位。实际上,Torvalds 在 MINIX 机器上创建的 Linux。
然而,这并没有阻止 Torvalds 和 Tanenbaum 很多年前就进入的交火战争,他们的主要分歧是在Torvalds 决定创建 Linux 作为一个单一的内核,而不是像 MINIX 的微内核。出人意料的是,Torvalds后来对他的意见道歉了。
“你的工作是教授和研究员:这是 Minix 脑残的很好的借口”
———-1992年1月29日
“Linux 在几乎所有领域打的 MINIX 掉裤子。” ———1992年1月29日
那些年,Linus torvalds大神喷过的技术的更多相关文章
- 为何你跟着滴滴D8级前端大神撸代码,技术却依旧原地踏步?
引子 听说最近有很多小伙伴,热衷于在慕课网上学习各种前端实战教程,并以完成项目为奋斗目标.比如本文接下来要提到的<Vue2.0高级实战之开发移动端音乐App>,这门课程的传授者是来自滴滴D ...
- [转帖] 大神 Linus Torvalds 语录
My name is Linus Torvalds and I am your god.我的名字是Linus Torvalds,我是你们的上帝.(在1998 Linux大会上的自我介绍) If you ...
- 关于Java8 Stream流的利与弊 Java初学者,大神勿喷
题目需求: 1:第一个队伍只要名字为3个字成员的姓名,存储到新集合 2:第一个队伍筛选之后只要前3人:存储到一个新集合 3:第2个队伍只要姓张的成员姓名:存储到一个新集合 4:第2个队伍不要前2人,存 ...
- Git 10 周年之际,创始人 Linus Torvalds 访谈
点这里 十年前的这一周,linux 内核社区面临一个根本性的挑战:他们不再能够使用他们的修复控制系统:BitKeeper,同时其他的软件配置管理遇到了对分布式系统的新需求.Linus Torvalds ...
- C语言简单实现链栈基本几个功能(适合新手看,大神可指正)
接着上一次的顺序栈,今天我记一下链栈,因为我也是刚学不久,有些地方也稍稍理解不了,所以,一起共勉.我会用我自己结合教材上画的图,争取跟代码一起结合,用文字和图最大化的解释代码,这样的话 ...
- Linus Torvalds正式宣布Linux Kernel 5.1RC2 发布,相当正常
导读 Linus Torvalds刚刚发布了Linux Kernel 5.2-rc2,这是继上周关闭合并窗口和随后的RC1之后的第一个内核测试版本. 在本周合并后的窗口活动中,Linus评论道,“嘿, ...
- 自己封装了一个EF的上下文类.,分享一下,顺便求大神指点
using System; using System.Collections.Generic; using System.Configuration; using System.Data; using ...
- 前端自学vs跟大神系统学?你看着办
前端自学vs跟大神系统学?你看着办 一名广告专业学生,在大三的时候对于广告行业的前景不是很看好,转而自学web前端,刚开始接触的前端语言是html(html应该不算编程语言),上手很容易,在w3csh ...
- 学习大神笔记之“MyBatis学习总结(二)”
MyBatis对表的增删改查操作 主要有两种方式:基于XML实现和基于注解实现. 完整项目结构: 工具类:MyBatisUtil-------用于获取 sqlsession pack ...
随机推荐
- 在IDEA上对SpringBoot项目配置Devtools实现热部署
spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用. devtool ...
- 团队作业-Beta冲刺(2/4)
队名:软工9组 组长博客:https://www.cnblogs.com/cmlei/ 作业博客:https://edu.cnblogs.com/campus/fzu/SoftwareEngineer ...
- docker 进程管理
详文:理解Docker容器的进程管理:https://yq.aliyun.com/articles/5545 在Docker中,每个Container都是Docker Daemon的子进程. dock ...
- 子查询优化 - Hyper
Unnesting Arbitrary Queries - T Neumann, A KemperThe Complete Story of Joins (in HyPer) - Thomas Neu ...
- 含有虚拟列的表 怎么用EXP导出?
最近导一个测试库,报有虚拟列的表不支持,如下: EXP-00107: Feature (VIRTUAL COLUMN) of column CTB_CLIENT_SUBMIT_TIME_MONTH i ...
- 001 okhttp3的POST使用
继续使用上面的项目 1.被调用的项目 package com.jun.web2forokhttp.okhttp; import com.jun.web2forokhttp.bean.HttpDomai ...
- docker本地化异常:/bin/sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
docker中经常设置不了 环境变量$LC_ALL, 导致报很多奇怪的编码错误: /bin/sh: warning: setlocale: LC_ALL: cannot change locale ...
- 如何在LabWIndows/CVI中调用LabVIEW DLL
首先请参考官方的文档 http://digital.ni.com/public.nsf/websearch/70995EC2CA1B523386256DD4004F3DE6?OpenDocument ...
- C#生成Guid的几种方式
1 var uuid = Guid.NewGuid().ToString(); // 9af7f46a-ea52-4aa3-b8c3-9fd484c2af12 2 var uuidN = Guid. ...
- MySQL之表关系
MySQL表关系 一对多关系 一对多与多对一是一个概念,指的是一个实体的某个数据与另外一个实体的多个数据有关联关系. 举例,学校中一个学.院可以有很多的学生,而一个学生只属于某一个学院(通常情况下), ...