A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

梦回黑马

初级黑马

  • 黑马币:50

  • 帖子:23

  • 精华:0

本帖最后由 梦回黑马 于 2017-9-23 16:02 编辑

大家好,我是深圳黑马C++的一名学员,受邀前来与社友们分享学习点滴。希望社友们多多支持,你们的认同与赞赏是我写贴的最大动力。谢谢。


我的名字叫做梦回黑马(学IT),灵感源自于梦回三国XXX。

废话不多说,下面是我本次想分享的主题。
1.C++的学习趣事、经验分享。2.C++?为什么会是C++?
3.C++于人生的历练。


一.C++的学习趣事、经验分享。
有人说,学习不就是三点一线的生活吗,哪来有趣的事情可言?
其实,有趣的事可以直接从我们学习中得来,而且教授这门课程的老师就是趣味的源泉。
Teacher is very crucial,
Teacher is very crucial,
Teacher is very crucial!
the import things to be repeated 3 times!

有人说,学习要靠自我修行,老师仅仅是个辅助。
有人说,学习好坏取决于个人,老师的影响微乎其微。
有人说,学习要多看书本,老师讲的知识点大多已囊括。
但就是没有人告诉你,而今天的我告诉你,
老师的作用性才是最为关键的。何以如此说?

当你上过江文聪老师(Mike)的课后,你会发现他的讲课思路频频有亮点。
传统印象中C语言是一门面向过程的语言,这种思想也早已深入人心。
那么你有没有想过,它是不是能以面向对象的思路实现功能?
在Mike老师的课中,你可以感受到:
1.C语言能实现多态?它不是没有虚函数吗,怎么编码做到的一种多态的功能?
2.C语言还能屏蔽数据类型?甚至于比C++封装地更为诡异,连整个数据类型都不让你知晓?
3.什么是多态?多态就是多么地变态!(O(∩_∩)O哈哈~)现在想想确实变态,
  单凭一个虚函数能玩出22种设计模式,各种诡异的套路,你说变态不变态?

当你上过高帅老师的课后,你可以感受到:
1.C语言实现数据结构,难道就一定要#define或typedef类型而导致容器只能同时容纳一种
  数据类型吗?敲邻家C++的泛型是多么强大呀,理论上支持同时容纳各种数据类型。那么
  C语言有没有方法能突破数据类型的束缚,从而以泛型的思维角度实现数据结构?
2.仿内核链表与普通链表有什么不同?为什么前者在企业中得意广泛流行?Linux内核链表
  又是怎样一回事?
3.ls的模拟,rm的模拟,tar的模拟,gettar的模拟,文件拷贝的多进程模拟,
   文件拷贝的多线程模拟,shell终端的模拟?瞬间感觉Linux的各种命令玩弄鼓掌之间!





二.C++?为什么会是C++?
在当今IT高级语言的世界里,从客观的角度说,C++是最困难、最危险、但同时也是最灵活、最强大的。
困难在于:学习门槛太高(仅次于汇编语言),让许多挠有兴趣的人望而却步。从现实加入学习的人看,新手从入门到迷茫、从入门到绝望、从入门到死心、从入门到放弃、从入门到跑路的人比比皆是。
危险在于:使用一不小心就Game Over,要对程序崩溃习以为常。这对于某些完美分子显然难以接受。
灵活在于:花样太多,想有怎样的编码,要看你怎样的心情。
强大在于:支持最多的编程范式。你能获得最大的弹性,同时又保持最高的效率
(高级语言中的最高效率)

具体的说,无论是CSDN,还是知乎,或者其他IT社团。许多人都在谈论着C++的点滴故事。可归纳为以下几点:
1.C++的坑太多,一不小心掉入坑中,恐怕你就会从入门到...
2.C++的学习曲线太陡峭,任何一本C++的权威经典都超800页。想看完要到何年何月?
3.别的语言像Java等都没有指针、友元、多继承、位运算、位域的概念。唯独C++独树一帜,真让人难以捉摸
4.别的语言初期一般不涉及数据结构与算法、操作系统、基本网络原理的研习,而C++却绕不过此弯。

