逃离美国,跨越8000公里远程办公,他开发了世界上最强的虚拟机

news2024/9/9 4:45:22

“从前”有一门编程语言叫Smalltalk,它是世界上第一个纯粹的面向对象编程语言。

Smalltalk有很多忠实拥趸,在Java崛起之前,它独自可以抗衡C++。

著名的《设计模式》一书,其中的代码示例就是C++和Smalltalk。

但是Smalltalk运行速度太慢(尤其是是计算密集型任务),比C语言慢很多,并且很吃内存。

Smalltalk还是动态语言,对于a+b这样的操作,不到运行时,不知道是整数还是字符串。此外,动态类型虽然极端灵活,但对于大规模软件开发来说,并不十分友好。

1

90年代中期,一个豪华的创业团队秘密组建,开发了一个叫做Strongtalk的语言。

Strongtalk保留基本的 Smalltalk-80 语法和语义的同时,增加了类型系统,并且极大地提升了性能。

优雅的语法 + 强悍的性能,Strongtalk有可能一飞冲天。

就在Strongtalk发布之前,力推Java的Sun公司注意到了它,立刻将其收购,把它扼杀在了摇篮之中。 

这个团队转而去开发 Java虚拟机,不久便推出了HotSpot,让Java摆脱了运行速度慢的恶名。

这个豪华团队的人员包括:

Gilad Bracha:他是Java语言规范合著者,也是Java虚拟机规范的主要贡献者,他最早提出Gradual typing,可以给动态语言增加静态类型,后来被PHP、Python、Typescript采用。 

Urs Hölzle:他提出的类型反馈技术让虚拟机有了巨大的性能提升,后来成为谷歌的第八位员工和第一位工程副总裁,塑造了谷歌的大部分开发流程和基础设施,他领导了谷歌高效数据中心的设计,据说这些数据中心的耗电量不到传统数据中心的一半。

Lars Bak :虚拟机的巫师,也是我们今天的主人公。

2

Lars Bak是个丹麦人,1988年在丹麦奥胡斯大学获得计算机硕士,对设计和实现虚拟机有浓厚兴趣。

Lars Bak 1991年加入了Sun公司的Self语言小组,开发Self虚拟机,Self语言虽然不流行,但是它开创的即时编译技术却极大地影响了后来的虚拟机。 

1994年,Lars Bak加入豪华创业团队,主刀开发Strongtalk,被Sun收购以后,他成为Sun Java 软件部门HotSpot团队的工程经理和技术主管,开发了高性能Java 虚拟机。

2002年,在事业上正值巅峰的Lars Bak却“逃离”了美国,回到了家乡丹麦奥胡斯,原因很简单:

1. 他想让女儿上丹麦语学校

2. 他也想要一个更健康的生活方式---美国的开发工作太紧张了。

在奥胡斯经历了一个玩票似的创业以后,Lars Bak彻底闲了下来,闲到了计划花一年的时间去粉刷他的农场!

这时候远在美国的Google正在密谋开发一个全新的浏览器Chrome,这个浏览器要支撑起Google的野心:在Web上运行复杂的应用程序,让自己的网络服务触及到全世界的每个角落。

想在浏览器中运行复杂应用程序,高性能地执行JavaScript则是核心关键。

于是Google想到了虚拟机大神Lars Bak,一个远洋电话打过来,请他出山开发JavaScript引擎。 

Google的办公环境可是远近闻名,美食、游乐场、健身房......应有尽有,但是Lars Bak根本不感冒,他要求在8000公里外,跨越9个时区远程办公,并且不当经理,自己干。 

为了把天才招致麾下,Google答应了Lars Bak的要求。

从此Lars Bak就开始了远程办公的生涯,在丹麦生活,为Google工作,工作和生活保持了完美的平衡。

随着JS引擎项目的进展,不断有人加入Lars Bak这个团队,他家里坐不下了,不得不把办公室搬到奥胡斯的一个大学中。

所有人都骑着自行车上班,下午5点就下班,和Google总部主要通过电子邮件联系,偶尔开电话会议。

经过4年的开发,JavaScript引擎V8 和Chrome 浏览器一起问世,引发了巨大轰动。

早期的V8直接把JavaScript代码编译成CPU可以直接执行的机器码, 在测试中,V8处理JavaScript的速度比最常见的IE浏览器要快56倍,从此JavaScript甩掉了只能在浏览器中执行简单代码的恶名,变得可以运行大型程序了。

