免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 28315 | 回复: 61

好像总是有人很困惑,给大家一个系列,希望可以答疑解惑…… [复制链接]

论坛徽章:
0
发表于 2003-05-16 14:31 |显示全部楼层
先声明……
下面的全是ZT

论坛徽章:
0
发表于 2003-05-16 14:32 |显示全部楼层

好像总是有人很困惑,给大家一个系列,希望可以答疑解惑……



  《STL源码剖析》-侯捷
  《单词5000》-刘毅
  《七杀手》-古龙

  这三本加起来起码有5斤重的书,同时在我的包里已经呆了有一个星期,我的习惯就是把最近正在看的书都放在随身的包里,这样无论到了那里,只要有时间随时都可以拿出来看,工作的间隙、等人、无聊或是方便的时候都可以看。
  1、一本书我可以看上一两个月、比如《STL源码剖析》已经一个月了才看了三分之一。
  2、同时看几本书,一般是三本,有时是四本甚至更多(汗...)。
  3、一旦开始看一本书就不论多长时间都会看完它,比如《设计模式》就前前后后看了有2个多月。
  我不知道这些习惯是不是正确,但就在这样的方式下,我完完整整的看了不少的好书,从中的收益也是非常的大。去年夏天,从一本《快速软件开发-有效控制与完成进度计划》开始,我依次看了《COM技术内幕》、《卡式英语-朗曼2000词汇》、《深入探索C++对象模型》、《设计模式》、《人月神话》、《毒》、《程序员杂志》等书,平均下来一个月一两本,虽然速度不快,但是却能积少成多,一年下来如果能看12本好书,那就是个相当大的进步了。
  看书是一个缓慢的过程,静下心来才能看的进去并且从中获益,浮躁的时候一本好书能让人平心静气,在这样的一个快节奏网络时代,书已是我不可或缺的朋友。

softboy
2003/3/2
www.gpgame.net

论坛徽章:
0
发表于 2003-05-16 14:32 |显示全部楼层

好像总是有人很困惑,给大家一个系列,希望可以答疑解惑……

我是个很喜欢技术的程序员。 几年前就了解技术在中国IT并并不是第一位的。
因为不管什么技术, 只要够聪明花时间就一定能掌握, 只是时间先后的问题, 所以早就脱离了因为比别人多掌握一些技术而沾沾自喜的年代了。而且 对一个普通人来说,最终目的还是赚钱过生活呀。 除非你能成为技术方面的大师级人物, 在某个大学或者IBM MS的研究院独档一面,这样的人早就不用考虑赚钱了, 但显然大多数还是普通的programmer或coder一名, 也就是用技术为老板赚钱的人而已。虽然早知道这些, 但是我还是一直不愿意去那些工资福利巨好的大公司, 因为老想着已去就不能再编程而编程support或者作一些很无聊的产品维护, 就会把这几年的经验都浪费了。估计有很多的程序员都有和我一样的想法。

两年前有一个同学去普华(现在已经是IBM了), 当时我开玩笑嘲笑他去做consulting写abap, 因为他原来也是技术狂热者。他有一句名言, 他说我有时候做一些事情有一个很大的原因是为了满足我对技术的虚荣心。我也明白他说得很对, 但是我还是一直选择编程, 一直放不下这虚荣心。这同学打算做几年consultant然后出来自己做。
可是我发现路越走越窄了, 因为在中国或者说在上海(因为我不了解其他地方), 没有条件让你做核心技术。能作的只是应用层的东西, 也就是给企业作一些项目或写一些小软件。做非常深入的东西需要投入,但是没有, 而我还要租一个月1200的房子,还要准备买房子, 现实是有压力的。而且,中国IT其实到现在都不知道什么叫做技术, 该做什么技术, 该发掌什么样的软件, 该学印度出口, 还是闭门造车, 自己有什么优势, 现实有什么机会, 整个业界都在中乱序中, 有人在苦苦摸索, 有人在圈地圈钱, 有人干脆洗手不干。

但是埋怨是没有用的,所以要么做自己的技术, 找一个方向为自己打工。 要么去一家大公司打工, 业余时间研究研究技术, 这两条路比较适合, 我觉得。绝对不要用一些快餐式开发工具为软件公司打工, 浪费青春.

现在的想法是做j2me或wireless middleware, 做个游戏先,mobile 软件收费很有保障的哦,同学打算开公司做xbox游戏,应该也不错。大家对程序员而中国软件的前途有什么好的想法, 请多多交流。

http://www.ns-soft.com

论坛徽章:
0
发表于 2003-05-16 14:33 |显示全部楼层

好像总是有人很困惑,给大家一个系列,希望可以答疑解惑……

