自我列举了几位在协调的随笔中开创语言的大师,Scala语言设计概述

Scala语言设计概述
Scala的安插受广大编程语言和研讨思想的熏陶。事实上,仅很少的Scala的特性是崭新的;半数以上都曾经被以其它的格局用在其它语言中了。Scala的改良紧要缘于它是什么协会并雄居一块儿的。在那有的里,我们罗列了对Scala设计的机要影响。列表并不全——因为围绕着编程语言的宏图有太多的好难点,无法全都列举在此处。

在这几个体系的序文中,我列举了几位在融洽的小说中创立语言的师父,比如J.R.R.托尔金、J.K.Lorraine、乔治.R.R.马丁等,当然,这几位的德才和原始无需赘言,不过,with
all due
respect,我觉得唯有从创立语言那件事儿说,这几位和总结机世界中的各位语言大师比较起来,照旧有点轻量级

Scala语言设计的“蓝本”语言
在最外面,Scala接纳了Java和C#语法的多数,而它们超过一半借自于C和C++句法的改观。表明式,句子和代码块多数和Java一样,同样还有类,包和引用的语法。除语法之外,Scala还使用了Java的其余因素,诸如它的为主项目,类库和它的举办形式。
Scala也欠了任何语言的很多情。它的合并对象模型是由Smalltalk发起的,之后又被Ruby发扬光大。他的通用嵌套的考虑(大概所有的Scala里的构造都能被嵌套进任何社团)也应运而生在Algol,Simula,和多年来的Beta与gbeta中。它的措施调用和字段选取的统一访问规格来自于Eiffel。它函数式编程的处理格局在骨子里与以SML,OCaml和F#为代表的ML家族语言很接近。许多Scala标准库里面的高阶函数同样也出现在ML或Haskell中。Scala的隐式参数灵感激发自Haskell的类型类;它们用一种更经典的面向对象设定得到了接近的结果。Scala的根据行动类的并发库大概全是Erlang的思辨。
Scala语言设计:特点的存续
Scala不是率先种强调伸展性和扩充性的言语。可以横跨差异应用领域的可增添语言的历史根源是PeterLandin在1966年的舆论“之后的700种编程语言”
(那篇杂文中描述的言语,Iswim,与Lisp一同为开先例的函数式语言)。把前缀的操作符视为函数的专门的考虑可以被回溯到Iswim和Smalltalk。另一个生死攸关的合计是同意函数式文本(或代码块)作为参数,从而能让库定义控制结构。同样可以追回来Iswim和Smalltalk。Smalltalk和Lisp两者都负有灵活的语法,广泛应用在建筑内嵌的小圈子特化的语言。C++是另一种能透过操作符重载和他的沙盘系统被改建和扩充的可伸展语言;与Scala相较,它是建在低层级,更面向系统的基础上。
Scala也不是第二个集成函数式和面向对象编程的,纵然可能在这一个主旋律上它走得最远。其余在OOP里集成了函数式编程的片段因素的概括Ruby,Smalltalk和Python。在Java平台上,Pizza,Nice和Multi-Java都用函数式思想增添了类Java内核。还有一些接受了目标系统的以函数式为主的言语;OCaml,F#和PLT-Scheme是中间的例证。
Scala同样也对编程语言领域进献了一些创新。举例来说,它的架空类型提供了对泛型类型来说更面向对象的代表,它的特质允许灵活的控件组合,还有她的拆分器提供了独自于发挥的措施去做情势匹配。那些改造已在新近编程语言会议中讲演在舆论里了。
正文节选自马丁 Odersky,Lex Spoon和BillVenners所著,Regular翻译的《Programming in Scala》的率先章。
【相关阅读】
欣赏Scala编程的几个理由
Scala融合面向对象和函数概念的方法
[Scala的语言特征——可伸展的言语

  • 看见下面这一个知名的名字:

](http://developer.51cto.com/art/200907/134865.htm)
学习Scala中的Case类
Groovy创办人:Java面临终结 Scala将取而代之

C语言之父丹尼斯.瑞奇(Dennis Ritchie – Unix之父、图灵奖得到者)

C++之父比雅尼·斯特劳斯特鲁普(Bjarne Stroustrup)

Java之父James.高斯林(詹姆斯 Gosling)

Ruby之父松本行弘

Python之父吉多.范罗苏姆(Guido van Rossum)

R之父罗丝.伊哈卡(Ross Ihaka)和罗Bert.杰特曼(罗Bert Gentleman) –
看看那两位名字的字母缩写你就精通R语言为啥叫R语言了

理所当然,还有那篇的栋梁之材Scala的元老,Scala之父马丁.奥德斯基(MartinOdersky)

Scala篇

杨大侠的玄铁剑,吕奉先的方天戟,孙大圣的金箍棒,关老爷的偃月刀,传奇话本和武侠小说中首当其冲们在遇到自己趁手的兵刃时,都会时有发生一种相见恨晚的情丝,然后从此爱不释手不离不弃;同理,每一个程序员也有谈得来最推崇的一门编程语言,假使你有闲散去问他俩的话,我笃定你也终将会听到各类暮然回首灯火阑珊的故事
,事实上,大部分被问及那么些难题的程序员都会一脸害羞地凝视着自己的IDE,然后喃喃地说,“其实不是自己选取了Java/C#/Haskell/Ruby/F#/Lisp/C++/Eiffel…,而是他拔取了自身…”,听起来很荒唐,我精晓,但是你还相信哈利波特可以和一个帽子对话呢,不是啊?

本人尚未那么幸运,在高等高校风尚未和我钟意的兵刃不期而遇。

二十一世纪初的软件世界里,C++和Java是当之无愧的Homecoming
Queen,她们高尚名贵,又有点小小的俏皮和顽皮,以至于所有被汇编和C折磨过的男孩见到她们后都眼睛一亮,做梦都指望能一亲芳泽,我当然也不例外。只可惜有缘无分,在两遍接近接触后发现我们之间向来无法来电,于是蹉跎间青春不再,芳踪难寻。

毕业后空窗了成百上千年 –

好呢,我认同和PHP以及Python曾经有过那么几段暧昧的时段,可是你懂的,互相之间其实什么人也尚无认真过;再后来,因为生意发展的轨迹离写代码越来越远,我逐步都记不清了那种仅靠翻涌的思路和纷飞的指头就能让各样樯橹灰飞烟灭的快感了

似乎贝吉塔教训悟饭时说得那样:“再天才的大兵也会被安逸的生存腐化的”,于是没有兵刃的自家也逐步失去了凶手的本能,即使偶尔碰到霸者横栏,我也只是丢丢石头,然后祈祷自己有戴维克制歌伊丽莎白港杨过击毙蒙哥时的造化了。

但洛奇说过,只要你曾打过拳,那您就永远不会遗忘打拳的脚步和韵律,所以,只要您曾写过代码,那么你命中注定的兵刃总会到来,而自壬辰曾想到的是,我的兵刃居然会蜂拥而上,似乎夺宝奇兵里的俄勒冈.Jones一样,老天爷给了他一个能文能武的棍子之后认为还不舒服,于是又给他配置了种类繁多的左轮枪。

自己的棍子自然是Salesforce平台上的Apex,这一个自己在《从“北漂”到“北漂”》种类文章的《第十三章
人生中最了不起的七个月》中有过提及,所以不再赘言,而明日则谈谈自己的左轮枪 –
Scala。

对此我的话,学习Scala是纯粹的敬服 –

最少在如今停止我在办事上不要求他,而我对他的兴趣,则是因为她安排中显现出来的教育学

请别笑,你去乐乎上查一下,我估量您看到的绝大多数对Scala的评头品足将会是“慎学!这是一个B格很高的言语!”
(意思就是:假设你内心不够有力,那么那个女孩子你精晓不了;若是你内功不够深厚,那么那件兵刃你施展不开)-
而且,借使你看过Andrew.尼克尔导演的那部《Simon妮》(Simone)
的话,你就了解孩子他爸爱上有品位有格调的代码,只是迟早的工作。

对于没有IT背景对编程一窍不通还要不屑于了然的读者,请允许自己给你们做一个通俗易懂的牵线。

Scala语言的名字源于“scalable language”
(可进展语言),在马丁.奥德斯基亲自操刀编写的《Scala in
Programming》中,对于Scala有一段很别致的介绍,我截取了一些片段显得给大家:

Scala’s design has been influenced by many programming languages and
ideas in programming language research…Scala adopts a large part of
the syntax of Java and C#, which in turn borrowed most of their
syntactic conventions from C and C++…Scala also owes much to other
languages. Its uniform object model was pioneered by Smalltalk and
taken up subsequently by Ruby. Its idea of universal nesting is also
present in Algol, Simula, and, more recently in Beta and gbeta. Its
uniform access principle for method invocation and field selection
comes from Eiffel. Its approach to functional programming is quite
similar in spirit to the ML family of languages, which has SML, OCaml,
and F# as prominent members. Many higher-order functions in Scala’s
standard library are also present in ML or Haskell. Scala’s implicit
parameters were motivated by Haskell’s type classes; Scala’s
actor-based concurrency library was heavily inspired by Erlang…

(Scala的布署性收到了广大编程语言以及编程语言切磋的影响…Scala选用了众多Java和C#的语法,而Java和C#的语法则是从C和C++中借鉴来的…Scala还应有谢谢广大任何的语言。Scala的uniform
object
object是由Smalltalk先河尝试,而后被Ruby发扬光大的;Scala的universal
nesting的想法则来源于Algol,Simula以及近年来的Beta和gbeta; Scala的uniform
access principle for method invocation and field
selection师承Eiffel;Scala的functional
programming方法像极了ML语言家族,包蕴SML,OCaml,F#等;许多Scala标准库中的高端方法在ML和Haskell中也找的见;Scala的implicit
parameters是受到了Haskell type
classes的激发而设计的;而Scala的actor-based concurrency
library则一定大地受到Erlang的启发…)

没看精晓?好呢,请允许自己再翻译一下:Scala这一个妞身上有诸多靓女的黑影 –
她有安吉丽娜.Julie的眸子、茱莉亚.罗伯茨的微笑、梅丽·史翠普的古雅、尼科尔e.基德曼的野性;当然,她还相应感谢广大别样的名媛,你在他身上得以观看周迅、瑞茜·威瑟斯彭、Charles兹·塞隆、凯特·布兰切特…我想你理解我的意思了。

实际的技术细节算计大家没兴趣听,我们谈形而上的那个管理学话题。

诸如编程语言中有两大山头:object-oriented programming (面向对象编程)
和functional programming (函数式编程) –
听起来有点玄,彻底解释清楚也确实不简单,但从理学角度掌握就是 –
对前者来说,世界是由一堆名词组成的 (object),
对后世来说,世界是由一堆动词组成的 (function)。

最经典的一个例证是,对于这句话:“一只猫抓了一只鸟并且吃了它”
(恩,听起来有点凶恶,可是,世界就是这么严酷啊)
来说,下边是三种教育学分裂的笺注。

面向对象编程从那句话中看出了四个名词,一只猫和一只鸟,然后猫会五个动作,抓鸟和吃掉,所以代码很直接:

函数式编程则从那句话中看到了七个动词,吃和抓,猫和鸟只是插足那四个动词的参数而已,由此代码也颇直观:

Scala则完美地整合了那三种军事学 – 在Scala里,没有所谓的primitive
type,万物皆为object,所以即便最简单易行的一个 1+1,在真相上也是

1.+(1);而function终于通晓地变成了一等国民,可以作为参数传递,可以作为object处理

简短就是,在Scala的社会风气里,那几个世界是由名词组成的,但每一个名词都自牵动词属性…

因为那几个特点,Scala的效能会分外的高,比如试图确认一个字符串中是还是不是有大写字母,用Java完成则要求如下代码:

而用Scala完结则仅需求一句:

其一境况难道没有让你生出似曾相识的痛感吗 –
古文中一句既工整又老于世故的“此后锦书休寄,画楼云雨无凭”,一旦翻译成现代汉语则变为了喋喋不休的:“咱俩那天在凯宾斯基的一夜情不算数啊,将来别给本人再发短信了…”

不是大家吹中国知识博大精深,仅从文字的统筹你就能窥见到大家老祖宗们享有多么无与伦比的世界观了

和相对冗余的现代粤语相比较,古中文中一字一意,恰似object-programming的美观,而名词可天天活用作动词,则又像极了functional
programming的真相。

拿韩文公的那篇《龙说》举例:

“然龙乘是气,茫洋穷乎玄间,薄日月,伏光景,感震电,神变化,水下土,汨陵谷” 

“薄日月”,典型的functional
programing,动词“薄”(意为“迫近”)带四个参数“日月”;

“水下土”,则是不折不扣的object-oriented
programming,“水”本是名词,但在那里名词自牵动词属性,就算古汉语有解析器的话,那条语句的机械代码其实是“水.淹没(下土)”。 

凝眸那男人满意地将Scala在手中掂了掂,然后猛地手腕一抖径直扔到半空中,围观者皆倒吸一口冷气,却见Scala的利刃在灿烂的阳光下闪出一道蓝光后极速落下,又被那男子轻巧地接在了手里,众人还来不及喝彩,却见这男子淡淡一笑,悠悠地说
“别说我矫情,我的飞刀得心应手从不落空的”。

相关文章

网站地图xml地图