致敬那些为软件开发奠定坚实基础的计算机科学先驱。

从 1 和 0 开始,编程经历了很长一段路,才达到了现在的抽象状态。过去的程序员用伟大的发明,为现代程序员轻松地完成工作奠定了坚实的基础。如果我们研究某个软件,也许,它是在若干个库的帮助下编写的,而这些库又有另一套多年前创建的依赖关系。

当我们再往前追溯,最终会发现,在计算机软件进化史上,有一位杰出的程序员做出了一项伟大的发明。

例如,Anaconda 数据科学环境是用 Python 编写的。而 Python 是用 C 编程语言编写的,C 编程语言是一个庞大的项目,推动了数以百万计的项目。类似的,Android 系统所使用的 Linux 内核也是一个由杰出程序员完成的一个大型项目。

下面这些程序员是计算机科学的先驱,他们通过完成一些令人难忘的项目,为软件开发奠定了坚实的基础。

Linus Torvalds

Linux 内核赋予了很多操作系统:主要是 Linux 发行版和其他基于 Linux 内核的操作系统,如 Android。另外,互联网上的大多数网络服务器运行的操作系统都是 Linux。

Linus 最初是在大学期间实现了 Linux 内核,因为他想为当时个人电脑非常昂贵的 Unix 创造一个免费的替代方案。此外,他那时使用的 Minix 操作系统通常是为了学术目的而实现的,它在授权模式和硬件支持方面存在一些缺陷。Linux 内核最早是在 Minix 内使用 GNU C 编译器进行编程的。

此外,他还创建了 Git 源代码管理工具,专门用于管理 Linux 内核的开发工作流程。Git 是由于他们之前用于源代码管理的 BitKeeper 工具出现了问题。这两个项目都是作为他的个人项目开始的。但现在,数以百万计的人在大量使用它们。在所有为开源做贡献的程序员中,我喜欢 Linus 的性格。

Richard Stallman

