Scala系列|了不起的Martin Odersky

絮语闭包
• 阅读 3530

本文同步自微信公众号:浮世Talk(ID:fausai_talk)

Scala系列|了不起的Martin Odersky

了不起的人总能做出了不起的事,例如Scala之父Martin Odersky。

Scala系列|了不起的Martin Odersky

1980年,正在慕尼黑大学读本科的Martin第一次接触到编译器便为之痴迷,随即买了一台在当时称得上性能强悍的“便携式“电脑Osborne-1,在随后的日子里,Martin与一位大学好友Peter Sollich终日在一起研究如何为编程语言编写编译器。

他们了解到一门新的编程语言Modula-2,发现该编程语言设计精良,于是便萌生出编写一个适用于8位Z80计算机的Modula-2编译器的想法。带着这个想法,Martin与好友Peter经过不懈努力,在Peter用汇编语言编写的第一个编译器上进行了几个版本的改良后,终于设计出性能相当不错的Modula-2编译器。
当时,成立于1983年的软件开发公司Borland看上了Modula-2市场,并且购买了Martin与好友研发的Modula-2编译器,Peter也随即加入了Borland公司。由于Martin还有一年的学业没完成,并且还计划着继续读研深造,所以推迟了加入Borland公司的时间。

在苏黎世联邦理工学院读研期间,Martin似乎找到了他人生为之奋斗的方向,他发现自己更喜欢研究类型的工作,于是放弃了加入了Borland的念头,继续留在苏黎世攻读博士学位,而他的导师就是那位凭借着“算法+数据结构=程序”公式而获得图灵奖的Pascal之父,颇负盛名的计算机科学家Niklaus Wirth。

在苏黎世读博期间,Martin一直致力于函数式程序设计领域的研究。后来成为德国卡尔斯鲁厄大学的一名教授,与好友Phil Wadler一起进行编程理论方面的研究。1995年的某一天,Martin从Phil的朋友口中得知在大西洋彼岸的加州,有一门叫Java的新语言正在Alpha版本阶段。在了解了Java的字节码技术、跨平台运行特点、垃圾回收机制等优势之后,Martin与Phil马上意识到这个Java很可能会颠覆自己的研究,于是,他们开始了新的计划。

Martin与Phil提取了函数式编程的一些特点,如:泛型、高阶函数以及模式匹配,将它们与Java结合。经过努力,他们设计出了一门新的编程语言,命名为Pizza,并于1996年公开发布。事实表明,Pizza是非常成功的,它使得JVM平台与函数式编程语言结合变成现实。

Martin的研究引起了Sun公司核心开发团队人员的关注,很快他们就与Martin取得了联系,并一道合作编写了泛型Java(Generic Java ,简称GJ )。而期间Martin还独立为GJ编写了编译器,Sun公司在对比Java原有的编译器与GJ编译器性能后,决定将GJ编译器作为标准的Javac编译器。2004年,SUN公司发布Java 5,代号为Tiger。这个版本在Java的发展历程中具有里程碑意义 ,而其中最为瞩目的功能就是泛型,这是后话。

在经历了Pizza和GJ设计的Martin对如何让编程语言变得更好,自然是有更多自己的想法,不过现实却时常令他十分沮丧,因为Java具有很强的约束性,使得有某些东西不能往他认为的正确的方向发展,他不得不开始考虑是否有必要从零开始,设计出一个比Java更好的编程语言。

大概2000年前后,正在瑞士洛桑联邦理工大学担任教授的Martin有了一个契机,他拥有一个独立研究的环境,可以组建一个小型研究团队。于是,他带领这个团队基于JVM和Java的类库,设计出一门学术范十足的编程语言Funnel 。不过这门语言看上去十分优雅,却没什么实际可用性。但是经过团队的努力将Funnel与GJ的优势融合之后,他们惊讶的看到距离创造出比Java更加高级的语言已经不远了。

是的,一门崭新的多范式编程语言已呼之欲出,它就是后来人们熟知的Scala。

在2002年的第一场雪前后,Scala拥有了自己的名字。Martin带领团队开始着手Scala的设计,并于2003年正式发布,在2006年经过一次大规模重新设计,此后Scala便开始了稳定高速的发展,到2019年6月已经发布了V2.13。
虽然Scala在各种榜单的排名上不如Java,但是凭借着其纯粹的面向对象特点以及函数式编程的优势,使得它不仅具备了和Java一样的面向对象组织大型工程项目的能力,而且又能在大数据计算领域大放异彩。