这个我很喜欢,希望仔细看看……

/******************************************/
编程员行为规范守则
·不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,而我们要学的其实是同一门语言;
·不要放过任何一个看上去很简单的小编程问题——他们往往并不那么简单,或者可以引伸出很多知识点;
·会用Visual C++,并不说明你会C++,所以光看Visual C++的书,是学不了C++语言的;
·学class并不难,template、STL、generic programming也不过如此,难的是长期坚持实践和不遗余力的博览群书;
·如果不是天才的话,想学编程就不要想玩游戏——你以为你做到了,其实你的C++水平并没有和你通关的能力一起变高——其实可以时刻记住:学C++是为了编游戏的;
·把时髦的技术挂在嘴边,还不如把过时的技术记在心里;
·看得懂的书,请仔细看;看不懂的书,请硬着头皮看;
·别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍;【书读百遍,其意自现】
·不要停留在集成开发环境的摇篮上,要学会控制集成开发环境,还要学会用命令行方式处理程序;
·和别人一起讨论有意义的C++知识点,而不是争吵XX行不行或者YY与ZZ哪个好;
·请看《程序设计实践》,并严格的按照其要求去做;
·不要因为C和C++中有一些语法和关键字看上去相同,就认为它们的意义和作用完全一样;
·学习编程的秘诀是:编程,编程,再编程;
·记住:面向对象技术不只是C++专有的;
·请把书上的程序例子亲手输入到电脑上实践,即使配套光盘中有源代码;
·把在书中看到的有意义的例子扩充;
·请重视C++中的异常处理技术,并将其切实的运用到自己的程序中;
·经常回顾自己以前写过的程序,并尝试重写,把自己学到的新知识运用进去;
·不要漏掉书中任何一个练习题——请全部做完并记录下解题思路;
·C++语言和C++的集成开发环境要同时学习和掌握;
·就让C++语言的各种平台和开发环境去激烈的竞争吧,我们要以学习C++语言本身为主;
·        当你写C++程序写到一半却发现自己用的方法很拙劣时,请不要马上停手;请尽快将余下的部分粗略的完成以保证这个设计的完整性,然后分析自己的错误并重新设计和编写;
·        别心急,设计C++的class确实不容易;自己程序中的class和自己的class设计水平是在不断的编程实践中完善和发展的;
·        每学到一个C++难点的时候,尝试着对别人讲解这个知识点并让他理解——你能讲清楚才说明你真的理解了;【教学相长】
·        请不断的对自己写的程序提出更高的要求,哪怕你的程序版本号会变成Version 100. XX;
·        保存好你写过的所有的程序——那是你最好的积累之一;
·        多看design patterns,将他用到程序中去!
·        注意测试用例及测试方法!
·        多看经典牛人的书!
·        浮躁的人容易说:XX语言不行了,应该学YY;——是你自己不行了吧!?
·        浮躁的人容易问:我到底该学什么;——别问,学就对了;
·        浮躁的人容易问:XX有钱途吗;——建议你去抢银行;
·        浮躁的人容易说:我要中文版!我英文不行!——不行?学呀!
·        浮躁的人容易问:XX和YY哪个好;——告诉你吧,都好——只要你学就行;
·        浮躁的人分两种:a)只观望而不学的人;b)只学而不坚持的人;
·        请不要做浮躁的人;

论坛徽章:
0
发表于 2003-05-16 14:34 |显示全部楼层

好像总是有人很困惑,给大家一个系列,希望可以答疑解惑……

由C#风潮想起的-给初学编程者的忠告

                                          作者: 刘巍

我始终认为,对一个初学者来说,IT界的技术风潮是不可以追赶的,而且也没有能力去追赶。我时常看见自己的DDMM们把课本扔了,去卖些价格不菲的诸如C#, VB.Net 这样的大部头,这让我感到非常痛心。而许多搞不清指针是咋回事的BBS站友眉飞色舞的讨论C#里面可以不用指针等等则让我觉得好笑。C#就象当年的ASP一样,“忽如一夜春风来,千树万树梨花开”,结果许多学校的信息学院成了“Web 学院”。96,97级的不少大学生都去做Web 了。当然我没有任何歧视某一行业的意识。我只是觉得如果他们把追赶这些时髦技术的时间多花一点在基础的课程上应该是可以走得更远的。

【几个误区】

初学者对C#风潮的追赶其实也只是学习过程中经常遇到的几个误区之一。我将用一些实际的例子来说明这些现象,你可以按部就班的看看自己是不是属于其中的一种或者几种:

〖认为计算机技术等于编程技术: 〗

