C与C++的个人反思

这个话题历来有很大争议, 喜欢C的对C++不屑一顾,喜欢C++的觉得C是一个子集合。

最早接触C语言是高中时候, 那时一帮搞奥数的同学,有人带了一本谭浩强的书,于是大家学得热火朝天。师大附中的3年,是人生最自卑的3年。一个宿舍8个人, 湖南省前6名就有4个被宿舍牛人占了。这3年最大的打击就是自己智商怎么怎么低。有人说搞IT的都智商比较高, 那看和谁比了, 和搞数学的比,就基本全是弱智了。记得那时看了一个月,也没明白赋值是怎么回事。宿舍一哥们, 看了一个星期就搞懂了。一打听, 妈的, 人家中考700分考695的。心理压力那个大啊。

然后就是3年后,99年到了上海, 第一门课就是C++语言。 那时是面向对象的顶峰。我也免不了。凭着自己的小聪明, 一个暑假看完同济大学的高等数学, 然后第一学期的高数免修时间就全部用来学C++。这一入火坑就是6年。回顾这6年, 我现在后悔了。 脱离实际, 被语言细节玩死了。 看了一大堆书, 懂一大堆理论,实际项目到底如何面向对象分析还是一头雾水。 历史如果能够重来, 我情愿学习另一门语言, 英语。回过头来看, 我花了大量时间,看了大量书, 但脱离实际, 基本上是在岸上游。再加上C++语法过于繁杂。

客观上也让学习者找不到北。

其实上, C++最大的问题就是死在搞不懂它的设计哲学。坦率的地说,我学习了6年,工作中又用了4年, 我还是没自信说我懂C++。更主要的是, 我没有搞懂多继承到底怎么用。面向对象里,我最搞不懂的就是继承。继承的最大问题就是破坏封装。这2者的平衡实在是太难掌握了。现在各种面向对象实现版本,继承是最大问题。

首先现实中的继承都是部分继承。 比如,继承父母的财产。你只能继承一部分,不可能继承所有。然后, 是继承父母的性格。但,你会和父母的性格完全一致吗, 显然不可能。

这中间的差别就在于, 虽然能继承A,和B, 但你没有办法让系统自动解决A和B之间的融合, 构建一个新的C。即C很难只继承A类的X函数的部分特性,再继承B类的Y函数的部分特性。如果你直接调用A.X 和B.Y,显然由于A和B是高耦合, 这必然会带来一些副作用。如果要修改这些副作用, 你必然又要影响A和B的封装。矛盾就在于, 作为子类, 你

没有权力修改A和B。 问题的关键就是,现实的继承都有融合和进化。 而目前的面向对象语言基本上很难提供有价值的工具来解决融合和进化。

这样,我们很快就会发现, 系统并没有变得更简单, 反而更复杂了。我们本意是想通过工具来简化系统,却事与愿违,让自己更晕了。

而C为什么没有这个包袱呢? 因为C完全是你自己控制整个融合。只有人才能精确的知道A类哪些属性是自己想要的, 哪些是垃圾数据。只有人才能清楚的知道哪些函数满足isA关系,哪些函数必须丢弃,哪些函数还可以改改用用。

这中间的最大差别是, 你将问题丢给C++, 但事实上它并没有你想的那么强大。而C是完全告诉你,对不起,这个搞不定,必须你自己来。

这样,最终结果就是, 系统虽然对外接口看起来很完美, 里面相互冲突相互矛盾的东西一大堆。你原以为能在下一个系统中完美重用, 却发现一旦抽象的映射关系由于项目的变化,而导致大量的isA关系变成isNotA关系。怎么办? 将上千个类完全重写? 事实上,光自上而下检查所有isA关系就已经让你吐血了。更不用说再在高内聚的类上动刀子解耦。工作这么多年,C++让我最开心的就是,这个库你们负责,我只管调接口。 这的确比C稍微快一点,少敲了一些 void*this, 但如果让我去改某个号称C++高手,其实只是胡乱写了2-3年代码的人,
我只能往上追溯XXX年,(略500字)

