当前位置:首页 >> 每日看点 >> 为什么我觉得C/C++好简单?

为什么我觉得C/C++好简单?

卡卷网 每日看点 144

很有可能是你没有见过生产级别的代码,甚至可能还不知道去哪里看。github上面有chrome/mysql/unreal engine之类的一大堆优秀软件的代码,个个都是就几百万行以上,你去看看自己能看懂几行,然后再来说简单不简单。

如果看完之后还觉得简单,那几百万/年的工作就是闭着眼睛找了。

从很远的地方看珠峰,就一个小山坡,感觉要爬上它易如反掌。距离越近,才会觉得越难。

编程也一样,你觉得它简单的时候,其实是因为离真正的编程还很遥远。

C语言语法级别的难,第一次见到的时候一头雾水的是这个:

send(to, from, count) register short *to, *from; register count; { register n = (count + 7) / 8; switch (count % 8) { case 0: do { *to = *from++; case 7: *to = *from++; case 6: *to = *from++; case 5: *to = *from++; case 4: *to = *from++; case 3: *to = *from++; case 2: *to = *from++; case 1: *to = *from++; } while (--n > 0); } }

do while和switch嵌套,其实是一种古老的发明:

en.wikipedia.org/wiki/D

算法级别的难,举个例子,Quake 3中求反平方根的算法,没人解释基本看不懂:

float InvSqrt (float x){ float xhalf = 0.5f*x; int i = *(int*)&x; i = 0x5f3759df - (i>>1); x = *(float*)&i; x = x*(1.5f - xhalf*x*x); return x; }

C++级别的难比C更多,数不胜数,当年让我觉得C++强大无比的是这个:

assert((o-----o | ! ! ! ! ! ! ! o-----o ).area == ( o---------o | ! ! ! o---------o ).area );

它其实是使用了一个库,在这里:

Multi-Dimensional Analog Literals

编程其实是一种技术活,类似于绘画、雕刻、篆刻、制陶烧瓷之类的传统工艺,只是它的载体变成了计算机。学习过程是类似的,无论智商多高,都无法跳过大量的长时间的练习和采坑摸索,任何一个人都不可能在两个月内从编程新手变成高手。

随手一发,没想到那么多人看。评论区说题主说的是C/C++语言,不是逻辑。好吧,要说C++语言本身有多难那就更简单了。

考察C++掌握程度的资源非常多,例如这个,打开看看,很有可能第一题你就不会:

cppquiz.org/

可以关注这个人的推,他经常提一些C++挑战性的问题:

twitter.com/shafikyaghm

还有一些常见的C++黑话,主要是一些C++编程技巧,有些甚至是C++独有的:

en.wikibooks.org/wiki/M

第一个链接里面只有几百道题,我这么说吧,知乎上懂C++的人一定可以出一千道甚至是一万道C++的题目是才学2个月C++的人答不出来的,而即使对学20年C++的人,出一百道答不出来的也没多大难度。

协助本站SEO优化一下,谢谢!
关键词不能为空
同类推荐

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。
最新文章
热门文章
随机文章