主题:【原创】编程心得 -- 荆棘探兴
标题党一次。
if(您欲退出)
{
请献花;
return;
}
else
{
continue;
}
心得谈不上,只是一点总结,抛个砖。
很多人描写程序员的生活是“起得比鸡早,睡得比妓晚,干得比驴累…”,我觉得有点过,但干这行还是比较幸苦的。加班、通宵的频率比较高,年轻人扎堆的地方,有时候就是拼身体、比体力。技术、软件更新比较快,总的学习新的东西,新的技术,这还不算痛苦,最无聊烦人的事情是读别人的代码,运气不好点,如读天书一般。除了这些,竞争压力还会时常眷顾你。
所以,如果没有对编程有极大的兴趣,干不了多久就会度日如年。如果不感兴趣,应该赶紧转行。有个感兴趣的工作,是人的福分;如果再有个看着舒服、和你过日子的老婆,作为一个普通人,这辈子就算幸福了,该知足了。不过,包办婚姻也有美满的,兴趣是可以培养的。
说来好玄,第一门计算机语言课程FORTRAN差点把我的那点编程兴趣给砸了。FORTRAN语言是工程计算语言, 那时候,还以为编程就是把计算公式写成程序就完事了。最可气的是,很多上C语言课程的人骂人傻就用“FORTRAN”,不过后来我们也如此用了。还是C语言好,下可以操作硬件,上可以很容易学习c++,c#这些面向对象语言,进退自如,还很通用。C语言堪比武器中的AK47, 实在是程序员的最爱。
清华大学唐浩强的《C语言程序设计》是学习C语言的一本好书,另外还有一本林锐的《高质量C/C++编程指南》。把这两本书学通了,C语言的基本功就算打好了。以后就靠自己在编程实践中历练了。
偶以为编程最重要的是你的思维、你解决问题的方法。当然掌握更多的工具,精通更多的语言多多益善,技多不压人。大牛一定要博学,博学不一定就能成为大牛。有些解决问题的算法、设计的思想很多是看书学不到的,需要实践,需要悟性。同样的时间,同样的环境,有的人总能比你更快、更好的解决一些问题,这才是最难的。
不过,有好的编程基础,只要不是太死板,混程序员这口饭吃我觉得够用了。新员工总呈慌呈恐,以为老员工都是牛人,其实牛人没那么多,也就那么几个。老员工也没必要太狂妄,牛人都是很谦虚的。平静很重要,“思想如同水, 当水波摇曳时, 很难看清, 不过当它平静下来, 答案就清澈见底了。”
刚开始工作的时候,晚上总睡不着,白天编程的一些问题总困扰我,现在这种情况基本没了。我现在一个同事,做程序员这么多年了,依然会因为白天的编程问题而晚上失眠,典型的强迫症后期。“ 多大点事啊,还以为是抢鸡蛋呢!”。这些心智方面的磨练,可能是各行各业都会遇到的。
曾遇到过一个编程问题,怎么也看不出代码有错误的地方。查了好多书,都找不出问题所在,后来在一本不起眼的书上看到有不同的方法才把问题解决。很多编书者自己没有编译调试就把程序写在书里出版,实在是误人子弟。好几个同学在校就参加过编写计算机方面的书,所以,现在我不怎么相信书了,别人的成功的编程实例、相关的代码是最好的书。
程序不可能没有问题,知道问题所在怎么也能解决,怕就怕不知道问题出在哪里。俺用的最多定位问题的方法是二分法,是硬件问题,还是软件问题;是底层软件问题,还是上层软件问题?这时候,断点或者printf是最好的朋友。仔细想想,printf是用的最多的一个函数了。
如果怎么也找不到问题,不妨放几天,事缓则圆,几天后说不定会“幕然回首,那人却在灯火阑珊处” 。
如果还找不出问题所在来,那可能是自己思维定势,自己发现不了问题。这时候换个人帮你看看,也许一下就发觉了,所谓当局者迷。
还有一种可能是环境的问题,以前遇到一个问题在上海能发现,但在北京就没问题,苦无良策。最后不得不跑到上海,下飞机在宾馆就把问题解决了,接下来的两天公费犒劳了自己一下。问题原因就是上海与北京的环境不一样,程序走的路线不同。如果还在北京死啃,只有空悲切了。
写到此,回头再看一遍,所谓的编程心得好像和编程有点距离…
困了,明儿再看
直接看 c programming language,2nd。
看完你就知道谭浩强是渣。
谭浩强只是赶了先机,出了一堆扫盲的书。
当你越过万重山之后,再回来看谭浩强,当然觉得小玩意了。
而C是汇编的通俗版,当然不一样。
真的要说编程,“PASCAL+汇编”是最佳入门。
在此之前的几年,看到学c的人,编译一个程序要c1/c2/c3/c4,就没了兴趣。
直到看到了tc2这个ide,才来了兴趣。
那时候的东西,短小精悍,性能比很强。
相比printf,我觉得tc的debug已经方便多了,后来的vb等也有watch功能,效率提高很多。
可能工科背景的缘故,算法什么的都是科学计算的背景。
非常同意下面的观点,我如果怎么找不出问题,就去公园,逛街或运动。
这个“强迫症后期”,我现在还有
当年FORTRAN我学的不怎么样。后来转学美国,教C语言的那位美国教授上课很生动,我就喜欢上编程了。经常是作业发下来晚上睡不着觉,好几次在梦里想到方法半夜爬起来写程序。几乎都是在助教(在习题课)给提示之前就完成作业。
现在我睡觉前尽量不想程序,否则还是可能几个小时睡不着--惭愧,工作10年了还这样。。。
学徒:c++ faq lite
我曾经是个程序员,现在的工作仍然需要经常编程。面试过许多人,不少人都坚信自己是个不错的程序员,不过随便问两句就发现基础很不牢靠。强烈建议大家如果还是要吃c++这碗饭的话,这几本书一定要翻一下。第三本网上不能合法地全文下载,不过非法的很容易找到。
我面试的时候必出这么道题:
不许用STL,实现一个类 string,封装库函数strcat。这个类可以这么调用:
string s1("abcde"),s2("1234567"),s3;
s3=s1+s2; //now s3 should represent sth like "abcde1234567"
看起来简直不值一提。实际中能把这道做得好的却很少。
他的风格非常不简洁,很多例子有画蛇添足之嫌,不过我更多的是喜欢一个参考书而不是把什么都展开了讲的书。编程就在于实践,书就是个手册和入门指导。
turbo c 2.0
turbo pascal
Borland c++
多经典啊,可惜公司现在不行了,市场没做好,哎……
当年自己看谭的书,结果指针相关的部分是越看越糊涂。后来上网看了一些英文版的教程,才发现谭这个家伙就是自己都没有吃透指针是个什么东西,就开始写书教学生了。实在是误我不浅啊!
我的C语言现在还停留在大学里潭那本书的水平,不过我的汇编很不错,大学毕业到现在6年了,一直在用汇编语言.
我认为C语言所谓的指针就是汇编语言中的段地址:偏移地址,用来指向一个地址而已,汇编中经常用段地址:偏移地址来标定一个地址,然后从这个地址中读出数据. 我理解的指针就是这个功能,是这样吗?