杂感系列之一--C++杂感

本文探讨了C++语言的特点及其与其他语言的对比。作者分享了自己学习C++的心路历程,并强调了掌握一门语言的关键在于理解其背后的计算机原理而非仅仅语法细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      深入学习了 STL的内部构造以及一些 C++深层次的机制与技巧以后,突然浮现出每个 Programmer都要面对的问题。

      Why Programming in C++?

      比起质朴纯净的 C,灵活庞大的 JAVA和 C#,我为什么要选择 C++?

在各大技术 BBS和牛人的 BLOG里逛,大家都在为自己喜欢的语言争论, C#/JAVA的程序员说,不要重复造车轮,拥有良好的语言平台,有丰富全面的库比较全,可以将注意力转向更为重要的架构方面,软件工程方面。又何必在语言的表层基础苦上苦痴迷? C++标准中连最基本的 GUI库和网络库都没有。包括 C++创始人 BJ本人也想将 C++发展成为一个平台( palform)。

C++的 STL库固然不错,但是一个新手用 STL时,一个小错误编译就跳出上 K的错误信息(就算有 STLFilt,确实也以难安装),最新的 C++0x中 能改善这一问题的万众瞩目的 Concept已被取消, C++又该何去何从? C的程序员(包括 Linus大叔)说, C++简直就是邪恶的语言,效率底下,语言繁杂,违反 KISS原则,更无法在底层如操作系统中胜任。大家说的好像都有道理,难道 C++就是这样一门高不成,低不就的语言么?

我也用过 C语言和 C#语言,而且还在大学里也拿过关于这两种语言竞赛一些小小的奖,最起码能说对这两种语言还有粗略的了解。

但是我最喜欢、花的时间最多的还是 C++。 C++是我学的第一门语言,一路学来吃了不少苦, C++作为语言国度的一个联邦 [EFC++Item1],灵活,弹性大让我着迷,它像一个精通太极的大师, 容纳百川, 但却 深藏若拙 。它有精妙的技法如 SFINAE和 tag distributing(技法的复杂性这也是它被指责的重要原因)。

它有沉着老练的 STL库,其中有各种数据结构和常用算法的灵活精巧的实现和高度可扩充性,有锐意进取的 boost库, loki库,有超重量级的网络通信开发框架 ACE,还有效率较高的 Blitz++科学库等。

C#中的各种“高阶”功能 C++都能实现(没有“基本”两字,您和我说不可能?那就去看看 C#的托管机制是用什么语言写的吧),虽然您将花费更多的时间学习与调试,但是我觉得中途的乐趣只有您自己做过才能深有体会。

它和 C语言工作效率不分伯仲,(您说 C++效率低下?请问您深入用过 C++么?您看过 SGI实做中内存分配的实现么?) C++也可以毫不费力的使用现有的 C代码(所谓 C-Sytle), C++STL中泛型的 sort完胜 C中的 qsort这也是 C++程序员津津乐道的话题。

但哪种语言不是经过无数大牛们大师们 千锤百炼 的产物?争论哪种语言的好坏只是显出您的 自卑 心理。当你去说一门语言好与不好的时候,你有想过,你有 真正的 深入的学过它么?你 真正的 了解这门语言的特性么?

       请记住这句话: 好手艺人从不会责怪他的工具。语言没有好坏之分,只有在特定环境下,具备各自的优势。

对于初学者而言,学通一门语言是他叩开计算机底层原理世界的大门的钥匙。语言的好坏不重要,关键是看你自身从学习这门语言中得到了什么。

若是 单单执着于语法细节 ,把把你的思想全部拘束在孔乙已争论茴香豆的“茴”的几种写法上(像贵国的等级考试这类的考察语言偏僻细节上),你将会 得不偿失

在学习的提高阶段,可以通过大体学习其他的语言,来发散自己的思维;甚至还可以帮助你更好的理解你所目前热爱的语言。

还有一些人执着争论哪门语言更有“钱途”的时候,我建议您嘞,改行吧。 (您说我装清高,什么程序员也要吃饭,现实也很残酷之类的。我只能说,连吃饭都成问题的,您也不适合在这个层面上讨论语言的好坏,您还是继续学吧)。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值