Linux 项目本身只是一个内核。当 Linus 在研究 Linux 项目的时候,与此同时,Richard 也在试图和社区合作,创建一个自由和开源的 Unix 克隆,并取了一个好听的项目名字 GNU(GNU's Not Unix 的递归缩写)。他创建并整合了操作系统所需的所有自由软件,除了内核这一块之外,所有计算机用户都可以自由使用。

最终,Linux 内核填补了 GNU 项目的最后一块缺失,而他的概念性操作系统的名字也因给数百万用户以自由而变成现实世界的 GNU/Linux。他还开发了 GNU 项目的几个模块,如 GNU 编译器集合和 GNU Emacs 文本编辑器。

除了 GNU 项目外,他还创立了 FSF(Free Software Foundation,自由软件基金会),该基金会鼓励每个人都能使用自由软件,而不会被专利软件公司所控制。此外,由 Richard 发起的自由软件运动也让人们对现代专利软件和操作系统下的用户隐私和用户权利有了更深刻的思考。在他的公开演讲中,他总是这样提到自由软件:

“对于软件来说,只有两种可能:要么用户控制程序,要么程序控制用户。如果程序控制了用户,开发者控制了程序,那么程序就是一种不公正的权力工具。”

Dennis Ritchie

几乎所有的计算机技术都以 C 语言为基础。C++ 语言就像是添加到 C 语言的一个扩展,它支持现代通用语言的特性,比如基于类的面向对象程序设计概念。

C 语言编程语言被广泛用于创建操作系统和嵌入式系统。Dennis 创造了 C 编程语言,取代了他的同事 Ken Thompson 创造的 B 编程语言。他的老同事 Brian Kernighan 曾经说过:

“Dennis 制造的工具,还有它们的直接后代,几乎运行着今天的一切。”

除此之外,他还和 Ken Thompson 一起在贝尔实验室(Bell Labs)为 Unix 操作系统的开发做出了贡献,并为 C 编程语言撰写了著名的手册《C 编程语言》(The C Programming Language)。

James Gosling

Java installer 所说的是真的;有超过 30 亿台设备运行 Java。Java 编程语言为 Web 服务器、移动电话、电视等各种组件提供了强大的功能,Java 在较短的时间内就吸引了人们的注意,因为用 Java 编写 / 编译的程序可以在任何机器上执行。

毕竟,程序中包含的原子指令将在名为 Java 虚拟机(JVM)的虚拟硬件设备中执行。由于 Java 具有虚拟机和完整的访问控制集,因此,它是一种安全的编程语言。Gosling 用 C/C++ 风格的语法创建了 Java。

它可以用于非常复杂的项目,这要归功于 Java 的、有吸引力的跨平台支持和纯面向对象的行为。另外,他还在 Sun Microsystems 开发了诸如 neWS 窗口系统等多个项目。

Ken Thompson

Unix 就像是世界上所有流行的操作系统的鼻祖。即便是 Minix 和 Linux 等独立项目,他们也会受到 Unix 的影响。Ken 与 Denis Ritchie 一起在贝尔实验室设计并实现了 Unix 的原始版本。Ken 创建了 B 编程语言,并为 Denis 创建 C 编程语言提供了途径。

此外,他对计算机世界的杰出贡献还包括他在正则表达式和 UTF-8 编码方面的研究。正则表达式的概念已经存在。而他写了自己版本的 QED 文本编辑器,用计算机编程的正则表达式来查找文本。从那以后,正则表达式随着计算机技术开始了它的旅程。

事实上,创造一种具有平衡抽象的编程语言无疑是很困难的。换句话说,要创造一种既接近硬件又接近程序员的编程语言是很难的。但是,他与 Google 共同发明了 Go 编程语言,并且获得了成功。

作者介绍:

Shalitha Suranga,软件工程师,供职于 99X。同时也是 Apache PMC 成员、开源贡献者(Neutralinojs 的作者)、技术作者。

本文转载自:https://medium.com/the-innovation/the-5-most-influential-programmers-in-computer-science-3fa590edc729
作者 | Shalitha Suranga策划 | 刘燕译者 | 刘志勇来源 | InfoQIT技术分享社区
个人博客网站:https://programmerblog.xyz文章推荐程序员效率:画流程图常用的工具程序员效率:整理常用的在线笔记软件远程办公:常用的远程协助软件,你都知道吗?51单片机程序下载、ISP及串口基础知识硬件:断路器、接触器、继电器基础知识

程序人生:这5个程序员,改变了世界,你都认识吗!相关推荐

  1. 程序人生系列谈:《程序员》带给我的启发故事

    ‍ ‍ 来源 | CSDN 博客 作者 | 叶帆科技 刘洪峰 <程序员>创刊已经20余年了, 我参加工作也已经20多年了,我专职做程序员的时间和<程序员>创刊的时间几乎一样长. ...

  2. 程序人生:给所有程序员的27个建议,抽空看看吧!

    1. 一定要努力工作 你的老板不会平白无故给你升职.加薪或提供更好的职位.而且仅仅努力工作还远远不够,你需要提高你的工作效率.没有人看重那些努力工作却产生不了任何价值的人. 同时,你需要避开那些只看重 ...

  3. 程序人生 - 过来人经验:程序员怎么升职加薪,迎娶白富美

    来自:知乎,作者:匿名 链接:https://www.zhihu.com/question/20259295/answer/125138094 我是码农出身,工作十年,从 初级程序猿(半年) - 项目 ...

  4. 程序人生(创)一个新手程序员的两三事(未完待续...)

    转载请注明出处:http://blog.csdn.net/iwanghang/article/details/53375654 本篇博文同时在论坛连载:http://bbs.csdn.net/topi ...

  5. 程序人生:给年轻程序员关于开发过程的10条忠告

    忠告1 代码不仅仅是用来运行的.代码也是跨团队交流的一种方式,是向他人描述问题解决方案的一种方式.良好的代码可读性不是那么容易做到的,但它是编写代码的基本部分.这涉及到清晰地分解代码,选择恰当的自解释 ...

  6. 程序人生--一个程序员对学弟学妹建议

    我始终认为,对一个初学者来说,IT界的技术风潮是不可追赶.我时常看见自己的DDMM们把课本扔了,去卖些价格不菲的诸如C#, VB.Net 这样的大部头,这让我感到非常痛心.而许多搞不清指针是咋回事的B ...

  7. 程序人生之真正女程序员是什么样的

    段首备注:常年编码的手由于文档相对写的少.对文字排版已经很模糊了.所以我从头到尾会坚持段首不空格原则,恩恩. 最近在知乎上遇到一个特别有意思的话题,说是问真正的IT女是什么样子的? 人家并没有限定是女 ...

  8. 程序人生:初学者中最最最常问的问题都有哪些呢???

    隔行如隔山,初学编程往往不知道从何入手,非常迷茫,以下几个问题是我经常被问到的,总结出来分享给读者. 1) 多久能学会编程? 这是一个没有答案的问题.每个人投入的时间.学习效率和基础都不一样.如果你每 ...

  9. 潘爱民:计算机程序的演进——我的程序人生三十年

    本文为<新程序员004>内容,与潘爱民畅谈他的程序人生.<新程序员004>即将上市,敬请期待.从MySQL之父.MariaDB创始人Michael "Monty&qu ...

  10. 中国第一代程序员潘爱民的 30 年程序人生

    作者 | 潘爱民 出品 | 程序员大本营 [编者按]搞技术是一件极其幸运的事情,不仅是我们迎来了最好的时代,亦在于我们的祖师爷大多还都健在甚至健谈,比如 Linux 之父 Linus Torvalds ...

