C/C++学习笔记第一天:MAC OS下搭建GCC和Sublime Text环境

来源:互联网 发布:java字节流和字符流 编辑:程序博客网 时间:2024/04/27 18:16

本科的时候倒是学习了C/C++/Java 这一路搞研究,基本上就是网络仿真,也不太需要太多的编程,多半是算法仿真,所以编程感觉越来越差。

人生总是那么阴差阳错,本科毕业的时候本来是计算机/金融双学位,打算不再搞什么计算机了,投身银行算了。不料未及大四校园招聘,便被通知“保研”,还是外校,于是每天在图书馆看小说度过了腐败的大四生活。研究生阶段呢,基本上在前人的基础上继续自己的课题,老师这边又没有赚钱的项目,于是乎又荒废了三年。因为惧怕找工作要问项目经验,于是乎找了个学校的项目,拿着外国的政府奖学金投敌卖国了。博士又是混啊混,反正理论研究,也不做项目,于是就疏忽大意了。直到几个月前去找实习,一个JPMorgan的Quants的职位引起了我极大的兴趣,然而因为计算机毕业竟然编程没有别人牛,被惨遭淘汰。痛定思痛,编程这件事,我以前从来没有认认真真的态度下好好学习。博士毕业当然不会去搞开发,但是又想自己研究网络安全作为人生爱好,想来想去,C和C++的核心思想是重中之重,所以还是集中力量好好学习一下。在人生前30年最后一次重要的转折中一定要打一个漂亮的翻身仗。

我总是反应很慢,“花开堪折直须折,莫待无花空折枝”这样的话我原是懂得的,然而问题在于我总是对花什么时候开的反应迟钝,以至于经常错过做事情的最好时机。希望给大学本科的迷茫中的孩子们留下点东东,所以打算把学习中的心得都写出来,有缘人看到,希望有抛砖引玉之功效。至于大牛们,也不要嗤之以鼻,但凡有谬误之处,还望指教一二。也想跟本科的孩子们语重心长的说一句:C/C++重要(也许你会发现开发不经常用,可是你要深刻理解核心思想),高数重要,线性代数重要,概率论重要(随机过程啊,布朗随机啊等等),这些真的很重要(当然如果以后搞研究的话数据挖掘,机器学习,数值分析都是很有必要的)。

既然上课学了,就一定要学好,不要未来用到的时候才追悔莫及。

“当时不懂珍惜,过后追悔莫及”,世界上最痛苦的事情莫过于此。人生很多事情都是这样的。

一 、环境配置:


有人花钱吃喝,有人花钱点歌,有人花钱买苹果,有人花钱乱作。反正经济条件允许,就用苹果吧,显示屏看着舒服,键盘打字也爽。我觉得在我这个年龄,应该要注意一下生活品质了。原先老娘总说男人东西不要多但要上档次,我也不在意,现在想想还是年龄的原因吧。如果博士顺利毕业,找到个差不多的工作,一定要去学学马术神马的最爱了。至于笔记本,我11年买的Air,现在仍然爱不释手。另外一个原因就是学语言还是选择UNIX或者Linux为好,恰好Mac OS就是UNIX的加强版,所以绝对是上上选。

Laptop:Mac air 13-inch, Mid 2011

OS:Mac OS X 10.9.3

IDE:Sublime Text 3 

如果是学语言,就不要用Xcode,Eclipse,Aptana什么的了,生成工程一大堆,转移了学习注意力。当然喜欢原始人的人可以用Vim,或者进化一点的用MacVim,不过我安装了好几个,还是觉得Sublime Text设计的美轮美奂,是我的爱!如果看不上图标,还可以换,网上很多,随意就可以找到。