有些人即使没有这个想法,在潜意识中也有这样的冲动。让我奇怪的是,许多信息学院的学生也有这样的念头。认为计算机专业就是编程专业,与编程无关的,或者不太相关的课程他统统都不管,极端的学生只要书上没带“编程”两个字他就不看。

其实编程只是计算机技术应用过程中一种复杂性最低的劳动,这就是为什么IT业最底层的人是程序员(CODER)。计算机技术包括了多媒体,计算机网络,人工智能,模式识别,管理信息系统等等这些方面。编程工作只是在这些具体技术在理论研究或者工程实践的过程中表达算法的过程。编程的人不一定对计算机技术的了解就一定很高。而一个有趣的现象是,不少大师级的计算机技术研究者是不懂编程的。网上的炒作和现实中良好的工作待遇把编程这种劳动神秘化了。其实每一个程序员心里都明白,自己这些东西,学的时候并不比其它专业难,所以自然也不会高档到哪里去。

〖咬文嚼字的孔已己作风: 〗

我见过一本女生的《计算机网络原理》教材,这个女生象小学生一样在书上划满了横杠杠,笔记做得满满的,打印出来一定比教材还厚。我不明白的是,象计算机网络原理这样的课程有必要做笔记?我们的应试教育的确害了不少学生,在上《原理》这一类课程的时候许多学生象学《马列原理》一样逐字背诵记忆。这乃是我见过的最愚蠢的行为。所谓《原理》,即是需要掌握它为什么这样做,学习why,而不是how(怎样做)。极端认真的学生背下以太网的网线最大长度,数据帧的长度,每个字段的意义,IP报头的格式等等,但是忘了路由的原则,忘了TCP/IP协议设计的宗旨。总之许多人花了大量的时间把书背得滚瓜烂熟却等于什么也没学。

在学习编程的时候这些学生也是这样,他们确切的记得C++语法的各个细节。看完了C++教程后看《Thinking in C++》(确实是好书),《Inside C++》,《C++ reference》,this C++, that C++……,然后是网上各种各样的关于C++语法的奇闻逸事,然后发现自己又忘了C++的一些语法,最后回头继续恶补…。有个师弟就跟我说:“C++ 太难了,学了这里忘了那里,学了继承忘了模板。”我的回答道:“你不去学就容易了”。我并没有教坏他,只是告诉他,死抠C++的语法就和孔已己炫耀茴香豆的茴字有几种写法一样毫无意义。你根本不需要对的C++语法太关心,动手编程就是了,有不记得的地方一查MSDN就立马搞定。我有个结论就是,实际的开发过程中对程序语法的了解是最微不足道的知识。这是为什么我在为同学用Basic(我以前从没有学过它)写一个小程序的时候,只花了半个小时看了看语法,然后再用半个小时完成了程序,而一个小时后我又完全忘记了Basic 的所有关键字。

〖不顾基础,盲目追赶时髦技术:〗

终于点到题目上来了。大多数的人都希望自己的东西能够马上跑起来,变成钱。这种想法对一个已经进入职业领域的程序员或者项目经理来说是合理的,而且IT技术进步是如此的快,不跟进就是失业。但是对于初学者来说(尤其是时间充裕的大中专在校生),这种想法是另人费解的。一个并未进入到行业竞争中来的初学者最大的资本便是他有足够的时间沉下心来学习基础性的东西,学习why 而不是how。时髦的技术往往容易掌握,而且越来越容易掌握,这是商业利益的驱使,为了最大化的降低软件开发的成本。但在IT领域内的现实就是这样,越容易掌握的东西,学习的人越多,而且淘汰得越快。每一次新的技术出来,都有许多初学者跟进,这些初学者由于缺乏必要的基础而使得自己在跟进的过程中花费大量的时间,而等他学会了,这种技术也快淘汰了。基础的课程,比方数据结构,操作系统原理等等虽然不能让你立马就实现一个linux(这是许多人嘲笑理论课程无用的原因),但它们能够显著的减少你在学习新技术时学习曲线的坡度。而且对于许多关键的技术(比方Win32 SDK 程序的设计,DDK的编程)来说甚至是不可或缺的。

一个活生生的例子是我和我的一个同学,在大一时我还找不到开机按纽,他已经会写些简单的汇编程序了。我把大二的所有时间花在了汇编,计算机体系结构,数据结构,操作系统原理等等这些课程的学习上,而他则开始学习HTML和VB,并追赶ASP的潮流。大三的时候我开始学习Windows 操作系统原理,学习SDK编程,时间是漫长的,这时我才能够用VC开发出象模象样的应用程序。我曾一度因为同学的程序已经能够运行而自己还在学习如何创建对话框而懊恼不已,但临到毕业才发现自己的选择是何等的正确。和我谈判的公司开出的薪水是他的两倍还多。下面有一个不很恰当的比方:假设学习VB编程需要4个月,学习基础课程和VC的程序设计需要1年。那么如果你先学VB,再来学习后者,时间不会减少,还是1年,而反过来,如果先学习后者,再来学VB,也许你只需要1个星期就能学得非常熟练。

