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. Anno,attr标记机制8
2.45. 支持 goto 语句8
2.46. 源码可以平台相关,也可以不相关,vm与native捷克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是少数不能用双等号判断str的lang
2.4. 隐式类型,类型推导
Var O=1
2.5. 匿名类型
(1)源起
创建一个对象,一定要先定义这个对象的类型吗?
不一定的!
来看看这段代码
(2)使用
var obj = new {Guid.Empty, myTitle = "匿名类型", myOtherParam = new int[] { 1, 2, 3, 4 } };
如果你监视变量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. Anno,attr标记机制
2.45. 支持 goto 语句
2.46. 源码可以平台相关,也可以不相关,vm与native捷克
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
线程基础之JAVA和C++0x的特性 _ 并发编程网 - ifeve.com.html
(2 封私信 / 5 条消息) C++语言与Java语言的区别有哪些? - 知乎
Atitit.编程语言新特性 通过类库框架模式增强 提升草案 v3 q27相关推荐
- Atitit.atiJsBridge 新特性v7q329
Atitit.atiJsBridge 新特性v7q329 atiJsBridge 未来计划 Postdata 图像上传的支持 Simp param计划 p1 p2 p3 p4 $method 的si ...
- Kinect SDK v1.7 新特性、交互框架与新概念
Kinect SDK v1.7 新特性.交互框架与新概念 zouxy09@qq.com http://blog.csdn.net/zouxy09 2013年3月18日,微软Kinect for Win ...
- Oracle12c功能增强 新特性之管理功能的增强
1. 数据文件在线重命名和迁移 不想先前的版本号.在Oracle12cR1中,数据文件的迁移或重命名不再要求一系列的步骤,比如:将表空间至于仅仅读模式,然后数据文件逻辑等操作.在12cR1中.数 ...
- IE0新特性归纳及JavaScript 功能增强分析
2011年4月13日,微软IE部门企业副总裁迪恩哈查莫维奇在拉斯维加斯召开的Mix开发者大会上展示了首个IE10平台预览版--IE10(Internet Explorer 10.0).从预览第三版起, ...
- Oracle 18c 新特性:动态 Container Map 增强 Application Container 灵活性
数据技术嘉年华等你来 活动预告:11.16-17日,北京市东三环中路61号富力万丽酒店,相聚数据技术嘉年华,(99元票务)免费购票倒计时,点击查看大会详情. 盖老师带来主题"稳筑基石,云帆万 ...
- Spring 4.x框架中的新特性---Spring4.0框架的新功能和改善
2004年Spring框架首次发布,然后陆续发布了一些重要的版本:Spring2.0提供XML命名空间和AspectJ的支持:Spring2.5包含了注释驱动配置:Spring3.0在框架基础代码中引 ...
- (转)类库 框架 模式
转自 http://www.cnblogs.com/daxnet/archive/2009/02/07/1686994.html 很多IT行业的读者,如果有过一些面试经验的,都会被问到一个经典问题:什 ...
- mysql insert 不需要日志_详解MySQL|你不知道的新特性-8.0错误日志增强
MySQL 8.0 重新定义了错误日志输出和过滤,改善了原来臃肿并且可读性很差的错误日志. 比如增加了 JSON 输出,在原来的日志后面以序号以及 JSON 后缀的方式展示. 比如我机器上的 MySQ ...
- JDK各版本新特性(更新到Java20)
Hello,I'm Shendi 每当Java出新版本我会第一时间更新 目录 各版本JDK下载 JDK 1.0 1996-01-23 Oak(橡树) JDK 1.1 1997-02-19 JDK 1. ...
- JDK各个版本的新特性
JDK各个版本的新特性 ************ 如有侵权请提示删除 *************** 文章目录 JDK各个版本的新特性 JDK1.19 新特性 JDK1.18 新特性 JDK1.17 ...
最新文章
- Linux IO实时监控iostat命令详解
- c#中邮件收发处理(POP3,IMAP,SMTP)的实现方法
- MATLAB中 raw(,利用Photoshop + Matlab 解析10-bit RAW
- 圆的半径java_css中的圆形边界半径工件
- .Net Core建站(1):EF Core+CodeFirst数据库生成
- python作业6月14日
- CloudCC CRM探讨如何建立完善的服务体系
- red hat 4.1.2_安装Red Hat Container Development Kit 2.2版本
- 基于JAVA+SpringBoot+Mybatis+MYSQL的美食分享网站
- 网络技术独立的×××-SDN和三个问题
- leetcode 374. Guess Number Higher or Lower 、375. Guess Number Higher or Lower II
- javascript获取元素样式值
- JDBC中数据库连接池的使用与传统方式的比较
- VBS播放WMP文件
- python读取大文件csv_python 快速把超大txt文件转存为csv的实例
- 代码面试最常用的10大算法(四)
- 微信小程序接入易云章(H5)人脸识别 uniApp
- Hello Goodbye
- mysql 5.6.35anzhaung_MySQL安装与配置(5.6.12,参考乐沙弥博客,未完成)
- 2022-08-17 工作记录--Git-贮藏 和 弹出贮藏
热门文章
- phpstudy mysql 漏洞_phpstudy后门漏洞复现php5.2
- GetCommandLine()和CommandLineToArgvW()
- BZOJ3343 洛谷2801:教主的魔法——题解
- vmware安装linux.iso
- CentOS 6.7编写Shell脚本实现简单跳板机功能
- centos7忘记root密码,重置
- 【转】开发板上修改时间方法
- java lock -----锁
- 超快的前端引擎——artTemplate-3.0
- [Fatal Error] :3:13: Open quote is expected for attribute {1} associated with an element type i...