冒号课堂§6.1:系统语言

冒号课堂

第六课 语言简评(1)

课前导读

本课对一些主流语言进行了简单的比较和评价。一家之言,权作助兴。

本课共分四节——

1.系统语言——权力的双刃剑

2.平台语言——先搭台后唱戏

3.前台语言——视觉与交互的艺术

4.后台脚本——敏捷开发的利器

6.1 系统语言——权力的双刃剑 郑晖

摘要

简谈C、C++和D

目录

!预览 ?提问 :讲解 ,插语 。总结 “”参考

居高者形逸而神劳,处下者形劳而神逸

—《洪应明•菜根谭》 !预览

通禅悟道者拈花不语,坐井观天者蛙鸣鼓噪

Java程序员大多被惯坏了,环保意识要淡薄得多

(指针)用得好可以是削铁如泥的神兵利器,用得不好则可能是自我毁灭的罪恶渊薮

OOP又不是金子,含量越高越好。试图把一切都装进OOP的箱子里的想法无异于削足适履

它们(系统语言)的理念是:优化机器的时间而不是人的时间,优化机器的记忆而不是人的记忆;假设编译器是愚蠢的而程序员是聪明的,因此赋予程序员更多的权利、义务与责任

C++是匹无辔无鞍的野马,看似桀骜不驯,若能顺性而御,必能足踏飞燕,行千里而不劳

?提问

为什么C++不支持自动垃圾回收?

在C++中如何解决内存释放问题?

系统语言有哪些特点?

在不引入OOP的前提下,C语言可以借鉴C++的哪些特征?

D语言比C++有哪些改进?

在电脑性能日益提升的今天,还有必要在乎程序的性能和效率吗?

:讲解

教室里,学员们正热火朝天地讨论着流行的编程语言。冒号推门而入,仿佛沸水锅里被浇了一瓢冷水,立刻平静下来。

[…]

冒号课堂§5.4:语言误区

冒号课堂

第五课 语言小谈(4)

5.4 语言误区——语言的宗教情结 郑晖

摘要

关于编程语言认识上的一些误区

目录

!预览 ?提问 :讲解 ,插语 。总结 “”参考

爱而不知其恶,憎而遂忘其善

—《吴兢•贞观政要》 !预览

如果说编程范式是一种文化,那么编程语言更像是一种宗教——尽管它本不该是

语言只有两种:一种怨声载道,一种无人问津

对待一门语言的态度应该是:与其抱怨争执,不如扬长避短

过分拔高一种语言与抹煞语言之间的差别是两种极端,皆为秕言谬说

这些人若有幸拜关公为师,他们最艳羡的一定他的赤兔马和青龙偃月刀,或许还会抹红脸蓄长须什么的,就是不太愿学他的盖世武功

理想的架构师应当如文学大师,既有恢弘大气的构思,又有细腻深刻的笔法;应当如统军大帅,既有运筹帷幄的韬略,又有冲锋陷阵的武功

?提问

为什么那么多人对某些编程语言都有浓厚的宗教情结?

存在至高无上的语言吗?

“语言不过是工具,其实都差不多”。这种论调正确吗?

IDE、框架、设计工具等比语言更重要吗?

语言是低级的代名词,设计是高级的代名词吗?

架构师就不关心语言了吗?

:讲解

“最后该谈谈你们最为关心的语言问题了。”冒号环视一番,众人眼球的瓦数显见增大,“如果说编程范式是一种文化,那么编程语言更像是一种宗教——尽管它本不该是。每种流行的语言都有大批忠实的信徒,随时可能与其他的信徒发生宗教战争。”

逗号深有同感:“周围和网上关于语言的争论从来不绝于耳,志不同道不合者动辄恶语相向。”

提起这些,冒号不免有些忿忿然:“这些信徒或准信徒们认为他们所崇拜的语言鹤立鸡群,远比其他语言高明得多,恨不得成为全天下程序员的通用语言。对其他语言的使用者,或居高临下地同情,或不屑一顾地讥讽。无知与偏见总是相辅相成的,他们中的绝大多数顶多熟悉一两种语言,其他的或浅尝辄止、或道听途说,却敢妄评优劣,岂不可笑之极?”

引号点头称是:“是啊,没有深入的了解,怎会有深入的比较。” […]

冒号课堂§5.3:动态语言

冒号课堂

第五课 语言小谈(3)

5.3 动态语言——披着彩衣飞舞的脚本语言 郑晖

摘要

动态语言简谈

目录

!预览 ?提问 :讲解 ,插语 。总结 “”参考

故凡天下之理,欲向动上求静,静上求动

—《蔡牧堂•发微论》 !预览

程序是为终端用户服务的,而脚本是为程序员服务的

动态语言秉承的一个理念是:优化人的时间而不是机器的时间

