热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

回答“在校C++学生之困惑”的几个问题。

回答“在校C++学生之困惑”的几个问题。--Linux通用技术-Linux编程与内核信息,下面是详情阅读。
王富涛的笔记,原文章在此《在校C++学生之困惑与讨论——欢迎讨论》。7月9号发表,当时我在马桶上用手机上网看到(出差在外,只能这么抽空上网),今天有空,简单写几句我的想法。 有些话可能会重一点,但不是针对具体哪个人,更不是指原文作者,原作者在学习C++上,在我看来非常对路和扎实,比如:《练习使用模板》等等都做得认真。

问题一:
“今天翻开《Thinking in C++》第二卷,傻眼,第一章就是异常,我最害怕的东东了。。往后翻,防御性编程。。运行时类型识别,设计模式……等太多的东西了……这些东西作为学生我们有必要深究吗”

1、如果是编程初学者,挑书要特别讲究。《Thinking in/ C++》不适合初学者。

2、异常、防御性编程、运行时类型识别,设计模式……这些都不是C++特有的,学习Java,C#,Python、Delphi,也有这些知识点,并且在这些语言中的重要度更高。比如“异常”就很好玩,在C++中它属于“高级知识”,在Java中,它变成基础知识。很多C++项目可以不使用异常许多年,但在Java项目中,请试试。再如运行时类型识别,在C++中,RTTI(Run-Time TypeIdentification/Information)是非常薄的一层,在Java或Delphi或C#中呢?是厚厚的一层。

防御性编程呢?属于基础,差不多在你学会把代码排版得漂亮一些之后,就应该开始接触这个概念了。(参看《代码大全》)

所以一句话:现在的编程专业的大学生在毕业前,无论你是学的是C++还是Java,还是C#还是Delphi还是Python等,刚好这里提到的几个知识点:“防御性编程呢”“异常”、“RTTI”、“设计模式”,存在一个你还没有“学过”它们,那就是你对不起自己这个专业和自己的大学时光了——这句话回答“这些东西作为学生我们有必要深究吗”。

问题二:
“……学的肯定越多越深越好啦,可是作为学生的我们毕竟时间有限。……”

唉,围城吧。你可能不知道,毕业以后的人,10有9个会反过来觉得,当学生的时候,没钱没势没女人,唯一有,并且多得长草的就是时间,特别是可以安排来学习的时间。老板有时会批我们没有进步,不思进取……回答吧:“其实作为一个要养家糊口的程序员,毕竟时间有限……”。

问题三:

“我们的首要目标肯定是找到一个和自己本专业对口的工作,然后在工作期间继续深造……”

这个是事实,但不能做为一个想法。更合理的想法还是尽量多学,然后在面试中脱颖而出。可能会想起庄子一句话:“吾生也有涯,知也无涯,以有涯随无涯,殆已。”一时间感觉悲凉无限,但庄子虽然不会编程,在当时却也是个大学问家。这感叹不适合于大学毕业时发的。你要上午学C,中午学C#,晚上学C++,那没话说,但认准一门语言方向,先粗通(不是精通)语言基本语法,然后去机房买100小时的机时,一头扎下去,出来时你还说“第一章就是异常,我最害怕的东东了”,那我们约好去找Bjarne Stroustrup理论一下,看看能不能在下一版C++的标准里,把“异常”给它去掉。

问题四:

“……所以我这里想问的就是作为学生的我们学习掌握C++的哪些东西找工作就足够了呢?”

找工作时有时像谈恋爱(严肃的那种),想找一个女人作为人生伴侣,其实比找工作更难,也更严肃,但要口袋里有多少钱,才可以找到真爱呢?现在是经济社会,没有人会认为钱是俗气的,相反,准备好更充足的钱才去考虑爱一个女人,其实也是体现“真爱”和“责任”的一种表现。

但,到底要口袋有多少钱了,才能开始找女朋友呢?这问题得一分为三:

第一种情况,你丫的穷得天天在街头翻垃圾桶,却痴心地在学校门口候到一位妹妹,真诚地向人家求爱:“嫁给我吧,我会还你一个美好的人生……”,然后人家礼貌地拒了你,你就在心里大骂:“这物欲横流的社会!连在校妹妹的心都只认钱了!”。

第二种情况,你又丫的一次,但这次简直就是衔着金勺出生,大学刚毕业就开公司,两个月后进入全球Top500。于是乎天天有女人来追你,包括N多学生妹,于是乎你又在心里不屑:“这物欲横流的社会!连在校妹妹的心都只认钱了!”

找工作不也这样吗?如果你的大学时光全部奉献给和学习无关的事业,两手空空走出学校大门,然后一脸真诚地对着面试官说:“给我一个机会吧,我一定还您一个称职的员工……”。人家肯定要礼貌地拒了你,你就别骂什么了嘛。