当然,上面这个问题不是C++的问题,是所有面向对象语言通用的问题。这些号称无敌的工具, 却完全没有智能, 一旦抽象关系发生变化,它们什么也干不了。而一旦人来维护这些关系的时候, 却发现还不如重写, C+V操作来得快。

我喜欢C的最大原因就是它的哲学: 能干的一定帮你干好, 不能干的你自己必须干好。  决定一切的不是计算机,而是人。

关于效率问题, C一直被人诟病, 其实你完全可以C + 自己构建的语言来解决。 我去年就自己设计了一个简单的语言, 能快速地将描述性代码转换为面向对象版C语言。

谁说C不能面向对象? 说C不能面向对象的人, 其实是自己还没懂面向对象。 看起来好像学了C++, 懂了,其实完全只是为了方便C+V, 却完全不管父类里面10个函数有8个不满足isA关系。 没事,只要我这个项目只用10个中的2个就可以。后面项目有没有,还在不在这个公司谁知道呢?

时间: 2024-10-23 14:58:27

C与C++的个人反思的相关文章

关于2016.12.12——T1的反思:凸包的意义与应用

2016.12.12 T1 给n个圆,保证圆圆相离,求将圆围起来的最小周长.n<=100 就像上图.考场上,我就想用切线的角度来做凸包.以圆心x,y排序,像点凸包一样,不过用两圆之间的下切线角度来判断. 这就是下切线(我自己瞎编的名字): 好像是对的啊: 然后我就保证必AC的希望,用这种写法交了,然后就只得了N=2的暴力分... 自以为是正解,却落得如此下场... 为什么?这样不对吗?借用学长的力量,果然被Hack掉了: 这种情况,圆心排序后,检测的顺序并不是圆上的切点的顺序,自然就会挂. 蓝瘦

暑假反思

成功的,又一门功课成功地成为了全班倒数,还是最能体现一个人编程水平的c++实训.又得好好反思一下自己的学习状态了. 刚来到华工时的那种不甘,让我近乎维持着高中的学习状态,课内成绩荣登榜首,ACM一直保持着努力状态,这时的我的代码能力可以说是超过了除了几个原本有底子的大多数人.自大一上打下良好的基础之后,一直维持“学霸”状态的我开始反思:我想成为什么样的人?我所热爱的到底是什么?并且开始打算大一下甚至花一年的时间来明确这个方向. 直到现在我都觉得那个时候的决策是正确的. 但是,从现在来看,我的寻找

《天那边》观后感——对一些现象的反思

我也不知道为什么,我就是喜欢看一些文艺片,看一些别人不喜欢看的,近期<变形金刚5>特别火,许多人买票去看,但在我看来,这些电影只是带给您一些视觉上的享受,其他留不下任何东西,但有些电影就不一样,看过之后会使你陷入深深的沉思,可以让你以不同的角度去看待这个世界,看待我们的生活.前几日看了一部老片<天那边>,看过之后,根据自己的理解和观察,总想表达一些自己的想法. 首先是对支教的看法,这部电影主要就是支教大学生在支教过程中的理想与现实的抉择,从我看到的一些支教现象,大部分人甚至是全部的

软件工程课后总结与反思

早就听说罗杰老师的软件工程课是实用性与理论性相结合的课,在这门课上不单单只是简单的编写代码,调试程序,还要做到迭代开发,撰写文档等实际软件工程中所必须要完成的工作.为了锻炼自己的能力,学到一些不一样的知识,这学期我选择了罗杰老师的软件工程课. 课程大概可以分为三个部分,个人项目,双人组队项目,团队项目(五人). 个人项目强调个人能力,包括编写代码的能力,创造力,想象力等等,罗杰老师说过:在实际开发软件的过程中,很少是"单兵作战",但个人能力是团队的基石,只能个人能力出众,团队水准才能不

一点反思