Lars Bak开发V8原本主要作为浏览器的JS引擎,让人没想到的是,Ryan Dahl创新性地利用V8引擎,发明了Node.js,让JavaScript跳出了浏览器的束缚,开始向服务器端和客户端进军,JavaScript突然间爆火。

随后几年,Lars Bak和团队持续改善V8, 但是JavaScript已经被压榨干净,JavaScript有着难以克服的缺陷,于是他们干脆另起炉灶,推出了一门新的语言Dart。 

Dart野心很大,最初是开发Web程序,后来扩展到移动应用,服务器端应用,客户端应用,但是一门语言的成功依赖很多因素,尤其是生态系统,强如Lars Bak也不一定能保证Dart的成功,Dart未来如何,还得继续观察。

3

Lars Bak一辈子都在开发虚拟机:Beta、 Self、 StrongTalk、 Java HotSpot、 V8 、 Dart VM.....  称他为虚拟机之神,一点儿也不为过。

在虚拟机方面,他发明了18项专利,其中有一个著名的专利就是“把函数的部分字节码编译成机器码来混合执行”,是他在Sun开发HotSpot时发明的, 在虚拟机领域,这是个相当基础的专利。

当Oracle买下Sun以后,就挥舞着这个专利大棒,对Google发起了诉讼。

Lars Bak为人极为低调,他开发了这么多伟大的产品,但一直默默呆在奥胡斯,在丹麦,有另外一个Lars Bak更加知名,那是一位职业自行车选手。

但是很明显,计算机界的Lars Bak才是对世界影响更为深远的人。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/102681.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

缓存架构,减少不必要的计算

前言: 互联网应用的主要挑战就是在高并发情况下,大量的用户请求到达应用系统服务器,造成巨大的计算压力。互联网应用的核心解决思路就是采用分布式架构,提供更多的服务器,从而提供更多的计算的资源,应对高…

VUE3-创建项目《一》

本案例使用vue3进行学习记录,和vue2有些是通用的。 1.需要了解HTML,CSS,JavaScript。 2.了解Node和NPM,node是vue的开发环境,npm是依赖管理包,npm就和Java的maven一样,和c#的NuGet一样&#x…

mac 微信备份到外接硬盘方案(软链接)

mac版本微信中并没有指定备份路径的功能,备份的聊天记录文件也在一个很难找的位置。对于使用256g硬盘的mac的用户,微信聊天记录动辄十几G、几十G的大小,会造成非常严重的硬盘容量恐慌。所以把微信备份文件迁移到外置硬盘是一件非常有意义的工…

实景三维数据汇交、接缝处理难?用网格大师轻松搞定!

为满足全国城市化、智慧化建设发展,实景三维建设进程加快,建设成果日渐增多,随之而来的数据汇交需求增大。然而在实际数据汇交过程中,不仅需要考虑到模型能否直接融合与替换的问题,还将面临几何接缝、色彩不均等问题。…

【DELM回归预测】基于matlab人工蜂群算法改进深度学习极限学习机数据回归预测【含Matlab源码 1885期】