(参考: http://www.cnsecer.com/2546.html )

Compiler:GCC

据说安装了Xcode以后,自动安装三个编译器GCC4.2,LLVM-GCC 4.2,Clang。

(关于三者介绍可以查看:http://elf8848.iteye.com/blog/1973734 )

这里选择GCCGNU Compiler CollectionGNU编译器套装)。

(关于GCC具体介绍参考:http://cupdish.com/2011/04/gcc-gdb-note/ )

Debug:GDB

(参考:http://cupdish.com/2011/04/gcc-gdb-note/ )


二 、小试牛刀:

废话少说,先写个main吧,没写返回类型,也没写return,是一个丧心病狂的危险。不过可以看看warning也是好的。



文件保存为hello.c的名称,之后用命令cc hello.c来编译。当然也可以用gcc hello.c等命令,之后输入./a.out就可以运行了!

还有一种方法是使用 gcc -o hello hello.c 命令行。

( 关于cc、gcc、g++、CC的区别查看:http://blog.csdn.net/chutian_8986/article/details/35311215 





三 、学习计划设计:

大学的时候C/C++都是谭浩强老师的书,稀里糊涂就过去了,现在想想这两本书虽然依然是国内的经典了,但是还是跟外文经典教材没法比。计算机语言这种东西,还非得看英文原版不可,这个对大部分学生来说有点艰难。但是还是那句话,若干年后,希望终于醒悟的时候,不要后悔是最好的。

大概看了一下,有三个月的时间是最好的,应该看的三本经典:

1. 《The C Programming Language》用来学习C语言的经典书籍,200多页,三两天就可以结束 (当然如果没有基础,就慢慢看吧)。看了这本书,估计才会深刻体会到被谭老坑惨了吧,呵呵。。。如果一开始就用这本多好,对吧!这本书看完,如果想提高,就看看《The Practice of Programming》然后就是《大话数据结构》(C语言版),毕竟数据和算法才是灵魂。这样对非计算机专业的要做点毕业设计神马的足够了吧。当然有人说直接上C++就行了,不用学C。我觉得C还是蛮重要的,尤其是思想的变化会让你更加理解事物的真相。永远不要以为做一件事情的意义只有一个,学而不思则怠。当然如果可能,有机会学汇编才是王道啊。。。

2. 《C++ Primer》第四版或者第五版都行,反正这本书依然是C++界的圣经了,里面每道题都要细细的做,好好的思考,这样基础好了,以后在项目中磨练就是了。当然还有一本要推荐的,就是《C++ Primer Plus》,这两本都是不错的。其间,如果有兴趣,可以看看《21天精通Visual C++》,做点小项目,绝对可以提高成就感。学完了直接可以上《Introduction to Algorithms》(Third Edition) 或者《Data Structures and Algorithm Analysis in C++》(Third Edition)。还有一本叫做《Algorithms Design Techniques and Analysis》,一个沙特的哥们写的,据说很好,我也买了,但是很惭愧没有看过。。。

3. 关于《Effective C++》,套用一句大家常爱说的话:C++程序猿分两种,一种是读过《Effective C++》的,一种是没读过《Effective C++》的。


四 、学习方法:

学习最重要的两件事:兴趣和坚持,方法就是维系兴趣和坚持的手段。

首先,理论联系实践是很重要的:学习一段时间,到网上找点小项目做做,自信感爆棚,兴趣也会增加的吧。

另外,有一个环境,一是自然环境要好不要有人干扰,另一个时间环境要好,相对的一段时间内,只做一个事情,不要分心很重要。学校图书馆是一个很好的场所;自习室也不错;研究室如果没人,暑假寒假也是好的。总之尽量为自己创造一个好的环境。

然后,就是最好有“需求”的学习,比如想从计算机博士转到投行,最现实最可靠的就是quants;如果是硕士,就考虑开发吧。。。有了类似这样的需求,才能更好的计划,和鞭策自己的学习。

最后,条件巨足,机缘成熟才能做好一件事情,如果没有条件,创造条件也不得的时候,努力也是白搭。人生最难做的就是识时务,更难做的是尽人事听天命,最难做的是明知不可为而为之,这个自己去悟吧。

最后,希望所有人学习顺利,希望大家一切都好。

2 0