这几天真是有点找不到自己了.每天过的很盲目,一点方向感都没有,也没有动力了.不知道自己该做些什么. 虽然也是一直在做事,但是感觉做事并没有什么效果.总是在盲目的去做一些事情,没有目标,没有动力,实力和目标差距太大. 还有现实的一些打击也是让我有点找不到自信了.感觉大学怎么越过越堕落了呢.这几天复习也是这样.看别人都在紧张的复习当中,我却一点也看不进去书,看一会就不想看了. 总是想找点其他的事情做,总是给自己找借口,总是不能安心下来认认真真做一件事.也明白这样不好,老是这样下去的话,最后肯定一事无

反思 自学困境自我剖析、习惯的惯性与维持

反思 自学困境自我剖析.习惯的惯性与维持 @author ixenos 反思背景 现在我还记得大学第一天开学的时候,那种迷惘无所适从的感觉是怎样地笼罩着我. 当一个无比明确的理想破碎.落幕的时候,当我还想沿着旧有的老路一往无前的时候,心却落空了.迎接我的不是奋斗的意志,而是更加深邃的失落感.因为我发现无论我多么努力地用意志来牵扯这副皮囊,终究是杯水车薪,心底总有个声音在不断发问:为什么,有什么用,努力真的能成功吗,你要去哪.那时的我就意识到了,空洞的意志只能让我成为一个短跑英雄,而人生是一场马拉

这些年,这些挖掘机算法,这些反思

原文:http://www.blogchong.com/post/111.html 写这篇文章,缘自于前几天部门内部成员们进行了一次部门内部现有涉及的一些算法的review以及整理.不过比较囧的就是,由于boss不在,我们讨论讨论着就成了吐槽大会,倒是有一半时间在吐槽产品以及业务部门了~~ 不过这也算是一件可喜可贺的事情了,这也可以看做是我们数据部门,已经由开轻型挖掘机向深挖阶段迈步了. 因此,借此机会,也对自己接触过的,了解过的,或者做过的一些勉强称得上算法的东西做一个梳理.其实,就个人来说,

冰与火的盛夏 --&gt; 贪婪砸盘的反思

1,群主预测提示 一早群里群主提示:盘面很可能会选择回调,不管是真的熊市来临,还是短暂回调,3940左右将是反弹关键点位,也就是说,如果持续回调的话,按照正常调整力度,礼拜二或者礼拜三将是最佳建仓时机.调整的可能性最大,因为上周五那点回调力度是没有意义的,无论是洗筹还是解放抛压盘都不可能短短时间内完成,但是也并非绝对,从周五期货尾盘情况看,买空力量并不是太强,而周五成交量也是短期内高点,也就证明周五那天买入力量并不小,所以并不排除周一反红阳线试探上攻4200的可能. 基于盘面情况,给大家的建议是

2015.7个人反思小结以及后续规划

2015.7个人反思小结以及后续规划 标签(空格分隔): 反思小结 缘由: 总觉得有必要为自己写一篇小结,有些东西会跟随着时光慢慢被淡忘,写小结感觉和拍照一样,都是用来 记录自己曾经的点点滴滴,以后某一天回头看到这篇小结,可能会会心一笑,哈哈,曾经自己也这样傻逼过: 反思下自己的过去,看下自己的现在,规划以后的方向~,给自己一点鸡汤,打打鸡血,一点点让自己成为一个 优秀的人~ 过去: 在今年的7月4号,小猪的大学生涯终于到了尽头,可惜并没有拿到正常毕业拿到的两个证:学位证跟毕业证:只拿到一个象征

悬崖上的颤抖与反思 -- 能拯救我们的只有我们自己

1,大盘连续跳水 从刚开始第一周的盈利3K多,到后来持续亏损,再加上大盘不断跳水,到目前为止已经亏损本金2/5,亏损达到了16.5W,有2支股票割肉了,损失在界面上不再显示出来,如下所示: 2,在歧路上越走越远 刚才开始,投入了6W资金,后来群里酱油说到他专攻重组类型的,并且重点关注4支, 重组类型: 孚日股份. 002083 新赛股份. 600540 天利高新. 600339 嘉麟杰       002486 所以,我又转入资金15W,买入以上4支股票,后来室友的中天城投和黔源电力也赚钱,他们