再一种极端,基本你就是一个才华横溢的天才,于是有一大帮公司抢着要你,你虽然有权利,但最好别因此把自己摆成特别超凡脱俗的样。

最后是中间情况了——多少钱适合谈恋爱啊?在此时,这个问题基本是伪命题了。谈恋爱不是有钱就行的。大体上,钱越多越好,但你以为掏出一叠钱就想去拍人家的头,那你就等着挨刀吧。女孩还会看你上进不上进,性格好不好?孝顺父母吗?人聪明吗?还有,长得帅吗等等因素。她要和你过一辈子,现在虽然你还不是很有钱,但她相信自己的眼光,相信你有这个发展空间与潜力。如果你钱比别人是多一些,但又赌又嫖,谁理你啊。这些没问题了,余的下就是不太可控的东西了,比如“机会”啊,“缘份”啊……

对应到找工作,学会多少知识适合找工作呢?你可以说女孩是势利的,也可以说女孩子是纯洁的。全看你的感受。同样,别把一家公司只往势利了去想。大体上,拥有越多真本事,就有越多公司喜欢,但公司面对两个人,淘汰掉知识多的那位的情况,也比比皆是(否则招聘工作也太简单了)。

掌握C++的哪些东西找工作就足够了呢”,这个问题就这样了:我甚至认为大学四年至少要熟练两门语言,千万别在存款只有4位数时,就很忧伤地说:“亲爱的,我们要这么多钱干嘛呢”。

问题五:

“……关键:在有限的时间里的我们需要学习多门技术(一门熟练的编程语言,操作系统,网络……)”

关键是,一门熟练的编程语言、操作系统(我知道是原理课),网络……这些都是大学计算机(软件)专业的主修课程,干嘛老说“在有限的时间里”呢?

问题六:

“我想我们每一位学习C++的同学身边都不乏有学JAVA,Delphi,VB,VC,C#的同学吧。看他们经过一段努力就可以做出一个漂亮的xxx系统来,羡慕吗?而学习C++很长一段时间效果总是不明显。真不知在面试的时候我们的工作简历上该写些什么上去才能吸引考官的眼球呢。”

那些“漂亮”的XXX系统,它的作用基本上就是让简历看起来丰满一些(是盐水?还是硅胶?),招聘时,没有哪个技术面试官,会觉得一个刚毕业的学生能“经过一段努力就可以做出一个漂亮的系统”。以100分算,一个毕业生在纸上写着他完成(通常是参与完成)一套“成绩管理系统”、“图书馆管理系统”等等,能添点得分,但就是到1~3分,打死了就是加5分。但如果因为这些资料,面试官会深入问一些问题,结果回答得有问题,可能是直接砍掉10分。

问题七:

“看着同学们一个个XXX管理系统写上去,自己却不知如何下笔。因为实在没有可写的东西。。对于这点我们又该如何去学习C++呢?我们目前可以用C++去做哪些东西,那些项目去吸引考官的眼球呢,去作为大公司的敲门砖呢?”

光批判的回答,不是好回答。对于C++新毕业生,你觉得你没有时间学习做GUI界面的,是会被减分(因为“没有时间”)。但你接下来说,我没时间,是因为我觉得《编译原理》这门很有意思,就比别的同学花了比较多的时间在上面了,我做过一个程序,可以计算普通的四则运算。于是主考官开始问你一些词法解析和语法分析的问题,你答上,直接被加10分。主考又问:你是用递归实现还是自己写栈结构实现?你说是后者,于是再加20分……

问题八:
前两天看了一位老师发表的笔记,上面列出了好多大的软件基本上主流编程语言都是C++,甚至一些全部是用C++写出来的。心中不免有一丝的得意。但这些软件对于作为学生的我们只能望而兴叹哈。我们可以拿何作为练手的项目呢。貌似C++都是来做大软件的。DOS下的程序就不说了。关键::C++程序员用何项目去练技术?(书上的那些DOS程序就不说了。这里说的是可以称得上是项目的,小项目也OK)。

《C++ Primer》上的习题就是很可以加分的小项目。“貌似C++都是来做大软件的”说这话有点感情用事了。我个人还是建议学习C++,既要“功”,也要“武”。大学时光,就算是自学C++也完全够打下不错基本功,并且!掌握大量的“武”。这一点详细内容,建议点击本段的链接看我另一篇笔记吧。或者请关注我即将出版的《白话 C++》,这里可以试读。

问题九:

“目前市面上的公司可以说是成群,几人,十几人就可以成为一个公司,我想这样的公司招程序员就 是为了编码的。来了不能立即上手的。他们一般都不会考虑,相比而言学生只能退后了……并且这些公司都是为了做些小软件的……”