待静态语言披盔戴甲、备马抬枪之际,动态语言已衣袂飘飘,长剑出手了

当脚本语言披上动态语言的彩衣,昔日不起眼的毛毛虫便羽化成蝶,开始飘舞在众人追逐的目光之中

?提问

脚本与程序的区别是什么?

脚本语言有什么特点?为什么适合作粘合语言?

动态语言有什么特点?它与脚本语言究竟有什么分别?

动态语言也能用于大型应用开发吗?

动态语言会最终取代静态语言吗?

:讲解

叹号急不可耐地问:“现在可以谈动态语言了吧?”

冒号感言:“曾几何时,动态语言还只是陪太子读书的角色,那时候它们的名字是‘脚本语言’。近来却迅速崛起,俨然有与静态语言分庭抗礼之势。”

问号忍不住问道:“动态语言与脚本语言是一回事吗?”

“相比动态语言定义上的模糊,脚本语言的概念还是比较明确的。”冒号回避直接给出答案,“脚本(script)的提法,是为了区别于一般的程序(program)。Perl的发明者Larry Wall不愧为语言学家,对此有一个精彩的说法:‘A script is what you give the […]

冒号课堂§5.2:数据类型

冒号课堂

第五课 语言小谈(2)

5.2 数据类型——规则与变通 郑晖

摘要

关于数据类型的讨论

目录

!预览 ?提问 :讲解 ,插语 。总结 “”参考

操纵于规矩之中,神明于规矩之外

—《俞震•古今医案按》 !预览

Duck类型的哲学是:名义不重要,重要的是能力

将一个会叫会游的家伙放进池塘看起来不算坏主意,但如果一艘轮船趁机也轰隆隆地开了进来,事情恐怕就不那么美妙了

静态类型检查类似“疑罪从有”的有罪推定制,动态类型检查类似“疑罪从无”的无罪推定制

尽可能守规则,必要时求变通

规则如裤带,过于宽松和过于束缚都不好

?提问

动态语言与动态类型语言是一回事吗?

数据类型有哪两个要素?其意义何在?

什么是动态类型和静态类型?它们的区别是什么?各有什么优缺点?

什么是鸭子类型(duck typing)?它有什么优缺点?

什么是强类型与弱类型?什么是类型安全的?

:讲解

待教室平静下来,冒号再度开腔:“在谈论动态语言之前,最好先澄清一下它与动态类型语言之间的区别。”

叹号讶然道:“它们不是一回事吗?一直以为动态语言是动态类型语言的简称呢。”

“有亲戚之名,却无血缘之亲。名称上相似,加之动态语言绝大多数确是动态类型语言,造成混淆实属在所难免,但二者之间并无必然联系——动态语言不一定是动态类型语言[1],动态类型语言也不一定是动态语言[2]。”冒号飞跑的舌头几乎绊蒜,同时把众人的脑子搅成了一锅粥。

见势不妙,冒号改用迂回战术:“我们不妨再谈开些,大家对数据类型是如何理解的?”

逗号随口道:“数据类型不就是数据的种类吗?” […]

一个可以免费发短信的网站

这是一个国外的网站,支持向全世界的收集用户发送短信息。支持短信的长度为160个字符,唯一遗憾的是短信内容只支持英文。

程序作者是个中国人,我的手机号是159的,不知道是不支持还是怎么的,刚才发的短信没收到。

 

网站地址:http://freesms.cloudapp.net/

冒号课堂§5.1:教学计划

冒号课堂

第五课 语言小谈(1)

课前导读

本课承上启下,为今后的学习作一些铺垫。在确定教学计划后,对数据类型和动态语言作了简单的介绍,并对有关编程语言的一些观点作出评论。

本课共分四节——

1.教学计划——接下来的故事

2.数据类型——规则与变通

3.动态语言——穿着彩衣飞舞的脚本语言

4.语言误区——语言的宗教情结

5.1 教学计划——接下来的故事 郑晖

摘要

讨论下一步教学计划

目录

!预览 ?提问 :讲解 ,插语 。总结 “”参考

褚小者不可以怀大,绠短者不可以汲深

—《庄子•至乐》 !预览

编程水平的提升之道是:在实战中演练招法,在招法中领会心法,心法反过来提升招法,进而提高实战水平,如此循环往复呈螺旋式上升过程。正所谓熟能生巧,巧能生通

迭代学习法:即在具体知识与抽象理论之间进行折返式学习

网页的迷人之处就在于,能够用精美的画皮来包裹冗长低效的代码

无论干哪一行,要想胜任愉快,离不开四样东西:才能、兴趣、方法和努力

?提问

什么是迭代学习法?

一个合格的程序员需要学习和掌握不同领域的许多知识,如何能胜任愉快?

:讲解

新课开始了,冒号一反常态,并没有直奔主题:“在谈论新话题之前,先请诸位畅所欲言,谈谈这段时间的学习感受。”

叹号表情有点复杂:“通过前面的学习,让我长了不少见识,只是——”

“但讲无妨。” 见叹号有些吞吞吐吐,冒号鼓励道。

“只是觉得有点——纸上谈兵。”叹号鼓足勇气说出心里话。

[…]

对赶集网的分析【SEO每周一站】

网站:赶集网(www.ganji.com),网站类型:分类目录。

赶集网的一些信息

PR=6,Alexa=714,百度收录:8900000,Google收录:5230000。

赶集网的SEO

1.按城市使用二级域名,每个页面均与当地相关网站做链接,既提高了二级域名的权重,也提高了相关性。

2.细致的分类,做到每一个关键词一个分类。分类URL使用拼音。分类title采用“城市+分类+转让/求购信息- 城市赶集网”

3.内链,特别是分类页面,提供多种筛选方式,由此可以生成多套页面到达终页;其他类别的链接,帮助更好的引导蜘蛛。

4.终页使用分类信息标题作为title,页面内内容标题使用了H1,终页内也做了链接导向,分别导向地名和标签。

个人觉得赶集网还需要改进的地方

1.由于终页内容过少,在终页的内容上面的其他导向链接内容不易过多,让内容靠近<body>标签起始位置,减少不必要的内容也为减小差异性。

对百姓网的分析【SEO每周一站】

百姓网(www.baixing.com);网站类型:分类信息;网站前身:客齐集(kijiji.cn)

百姓网的一些数据

PR=6,Alexa=1512,百度收录:4900000,Google收录:1550000。

关于百姓网的SEO

1.百姓使用城市名来创建二级域名,而不是使用产品创建二级域名,对用户来说城市要优于产品,符合一般先选择城市再选择产品的需要。

2.百姓网站网页简单设计,没有图片,没有繁杂信息。每个页面都保持在45K以下。

3.域名的改变,不管是网站名还是域名都更加利于记忆了。

4.title使用“信息标题+百姓网+栏目名”页面内信息标题使用了H1标签。

5.更改域名301跳转的运用。

百姓网还可以改进的地方

1.每个二级域名下可以单独交换友情链接(如suzhou.baixing.com)可以和一些地方门户交换链接,而不是把友情链接集中起来。

2.内链过于简单,只有一个用户发表的其他内容和导航栏作内链,无其他内链方式。

3.Google广告很容易被误点,广告颜色和内容颜色一样,用户体验不好。

4.分类可以更加细化。

产品需求——Programmers(6)

载于《程序员》杂志09年第9期。

这个系列的漫画讲述程序员——这种神秘人类的囧事,故事多来源于我身边的程序员朋友,且以互联网开发背景为主。

如果你有什么可乐的关于程序员的故事、对话、代码,愿意通过漫画的形式分享,请给我发邮件。arthur369@gmail.com。

冒号课堂§4.4:情景范式

冒号课堂

第四课 重温范式(4)

4.4 情景范式——餐馆里的编程范式 郑晖

摘要

编程范式在餐馆中的应用

目录

!预览 ?提问 :讲解 ,插语 。总结 “”参考

理论是认生的孩童,多陪他玩玩,自会活泼起来

—题记 !预览

厨师只需提供一种服务:把纸上菜变成盘中菜,至于蒸、煮、炒、炖等具体做法纯属实现细节

可以这么理解(闭包):所谓包,指函数与其周围的环境变量捆绑打包;所谓闭,指这些变量是封闭的,只能为该函数所专用

合理地使用闭包能使代码更加简洁清晰,散发出函数式特有的优雅气质

换盘子有两种方式:一种是服务员主动换,一种是客人要求换。前者是轮询,后者是通知

如果把待加工的菜看作数据,技法看作算法,将数据与算法分离,以算法为中心,那是什么范式?

?提问

什么是闭包?为什么被称为闭包?它有什么作用?

规则引擎有何用处?

能否设想一个生活中的场景,把介绍的九种编程范式都用上?

:讲解

叹号摘下眼镜,揉了揉眼:“范式再好,多了也难免有些审美疲劳。”

逗号也搓着太阳穴:“这段时间脑子被灌得沉甸甸的。”

“彼此彼此!你们的脑袋老闹涝灾,我的喉咙老闹旱灾。”冒号说着,拿起矿泉水瓶一饮而尽。

大伙听着怪别扭的,这不是拐着弯说我们脑子进水了吗?

冒号清了清嗓子:“为尊重民意,也为避免消化不良,大家先轻松一下。下面我们来个情景编程。”

“情景编程?没听说过,只听说过情景英语。”问号感到挺新鲜。 […]

Category

Archives