⛄一、PSO-DELM简介 1 DELM的原理 在2004年,极限学习机(extreme learning machine,ELM)理论被南洋理工大学的黄广斌教授提出,ELM是一种单隐含层前馈神经网络(single-hidden layer feedforward neural network,SLFN&am…

虹科新闻 | 虹科与RACOM正式建立合作伙伴关系

近日,虹科与RACOM正式建立合作伙伴关系,双方就工业应用自动化领域进行深入的交流与合作,未来将共同致力于为客户提供高效、可靠的工业通信解决方案,帮助客户布局工业信息系统。 虹科与RACOM都表示十分期待这次的合作。虹科CEO陈秋…

【信管4.3】确认与控制范围

确认与控制范围在范围管理中,我们已经讲完了 4 个管理过程,剩下的两个过程就是对范围的确认以及在整个项目执行过程中进行范围的监控管理。这两个过程的内容都不多,所以今天的内容还是非常轻松的,在正式学习之前,我们先…

再学C语言9:数据类型(7)——总结

一、sizeof()函数检测C环境中数据类型大小 代码&#xff1a; #include <stdio.h> int main(void) {printf("Type int has a size of %u bytes.\n", sizeof(int));printf("Type char has a size of %u bytes.\n", sizeof(char));printf("Type …

技术分享 | Jenkins 多任务关联

当有多个 Jenkins job 时&#xff0c;job 的执行需要按照先后顺序去执行&#xff0c;这个过程就是 Jenkins 的多任务关联。通常用于项目的编译、打包、执行冒烟、执行项目 case 多任务协助的场景中。 > 霍格沃兹测试学院 TestingStudio 触发条件 多任务关联的使用场景是有…

【大数据 clickhouse】clickhouse 数据字典使用详解

一、数据字典介绍 数据字典是ClickHouse提供一种非常简单且实用的存储媒介&#xff0c;他以键值和属性映射的形式定义数据。字典中的数据会主动或被动加载到内存并支持动态更新。由于字典数据常驻内存的特性&#xff0c;所以非常适合保存常量或经常使用的维度表数据&#xff0c…

没想到H5也是黑灰产的攻击重点?

近几年&#xff0c;在数字化与疫情的推动下&#xff0c;越来越多的企业开辟了线上业务&#xff0c;在互联网上通过各种方式开展业务。线上业务不仅使得企业效率提升&#xff0c;同时也面临着被黑灰产攻击的风险。黑灰产通过各种业务漏洞&#xff0c;能够攫取大量利益&#xff0…

[附源码]计算机毕业设计Python公共台账管理系统(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

mysql的优化---定位低效率执行SQL-慢查询日志

-- 查看慢日志配置信息 show variables like %slow_query_log%-- 开启慢日志查询 set global slow_query_log 1-- 查看慢日志记录SQL的最低阈值时间,默认如果SQL的执行时间>10秒的&#xff0c;则算慢查询&#xff0c;则会将该操作记录到慢日志中去 show variables like lon…

文本生成项目(基于tensorflow1.14版本)

项目下载链接&#xff1a;链接: https://pan.baidu.com/s/1OfICplwlEtRBz_ta7Nwyyg?pwdyr5c 提取码: yr5c 复制这段内容后打开百度网盘手机App&#xff0c;操作更方便哦 --来自百度网盘超级会员v4的分享 1.模型代码&#xff1a;model.py # -*- coding: utf-8 -*- # file: m…

Qemu中SylixOS与VMware中Linux的通信链路搭建

1.适用范围 在与客户沟通交流后&#xff0c;ECSM管理Linux端docker及Linux与SylixOS间通信也成了客户比较关心的一部分。因此为了能够更好地给客户提供演示&#xff0c;必然需要搭建一套具有ECSM、SylixOS、linux的环境。 如果通过硬件搭建&#xff0c;一是携带麻烦&#xff0…

表哥推荐python自学书籍:从入门到精通,读这十本书就够了!

前言 人生苦短&#xff0c;我学python。 python编程语言在各种榜单上经常拿到前列位置&#xff0c;在全球范围内都非常受欢迎。 Python作为一种不受局限、跨平台的开源编程语言&#xff0c;其数据处理速度快、功能强大且简单易学。而且&#xff0c;Python采用解释运行的方式…

风电机组的预测性维护应该如何进行?

一、应用背景 风能是最重要的清洁能源之一&#xff0c;大力发展风电等清洁能源是实现国家可持续发展战略的必然选择。发展风电、光伏等新能源的高效运维技术已成为当前电力系统面临的重要问题之一。在风电机组单机容量较大、机组整体结构越来越复杂、各部件之间的耦合也愈加紧…

零基础入门智能射频——偶极子天线等效电路模型分析

1.前言 无人机的安全防范和管控&#xff0c;已经成为无人机行业的重点内容。无人机探测解决方案已经变得非常重要。前面系列文章给出了针对无人机侦察和干扰无人机的天线阵设计&#xff0c;上一期文章中&#xff0c;我们给出一种小型化的无人机侦测天线&#xff0c;每个阵元都…

GIS开发入坑(四)--QGIS导入POI数据并实现简单处理分析

POI数据&#xff0c;英文全称Point of Intersesting&#xff0c;中文的意思是兴趣点&#xff0c;指的是在地图上有意义的点&#xff1a;比如商店、酒吧、加油站、医院、车站等。POI数据能够赋能时空行为、城市规划、地理信息等研究&#xff0c;因此获取准而全的POI数据是开展科…

ChatGPT:你才是编译器!你全家都是编译器!

我是不是再也不需要编译器了&#xff1f;&#xff01;这个故事的灵感来自一个类似的文章&#xff1a;在 ChatGPT 中构建虚拟机。我印象深刻并决定尝试类似的东西&#xff0c;但这次不是 Linux 命令行工具&#xff0c;而是让 ChatGPT 成为我们的 Python 编译器。这是初始化 Chat…