最新文章

  1. 独家 | 谷歌医学AI在生活中的精确度(附链接)
  2. 数据中心基础架构 22 年演进
  3. Java判断字符串既不等于A也不等于B
  4. 解决python报错写入文件 io.UnsupportedOperation: not writable
  5. java实现录屏_java录屏截屏: 用java代码实现的录屏和截图截屏,并在springboot上实现...
  6. 一张图让你搞懂DES与RSA混合加密技术
  7. cannot run program “google-chrome“: error=2, 没有那个文件或目录
  8. 面试官:如何理解TCP/IP协议?
  9. 【SpringBoot 】 组件管理 ,java工程师面试突击中华石杉
  10. HDOJ5455 Fang Fang(模拟)
  11. Failed to load C:\SDK\android-sdk-windows\build-tools\27.0.2\lib\dx.jar
  12. cp命令—Linux文件管理
  13. [Unity]摘录笔记UnityShader(重写SurfaceShader)
  14. NAND Flash(spi nand flash和nand flash)和emmc以及ufs通过uboot烧写固件的一些差异
  15. Xilinx火龙果学习笔记(1)---初识火龙果
  16. NSSCTF部分复现
  17. SpringBoot的统一日志记录
  18. 在微型计算机中1mb等于多少字节,字节换算-1mb等于多少kb
  19. 编译linux源码报错,记录一次Linux内核源码编译实验
  20. 读书笔记-代码的未来

热门文章

  1. iDempiere = OSGi + ADempiere 一款ERPCRMSCM系统、助力中小企业发展
  2. byte转化为Bitmap,防止内存溢出
  3. 有限元分析笔记01-平面应力和平面应变
  4. Halcon例程详解(基于卡尺工具的匹配测量方法) —— measure_stamping_part.hdev
  5. vs联合torch,ZED相机api,opencv建立C++项目
  6. html后台数据分类管理,细分数据.html
  7. opendds开发指南中文版_最强的开发者技术路线图已经更新到 2020 GitHub 超 118k还有中文...
  8. matlab利用霍夫,基于matlab的霍夫变换
  9. Java————迷宫问题
  10. docker 部署nginx 使用keepalived 部署高可用