如果你是学生,或者如果你有充足的时间。我建议你仔细的掌握下面的知识。我的建议是针对那些希望在IT技术上有所成就的初学者。同时我还列出了一些书目,这些书应该都还可以在书店买到。说实在的,我在读其他人的文章时最大的心愿就是希望作者列出一个书单。

[大学英语]-不要觉得好笑。我极力推荐这门课程是因为没有专业文档的阅读能力是不可想象的。中文的翻译往往在猴年马月才会出来,而现在的许多出版社干脆就直接把E文印刷上去。学习的方法是强迫自己看原版的教材,开始会看不懂,用多了自然熟练。吃得苦下得狠心绝对是任何行业都需要的品质。

[计算机体系结构和汇编语言]-关于体系结构的书遍地都是,而且也大同小异,倒是汇编有一本非常好的书。《80x86汇编语言程序设计教程》(清华大学出版社,黑色封面,杨季文著)。你需要着重学习386后保护模式的程序设计。否则你在学习现代操作系统底层的一些东西的时候会觉得是在看天书。

[计算机操作系统原理]-我们的开发总是在特定的操作系统上进行,如果不是,只有一种可能:你在自己实现一个操作系统。无论如何,操作系统原理是必读的。这就象我们为一个芯片制作外围设备时,芯片基本的工作时序是必需了解的。这一类书也很多,我没有发现哪一本书非常出众。只是觉得在看完了这些书后如果有空就应该看看《Inside Windows 2000》(微软出版社,我看的是E文版的,中文的书名想必是Windows 2000 技术内幕之类吧)。关于学习它的必要性,ZDNET上的另一篇文章已经有过论述。

[数据结构和算法]-这门课程能够决定一个人程序设计水平的高低,是一门核心课程。我首选的是清华版的(朱战立,刘天时)。很多人喜欢买C++版的,但我觉得没有必要。C++的语法让算法实现过程变得复杂多了,而且许多老师喜欢用模块这一东西让算法变得更复杂。倒是在学完了C版的书以后再来浏览一下C++的版的书是最好的。

[软件工程]-这门课程是越到后来就越发现它的重要,虽然刚开始看时就象看马哲一样不知所云。我的建议是看《实用软件工程》(黄色,清华)。不要花太多的时间去记条条框框,看不懂就跳过去。在每次自己完成了一个软件设计任务(不管是练习还是工作)以后再来回顾回顾,每次都会有收获。

[Windows 程序设计]-《北京大学出版社,Petzold著》我建议任何企图设计Windows 程序的人在学习VC以前仔细的学完它。而且前面的那本《Inside Windows 2000》也最好放到这本书的后面读。在这本书中,没有C++,没有GUI,没有控件。有的就是如何用原始的C语言来完成Windows 程序设计。在学完了它以后,你才会发现VC其实是很容易学的。千万不要在没有看完这本书以前提前学习VC,你最好碰都不要碰。我知道的许多名校甚至都已经用它作为教材进行授课。可见其重要。

上面的几门课程我认为是必学的重要课程(如果你想做Windows 程序员)。

对于其它的课程有这样简单的选择方法:如果你是计算机系的,请学好你所有的专业基础课。如果不是,请参照计算机系的课程表。如果你发现自己看一本书时无法看下去了,请翻到书的最后,看看它的参考文献,找到它们并学习它们,再回头看这本书。如果一本书的书名中带有“原理”两个字,你一定不要去记忆它其中的细节,你应该以一天至少50页的速度掌握其要领。尽可能多的在计算机上实践一种理论或者算法。

你还可以在CSDN上阅读到许多书评。这些书评能够帮助你决定读什么样的书。

〖日三省乎己〗
每天读的书太多,容易让人迷失方向。一定要在每天晚上想想自己学了些什么,还有些什么相关的东西需要掌握,自己对什么最感兴趣,在一本书上花的时间太长还是不够等等。同时也应该多想想未来最有可能出现的应用,这样能够让你不是追赶技术潮流而是引领技术潮流。同时,努力使用现在已经掌握的技术和理论去制作具有一定新意的东西。坚持这样做能够让你真正成为一个软件“研发者”而不仅仅是一个CODER。