我对以上的一些小看法:
1.坑多要看你怎么绕过或填补,如果你掉坑了、并且灰心丧气,那注定就从入门到....。反之光明就在前方。
2.C++ primer 不是 primer book,就个人的体验而言是finalbook。一个初学者想读懂一本终极书籍,现实吗,可能吗?
3.你可以不用,将C++当做Java学又有何不可呢?像多继承是不推荐适用的,位运算等应用场景十分狭小。
友元可以用Java中的get&&set方法替代嘛。至于指针,Java一切对象皆指针,亲是否有所体会?
4.完全学懂这些你就是科学家,半懂半不懂的你成为了一名工程师。我这么说,你能明白吗?

C++的根基魅力——读懂Java毫不费力(非框架),吸收Java的精华充电补能。
不知道学习Java的朋友,是否有读过这些经典书籍,例如Algorithms 4edition(算法 第四版),
Head First设计模式,Java并发编程实战等等。都是用Java语言来编写的。
但是,这些对于咱C++程序员来说也是很有参考价值的。为嘛?

1.Algorithms写地十分通俗易懂、深入浅出。那流程的思路,美丽的插图简直完美诠释算法的真谛。
2.C++设计模式的书写得太高端,一般人根本就摸不着头脑。而Java类的设计模式则很容易明白
“高端大气上档次”的设计模式,究竟是个什么玩意儿?印象中HF讲解工厂模式所用的Pizza
  的例子,如今依旧盘旋在我的脑海,久久不能忘怀。
3.C++_Concurrency_In_Action  翻译得太烂,我都怀疑那几个银行上班的工程师是否学懂了并发。
且不看语言的逻辑组织如何,怎么好多句子翻译地不通顺呢?是不是网上找百度翻译的哪?
而Java Concurrency in Practise的翻译质量明显好多了。让人能够不为语言文字的晦涩而懊恼。

C++98历经了10余年的沉默,迎来了C++11的曙光,几经完善又到C++14,越来越像Java
越来越接近。这是我十分热衷与情愿看到的状况。

Java最大的一个优点就是垃圾回收机制,它可以让程序员不用为管理内存而忧愁。当然这也是一个
缺点,因为它建立在虚拟机的运行之上,就难免降低了代码效率。而C++11 smart pointer机制
的引入,在一定程度上为新手级程序员们解决了内存管理的问题。从而能写出高健壮、高质量的
代码。而智能指针的使用是极其简单的,只要是对模版知识有所了解的人,就能很容易学会。并
非需要精通什么具体的知识。选择SP、使用SP,其实就不知不觉地以Java的思维在进行编码。

Java天下第一其实将C与C++合二为一才是真正的天下第一。

在近几年TOIBE的语言排行榜上,Java总是占据着世界第一的位置,当然C/C++也不甘多让,一直
占据着第二和第三的位置。但是稍微学过的人都知道,C++是完全兼容C89的,而C语言的精华
就在C89。后来的C99,C11增加的那些东东,其实对于应用级程序员来说无关紧要,甚至有点略显
多余的感觉。C99的VLA(变长数组),C11的Generic Macro(泛型宏),其实是非常不具可移植
性的。譬如在GCC的编译器下,VLA可以畅通无阻的运行,而到了微软Visual Studio之下,恐怕是
红灯一片。

既然C++完全兼容C精华之C89,而新标准的那些内容对多数程序员来说并不感冒,那么我们不妨将
C与C++看成一门语言。也就是将TOBIE排行榜的第二名与第三名合并。如此是不是迎头赶上、甚至
超越了Java?




一入IT似海,从此女神是路人
我知道广大程序猿们对妹子是极其渴望的,而我有这方面的点滴经验愿意与君分享。
当然要写到最后再哆嗦。

码字辛苦,实属不易。
古有点头之交,今有点赞之交。
如果您认为此文确实有看的价值,而不是一堆没有价值的信息,
请在下方点击赞赏。
谢谢亲爱的社友们~
























0 个回复

您需要登录后才可以回帖 登录 | 加入黑马