• 语言特性之我见


    根据《与C++社区混战,C#会重蹈覆辙吗?》所写:

     

    保留C#以下功能:

    1. 面向对象

    2. 接口

    我觉得要是没有接口,这个也做不了优美的面向对象阿。

     

    3. 构造器、字段、方法

    没有这些怎么面向对像呢?难道面向对象是个空壳?

     

    4. 垃圾收集

    垃圾自动收集表面上是挺好,但是毛病也不少。我觉得.net之所以那么慢,99%都是因为这个玩意。

     

    5. 异常

    异常的作用就是让你的代码产生异常。而且我觉得一点都不优美。是所有语法特性中最难看的。

     

    6. 并发支持——这是firelong唯一投票支持的新特性,因为它在今后的项目太常用了。

    还没用过,系统化的解决方案确实省了很多事,不知道效率如何。

     

    7. 和其他语言的互操作(类似P/Invoke)——那些不适合C#做的,用其他语言来做,然后与C#互操作。

    这个要是没有,我不觉得有什么奇怪。不就是为了和老古董的c语言之类的协作么,如果.net发展完善,同时改进性能,同时用.net重写系统接口,那么为什么还要依赖其他语言的代码呢?因此,这不过是历史遗留问题的产物,不具生产力的。

     

     

    删除C#以下功能:

    1. 委托和事件(这些都可以用接口来做,参考Java)

    委托需要,事件就不必了。委托就是函数指针,很重要的编程概念。接口做能有函数指针方便?

     

    2. 反射(反射用处很小,如果真想用反射,请用其他语言)

    反射是.net的精髓所在。不用反射,请用其他平台。

     

    3. 特性(也可以用接口做,C++没有特性不是一样活得很好)

    特性是特殊用途的,和正常编码是两码事。

     

    4. 属性、索引器、析构器(都是方法)

    很好的语法糖。析构器这个没人说不是方法吧?只是担任特殊任务而已。只是.net的自动回收垃圾技术下,析构器好像有点名不副实。

     

    5. JIT编译(直接编译成native代码,完全没必要JIT,微软当初JIT是因为承诺跨平台,但是现在C#真的跨平台了吗?还是Windows上跑,Mono这种阿斗别提了。)

    可以改进,但是免不了要这一层。尤其现在手机之类的新平台那么多,没有自动编译这个功能,就有点走回头路了。问题不是jit,而是jit的策略。

     

    6. 泛型(没必要,用的很少)

    范型是一种抽象技术,虽然不是面向对象传统的范畴,但是和面向对象的目的是一致的。既然你认同面向对象,为何不认同范型?

     

    7. Linq(去掉,还是用Sql语句+存储过程来的实际)

    Linq是很优美的语言,虽然性能不是很好。但是漂亮也是生产力!

     

    8. dynamic

    不懂。

  • 相关阅读:
    js 延迟函数
    reduce
    angular2 select 联动
    小程序图片展示模式
    e.target 和 e.currentTarget
    jquery weui 图片浏览器Photo Browser
    ng2中 如何使用自定义属性data-id 以及赋值和取值操作
    jquery img src赋值
    JQuery 自定义属性取值 赋值
    unsupported media type 415
  • 原文地址:https://www.cnblogs.com/Nobel/p/1761848.html
Copyright © 2020-2023  润新知