〖把最多的时间花在学习上〗
这是对初学者最后的忠告。把每个星期玩SC或者CS的时间压缩到最少,不玩它们是最好的。同时,如果你的ASP技术已经能够来钱,甚至有公司请你兼职的话,这就证明你的天份能够保证你在努力的学习之后取得更好的收益,你应该去做更复

论坛徽章:
0
发表于 2003-05-16 14:35 |显示全部楼层

好像总是有人很困惑,给大家一个系列,希望可以答疑解惑……

程序员,大学本科都是识记型的考试。他们做出来的就是掌握了某种模型,某种思维方式。而SCJP考试是掌握了某种编译器。整体上都是记忆。
  实际工作需要这些,但这些和实际工作是有一定的距离的,不贴近实际的工作的。实际工作分得很细。很需要效率。一个高效率的员工是**的。一个低效率的员工拖着整条生产线,他造成的损失是他薪水的倍数。
  我现在的学习是深思型,发散型的学习。我喜欢不以考试为目的,深入的思考问题,发散的查找资料。我以为这样子可以锻炼我的思维能力和实际能力。但是这种思想造成了我的学习是低效的。在现代的生活节奏中,这种学习的存在浪费了大量我的时间。而几乎没有给我带来什么好处。即便是原来想的多么好知道的多么多,但是时间总是让我忘记了这些知识。
  反思,为什么我的计算机学的比机电工程好?因为计算机我有实际使用的机会,而机电工程总是离我那么遥远。这也是计算机知识普及速度快的原因,实践的成本越来越低了。
  所以必须明白,书中的东西靠自己的深思和扩散是不会成为真正的能力的,必需去实践。要记住那句话“重要的不是知识,而是掌握知识的能力”。对知识的掌握我现在将它分为:
  1、快速建立对知识的整体框架的认识和基础知识的铺垫(建摸)的能力
  2、快速而准确的获得知识资料的能力
  3、快速理解和掌握知识的能力
  4、为自己架设实践平台的能力
  5、在实践中反思的能力
  高效的学习必定是目的明确的学习,高效的学习必须是高投入的学习。高效的学习必须是有限制的学习。
  实际上除了应付单位或者什么别的,如果你没有去做,那么无论你看什么书,考什么证都是错的。因为无论什么书,什么证你都可能用不上。学回来的东西和思考出来的东西都可能一次都没有被用过就遗忘了。
  学习是为了理解和记忆,理解和记忆是为了应用,应用是为了获得价值,所以如果在这个过程中产生了不利于产生价值的东西,都是要去处的,因为它至少耗费了我们宝贵的时间。

论坛徽章:
0
发表于 2003-05-16 14:36 |显示全部楼层

好像总是有人很困惑,给大家一个系列,希望可以答疑解惑……

经过近一年的对程序员前途迷茫的不安,经历了最浮躁、惶恐、颓废和急功近利的
阶段,现在的我已经渐渐看到了自己努力的方向,变得更成熟稳健,而且增长了社会阅
历和处世技巧。
    首先,我已经跳离了程序员的狭隘视野。以前我学C++Builder一年,而后来的近2年
无非只是在运用原有知识在搭积木和提高点编程技巧而已,虽然有了不少经验,但归根
到底像李维大师所说的一样是在原地踏步,脚下的石头陷入三分,但别人已经跑你前头。
所以,必须在精通一、两门语言的基础上,掌握或了解其他各项最近技术,并为以后的
整合思想的产生打下基础。
    如果你熟悉了当今几乎所有的最新主流语言的开发、特点、和其他语言的比较利弊,
网络最新技术,各种协议特点和应用范围,各种主流操作系统架构、开发环境等等,自
然而然就会产生整合的概念。而因为我现在还没有掌握(或了解)全部最新主流技术,
所以我还只是在学习的层次阶段,一旦赶上技术前沿,我就可以进入下一个阶段:创新
阶段。
    关于学习方法的问题,如原我学OO时,类的构造函数、继承、重载等概念很模糊,怎
么也不能理会其真谛,但后来在解决实际问题时,发现传统的方法很麻烦且可读性、可
移植性甚至可维护性都很差,这时我自然而然地想到了类的封装,一个程序下来,基本
了解了OO的应用场合和开发技巧。而不需要在某点上转太深,这些在实际相关问题来临时
学习更有效,针对性更强,如现在在CSDN上我只学习通用的或我认为以后会经常用到或
重要的技巧,毕竟精力和时间是有限的,还有很多更值得去学的东西,说的具体点,就是
如果你去应聘,在很短的时间里你不可能只讲技术,罗列你所知的深层技巧,而是简单指
出你知道那些技术及它们的应用场合及技巧等,而学习什么技巧,学到什么程度可以在实
际工作需要中把握,有需求才去学它,除非你想专攻某项技术。
    如果你只是想当个程序员,是没有前途的,因为编程技术是可以“学习的”,举个
