高级语言发展之回归人类思维——听老赵的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.StripXss(
Util.BbToHtml(bbcode)
)
)
而使用C# 3.0:
通过比较明显的出,C# 3.0的扩展方法的支持可以使得代码就如日常做事的思维一般,这是何等的一个进步!
我曾经对面向对象进行过一些探索,如何向人解释面向对象这个东西的确是很难。在经历过多次的尝试和自己的总结之后,其实面向对象的思维很简单,就是你日常做事情是怎样做,那么面向对象的思考也跟其一样。可以这么说,拿到一件事情,抛弃计算机,想想在没有计算机的情况下我该如何做这件事,这本身就是一个面向对象的思维,剩下的就是将这种思维转换为计算机实现。因此,C# 3.0的这个特性让我觉得特别的兴奋,因为如果采取合适的封装和抽象,那么对于使用你代码的客户来说,他只需要知道我该做些什么来完成工作,而不是去思考如何去做!其实仔细想想,这不正是高级编程语言的任务吗?让你关注于你的逻辑,而不是具体的计算机实现。所以我认为,高级语言的发展目标,便是回归人类自身思维。直到有一天,任何用户拿到计算机,可以根据自己需要做什么而去编写代码,那便是编程语言发展的终极形态!
既然说到这里,就忍不住不得不狠批一个现象:很多程序员借性能之名来阻碍生产力的提升。其实上面的C# 3.0的特性,我是早已知晓,但限于平台因素平时的开发环境都仍然是在2.0上,曾极力推荐将环境升级到3.5(因为3.5是2.0的一个超集,基本不存在兼容性问题),以带来生产力的巨大提升,但被很多人以性能为名压住。从理论上来说,LINQ的一些东西的确是比自己写循环来的慢,因为有很多的委托需要创建。但相比于生产力的巨大提高,那么一点微小的性能开销真的很重要?而且,很多时候性能的问题在于设计,而不是因为使用了某些高级特性!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】