大家好,我是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引擎的发展。然后便是并发编程,无论我们愿不愿意,多核的产生都在迫使我们不得不重视并发编程。

有一点值得一提,那便是随着语言的发展,原本的编程语言分类方式也要有所改变了。以前我们经常说面向对象语言,动态语言或是函数式语言。但是我们现在发现,这些边界变得越来越模糊,经常会互相学习各自的范式。静态语言中出现了动态类型,动态语言里也出现了静态能力,而如今所有主要的编程语言都受到函数式语言的影响。因此,一个越来越明显的趋势是“多范式程序设计语言”。

在接下来的部分中,我将深入讨论以上提到的这些内容。

原文链接:http://blog.zhaojie.me/2010/04/trends-and-future-directions-in-programming-languages-by-anders-1-history-and-trends.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

编程语言的发展趋势及未来方向(1):历史回顾及趋势概述相关推荐

  1. 综述:编程语言的发展趋势及未来方向

    程序设计离不开编程语言,但是编程语言在国内的大环境中似乎一直是个二等公民.国内的计算机教育和工程培训,似乎一直在宣传"语言不重要,重要的是思想","语言一通百通" ...

  2. 教你一招看清编程语言的发展趋势及未来方向

    程序设计离不开编程语言,但是编程语言在国内的大环境中似乎一直是个二等公民.国内的计算机教育和工程培训,似乎一直在宣传"语言不重要,重要的是思想","语言一通百通" ...

  3. 未来计算机语言的发展趋势,编程语言的发展趋势及未来方向 I

    编程语言的发展趋势及未来方向(1):历史回顾及趋势概述 这是Anders Hejlsberg(不用介绍这是谁了吧)在比利时TechDays 2010所做的开场演讲.由于最近我在博客上关于语言的讨论比较 ...

  4. 编程语言的发展趋势及未来方向

    声明:转载自:http://www.csdn.net/article/2010-08-31/278848 感谢作者的整理,可以让语言使用者对语言的特性有更进一步的了解. 程序设计离不开编程语言,但是编 ...

  5. 编程语言的发展趋势及未来方向(7):总结

    OK,我想现在已经讲的差不多了,我来做个总结吧. 在我看来,对于编程语言来说,现在出现了许多有趣的东西,也是令人激动的时刻.在过去,大约1995-2005年,的确可以说是一个有些特别的编程语言的黄金时 ...

  6. 编程语言的发展趋势及未来方向(3):函数式编程

    关于声明式编程的还有一部分重要的内容,那便是函数式编程.函数式编程已经有很长时间的历史了,当年LISP便是个函数式编程语言.除了LISP以外我们还有其他许多函数式编程语言,如APL.Haskell.S ...

  7. 编程语言的发展趋势及未来方向(4):动态语言

    我下面继续要讲的是动态语言,这也是我之前提到的三种趋势之一. 我还是尝试着去找到动态语言的定义,但是你也知道--一般地说,动态语言是一些不对编译时和运行时进行严格区分的语言.这不像一些静态编程语言,比 ...

  8. 编程语言的发展趋势及未来方向(2):声明式编程与DSL

    这里先从声明式(Declarative)编程谈起. 目前我们在编写软件时大量使用的是命令式(Imperative)编程语言,例如C#,Java或是C++等等.这些语言的特征在于,写出的代码除了表现出& ...

  9. 编程语言的发展趋势及未来方向(5):元编程

    动态语言的另一个关键和有趣之处在于"元编程"."元编程"实际上是"代码生成"的一种别称,其实在日常应用中我们也经常依赖这种做法.观察动态语言 ...

最新文章

  1. Linux shell编程与实践(五)之shell程序中循环结构
  2. python游戏编程入门 免费-Python游戏编程入门2
  3. STL之优先级队列priority_queue
  4. boost::core模块lightweight的测试实例
  5. java ftpclient quit_FTPClient
  6. uva 12105——Bigger is Better
  7. 【蓝桥杯官网训练 - 历届试题】对局匹配(dp,思维,取模)
  8. dbforge studio for oracle 注册,dbForge Studio for Oracle
  9. JavaScript异步编程原理
  10. WordPress post和page的区别
  11. 排序提示若执行此操作所有合并单元格需大小相同
  12. numpy基础笔记02
  13. Echarts横向的柱状图
  14. 鼠标计算机英语怎么说,计算机鼠标器,computer mouse,音标,读音,翻译,英文例句,英语词典...
  15. GitHub协同工作
  16. Android集成阿里热修复(Hotfix)
  17. heka 0.11.0源码分析--主要启动流程分析
  18. c语言捉迷藏,捉迷藏
  19. APP项目软件开发流程
  20. 维度建模的基本概念及过程

热门文章

  1. 有梦想就有前进的动力
  2. 金山安全实验室公布中国互联网六大类钓鱼网站
  3. SignalR的使用
  4. 关于Asp.net core配置信息读取的源码分析梳理
  5. 程序内存一直在泄漏,原来是异步死循环了 !
  6. 别等了,全面「远程办公」凉了
  7. Dapr + .NET Core实战(二) 服务调用
  8. 如何排查 .NET 内存泄漏
  9. dotnet中的counter
  10. .netcore 极速接入第三方登录