比较极端的例子:如果你创建了个数据库连接,自动显示公司信息,很简单,但不懂编程
的人觉得你很厉害,你就开始沾沾自喜了?只是你“知道”而已,而思想更重要,是靠锤
炼出来的技能,而思想应该从程序设计进化到对工程的开发理解、把握上,而语言就自然
成了工具而已,有了选择工具的概念。引用李维的一句话:“眼光和趋势”是骨干。

论坛徽章:
0
发表于 2003-05-16 14:36 |显示全部楼层

好像总是有人很困惑,给大家一个系列,希望可以答疑解惑……

标 题: 你尽力了吗
发信站: 武汉白云黄鹤站 (Mon Apr 17 19:52:54 2000), 站内信件

很多人问如何入门如何入门,我却不知道要问的是入什么门。很少把某些好文章耐心
从头看完,我这次就深有体会。比如袁哥的sniffer原理,一直以为自己对sniffer原
理很清楚的,所以也就不曾仔细看过袁哥的这篇。后来有天晚上和袁哥讨论,如何通
过端口读写直接获取mac地址,为什么antisniff可以获得真正的mac地址,而不受更
改mac地址技术的影响,如何在linux下获得真正的mac地址。我一直对linux下的端口
读写心存疑虑,总觉得在保护模式下的端口都做了内存映象等等。结果袁哥问了我一
句,你仔细看我写的文章没有,我楞,最近因为要印刷月刊,我整理以前的很多文档,

被迫认真过滤它们,才发现袁哥的文章让我又有新认识。再后来整理到tt的几篇缓冲
区溢出的,尤其是上面的关于Solaris可装载内核模块,那就更觉得惭愧了。以前说
书非借不能读,现在是文章留在硬盘上却不读。其实本版已经很多经典文章了,也推
荐了不少经典书籍了,有几个好好看过呢。W.Richard.Stevens的UNP我算是认真看过
加了不少旁注,APUE就没有那么认真了,而卷II的一半认真看过,写过读书笔记,卷
III就没有看一页。道格拉斯的卷I、卷III是认真看过几遍,卷II就只断续看过。而
很多技术文章,如果搞到手了就懒得再看,却不知道这浪费了多少资源,忽略了多少
资源。BBS是真正能学到东西的地方吗?rain说不是的,我说也不是的。不过这里能开
阔人的视野,能得到对大方向的指引,足够了。我一直都希望大家从这里学到的不是
技术本身,而是学习方法和一种不再狂热的淡然。很多技术,明天就会过时,如果你
掌握的是学习方法,那你还有下一个机会,如果你掌握的仅仅是这个技术本身,你就
没有机会了。其实我对系统安全是真不懂,因为我一直都喜欢看程序写程序却不喜欢
也没有能力攻击谁谁的主机/站点。我所能在这里做的是,为大家提供一个方向,一种
让你的狂热归于淡然的说教。如果你连、< win9x系统编
程>;都没有看过,却要写个什么隐藏自己的木马,搞笑。如果你看都不看汇编语
言,偏要问exploit code的原理,那我无法回答也不想回答你。总有人责问,要讨个
说法纭纭,说什么提问却没有回答。不回答已经是正确的处理方式了,至少没有回你
一句,看书去,对不对,至少没有扰乱版面让你生闷气。Unix的man手册你要都看完了,

想不会Unix都不行了。微软的MSDN、Platform SDK DOC你要看完了,你想把Win编程想
象得稍微困难点都找不到理由。还是那句话,一个程序员做到W.Richard.Stevens那个
份上,做到逝世后还能叫全世界的顶级hacker们专门著文怀念,但生前却不曾著文攻
击,想想看,那是一种什么样的境界,那是一份什么样的淡然。我们可以大肆讨论技
术问题,可以就技术问题进行激烈的卓有成效的讨论,却无意进行基础知识、资源信
息的版面重复。我刚在前面贴了一堆isbase的文章,开头就是主页标识,却在后面立
刻问什么主页在哪里?前面刚刚讨论过如何修改mac地址,后面马上又来一个,前后
相差不过3篇文章。选择沉默已经是很多朋友忍耐力的优异表现了。
很多东西都是可以举一反三的。vertex的lids,被packetstorm天天追踪更新,你要是
看了THC的那三篇,觉得理解一个就理解了一堆,都是内核模块上的手脚。你不看你怎
么知道。我不想在这里陷入具体技术问题的讨论中去,你要是觉得该做点什么了,就
自己去看自己去找。没有什么人摆什么架子,也没有什么人生来就是干这个的。你自
己问自己,尽力了吗?


 /* FreeBSD 23 byte execve code.            * 
  *                    e4gle.org  * 
  ******************************************************/ 
 char fbsd_execve[]= 
  "\x99"         /* cdq       */ 
  "\x52"         /* push %edx    */ 
  "\x68\x6e\x2f\x73\x68" /* push $0x68732f6e */ 
  "\x68\x2f\x2f\x62\x69" /* push $0x69622f2f */ 
  "\x89\xe3"       /* movl %esp,%ebx  */ 
  "\x51"         /* push %ecx - or %edx */ 
  "\x52"         /* push %edx - or %ecx */ 
  "\x53"         /* push %ebx    */ 
  "\x53"         /* push %ebx    */ 
  "\x6a\x3b"       /* push $0x3b    */ 
  "\x58"         /* pop %eax     */ 
  "\xcd\x80";       /* int $0x80    */ 
