惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Help Net Security
博客园 - Franky
GbyAI
GbyAI
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
爱范儿
爱范儿
IT之家
IT之家
酷 壳 – CoolShell
酷 壳 – CoolShell
aimingoo的专栏
aimingoo的专栏
博客园_首页
MongoDB | Blog
MongoDB | Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Recent Announcements
Recent Announcements
Scott Helme
Scott Helme
有赞技术团队
有赞技术团队
M
MIT News - Artificial intelligence
C
CERT Recently Published Vulnerability Notes
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Jina AI
Jina AI
F
Fortinet All Blogs
N
Netflix TechBlog - Medium
L
LangChain Blog
L
LINUX DO - 最新话题
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
H
Hacker News: Front Page
MyScale Blog
MyScale Blog
P
Palo Alto Networks Blog
G
Google Developers Blog
Google DeepMind News
Google DeepMind News
AI
AI
T
Troy Hunt's Blog
Microsoft Azure Blog
Microsoft Azure Blog
阮一峰的网络日志
阮一峰的网络日志
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Vercel News
Vercel News
Microsoft Security Blog
Microsoft Security Blog
罗磊的独立博客
S
Secure Thoughts
大猫的无限游戏
大猫的无限游戏
博客园 - 叶小钗
人人都是产品经理
人人都是产品经理
Blog — PlanetScale
Blog — PlanetScale
博客园 - 司徒正美
Apple Machine Learning Research
Apple Machine Learning Research
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 三生石上(FineUI控件)
S
Security @ Cisco Blogs
Cloudbric
Cloudbric
E
Exploit-DB.com RSS Feed
Attack and Defense Labs
Attack and Defense Labs

博客园 - 枫

2015半年记 再写一帖~就《离开上海》一文再说明 再见,上海~非主流码农在上海的9年心路历程 Mac下配置mysql-python 《Rework》摘录读后随感 Event Sourcing与大数据 无题(1) 在Mac上安装Hadoop [原创]一步一步用C#编写三国杀(三):设计流程 [原创]一步一步用C#编写三国杀(二):牌堆的设计 [原创]一步一步用C#编写三国杀(一):规则和需求描述 走进单元测试(3):消灭HttpContext的依赖,兼谈单元测试的设计辅助性 走进单元测试(2):必须要自动化 我也想对广大程序员说一些话 走进单元测试(1):为什么难以广泛应用? 缺乏自信怎么办? 梦话对象之三:三要素的差异与统一 梦话对象之二:事件之无限扩展 梦话对象之一:逃不开的生死问题
高级语言发展之回归人类思维——听老赵的Session有感
· 2010-04-18 · via 博客园 - 枫

周末去听了老赵《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的一些东西的确是比自己写循环来的慢,因为有很多的委托需要创建。但相比于生产力的巨大提高,那么一点微小的性能开销真的很重要?而且,很多时候性能的问题在于设计,而不是因为使用了某些高级特性!