zoukankan      html  css  js  c++  java
  • 高级语言发展之回归人类思维——听老赵的Session有感

    周末去听了老赵《Why Java sucks and C# rocks》的演讲,觉得非常的精彩。先说明这个题目的确很好很强大,直接对Java程序员施放了嘲讽。其实关于这个题目,明眼人一眼就知道老赵本人并没有让Java程序员都转到C#的意思,更没有大家把Java平台都扔了的意思;只是让那种如同“看别人写的代码都是垃圾”的那种程序员所特有的傲气蒙蔽的人,才会有上面的想法。

    个人认为老赵演示中对我而言比较精彩的部分有两块:一是用yield关键字大大简化了异步编程的困难,二是C# 3.0所提供的LINQ功能。写过异步的人应该都明白异步相对于同步的复杂性,但yield关键字直接讲异步的编程模型转换为了同步的编程模型,很神奇。至于第二个部分LINQ,应该熟悉的人比较多,但其中举得例子一句话搞定一个功能让人觉得非常的兴奋,这正是我一直所期盼的一种写代码的方式!

    就用其课程中的一个例子来说明:比如将bbcode转换为html这件事情,平时的做法就是先转为html,然后再消除掉一些攻击脚本,最后删除空格。

    如果使用C# 3.0以下版本:

    Util.StripWhites(
        Util.StripXss(
            Util.BbToHtml(bbcode)
        )
    )

    而使用C# 3.0:

    bbcode.BbToHtml().StripXss().StripWhites()

    通过比较明显的出,C# 3.0的扩展方法的支持可以使得代码就如日常做事的思维一般,这是何等的一个进步!

    我曾经对面向对象进行过一些探索,如何向人解释面向对象这个东西的确是很难。在经历过多次的尝试和自己的总结之后,其实面向对象的思维很简单,就是你日常做事情是怎样做,那么面向对象的思考也跟其一样。可以这么说,拿到一件事情,抛弃计算机,想想在没有计算机的情况下我该如何做这件事,这本身就是一个面向对象的思维,剩下的就是将这种思维转换为计算机实现。因此,C# 3.0的这个特性让我觉得特别的兴奋,因为如果采取合适的封装和抽象,那么对于使用你代码的客户来说,他只需要知道我该做些什么来完成工作,而不是去思考如何去做!其实仔细想想,这不正是高级编程语言的任务吗?让你关注于你的逻辑,而不是具体的计算机实现。所以我认为,高级语言的发展目标,便是回归人类自身思维。直到有一天,任何用户拿到计算机,可以根据自己需要做什么而去编写代码,那便是编程语言发展的终极形态!

    既然说到这里,就忍不住不得不狠批一个现象:很多程序员借性能之名来阻碍生产力的提升。其实上面的C# 3.0的特性,我是早已知晓,但限于平台因素平时的开发环境都仍然是在2.0上,曾极力推荐将环境升级到3.5(因为3.5是2.0的一个超集,基本不存在兼容性问题),以带来生产力的巨大提升,但被很多人以性能为名压住。从理论上来说,LINQ的一些东西的确是比自己写循环来的慢,因为有很多的委托需要创建。但相比于生产力的巨大提高,那么一点微小的性能开销真的很重要?而且,很多时候性能的问题在于设计,而不是因为使用了某些高级特性!

  • 相关阅读:
    Could note find result map com.xxxx.entity.UserAccountDO
    浏览器通过file://访问文件和通过http://访问文件有什么区别
    FreeMarker template error: The following has evaluated to null or missing: ==> blogger.md [in template "admin/about.ftl" at line 44, column 84]
    2018-01-03 --活动观赏鱼的2017总结及2018年展望
    eclipse open call hierarchy无效
    Mysql 查询重复的记录
    oracle用户、权限操作
    Oracle 修改表操作
    Python 魔法方法详解
    Python __dict__和vars()
  • 原文地址:https://www.cnblogs.com/gamix/p/programming_language_development.html
Copyright © 2011-2022 走看看