e4gle.org----The Personal Security Site

论坛徽章:
0
发表于 2003-05-16 14:37 |显示全部楼层

好像总是有人很困惑,给大家一个系列,希望可以答疑解惑……

(AUTHOR:namhyuk)
不知不觉做软件已经做了十年,有成功的喜悦,也有失败的痛苦,但总不敢称自己是高手,因为和我心目中真正的高手们比起来,还差的太远。世界上并没有成为高手的捷径,但一些基本原则是可以遵循的。

1. 扎实的基础。数据结构、离散数学、编译原理,这些是所有计算机科学的基础,如果不掌握他们,很难写出高水平的程序。据我的观察,学计算机专业的人比学其他专业的人更能写出高质量的软件。程序人人都会写,但当你发现写到一定程度很难再提高的时候,就应该想想是不是要回过头来学学这些最基本的理论。不要一开始就去学OOP,即使你再精通OOP,遇到一些基本算法的时候可能也会束手无策。

2. 丰富的想象力。不要拘泥于固定的思维方式,遇到问题的时候要多想几种解决问题的方案,试试别人从没想过的方法。丰富的想象力是建立在丰富的知识的基础上,除计算机以外,多涉猎其他的学科,比如天文、物理、数学等等。另外,多看科幻电影也是一个很好的途径。

3. 最简单的是最好的。这也许是所有科学都遵循的一条准则,如此复杂的质能互换原理在爱因斯坦眼里不过是一个简单得不能再简单的公式:E=mc2。简单的方法更容易被人理解,更容易实现,也更容易维护。遇到问题时要优先考虑最简单的方案,只有简单方案不能满足要求时再考虑复杂的方案。

4. 不钻牛角尖。当你遇到障碍的时候,不妨暂时远离电脑,看看窗外的风景,听听轻音乐,和朋友聊聊天。当我遇到难题的时候会去玩游戏,而且是那种极暴力的打斗类游戏,当负责游戏的那部分大脑细胞极度亢奋的时候,负责编程的那部分大脑细胞就得到了充分的休息。当重新开始工作的时候,我会发现那些难题现在竟然可以迎刃而解。

5. 对答案的渴求。人类自然科学的发展史就是一个渴求得到答案的过程,即使只能知道答案的一小部分也值得我们去付出。只要你坚定信念,一定要找到问题的答案,你才会付出精力去探索,即使最后没有得到答案,在过程中你也会学到很多东西。

6. 多与别人交流。三人行必有我师,也许在一次和别人不经意的谈话中,就可以迸出灵感的火花。多上上网,看看别人对同一问题的看法,会给你很大的启发。

7. 良好的编程风格。注意养成良好的习惯,代码的缩进编排,变量的命名规则要始终保持一致。大家都知道如何排除代码中错误,却往往忽视了对注释的排错。注释是程序的一个重要组成部分,它可以使你的代码更容易理解,而如果代码已经清楚地表达了你的思想,就不必再加注释了,如果注释和代码不一致,那就更加糟糕。

8. 韧性和毅力。这也许是"高手"和一般程序员最大的区别。A good programming is 99% sweat and 1% coffee。高手们并不是天才,他们是在无数个日日夜夜中磨练出来的。成功能给我们带来无比的喜悦,但过程却是无比的枯燥乏味。你不妨做个测试,找个10000以内的素数表,把它们全都抄下来,然后再检查三遍,如果能够不间断地完成这一工作,你就可以满足这一条。

这些是我这几年程序员生涯的一点体会,希望能够给大家有所帮助

论坛徽章:
0
发表于 2003-05-16 14:38 |显示全部楼层

好像总是有人很困惑,给大家一个系列,希望可以答疑解惑……

这个肯定是很多人都看过了……
担经典是可以反复阅读的……

