@
lizon 强烈反对 C 起手。即便迟早会用到 C ,也至少不该在没有其它高级语言经验的时候学 C ,效率太感人。
多数人根本就没有资源(比如说,不会轻易上当的天赋)起手的起来,不花足时间结果就是 C 和体系结构都半吊子,还特么特别容易自我感觉良好( C++这里倒是相反)。某些科班出身眼高手低的和理论水平极端差的, C 的锅跑不掉。下面 @
bombless 说的就是这回事。
而且真正适合 C 开发的领域远比 C++要少。具体和 @
wangxn 说的差不多,除了现在开源软件这点。现在新的开源软件也并不那么愿意用 C ,还有一些重要的开源软件从 C 转到了 C++(比如 GCC )。
纠结性能如果是指保持同等性能预期下如何偷懒,那么基本不该去在乎是不是用 C ,因为不比 C 实现代码生成代码而抽象远比 C 靠得住的语言现在有很多,用 C 明显事倍功半。除此之外,不会找热点的,基本没什么立场去纠结性能。
而搞语言研究从 C 开始就是没事找事,非得先学反面教材自残?搞清楚现在不是那个 Lisp 后端得靠 C 糊弄的时代,对研究语言实现 C 都没必要。
如果非要给个替代,先拿 SICP 前几章垫着再学 C 在上面每一个目的上学习效率都能吊打直接拿 C 起手的。
@
ashchen 错觉。
@
happywowwow 不太准确, C 艹是内外兼修的。
只是外家功夫用的溜的不多,所以很多人有错觉。比如开发效率问题,如果姿势正确,实际上坑的取决于问题本身和别人的代码怎么写,而不是你的水平。
C 倒是一边倒偏内功。
@
ecloud 现在科班基本上就没伪代码这回事了。 Pascal 除了 OI 到处用不上。
C 本来就是典型的强类型语言,因为规定了表达式具有的类型以及 effective type 。
注意 typing 不是 type checking 。所有允许名义类型检查存在的语言规则原则上都确定了“强类型”。只不过后人糊了所谓的弱类型瞎比较以及让强类型和××安全混为一谈所以扯不清了。
另外就算当成类型检查,强制(coercion)在强类型检查的意义下也是一种多态(ad-hoc polymorphism),不是类型检查的例外规则,不是弱类型检查的依据。
(英文喂鸡这里连续有好几个错误。)