Scala依靠着它强大的功能与简洁优雅的语法正在征服着广大的开发者,在开源项目方面有彪炳史册、震铄中外的Spark、Kafka、akka等,更有Twitter 、Linkedin等公司在极力推广,相信Scala的未来将更加激动人心。

了不起的Martin Odersky创造了了不起的Scala

                                     - THE END -

扩展练习:

如何搭建Scala开发环境?

Scala系列|了不起的Martin Odersky

点赞
收藏
评论区
推荐文章
微标题信公众号文章,阅读数,点赞数历史文章抓取
微标题信公众号文章,阅读数,点赞数历史文章抓取需求最近在做舆情与微信文章相关的数据抓取,发现微信公众号有些难点很难克服。市面上流行的数据抓取思路要么被腾讯封杀,要么操作难度大。解决方案搜狗微信无法采集历史,而且搜索也不按时间排序。获取的数据的价值不高,仅仅可以通过他获取公众号的biz。微信公众平台微信公
Easter79 Easter79
3年前
Vue CLI 是如何实现的
点上方蓝字关注公众号「前端从进阶到入院」精选原创好文助你进入大厂文章转载自公众号「玩相机的程序员」!(https://oscimg.oschina.net/oscnet/298a297ae9ec4945aed9d914185449be.png)若微信中阅读体验不佳,可点击阅读原文在PC端阅读。VueCLI是一个基于
onlyloveyd onlyloveyd
4年前
Compose Weekly #4:Weather App
本文同步发表于我的微信公众号,在微信搜索OpenCVorAndroid即可关注。前言It'sraining...Compose!Pulloutallthestopsforthisfinalchallenge.BuildabeautifulweatherappforachancetowinaPixel
Wesley13 Wesley13
3年前
IDEA最新激活码2021(IDEA2020.3永久激活方法)
一、一个IDEA激活码如果下边这个IDEA激活码过期失效了的话,大家可以关注微信公众号:Java团长,然后回复“激活码”即可获取最新IDEA激活码,公众号的激活码每24小时更新一次~KGF5UT9JHReyJsaWNlbnNlSWQiOiJENkVYS0FZV0s5IiwibGljZW5zZWVOYW1lIjoi5rC4
Stella981 Stella981
3年前
React Hooks实现异步请求实例—useReducer、useContext和useEffect代替Redux方案
<blockquote本文是学习了2018年新鲜出炉的ReactHooks提案之后,针对<strong异步请求数据</strong写的一个案例。注意,本文假设了:<br1.你已经初步了解<codehooks</code的含义了,如果不了解还请移步<ahref"https://reactjs.org/docs/hooksintro.html
Wesley13 Wesley13
3年前
MySQL高可用方案选型参考
本文由「MySQL中文网」原创,“MySQL中文”公众号是http://imysql.com的官方唯一公众号,微信首发。欢迎关注「MySQL中文」公众号(ID:imysql_wx),我们会不定期推送MySQL相关原创干货。本次专题是MySQL高可用方案选型,这个专题想必有很多同学感兴趣。高可用的意义以及各种不同高可用
Stella981 Stella981
3年前
Spring Boot从零入门6_Swagger2生成生产环境中REST API文档
本文属于原创,转载注明出处,欢迎关注微信小程序小白AI博客和微信公众号别打名名或者网站https://xiaobaiai.net或者我的CSDNhttp://blog.csdn.net/freeape!(https://oscimg.oschina.net/oscnet/cc3a3a51382349e5ab55c2a62f01
Stella981 Stella981
3年前
JFinal极速开发微信公众号
10分钟搭建属于自己的ngork服务器,实现内网穿透(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fblog.csdn.net%2Fzyw_java%2Farticle%2Fdetails%2F70341106)Android微信、支付App支付SDK(http
Stella981 Stella981
3年前
Blob分析
文章转自微信公众号:机器视觉那些事\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\公众号:机器视觉那些事儿\\\\\\
Wesley13 Wesley13
3年前
Java 8 创建 Stream 的 10 种方式,我保证你受益无穷!
之前栈长分享过Java8一系列新特性的文章,其中重点介绍了Stream.!(http://img.javastack.cn/20190613135450.png)!(http://img.javastack.cn/20190613135537.png)获取上面这份Java8~12系列新特性干货文章,请在微信搜索关注微信公众号:
Scala中使用Selenium进行网页内容摘录的详解
前言公众号成为获取信息的重要途径之一。而对于公众号运营者来说,了解公众号的数据情况非常重要。比如,你可能想要获取公众号的文章内容,进行数据分析或者生成摘要。或者你可能想要监控竞争对手的公众号,了解他们的最新动态动态。无论是哪种情况,使用Scala和Sele