/**********************************************/
诸位,咱当工程师也是十余年了,不算有出息,环顾四周,也没有看见几个有出息的!回顾工程师生涯,感慨万千,愿意讲几句掏心窝子的话,也算给咱们师弟师妹们提个醒,希望他们比咱们强!
[1]好好规划自己的路,不要跟着感觉走!根据个人的理想决策安排,绝大部分人并不指望成为什么院士或教授,而是希望活得滋润一些,爽一些。那么,就需要慎重安排自己的轨迹。从哪个行业入手,逐渐对该行业深入了解,不要频繁跳槽,特别是不要为了一点工资而转移阵地,从长远看,这点钱根本不算什么,当你对一个行业有那么几年的体会,以后钱根本不是问题。频繁地动荡不是上策,最后你对哪个行业都没有摸透,永远是新手!

[2]可以做技术,切不可沉湎于技术。千万不可一门心思钻研技术!给自己很大压力,如果你的心思全部放在这上面,那么注定你将成为孔乙己一类的人物!适可而止为之,因为技术只不过是你今后前途的支柱之一,而且还不是最大的支柱,除非你只愿意到老还是个工程师!

[3]不要去做技术高手,只去做综合素质高手!在企业里混,我们时常瞧不起某人,说他“什么都不懂,凭啥拿那么多钱,凭啥升官!”这是普遍的典型的工程师的迂腐之言。8051很牛吗?人家能上去必然有他的本事,而且是你没有的本事。你想想,老板搞经营那么多年,难道见识不如你这个新兵?人家或许善于管理,善于领会老板意图,善于部门协调等等。因此务必培养自己多方面的能力,包括管理,亲和力,察言观色能力,攻关能力等,要成为综合素质的高手,则前途无量,否则只能躲在角落看示波器!技术以外的技能才是更重要的本事!!从古到今,美国日本,一律如此!

[4]多交社会三教九流的朋友!不要只和工程师交往,认为有共同语言,其实更重要的是和其他类人物交往,如果你希望有朝一日当老板或高层管理,那么你整日面对的就是这些人。了解他们的经历,思维习惯,爱好,学习他们处理问题的模式,了解社会各个角落的现象和问题,这是以后发展的巨大的本钱,没有这些以后就会笨手笨脚,跌跌撞撞,遇到重重困难,交不少学费,成功的概率大大降低!

[5]知识涉猎不一定专,但一定要广!多看看其他方面的书,金融,财会,进出口,税务,法律等等,为以后做一些积累,以后的用处会更大!会少交许多学费!!

[6]抓住时机向技术管理或市场销售方面的转变!要想有前途就不能一直搞开发,适当时候要转变为管理或销售,前途会更大,以前搞技术也没有白搞,以后还用得着。搞管理可以培养自己的领导能力,搞销售可以培养自己的市场概念和思维,同时为自己以后发展积累庞大的人脉!应该说这才是前途的真正支柱!!!

[7]逐渐克服自己的心里弱点和性格缺陷!多疑,敏感,天真(贬义,并不可爱),犹豫不决,胆怯,多虑,脸皮太薄,心不够黑,教条式思维。。。这些工程师普遍存在的性格弱点必须改变!很难吗?只在床上想一想当然不可能,去帮朋友守一个月地摊,包准有效果,去实践,而不要只想!不克服这些缺点,一切不可能,甚至连项目经理都当不好--尽管你可能技术不错!

[8]工作的同时要为以后做准备!建立自己的工作环境!及早为自己配置一个工作环境,装备电脑,示波器(可以买个二手的),仿真器,编程器等,业余可以接点活,一方面接触市场,培养市场感觉,同时也积累资金,更重要的是准备自己的产品,咱搞技术的没有钱,只有技术,技术的代表不是学历和证书,而是产品,拿出象样的产品,就可技术转让或与人合作搞企业!先把东西准备好,等待机会,否则,有了机会也抓不住!

[9]要学会善于推销自己!不仅要能干,还要能说,能写,善于利用一切机会推销自己,树立自己的品牌形象,很必要!要创造条件让别人了解自己,不然老板怎么知道你能干?外面的投资人怎么相信你?提早把自己推销出去,机会自然会来找你!搞个个人主页是个好注意!!特别是培养自己在行业的名气,有了名气,高薪机会自不在话下,更重要的是有合作的机会...

[10]该出手时便出手!永远不可能有100%把握!!!条件差不多就要大胆去干,去闯出自己的事业,不要犹豫,不要彷徨,干了不一定成功,但至少为下一次冲击积累了经验,不干永远没出息,而且要干成必然要经历失败。不经历风雨,怎么见彩虹,没有人能随随便便成功!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP