atitit.高级编程语言的特性 and 未来趋势与进化.doc
atitit.高级编程语言的特性 and 未来趋势与进化.doc
1.1 编程语言的进化,起始发现背后的思想 :不论什么两个系统之间的复杂性,都能够通过加入一个抽象层要屏蔽 1
1.1.2 高级语言:java,.net 跨平台(os)抽象层vm
2
1 编程语言的发展历程
1.1 编程语言的进化。起始发现背后的思想 :不论什么两个系统之间的复杂性,都能够通过加入一个抽象层要屏蔽
1.1.1 C语言, 硬件抽象层
对于汇编语言的问题。主要要解决跨硬件平台,加入一个抽象层,这个就是硬件抽象层
1.1.2 高级语言:java,.net 跨平台(os)抽象层vm
为了解决C语言的跨平台的问题
作者:: 老哇的爪子 Attilax 艾龙, EMAIL:1466519819@qq.com
转载请注明来源: http://blog.csdn.net/attilax
1.2 DSL领域编程语言(跨越编程语言)
1.2.1 实现方式:: 语义 和 语法 分开
而个的语言编程语言一般都是语法和语义绑定在一起的
1.2.2 结构Dsl,dsl解释器
1.2.3 统一的开发语言
如今越来越有这个趋势了,各个语言都在加入其它语言的特性。增强自己的特性,以后各个语言都变的越来越类似,功能也越来越雷同
1.2.4 每一个领域特性部分,使用类库解决
或者二手的dsl?
?
2 语言特性发展
2.1 Oo+
2.2 Function
2.3 动态(non编译)还是编译??
综合考虑,工业级别的源代码保护的考虑哈,还是要编译,,yaneng跟个python雅十,共同的情形哈不编译器,给客户的时候儿编译..
python雅十,经常使用使用script式,,也能编译了...
动态性意味着更加灵活,意味着开发人员有很多其它的"魔术"能够玩。而开发人员会天生对动态语言有亲昵地感觉,这是人的本性。
可是凡动态语言,JavaScript、Python、Ruby这些,实际上已经意味着与地层开发无缘了。
同一时候灵活意味着少约束,少约束意味着大规模程序非常难被编写出来。到眼下为止。非常少听到过超过10万行级别的JS语言项目,这种现象多少与JS的动态性有关。
反过来看,动态性较低的C语言如今成了驱动和OS内核开发的不二之选。由于好像驱动里面根本用不着那些看上去NB的抽象——即使你用了C++。也是像C一样用而已
2.4 多核
2.5 强类型还是弱类型???类型判断和模式匹配
以及ide支持不行。。
所以。综合考虑,工业级别的 任然是强类型的天下。。
也能够强大的类型判断和模式匹配
或者,语言支持弱的型,也能强壮的型…必要的的时候儿,能强类型…
Scala是静态类型的。很多人会把vals="ABC"这种当作动态类型特性,而vals:String="ABC"才觉得是静态类型特性。实际上,这无关类型争论,而是类型系统实现的范畴。是的,在Scala里,你能够放心大胆地使用vals="ABC"。而Scala里强大的类型判断和模式匹配。绝对会让你爱不释手。
2.6 面向自然语言还是简单的??
Cobol,ada的强壮的理解性…普通的的人们能理解的..
大部分情形哈,还是简单的特性ok…而个的java代替了cobol,ada..
2.7 抽象能力
抽象能力应该是现阶段语言进化的第一优先级,抽象手段无非函数式、过程式和面向对象三种,看计算机语言的流行历史, 不难看出 函数式=>过程式=>面向对象=>函数式回归 这种规律。Lisp一直在学术界评价颇高,可是其商业应用一直低迷。其抽象能力比較弱一直是个重要的原因。
2.8 删除语法噪音
2.8.1 语法噪音
语言除了功能和设计,“长相”也是非常重要的。这里要提到一个语法噪音的概念,比方JS里面的function,相比lambda表达式,这个噪音就多了
arr.some(function(x){ return x<2});
而C#里面能够这么写:
arr.some(x=>x<2);
这里面。functionkeyword。returnkeyword,各种符号,事实上实际意义都不大,由于JS语法设计,而必需要加上,这就是一种噪音。
有趣的是,向python这种语言对于“去噪”的追求达到了极致,甚至不惜用空白做标志干掉花括号,这个做法导致了其毁誉參半,喜欢的人特别喜欢,不喜欢的人特别讨厌。
2.9 强大ide,vm
2.10 Gc 垃圾收集
眼下很多语言都能够自己主动垃圾收集。。
可是仅仅是内存。。
数据库。网络,以及磁盘io连接任然有泄露的可能。
。
2.11 Vm 平台化
2.12 数据与结构分离还是紧密集合???
尽可能的分离为好。
程序和数据也不应该被分开。
由于现代数据操作和模块化的基础是并行程序(parallelism),而有效实现并行的基础是程序的first-class表达,也就是把程序作为一种基本数据类型。
2.13 异步api
2.14 安全api
闭包、多个返回值
2.15 库与语法融合
库与语法融合在了一起。
我们能够看到在Java中对字符串String对象的操作能够简单地使用操作符+、+=进行操作。然而String本身并非关键 字,可是可被编译器识别。由于你换成其他对象可能就无法用这些操作符来进行操作了。
而对String类的实现本身可用一个用Java编写的相对独立的库进 行实现。
事实上将语法体系与语言自带标准库绑定还是有不少优点的。
首先,这easy被扩展,开发人员能够依据自己的需求来自己定义某些语法的行为。
其次,对编译器而言能够减 轻压力。某些执行时行为能够交给标准库进行实现。
这样,编程语言能够比較方便地被打造成比較完备的语法体系。这样的耦合也增强了编程语言的执行时能力。包含 灵活性、可扩展性。
2.16 . fluent API: 流畅api
偏向傻瓜式的编程,直接用IDE的代码辅助就能把代码敲出来。
java那种展现精美的架构的同一时候,却要求程序猿自己一块块砖搭起来的风格逐渐没落...
3 參考
atitit.编程语言的未来趋势与进化结果
Atitit.现代高级语言的特性以及趋势attilax总结
atitit.高级编程语言的特性 and 未来趋势与进化.doc的更多相关文章
- atitit.编程语言的未来趋势与进化结果
atitit.编程语言的未来趋势与进化结果 1 语言就像物种一样,会形成进化树,没有前途的分支将枯死脱落. 1 2 机器语言 1 3 汇编语言 2 4 C语言, 硬件抽象层 2 5 高级语言:java ...
- Atitit.编程语言新特性 通过类库框架模式增强 提升草案 v3 q27
Atitit.编程语言新特性 通过类库框架模式增强 提升草案 v3 q27 1. 修改历史2 2. 适用语言::几乎所有编程语言.语言提升的三个渠道::语法,类库,框架,ide2 2.1. 单根继承 ...
- atitit.编程语言会形成进化树--哪些特性会繁荣??通才还是专才的选型 现代编程语言的特性总结
atitit.编程语言会形成进化树--哪些特性会繁荣??通才还是专才的选型 现代编程语言的特性总结 1. 有一种观点,编程语言就像物种,会形成进化树,有的分支会死掉. 多年之后,你觉得语言会演化成什 ...
- atitit.常用编程语言的性能比较 c c++ java
atitit.常用编程语言的性能比较 c c++ java 选择一个什么样的程序问题进行这样的测试呢?这是一个很关键的问题,也最容易影响测试的公平性.另外的,对于每种语言,各自的优势都是不同的 #-- ...
- Atitit.jquery 版本号新特性attilax总结
Atitit.jquery 版本号新特性attilax总结 1. Jq1.4 1 2. 1.5 1 3. 1.6 3 4. Jq1.7 3 ⒉提升了事件委派时的性能有了大幅度的提升.尤其是在ie7下: ...
- Atitit.jquery 版本新特性attilax总结
Atitit.jquery 版本新特性attilax总结 1. Jq1.4 1 2. 1.5 1 3. 1.6 3 4. Jq1.7 3 ⒉提升了事件委派时的性能有了大幅度的提升,尤其是在ie7下: ...
- Atitit.dart语言的特性 编译时js语言大总结
Atitit.dart语言的特性 编译时js语言大总结 1. 原型环境1 1.1. Dart可以编译js3 2. 第二个期待的理由是Dart的语言特性,没有什么特别特性好像,类似java c#一小时 ...
- 「MoreThanJava」机器指令到汇编再到高级编程语言
「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...
- 【轻松学编程】如何快速学会一门高级编程语言,以python为例
python文章目录 关注公众号"轻松学编程"了解更多. 写在前面:如何快速(比如在一个月内)学会一门高级编程语言? 现在想学一门编程语言并不难,网上有很多资料,包括书籍.博客.视 ...
随机推荐
- 快速安装多系统(xp与win7)
具体方法: 1.利用pe安装xp系统 2.xp下,空出一个分区,用于安装win7 3.进入pe下,安装win7系统到空出的分区 4.win7正常启动后,会覆盖原来xp的启动方式 5.再次进入pe,利用 ...
- arm-linux-gcc下载与安装
在RHEL 5平台上安装配置arm-linux-gcc 2011-02-23 19:35:40| 分类: 嵌入式开发环境 | 标签: |字号大中小 订阅 . 在linux平台上安装好的基础上,开 ...
- java实现小九机器人接口
package com.iask.webchat.chatmachine; import java.net.URLEncoder; import org.apache.http.HttpEntity; ...
- 反射API
反射,是指一种能在运行时动态加载.分析类的能力.反射被广泛地用于那些需要在运行时检测或修改程序行为的程序中.这是一个相对高级的特性,使用反射技术应当具备相当的Java语言基础.我们可以通过反射机制让应 ...
- 国际化之ResourceBundle
软件在开发时要能使它同时应对世界不同地区和国家的使用,针对不同地区和国家的访问,提供相应的,符合使用者阅读习惯的操作环境,这就必须要有国际化的概念,国际化又称为“i18n”:international ...
- Opencv2系列学习笔记8(图像滤波)
一:概念: 滤波是信号处理机图像处理中的一个基本操作.滤波去除图像中的噪声,提取感兴趣的特征,允许图像重采样. 图像中的频域和空域:空间域指用图像的灰度值来描述一幅图像:而频域指用图像灰度值的变化来描 ...
- MS Server中varchar与nvarchar的区别
很多时候我们在创建数据库时在给字段设置数据类型时会选择varchar或是nvarchar.当然还可以选择别的数据类型,本文只对varchar和nvarchar两种类型做说明.如下测试表Test的表结构 ...
- 用DELPHI的RTTI实现对象的XML持久化
去年我花了很多时间尝试用DELPHI进行基于XML的WEB应用开发.起初的设想是很美好的,但结果做出来的东西很简陋.一部分原因就在于XML到Object之间的数据绑定实现太麻烦(另一部分是因为对XSL ...
- CImageList类Create函数参数解析
前面提到了CImageList类的Create(...)函数,虽然MSDN上已经有所解释,但仍有网友问到参数的具体含义,下面就我的理解,对参数进行一次轻量级的剖析 函数原型(其他重载函数请参看msdn ...
- Opencv实现图像的灰度处理,二值化,阀值选择
前几天接触了图像的处理,发现用OPencv处理确实比較方便.毕竟是非常多东西都封装好的.可是要研究里面的东西,还是比較麻烦的,首先,你得知道图片处理的一些知识,比方腐蚀,膨胀,仿射,透射等,还有非常多 ...