Atitit.编程语言新特性 通过类库框架模式增强 提升草案 v3 q27

Atitit.编程语言新特性 通过类库框架模式增强 提升草案 v3 q27

 

 

1修改历史2

2适用语言::几乎所有编程语言。语言提升的三个渠道::语法,类库,框架,ide2

2.1. 单根继承 vs  多跟继承3

2.2. 默认参数3

2.3. 等号判断相等,儿不是equ3

2.4. 隐式类型,类型推导3

2.5. 匿名类型3

2.6. 初始化器  对象初始化器 与 集合初始化器 { }4

2.7. 委托4

2.8. 内置委托 Func / Action 4

2.9. 标准查询运算符 Standard Query Operator 4

2.10. 范型委托4

2.11. 匿名方法4

2.12. Lambda4

2.13. 扩展方法4

2.14. 面向过程与面向对象结合4

2.15. Linq5

2.16. 操作符重载5

2.17. Preprocess源码预处理,5

2.18. Pointer指针5

2.19. 智能指针 5

2.20. 强类型 与弱类型同时支持5

2.21. 手动转转struct指针支持5

2.22. RAII(资源获取即是初始化5

2.23. 泛型5

2.24. 语法向前兼容6

2.25. 支持typedef. 6

2.26. 支持单行和多行的注释之外,JAVA增加了第三种注释方法:文档注释。文档注释以结尾。 6

2.27. Reflection支持反射6

2.28. 可选的自动边界检查6

2.29. 支持指针,引用,值传递(无论对象还是基本数值)7

2.30. 函数/方法的参数设置缺省值, . 但是方法重载(en:method overloading)可以达到同样的效果.7

2.31. 最小的编译单位是一个函数 7

2.32. 允许基本类型之间的一些隐式的转换也允许程序员对于用户自定义类型相关的隐式转换规则 7

2.33. 支持编译器检查与运行时检查。。可以显示警告代替except7

2.34. 异步api 代替大部分多线程api7

2.35. 方法缺省情况下是虚7

2.36. 内存Gc 但是可以手动触发。。 支持析构函数.7

2.37. 网络资源,io资源,线程,窗口等其他的资源的gc8

2.38. 显式的覆盖 8

2.39. 阻塞和非阻塞的I/O 8

2.40. 大的标准库,但是模块化8

2.41. 多重继承 8

2.42. Lambda函数指针支持8

2.43. 代码内嵌文档机制 8

2.44. Annoattr标记机制8

2.45. 支持 goto 语句8

2.46. 源码可以平台相关,也可以不相关,vmnative捷克8

2.47. C++ 可以申请任意的内存块. 8

2.48. 可移植性9

2.49. 显式锁操作(java.util.concurent.locks)与影视的synchronized 9

2.50. 常用的C++预处理编辑9

2.51. 参考10

 

 

 

1. 修改历史

V1   增加了c++中的语法特性

V2   增加了c#中的语法特性  v3

V3  增加js 中的语法特性

V4  增加 oc  swift的语法特性

V5 增加lisp 语法特性

V6 增加php python语法特性

V7 增加ruby语法特性

2. 适用语言::几乎所有编程语言。语言提升的三个渠道::语法,类库,框架,ide

 

不过主要特性来自于常用流行语言c++ java c# php js python ruby 。。另外参考参考 go rust list语言的好特性移植,过来

 

 

语法特性通过调整语法是最终的的,在语法未来得及提升的情况下,通过类库框架提升也是一个很好的方案

 

作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 汉字名:艾龙,  EMAIL:1466519819@qq.com

转载请注明来源: http://blog.csdn.net/attilax

 

 

2.1. 单根继承 vs  多跟继承

貌似目前单身继承较多。Cplus是卫衣的多继承实现。。应该允许多继承比较方便

 

 

2.2. 默认参数

 

 

2.3. 等号判断相等,儿不是equ

Java是少数不能用双等号判断strlang

 

 

2.4. 隐式类型,类型推导

Var O=1

 

2.5. 匿名类型

   (1)源起

      创建一个对象,一定要先定义这个对象的类型吗?

      不一定的!

      来看看这段代码

    (2)使用 

         var obj = new {Guid.Empty, myTitle = "匿名类型", myOtherParam = new int[] { 1234 } };

如果你监视变量obj,你会发现,obj的类型是Anonymous Type类型的

这个特性在网站开发中,序列化和反序列化JSON对象时很有用

2.6. 初始化器  对象初始化器 与 集合初始化器 { }

  var myObj1 = new MyObj ("allen") { id = Guid.NewGuid(), Title = "allen" };

 

2.7. 委托

2.8. 内置委托 Func / Action

2.9. 标准查询运算符 Standard Query Operator

2.10. 范型委托

2.11. 匿名方法

2.12. Lambda

2.13. 扩展方法

如果想给一个类型增加行为,一定要通过继承的方式实现吗?

4>第一个参数必须附加this关键字作为前缀

扩展方法的本质是在运行时调用扩展类的静态方法

2.14. 面向过程与面向对象结合

世界并不是全部是对象模式的

2.15. Linq

2.16. 操作符重载

2.17. Preprocess源码预处理,

· C++ 编译多了一个文本预处理过程, Java 是没有的因此一些使用者在他们的编译过程之前增加了一个预处理的过程,这样能更好的支持需要条件编译的情况.

预处理器为开发人员提供了方便,但增加丁编译的复杂性。JAVA虚拟机没有预处理器,但它提供的引入语句(import)与c十十预处理器的功能类似。

2.18. Pointer指针

完全取消指针是错误的,可以通过类库增加指针功能。。

2.19. 智能指针

2.20. 强类型 与弱类型同时支持

强类型检查和四种转型

2.21. 手动转转struct指针支持

 

2.22. RAII(资源获取即是初始化

Java 主要依赖垃圾搜集,which can only reclaim memory and may be a last shot at other resources(不知道咋翻译...), 而 C++ 主要依赖 RAII (资源的获取就是初始化

2.23. 泛型

其主要目的是提供类型安全的容器

2.24. 语法向前兼容

语言向前兼容,尽可能的兼容流行语言的语法

2.25. 支持typedef.

2.26. 支持单行和多行的注释之外,JAVA增加了第三种注释方法:文档注释。文档注释以结尾。

2.27. Reflection支持反射

2.28. 可选的自动边界检查

简单的说,就算检查你的索引是否在0~(len-1)之内

貌似是由字节码指令附带的功能,由虚拟机执行时进行检查。约见except

 

· 因为表达方式不受限制,低级的 C++ 语言特性(例如:不被检查的数组访问,原始指针,类型双关语(en:type punning))不能在编译期间或者运行期间可靠地被检查相关的编程错误会导致低级的缓存溢出段错误(en:segmentation fault). 标准模板库 提供了高级的抽象(例如 vetor,list 和 map)来帮助避免这样的错误在 Java 低级错误不会发生或者会被JVM检测到并以异常的形式报告给应用.

 

 

2.29. 支持指针,引用,值传递(无论对象还是基本数值)

2.30. 函数/方法的参数设置缺省值, . 但是方法重载(en:method overloading)可以达到同样的效果.

2.31. 最小的编译单位是一个函数

2.32. 允许基本类型之间的一些隐式的转换也允许程序员对于用户自定义类型相关的隐式转换规则

2.33. 支持编译器检查与运行时检查。。可以显示警告代替except

 

2.34. 异步api 代替大部分多线程api

2.35. 方法缺省情况下是虚

这样方便覆盖

C++ 方法缺省情况下不是虚的在 Java 方法缺省情况下是虚的但可以使用final关键字使之声明为非虚的.

 

2.36. 内存Gc 但是可以手动触发。。 支持析构函数.

强制使用自动垃圾搜集导致了在 Java 里编写实时软件(en:Real-time computing)是困难的.[3]

2.37. 网络资源,io资源,线程,窗口等其他的资源的gc

2.38. 显式的覆盖

2.39. 阻塞和非阻塞的I/O

2.40. 大的标准库,但是模块化

2.41. 多重继承

2.42. Lambda函数指针支持

2.43. 代码内嵌文档机制

2.44. Annoattr标记机制

2.45. 支持 goto 语句

2.46. 源码可以平台相关,也可以不相关,vmnative捷克

2.47. C++ 可以申请任意的内存块.

· Java 只能通过对象实例化来申请内存. (注意:在 Java 程序员可以通过创建一个字节数组模拟申请任意的内存块不过 Java 数组仍然是对象.)

2.48. 可移植性

2.49. 显式锁操作(java.util.concurent.locks)与影视的synchronized 

 

显式锁,锁可以沿着代码块的方向释放,其中包括异常被抛出,从而消除错误的常见来源。

 

2.50. 常用的C++预处理编辑

1)常用的预处理:

#include 包含头文件

#if 条件

#else 否则

#elif 否则如果

#endif 结束条件

#ifdef 或 #if defined 如果定义了一个符号就执行操作

#ifndef 或 #if !defined 如果没有定义一个符号,就指执行操作

#define 定义一个符号

#undef 删除一个符号

#line 重新定义当前行号和文件名

#error 输出编译错误 消息, 停止编译

#pragma 提供 机器专用的特性,同时保证与C++的完全兼容

 

 

 

 

 

2.51. 参考

C++java技术特性对比 - lile269的专栏 博客频道 - CSDN.NET.html

线程基础之JAVAC++0x的特性 并发编程网 - ifeve.com.html

(2 封私信 / 5 条消息) C++语言与Java语言的区别有哪些? 知乎

原文地址:https://www.cnblogs.com/attilax/p/15198765.html