当前位置: 首页 > news >正文

atitit.高级编程语言的特性 and 未来趋势与进化.doc

atitit.高级编程语言的特性 and 未来趋势与进化.doc

 

1 编程语言的发展历程 1

1.1 编程语言的进化,起始发现背后的思想 :任何两个系统之间的复杂性,都可以通过添加一个抽象层要屏蔽 1

1.1.1 C语言, 硬件抽象层 2

1.1.2 高级语言:java,.net  跨平台(os)抽象层vm 2

1.2 DSL领域编程语言(跨越编程语言) 2

1.2.1 实现方式:: 语义 和 语法 分开 2

1.2.2 结构Dsl,dsl解释器 2

1.2.3 统一的开发语言 2

1.2.4 每个领域特性部分,使用类库解决 2

2 语言特性发展 3

2.1 Oo+ 3

2.2 Function 3

2.3 动态(non编译)还是编译?? 3

2.4 多核 3

2.5 强类型还是弱类型???类型推断和模式匹配 4

2.6 面向自然语言还是简单的?? 4

2.7 抽象能力 4

2.8 删除语法噪音 4

2.8.1 语法噪音 4

2.9 强大ide,vm 5

2.10 Gc 垃圾收集 5

2.11 Vm 平台化 5

2.12 数据与结构分离还是紧密集合??? 5

2.13 异步api 5

2.14 安全api 5

2.15 库与语法融合 6

2.16 . fluent API 流畅api 6

3 参考 6

 

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);

这里面,function关键字,return关键字,各种符号,其实实际意义都不大,因为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编写的相对独立的库进 行实现。

 

其实将语法体系与语言自带标准库绑定还是有不少好处的。首先,这容易被扩展,开发者可以根据自己的需求来自定义某些语法的行为。其次,对编译器而言可以减 轻压力。某些运行时行为可以交给标准库进行实现。这样,编程语言可以比较方便地被打造成比较完备的语法体系。这种耦合也增强了编程语言的运行时能力,包括 灵活性、可扩展性。

 

2.16 . fluent API 流畅api

偏向傻瓜式的编程,直接用IDE的代码辅助就能把代码敲出来。java那种展现精美的架构的同时,却要求程序员自己一块块砖搭起来的风格逐渐没落...

 

 

 

3 参考

atitit.编程语言的未来趋势与进化结果

Atitit.现代高级语言的特性以及趋势attilax总结

 

 

相关文章:

  • WindowsServer 2008 AD搭建FTP隔离用户
  • [华为机试练习题]13.火车进站
  • FlowLayout浮动布局
  • [转]Spring MVC 中的基于注解的 Controller
  • 该项目的建设maven片:4.协调和依赖,spring依赖注入demo
  • jQuery 弹出窗口的形式一直是具体案件的中心
  • 收集的一些链接
  • 盘点20款表现出众的HTML5游戏
  • VC++ 获取系统时间、程序运行时间(精确到秒,毫秒)的五种方法
  • Linux系统中nc命令的基本用法
  • nginx使用GeoIP限制访问并支持白名单
  • 2015Q1中国手机游戏市场监测报告
  • 烂泥:学习ubuntu之快速搭建LNMP环境
  • U盘安装Windows
  • C语言时间处理
  • Android开源项目规范总结
  • Angular4 模板式表单用法以及验证
  • CSS 专业技巧
  • echarts花样作死的坑
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • JavaScript标准库系列——Math对象和Date对象(二)
  • nodejs调试方法
  • 简单实现一个textarea自适应高度
  • 时间复杂度与空间复杂度分析
  • 学习ES6 变量的解构赋值
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • ​水经微图Web1.5.0版即将上线
  • # 飞书APP集成平台-数字化落地
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #Linux(make工具和makefile文件以及makefile语法)
  • #NOIP 2014# day.1 T2 联合权值
  • (BFS)hdoj2377-Bus Pass
  • (pojstep1.3.1)1017(构造法模拟)
  • (pytorch进阶之路)扩散概率模型
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (四)JPA - JQPL 实现增删改查
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .NET教程 - 字符串 编码 正则表达式(String Encoding Regular Express)
  • .net网站发布-允许更新此预编译站点
  • @Resource和@Autowired的区别
  • [04] Android逐帧动画(一)
  • [ACTF2020 新生赛]Upload 1
  • [AIGC] SQL中的数据添加和操作:数据类型介绍
  • [ChromeApp]指南!让你的谷歌浏览器好用十倍!
  • [CLR via C#]11. 事件
  • [ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-controller-manager失败
  • [Everyday Mathematics]20150130
  • [GXYCTF2019]BabyUpload1 -- 题目分析与详解
  • [HNOI2008]水平可见直线
  • [HOW TO]怎么在iPhone程序中实现可多选可搜索按字母排序的联系人选择器
  • [macOS] Mojave10.14 夜神安卓模拟器启动问题
  • [one_demo_5]命令行输入输出