这个简单,就业行势是不好(原因主要还是僧多粥少),所以大家可能真的遇上过挫折,或者没真的遇上,但看到听到别人遇上,于是心理有些紧张……所以会有些判断失误。前面你说的“貌似C++都是来做大软件的”就是错的。中小公司需要C/C++也很多。并且同样是新毕业生,学C++的人数少,熟练的更少,所以进入公司后,拿的钱起点就比使java或C#的毕业生高(200~2000),这也是事实。

问题十:
“……而对于那些做大软件的公司,像微软中国,谷歌中国,腾讯等都是好多C++程序员的一个梦。当然可以实现的哈。努力就OK了。看人了……”。

也是我的一个梦……一边做梦,一边生活吧。

问题十一:

“去看了好多C++公司的招聘广告,模式就那一个,第一个就是精通C\C++.何为精通?这真不是一个确定的标准,但也总有一个大概的界线,对作为学生的我们这个标准又是什么呢?”

问题四的回答可以用上。至于学习C/C++何为精通,我教你,永远(我说的永远是指一生)不要在简历上写自己“精通C\C++”,谦虚不是原因,而是因为如果不这样,极可能会引发众怒(面试你的人,陡然将问题的难度系统提两个档,而你却不知道为什么)。

问题十二:

“熟悉STL。对于STL,很多人都理解成就是容器,像vector什么的。但有些人说不是那么简单。这就糊涂了。对这方面接触少。不太明白。请帮忙解析。”
C++标准都10年了,STL几乎就是C++的上半身。除非有一天,女孩会喜欢一个只爱她下半身的男人,否则学C++不懂STL,你还是改口说你比较懂C,C++只是偶尔用用,这样会赢得更多尊重。

问题十三:

“……众所周知要想作为一个优秀的程序员,操作系统,网络。数据结构和算法可谓是必须基础……”

操作系统、网络、数据结构与算法,这些都是咱学校里开的课。有人爱骂中国大学了教育如何不行,但我认为只能骂一半,咱们大学里安排的基础类课程,都还是不错的(我说的“不错”,并不是以学完以后能不能用上作标准),相对差一些倒是在应用类课程上差了些。当然,这倒不是在表扬教育官员们多们重视基础教育,只能说是“基础课程”本来就不容易过时。
推荐阅读
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • 本文是一位90后程序员分享的职业发展经验,从年薪3w到30w的薪资增长过程。文章回顾了自己的青春时光,包括与朋友一起玩DOTA的回忆,并附上了一段纪念DOTA青春的视频链接。作者还提到了一些与程序员相关的名词和团队,如Pis、蛛丝马迹、B神、LGD、EHOME等。通过分享自己的经验,作者希望能够给其他程序员提供一些职业发展的思路和启示。 ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • Python字典推导式及循环列表生成字典方法
    本文介绍了Python中使用字典推导式和循环列表生成字典的方法,包括通过循环列表生成相应的字典,并给出了执行结果。详细讲解了代码实现过程。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 无损压缩算法专题——LZSS算法实现
    本文介绍了基于无损压缩算法专题的LZSS算法实现。通过Python和C两种语言的代码实现了对任意文件的压缩和解压功能。详细介绍了LZSS算法的原理和实现过程,以及代码中的注释。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了Java的集合及其实现类,包括数据结构、抽象类和具体实现类的关系,详细介绍了List接口及其实现类ArrayList的基本操作和特点。文章通过提供相关参考文档和链接,帮助读者更好地理解和使用Java的集合类。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • Python SQLAlchemy库的使用方法详解
    本文详细介绍了Python中使用SQLAlchemy库的方法。首先对SQLAlchemy进行了简介,包括其定义、适用的数据库类型等。然后讨论了SQLAlchemy提供的两种主要使用模式,即SQL表达式语言和ORM。针对不同的需求,给出了选择哪种模式的建议。最后,介绍了连接数据库的方法,包括创建SQLAlchemy引擎和执行SQL语句的接口。 ... [详细]
  • 2022年的风口:你看不起的行业,真的很挣钱!
    本文介绍了2022年的风口,探讨了一份稳定的副业收入对于普通人增加收入的重要性,以及如何抓住风口来实现赚钱的目标。文章指出,拼命工作并不一定能让人有钱,而是需要顺应时代的方向。 ... [详细]
  • GPT-3发布,动动手指就能自动生成代码的神器来了!
    近日,OpenAI发布了最新的NLP模型GPT-3,该模型在GitHub趋势榜上名列前茅。GPT-3使用的数据集容量达到45TB,参数个数高达1750亿,训练好的模型需要700G的硬盘空间来存储。一位开发者根据GPT-3模型上线了一个名为debuid的网站,用户只需用英语描述需求,前端代码就能自动生成。这个神奇的功能让许多程序员感到惊讶。去年,OpenAI在与世界冠军OG战队的表演赛中展示了他们的强化学习模型,在限定条件下以2:0完胜人类冠军。 ... [详细]
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
author-avatar
翔未央图_971
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有