这是Anders Hejlsberg(不必介绍这是谁了吧)在比利时TechDays 2010所做的开场讲演。因为最近我在博客上关于言语的评论比较多,出于应景,也计划将Anders的讲演完好地听写出来。我期望这个讲座能够从旁边面答复某些朋友关于“言语评论是否有价值”的疑问,而且展现呈现在言语的开展状况以及微软在这方面的尽力。完好内容将分为屡次宣布,每次一小部分,包括大约10分钟的讲演内容。等不及的朋友也和能够下载讲演视频一睹为快。现在的第1部分则包括Anders对编程言语开展的前史回忆,以及对趋势简略概述。
假如没有特别阐明,一切的文字都直接翻译自Anders的讲演,并运用我自己的白话习气表达出来,关于Anders的口误及重复等状况,必要时在译文中天然也会进行疏忽。为了便利了解,我也会将视频中要害部分进行截图,而某些代码演示则会直接作为文章内容宣布。
(听写开端)
大家好,我是Anders Hejlsberg,现在是微软的Technical Fellow,担任C#编程言语的首席架构师,也参加并领导.NET Framework以及各种言语的开发。我现在计划谈一下……实际上是我脑海中一些影响未来5到10年编程言语规划的内容。比方C#或VB该怎么走,F#该怎么办,这次讲演首要就是评论这些影响咱们的东西。
尽管首要内容是议论未来的,可是我仍是想先回忆一下前史。你们有些人或许对这个产品有形象,这是我大约27年前的作业内容,Turbo Pascal,这也是我进入这个范畴的起点。我先在拿出这个东西是想展现当年写程序的状况,然后能够评论现在终究的开展到哪儿了。
事实上,我现在的机器里正好有TURBO.COM文件,大约39K,嘿,现在还能够运转。咱们现在来试着写一点程序。先来创立的程序叫做Hello.pas……(开端写代码)……一个Pascal小程序写好了,咱们来运转一下……(呈现编译过错)啊噢,有当地我写错了……这个特性在当年是个立异,它会主动翻开编辑器,直接把咱们带去犯错的当地。嗯,咱们现在来纠正语法过错,把双引号改成单引号。
再运转一下,现在成功了,(观众掌声)呵呵,谢谢,谢谢。事实上,在27年后这个程序还能在这台机器上运转还真是挺奇特的。
现在,咱们来看一下,从那时算起硬件现已开展了……嗯,我那时写Pascal的机器是Z-80,具有48K内存。从那时算起,我现在这台机器现已有大约10万倍的外部存储容量,1万倍的内存大小,CPU速度也有大约1000倍的前进。
可是假如你注重一下现在的软件……曩昔27年里编程言语究竟前进了多少?呵呵,风趣的是假如你仔细调查这些代码,会发现C#还比Turbo Pascal的版本多一行。这也给咱们带来了一些值得注重的东西。
首要,编程言语的开展十分缓慢。期间当然呈现了一些东西,例如面向对象等等,可是远没有好上1000倍。另一方面,你或许会想,那么这些尽力都到哪里去了呢?事实上这些尽力没有体现在编程言语上,而是呈现在结构及东西等方面了。假如你注重现在咱们运用的结构,它们的体积确实有1000倍的增加。例如当年Turbo Pascal所带的结构大约有,比方说100个功用,而现在的.NET Framework里则有一万个类,十万个办法,确实有1000倍的增加。与此相似,假如你调查现在的IDE,咱们现在现已有了许多强壮的功用,例如语法提示,重构,调试器,探测器等等,这方面的新东西有许多。与此比较,编程言语的改善确实很不显着。
另一方面,如.NET,Java等结构的重要性前进了许多。而编程言语往往都倾向于构建于现有的东西上,而不会从头写起。现在呈现的编程言语,例如F#,假如你注重Java范畴那么还有Scala,Clojure等等,它们都是根据现有结构构建的。现在现已有太多东西能够直接利用了,每次从头开端的价值真实太高。
还有件事,就是在曩昔5、60年的编程前史中,咱们都不断地前进笼统等级,咱们都在不断地让编程言语更有表现力,让咱们能够用更少的代码完结更多的作业。咱们一开端先运用汇编,然后运用面向进程的言语,例如Pascal和C,然后就是面向对象言语,如C++,随后就进入了保管年代──受保管的履行环境,例如.NET,Java,它们的首要特性有主动的废物搜集,类型安全等等。我现在还没有看出这样的趋势有中止的痕迹,因而咱们还会看到笼统等级越来越高的言语,而言语的规划者则有必要了解并猜测下一个笼统等级是什么姿态的。
我以为,现在影响力较大的趋势首要有3种。首要,咱们会越来越多地运用声明式的编程风格。这儿我首要会说到例如DSL(Domain Specific Language,范畴特定言语)以及函数式编程。然后在曩昔的五年里,我发现关于动态言语的研讨变得十分炽热,其间对咱们发生严重影响的无疑是动态言语所具有的杰出的元编程才能,还有一些十分风趣的东西,例如JavaScript引擎的开展。然后就是并发编程,不管咱们愿不愿意,多核的发生都在迫使咱们不得不注重并发编程。
有一点值得一提,那就是跟着言语的开展,本来的编程言语分类方法也要有所改变了。曾经咱们经常说面向对象言语,动态言语或是函数式言语。可是咱们现在发现,这些鸿沟变得越来越含糊,经常会互相学习各自的范式。静态言语中呈现了动态类型,动态言语里也呈现了静态才能,而现在一切首要的编程言语都受到函数式言语的影响。因而,一个越来越显着的趋势是“多范式程序规划言语”。
在接下来的部分中,我将深化评论以上说到的这些内容。