[转]十条不错的编程观点

原文地址:http://coolshell.cn/?p=2424

 

Stack Overflow 上 有这样的一个贴子《What’s your most controversial programming opinion? 》,翻译成中文就是“你认为最有争议的编程观点是什么? ”,不过,在400多个主回贴,以及 千把个子回贴中,好像并不是很有争议,而是令人相当的茅塞顿开,下面罗列一些,并通过我自己的经历和理解发挥了一些,希望对你有帮助。


1) The only “best practice” you should be using all the time is “Use Your Brain”.

唯一的“Best Practice”并不是使用各种各样被前人总结过的各种设计方法、模式,框架,那些著名的方法、模式、框架只代码赞同他们的人多,并不代表他们适合你, 你应该更多的去使用你的大脑,独立地思考那些方法、模式、框架出现的原因和其背后的想法和思想,那才是“best practice”。事实上来说,那些所谓的“Best Practice”只不过是限制那些糟糕的程序员们 的破坏力。


2)Programmers who don’t code in their spare time for fun will never become as good as those that do.

如果你对编程没有感到一种快乐,没有在你空闲的时候去以一种的娱乐方式去生活,无论是编程,还是运动,还是去旅游,那么你只不过是在应付你的工作, 无时无刻不扎在程序堆中,这样下来,就算是你是一个非常聪明,非常有才华的人,你也不会成为一个优秀的编程员,要么只会平平凡凡,要么只会整天扎在技术中 成为书呆子。当然,这个观点是有争议,热情和能力的差距也是很大的。不过我们可以从中汲取其正面的观点。

注:所谓爱一行才能干一行。


3)M
ost comments in code are in fact a pernicious form of code duplication.

注释应该是注释Why,而不是How和What,参看《惹恼程序员的十件事 》,代码告诉你How,而注释应该告诉你Why。但大 多数的程序并不知道什么是好的注释,那些注释其实和code是重复的,毫无意义。

 


4)XML is highly overrated

XML可能被高估了。XML对于Web上的应用是不错的,但是我们把其用到了各种地方,好像没有XML,我们都不会编程了。


5)Not all programmers are created equal

这是那些junior经理或是流程爱犯的错,他们总是认为,DeveloperA == DeveloperB,只要他们的title一样,他们以为他们的能力、工作速度、解决问题的方法,掌握的技能等等都是一样的。呵呵。更扯的是,在某些时候,就算是最差的程序员,他们也会认为其比别人强十倍,这就是现代的SB管理。


6)”Googling it” is okay!

Google只会给你知识,并不会教给你技能。那里只有“鱼”,没有“渔”,过度的使用Google,只会让你越来越离不开他,你越来越去要去立马 告诉你答案,而你越来越不会自己去思考,自己去探索,去专研。如果KFC快餐是垃圾食品对我们的身体没有好处,那么使用Google也一种快餐文化对我们 的智力发展大大的没有好处。

注:爱思考的人,越Google就越会去思考;不爱思考的人,越Google就越不会去思考。


7)
If you only know one language, no matter how well you know it, you’re not a great programmer.

如果你只懂一种语言,准确的说,如果你只懂一类语类,如:Java和C#,PHP和Perl,那么,你将会被局限起来,只有了解了各种各样的语言, 了解了不同语言的不同方法 ,你才会有比较,只有了比较,你才会明白各种语言的长处和短处,才会让你有更为成熟的观点,而且不整天和别的程序在网上斗嘴争论是Windows好还是 Unix好,是C好还是C++好,有这点工夫能干好多事了。世界因为不同而精彩,只知道事物的一面是有害的。

注:任何一种语言,体现出来的思想都是有限的。


8)Your job is to put yourself out of work.

你的工作不是保守,那种教会徒弟,饿死师父的想法,不但是相当短浅的,而且还是相当脑残的。因为,在计算机世界里,你掌握的老技术越多,你就越没 用,因为技术更新的太快。你对工作越保守,这个工作就越来越离不开你,你就越不越不能抽身去学新的东西,你也就越来越OUT了。记住:If you can’t be replaced then you can’t be promoted!


9)Design patterns are hurting good design more than they’re helping it.

很多程序员把设计模式奉为天神,他们过度的追求设计模式以至都都忘了需求是什么,结果整个系统设计被设计模式搞得乱七八糟,我们叫这种编程为“设计模式驱动编程 ”,正如第一点所 说,如果你不懂得用自己的大脑思考的话,知其然,不知所以然的话,那么你不但得不到其好处,反而受其所累。

注:建议学习设计模式之前先学习实现模式。


10)
Unit Testing won’t help you write good code

准确地说,我们可以认为这是Test-Driven开发,其实,这种开发就是先写unit test case,这样的开发方式的主要目的是,为了防止你不会因为一个改动而引入Bug,但这并不会让你能写出更好的代码。这只会让你写出不会出错的代码。同第 一点,这样的方法,只不过是防止糟糕的程序员 ,而并不是让程序员或代码质量更有长进。反而,通过Unit Test会为程序员的为自己代码做辩解的一种托辞。

注:测试驱动确实有利于改进设计,但这是更高层面的,和代码的书写风格无关。

 

最后,顺便说一下,以前去那个敏捷的公司面试,发现那个公司的某些技术人员中毒不浅,具体表现在上述的1)9)10)观点上。

 

(转载本文请注明作者和出处,请勿用于商业用途)

展开阅读全文

关于XML的十种观点(转)

05-08

---(文/重粒子)rn在计算机信息技术中,少有象类似 XML 那样的技术,她让人们产生范围很大的联想,而这些联想及其应用又可能相距甚远。她也更多引起人们对 XML 彼此不同的理解与认识,当然也包括误解。她什么也是,但又什么都不是,正所谓“雾里看花”,而这也正是她的魅力所在。一百个人可能会产生一百种观点,这里整理其中的十类观点,可能有助于您对 XML 的认识与应用。 rn1.XML 是文本化的小型数据库表达语言。可以对其进行 LOAD/SAVE, INSERT/REMOVE/UPDATE, SELECT 等操作;甚至可以把 XML 应用成为一个中间层的虚拟数据库。 rn2.XML 是客户端计算的数据结构载体。通过联合使用 JavaScript/DHTML 技术实现客户端的小型信息过滤、查询、计算与通讯应用。 rn3.XML 是信息的高层封装与运输的标准。据此 XML 也是不同应用系统之间的数据接口标准,是所有信息的中间层表示;是中间层应用服务器(AS)的通用数据接口。甚至可以用于数据仓库技术的数据迁移过程、数据库报告格式中。 rn4.XML 是 HTML 的高层扩展。HTML 面向文本、信息发布,HTML 容许混乱;XML 面向数据、数据处理,XML 要求工整(well-formed)合法(Valid);用户可用 XML 创建自己的 HTML。 rn5.XML 是信息的对象化语言。DTD/Schema 是界面或类 INTERFACE/CLASS,XML 是对象实例 OBJECT,XSL 是方法定义 IMPLEMENT/METHOD,XML-Data 解决了 XML 类的继承问题。而 XML 中的资源(URI)寻址(URL)、物理实体等又构成了信息的组件 Compoent。XML 的 RDF 是信息导航、浏览、搜索的用户接口 UI 标准。 rn6.XML 是不同数据结构体的文本化描述语言。它可以描述线性表、树、图形等数据结构,也能描述文件化的外部数据结构。甚至可以制造类似 XML 的 Compiler,可使文档在文本与二进制文件间互相转换,XML-Data 中严格定义了 XML 中数据的物理类型。也可以说 XML 是一种通用的数据结构。 rn7.XML 是行业 HTML 扩展标记的定义语言。XML 与 HTML 结合描述行业的专用信息文档,如 CDF, CML, MathML, SMIL 等。 rn8.XML 是在因特网时代与 Java、CORBA 等量齐观的一个概念。Java 解决了语言实施的同一,CORBA 解决了通讯协议的同一,XML 解决了信息表示、关联的同一;OO 面向对象是这三者的共同理论基础。万维网接口定义语言 WIDL 就是 XML 与 IDL 技术结合的产物。 rn9.XML 是国际标准化组织的标准通用标记语言 SGML 的子集。SGML 面向诸于飞机设计文档的大规模、长生命周期的信息储存,XML 则面向短期的临时数据处理、面向万维网络;二者是相互补充的关系。 rn10.XML 是巴斯克范式 BNF 的语言化、标准化、电子化。元素是其基本构成单位。 rnrnrn 论坛

转一个不错的文章

05-19

来自:[url=http://blog.joycode.com/haacked/archive/2009/05/14/115575.aspx][/url]rnrn我是一个网络应用程序员 rn【原文地址】I’m a Web Developer At Heart [url=http://www.haacked.com/archive/2009/05/07/18616.aspx][/url]rnrn【原文发表日期】 Mar 7, 2009rnrn曾经有一位年轻的程序员写email问我说如何能成为一个成功的开发人员。我一开始是这样回答的:rnrn我不清楚.你为什么不去问一个成功的开发人员呢?rn但而后我想,这样的回答其实仅仅是机巧有余,不是么?我这么老虚伪地故作谦逊是和谁在故弄玄虚呢?毕竟,“clever hack”这个概念就是以我来命名的(译注:注意Phil Haack的姓氏),而显然发明这个词汇的人还及不上我1/10的魅力,这点从他创造这个词组的时候故意地漏掉了一个字母a这件事上也更加可见一斑。当然,这个,还只是发生在我发明了Test-Driven Design,因特网,以及大家所呼吸的空气之前的一些小打小闹。rnrn(对那些幽默理解不能的朋友们,请注意,我并没有真正发明Test-Drive Design)rnrn于是我开始仔细考虑这个问题并对自己说:“假设我是一个成功的软件程序员,那我应该会做哪些事来达到那个目标呢?”然后当我开始思索各种学习提高的方法时,有一件事是显而易见的,那就是参与一些开源软件的项目。rnrn如果说我的职业生涯中有一件事年复一年地使我获益良多,那就是我参与了很多开源的项目。参与开源项目使我有机会广泛地接触各类的问题和技术,而这些问题和技术在日常的工作中我通常不会面对。rnrn在我进一步进行探讨前,我必须声明这个帖子不是我用来回答年轻的程序员们的问题的帖子。不,那样的帖子还是等其他的场合吧。而且我也许会起个陈词滥调又莫测高深的名字比如:“给年轻的开发者们的一些意见”。我的意思是,这样的题目是不是听上去真的既无聊又自大?我对着镜子严肃地说:“拜托你还是冷静点吧。”不过镜子里的那个家伙也许最终还是会这么来一篇的,没办法…rnrn只是,这篇不是那样的帖子。相反,这篇与好为人师的话题很不相干,因为我很擅长一件事,那就是跑题。rnrn在聊到关于开源软件的话题时,我很自然地想到了我参与的第一个开源项目 – RSS Bandit (w00t w00t!) RSS Bandit是一个由Dare Obasanjo和Torsten Rendelmann开发的一流的RSS聚合软件。我那时候才刚刚开始接触博客之类的概念,然后一下子就被Dare的直爽而又有深度的博客以及他的可爱的孩子,RSS Bandit(他现在有一个真正的孩子了,祝贺你,老兄)吸引住了。rnrn那时候我还没怎么做过Windows客户端的程序开发。我主要是用老版本的ASP以及早期的ASP.NET在开发网络应用。我于是想通过RSS Bandit来磨练下自己并顺便学习一下Winform的开发。Winform这种状态持续化(stateful)的编程模型让我觉得很新鲜(译注:因为那时基于HTTP的网络应用基本都是stateless的,当然后来有了ViewState等等的技术)。这将是很有趣的一个尝试。rnrn很多新人程序员接触一个开源项目时都梦想着自己很立马开发出引人注目令人惊奇的新功能,由此博得群众的欢呼喝彩,总统因此以你来命名一个国定假日,而且你所有的敌人都立刻自惭形秽并把他们的孩子改名跟你姓了。rnrn但一个真正好的贡献者会收起他/她的骄傲感然后扎扎实实地从一些小事,甚至是琐事开始做起。比如很多开源项目都很需要很好的帮助文档,一部分原因也是因为最吸引眼球的是开发那些新的功能于是没人有兴趣来写那些个劳什子的文档了。rnrn我就是这么开始的。我先开始写了一篇文章:getting started with RSS Bandit. Dare注意到了,于是问我愿不愿意参与完善文档的建设,我欣然同意了。他给了我提交的权限(我想我应该是Dare和Torsten后第三个有提交权限的人),于是我很努力地编写各式的文档。事实上,很多我当年写的内容仍然在那里,比如这个我当年用过的巨自恋的程序截图。; )rnrn慢慢地,我得到了越来越多的信任,并被允许做一些bug的修正和一些小的功能块。我负责的第一个主要的功能是实现可配置的键盘快捷键,还挺不错。rnrn(小小逸事一则。我和这两位在RSS Bandit上合作了多年,但却从没有亲自面会过Dare一直到刚刚在Las Vegas举行的今年度的Mix大会上。真的!而我早先在德国于Torsten见过面。)rnrn(译注:我和Phil不同,两年前加入微软的时候,我就和Dare有过几面之缘,也和他的group合作过不短的时间。不过我一直都没有意识到他就是我用过的第一个聚合阅读器的作者,直到看到Phil的这篇文章,呵呵)rnrn我那时真的很喜欢RSS Bandit方面的工作,那几乎成了我的一个爱好,占去了我不多的业余时间里的剩余空闲。我想你可以说RSS Bandit的工作使我免受了洛杉矶街头流氓团伙的不良影响,当然我也没试过去加入那些团伙,而估计他们也不会要我。不过渐渐地,我意识到了一些事。尽管起初的那种学习了解状态持续化编程模型的兴奋感犹在眼前……rnrn我意识到我并不喜欢这种模型。rnrn事实上,我发现这个模式很陌生也很难掌握。我总是遇到一些奇怪的使我脑筋打结的怪问题,比如用户单击了一个按钮后,此按钮仍然保留了它之前的状态。那时我就会想,“为什么我需要手动清除按钮的状态呢?为什么在用户进行一个动作之后这个状态不自行消失呢?”我开始意识到我的问题在于我的思维一直还是遁寻着网络应用程序员的模式,而不是客户端应用程序员的模式。rnrn就与一个客户端程序开发者转向网络程序开发时感觉相似(比如网络程序中,因为状态不是持续化(stateless)的,所以你必须在响应每个请求后都重设所有控件的状态),一个此前专注于网络程序的开发者会发现客户端程序的开发是一件很费脑筋的事,因为所有的系统状态都像那个酒吧里最漂亮的小妞身边的那个跟屁虫一样 ---- 他就是赖在那里不从你眼前消失。rnrn于是我才意识到,从骨子里来说,我其实是一个网络应用程序员并且我情愿Make web, not war(译注:这个我实在不想翻译,译了也没意思,呵呵,太搞了,你自己看video吧)。所以大概就是在那个时候,我开始了Subtext项目,因为我内心里还是更希望做一个网络的应用。最终,我不再使用RSS Bandit,而是转向了在线的聚合阅读工具,就是Google Reader(有点讽刺,呵呵),而其中最主要的原因,就是在线的阅读工具使我可以随时随地看到我订阅的内容,并且一直保持最近更新的状态,而我也不需要在每一台新的电脑上进行同步或者安装一个程序。rnrn所以说我虽然更喜欢(或者说也许是更习惯于)网络应用的状态非持续化的编程模式,我同时也为网络应用本身的状态持续化的特性所吸引,也即,我所拥有的数据的状态不是绑定在任何一台特定的终端上的而是存储在一个无所不在的网络平台上,而我又可以随时随地地使用这个平台(当然,网络应用也有它自身的问题和课题,比如网络服务当机的问题)rnrn与此同时,我也会不时地抽空关心一下RSS Bandit的最新进展。它确实也有很多Google Reader所没有的很酷的功能,比如它可以从聚合器客户端直接通过Comment API来发表评论,还有它可以订阅需要身份验证的聚合。而且我觉得Dare正在努力把RSS Bandit引向一个全新的更有竞争力的方向。rnrn所有我说的这些其实只是想说明,如果你想成为一个更好的程序员,那就找一个你感兴趣的开源项目,然后参与进去(比如这个,:) ,因为也许它就会引导你发现自己的本质是何种类型的开发者。就如我所最终了然的,我从内心深处是一个网络应用的程序员。rn 论坛

关于学习C++和编程的50个观点

04-24

关于学习C++和编程的50个观点:rnrn1.把C++当成一门新的语言学习(和C没啥关系!真的。);rn2.看《Thinking In C++》,不要看《C++变成死相》;rn3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因rn为他们很难而我们自己是初学者所以就不看;rn4.不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,而我们要学的rn是一门语言;rn5.不要放过任何一个看上去很简单的小编程问题——他们往往并不那么简单,或者可以rn引伸出很多知识点;rn6.会用Visual C++,并不说明你会C++;rn7.学class并不难,template、STL、generic programming也不过如此——难的是长期坚rn持实践和不遗余力的博览群书;rn8.如果不是天才的话,想学编程就不要想玩游戏——你以为你做到了,其实你的C++水平rn并没有和你通关的能力一起变高——其实可以时刻记住:学C++是为了编游戏的;rn9.看Visual C++的书,是学不了C++语言的;rn10.浮躁的人容易说:XX语言不行了,应该学YY;——是你自己不行了吧!?rn11.浮躁的人容易问:我到底该学什么;——别问,学就对了;rn12.浮躁的人容易问:XX有钱途吗;——建议你去抢银行;rn13.浮躁的人容易说:我要中文版!我英文不行!——不行?学呀!rn14.浮躁的人容易问:XX和YY哪个好;——告诉你吧,都好——只要你学就行;rn15.浮躁的人分两种:a)只观望而不学的人;b)只学而不坚持的人;rn16.把时髦的技术挂在嘴边,还不如把过时的技术记在心里;rn17.C++不仅仅是支持面向对象的程序设计语言;rn18.学习编程最好的方法之一就是阅读源代码;rn19.在任何时刻都不要认为自己手中的书已经足够了;rn20.请阅读《The Standard C++ Bible》(中文版:标准C++宝典),掌握C++标准;rn21.看得懂的书,请仔细看;看不懂的书,请硬着头皮看;rn22.别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍;rn23.请看《Effective C++》和《More Effective C++》以及《Exceptional C++》;rn24.不要停留在集成开发环境的摇篮上,要学会控制集成开发环境,还要学会用命令行方rn式处理程序;rn25.和别人一起讨论有意义的C++知识点,而不是争吵XX行不行或者YY与ZZ哪个好;rn26.请看《程序设计实践》,并严格的按照其要求去做;rn27.不要因为C和C++中有一些语法和关键字看上去相同,就认为它们的意义和作用完全一rn样;rn28.C++绝不是所谓的C的“扩充”——如果C++一开始就起名叫Z语言,你一定不会把C和rnZ语言联系得那么紧密;rn29.请不要认为学过XX语言再改学C++会有什么问题——你只不过又在学一门全新的语言rn而已;rn30.读完了《Inside The C++ Object Model》以后再来认定自己是不是已经学会了C++;rn31.学习编程的秘诀是:编程,编程,再编程;rn32.请留意下列书籍:《C++面向对象高效编程(C++ Effective Object-Oriented Softrnware Construction)》《面向对象软件构造(Object-Oriented Software Constructiornn)》《设计模式(Design Patterns)》《The Art of Computer Programming》;rn33.记住:面向对象技术不只是C++专有的;rn34.请把书上的程序例子亲手输入到电脑上实践,即使配套光盘中有源代码;rn35.把在书中看到的有意义的例子扩充;rn36.请重视C++中的异常处理技术,并将其切实的运用到自己的程序中;rn37.经常回顾自己以前写过的程序,并尝试重写,把自己学到的新知识运用进去;rn38.不要漏掉书中任何一个练习题——请全部做完并记录下解题思路;rn39.C++语言和C++的集成开发环境要同时学习和掌握;rn40.既然决定了学C++,就请坚持学下去,因为学习程序设计语言的目的是掌握程序设计技rn术,而程序设计技术是跨语言的;rn41.就让C++语言的各种平台和开发环境去激烈的竞争吧,我们要以学习C++语言本身为主rn;rn42.当你写C++程序写到一半却发现自己用的方法很拙劣时,请不要马上停手;请尽快将rn余下的部分粗略的完成以保证这个设计的完整性,然后分析自己的错误并重新设计和编rn写(参见43);rn43.别心急,设计C++的class确实不容易;自己程序中的class和自己的class设计水平是rn在不断的编程实践中完善和发展的;rn44.决不要因为程序“很小”就不遵循某些你不熟练的规则——好习惯是培养出来的,而rn不是一次记住的;rn45.每学到一个C++难点的时候,尝试着对别人讲解这个知识点并让他理解——你能讲清rn楚才说明你真的理解了;rn46.记录下在和别人交流时发现的自己忽视或不理解的知识点;rn47.请不断的对自己写的程序提出更高的要求,哪怕你的程序版本号会变成Version 100.rnXX;rn48.保存好你写过的所有的程序——那是你最好的积累之一;rn49.请不要做浮躁的人;rn50.请热爱C++!rnrnrn--rnrn任何事,不管多困难,只有做了才有可能成功rn 如果不做,那就连成功的希望也没了!rn 论坛

关于学习c++和编程的50个观点

06-04

关于学习c++和编程的50个观点:rnrn1.把c++当成一门新的语言学习(和c没啥关系!真的。);rn rn2.看《thinking in c++》,不要看《c++变成死相》; rnrn3.看《the c++ programming language》和《inside the c++ object model》,不要因 rn为他们很难而我们自己是初学者所以就不看; rnrn4.不要被vc、bcb、bc、mc、tc等词汇所迷惑——他们都是集成开发环境,而我们要学的 rn是一门语言; rnrn5.不要放过任何一个看上去很简单的小编程问题——他们往往并不那么简单,或者可以 rn引伸出很多知识点; rnrn6.会用visual c++,并不说明你会c++; rnrn7.学class并不难,template、stl、generic programming也不过如此——难的是长期坚 rn持实践和不遗余力的博览群书; rnrn8.如果不是天才的话,想学编程就不要想玩游戏——你以为你做到了,其实你的c++水平 rn并没有和你通关的能力一起变高——其实可以时刻记住:学c++是为了编游戏的; rnrn9.看visual c++的书,是学不了c++语言的; rnrn10.浮躁的人容易说:xx语言不行了,应该学yy;——是你自己不行了吧!? rnrn11.浮躁的人容易问:我到底该学什么;——别问,学就对了; rnrn12.浮躁的人容易问:xx有钱途吗;——建议你去抢银行; rnrn13.浮躁的人容易说:我要中文版!我英文不行!——不行?学呀! rnrn14.浮躁的人容易问:xx和yy哪个好;——告诉你吧,都好——只要你学就行; rnrn15.浮躁的人分两种:a)只观望而不学的人;b)只学而不坚持的人; rnrn16.把时髦的技术挂在嘴边,还不如把过时的技术记在心里; rnrn17.c++不仅仅是支持面向对象的程序设计语言; rnrn18.学习编程最好的方法之一就是阅读源代码; rnrn19.在任何时刻都不要认为自己手中的书已经足够了; rnrn20.请阅读《the standard c++ bible》(中文版:标准c++宝典),掌握c++标准; rnrn21.看得懂的书,请仔细看;看不懂的书,请硬着头皮看; rnrn22.别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍; rnrn23.请看《effective c++》和《more effective c++》以及《exceptional c++》; rnrn24.不要停留在集成开发环境的摇篮上,要学会控制集成开发环境,还要学会用命令行方 rn式处理程序; rnrn25.和别人一起讨论有意义的c++知识点,而不是争吵xx行不行或者yy与zz哪个好; rnrn26.请看《程序设计实践》,并严格的按照其要求去做; rnrn27.不要因为c和c++中有一些语法和关键字看上去相同,就认为它们的意义和作用完全一 rn样; rnrn28.c++绝不是所谓的c的“扩充”——如果c++一开始就起名叫z语言,你一定不会把c和 rnz语言联系得那么紧密; rnrn29.请不要认为学过xx语言再改学c++会有什么问题——你只不过又在学一门全新的语言 rn而已; rnrn30.读完了《inside the c++ object model》以后再来认定自己是不是已经学会了c++; rnrn31.学习编程的秘诀是:编程,编程,再编程; rnrn32.请留意下列书籍:《c++面向对象高效编程(c++ effective object-oriented soft rnware construction)》《面向对象软件构造(object-oriented software constructio rnn)》《设计模式(design patterns)》《the art of computer programming》; rnrn33.记住:面向对象技术不只是c++专有的; rnrn34.请把书上的程序例子亲手输入到电脑上实践,即使配套光盘中有源代码; rnrn35.把在书中看到的有意义的例子扩充; rnrn36.请重视c++中的异常处理技术,并将其切实的运用到自己的程序中; rnrn37.经常回顾自己以前写过的程序,并尝试重写,把自己学到的新知识运用进去; rnrn38.不要漏掉书中任何一个练习题——请全部做完并记录下解题思路; rnrn39.c++语言和c++的集成开发环境要同时学习和掌握; rnrn40.既然决定了学c++,就请坚持学下去,因为学习程序设计语言的目的是掌握程序设计技 rn术,而程序设计技术是跨语言的; rnrn41.就让c++语言的各种平台和开发环境去激烈的竞争吧,我们要以学习c++语言本身为主 rn; rnrn42.当你写c++程序写到一半却发现自己用的方法很拙劣时,请不要马上停手;请尽快将 rn余下的部分粗略的完成以保证这个设计的完整性,然后分析自己的错误并重新设计和编 rn写(参见43); rnrn43.别心急,设计c++的class确实不容易;自己程序中的class和自己的class设计水平是 rn在不断的编程实践中完善和发展的; rnrn44.决不要因为程序“很小”就不遵循某些你不熟练的规则——好习惯是培养出来的,而 rn不是一次记住的; rnrn45.每学到一个c++难点的时候,尝试着对别人讲解这个知识点并让他理解——你能讲清 rn楚才说明你真的理解了; rnrn46.记录下在和别人交流时发现的自己忽视或不理解的知识点; rnrn47.请不断的对自己写的程序提出更高的要求,哪怕你的程序版本号会变成version 100. rnxx; rnrn48.保存好你写过的所有的程序——那是你最好的积累之一; rnrn49.请不要做浮躁的人; rnrn50.请热爱c++! rnrn转! 论坛

我的一点编程观点 打字练习

10-01

编程随想(1) rnrn编程三要素:rnrn 1. 编程语言rnrn 2. 软硬环境rnrn 3. 程序员rnrn编程语言: (1) 抽象度与进化:rnrn 编程语言的发展是更易于使用,但代价是:缩小你的权限.编程到最后无非都是将指令变成机器语言来与硬件对话----汇编语言基本就是直接和机器对话,但很难让人接受它的非生活化----语言代码的可读性不高.而高级语言的抽象度更高也就是说他更生活化.于是他也就失去了关键的部分----它离机器硬件太远了而不能直接控制它于是也就失去了不少控制权限.也就是说语言的发展方向应是趋向于两点: 语言的易用性和对硬件的控制权限的不减少性.rnrn(2) 方向问题: rnrn 编程语言的选择----没有最好的,只有更合适的.编程语言在进化中不停的在被同化,从数据库和高级编程语言的合并,到C# 的推出,无不透出合并的发展趋势.但至少短时间内不会有哪一种语言的出现代替所有的工作,所以选择编程语言的学习是一个极其重要的方向问题,并不是大的编程语言就能解决你工作中的每一个问题.选择中你应该知道自己以后会干什么或是你要解决什么样的问题.明确问题以后,便是选择合适的编程语言.rnrn当然,如果你真的想去学编程.了解更多的编程语言是有好处的.也是必要的.rnrn----没有人用所有的编程语言开发软件,但是也没有人用一种语言成为合格的程序员,rnrn软硬环境: (1) 环境与编程.rnrn编程不等于玩鼠标或简单的编码.不管怎样硬件是最终的执行者.不考虑编程的移植性或硬件是否支持而编出的程序无疑只能适用于你的机器.rnrn任何的开发都要受制于软硬环境.所以每一次开发的开始都是一次新的学习里程的开始.因为你要熟悉程序执行中的每一个细节,它在一个怎样的环境中被执行----这决定了程序是否能被顺利的执行.没有合适的泥土再好的花也不能成活.养花的人没有不研究泥土的,很简单的道理.rnrn程序员: (1) 现实:rnrn 程序员的概念在改变.应该清楚的是程序员不等于编码机器.思维能力是做程序员的关键,本来拥有无穷的创造力是程序员的骄傲,而现在程序员的工作确是更像一种资料管理员那样来搜集和组合现成的编码.于是更多的软件大同小异,更多的软件没有创意,更多的软件依赖广告宣传.rnrn (2) 素质与要求:rnrn 程序员应是编程要素里最重要的部分,那是创造的源泉.在这里迸发出的思想的火花是一切创造的开始 而程序员本身最重要的就是要有创意.软件开发中的”开发”二字指的就是创意.rnrn 程序员要不停的学习新的技术,计算机技术日新月异,也许你花费很长时间写出的东西会被一个初出茅庐的小子用一项新的技术打败,而他却只用了比你少了多得多得时间,始终不停的学习是你永远手拿最厉害的武器.rnrnrnrn三要素: 编程语言,软硬环境,程序员.rnrn 编程语言需要有人逻辑运用,软硬环境要有人去合理组合或与链接,一切的工作都要有程序员来做.总之,三要素中,程序员是重点.rnrn rnrn程序员如何认识编程和编程语言:rnrn 编程有道.编程的道其实更是你进步的保证,除非你也想做一个现实中为数挺多的伪程序员----那种只会机械编码没有创意思维的代码管理员..rnrn遵守一些自以为豪的规则,可以让你更高兴自己拥有这种能力.rnrn那”法则”是什么呢? 如果你乐于为这项工作付出一切,那至少你已经无形中开始遵守这种法则了.因为,你高兴于让电脑做你想要他做的事情,你一想到这种能力你就会产生悸动.有一种时刻想运用它的想法----支配机器为人类工作是一种伟大的工作和能力.rnrn另外,如果你认识到编程是一种艺术----为任何的艺术献身都是一种该为之自豪的事情.程序赋予了冷冰冰的机器以生命,它就是机器的灵魂,而我们正让这种灵魂更加聪明.这一切都源于我们的认识,对编程的认识.这就是编程----它是一种创造艺术的活动.rnrn编程语言是我们的工具就像绘画不能离开画笔一样----如此这样,软硬环境就是我们的画纸,画师熟悉了画纸和画笔后要的就是它的想象力和技术了,技术是硬性的东西,你在系统和正确的学习中会得到它----当然,应用正确的学习方法并不容易,现实中有太多的歧途.而想象力有一些源于你天生的本能,说回来还是思维方式,当然正确的后天培养会增加或改正你的这种能力.rn 论坛

关于学习ASP和编程的28个观点

09-06

1.不要放过任何一个看上去很简单的小编程问题——他们往往并不那么简单,或者可以引伸出很多知识点; rnrn2.会用asp,并不说明你会asp; rnrn转自:动态网制作指南 www.knowsky.comrn3.看asp的书,是学不了asp语言的; rnrn4.浮躁的人容易说:asp语言不行了,应该学yy;——是你自己不行了吧!? rnrn5.浮躁的人容易问:我到底该学什么;——别问,学就对了; rnrn6.浮躁的人容易问:asp有钱途吗;——建议你去抢银行; rnrn7.浮躁的人容易说:我要中文版!我英文不行!——不行?学呀! rnrn8.浮躁的人容易问:asp和yy哪个好;——告诉你吧,都好——只要你学就行; rnrn9.浮躁的人分两种:a)只观望而不学的人;b)只学而不坚持的人; rnrn10.把时髦的技术挂在嘴边,还不如把过时的技术记在心里; rnrn11.学习编程最好的方法之一就是阅读源代码; rnrn转自:动态网制作指南 www.knowsky.comrn12.在任何时刻都不要认为自己手中的书已经足够了; rnrn13.看得懂的书,请仔细看;看不懂的书,请硬着头皮看; rnrn14.别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍; rnrn15.和别人一起讨论有意义的asp知识点,而不是争吵asp行不行或者yy与zz哪个好; rnrn16.学习编程的秘诀是:编程,编程,再编程; rnrn17.请把书上的程序例子亲手输入到电脑上实践,即使配套光盘中有源代码; rnrn18.把在书中看到的有意义的例子扩充; rnrn转自:动态网制作指南 www.knowsky.comrn19.经常回顾自己以前写过的程序,并尝试重写,把自己学到的新知识运用进去; rnrn20.不要漏掉书中任何一个练习题——请全部做完并记录下解题思路; rnrn21.就让asp语言的各种平台和开发环境去激烈的竞争吧,我们要以学习asp语言本身为主 rnrn22.决不要因为程序“很小”就不遵循某些你不熟练的规则——好习惯是培养出来的,而 rn不是一次记住的; rnrn23.每学到一个asp难点的时候,尝试着对别人讲解这个知识点并让他理解——你能讲清 rn楚才说明你真的理解了; rnrn转自:动态网制作指南 www.knowsky.comrn24.记录下在和别人交流时发现的自己忽视或不理解的知识点; rnrn25.请不断的对自己写的程序提出更高的要求,哪怕你的程序版本号会变成version 100. rnxx; rnrn26.保存好你写过的所有的程序——那是你最好的积累之一; rnrn27.请不要做浮躁的人; rnrn28.请热爱asp! rnrn更多....http://www.webhot.cn/ShowArticle.asp?ArticleID=338 论坛

10家不错的iphone编程资源站

12-12

随着iPhone取得巨大成功,学习如何在这样一个新的平台上面开发软件成了编程人员和开发者的必修课了,谁都不想错过这么一个大蛋糕。几乎所有的主要游戏开发者都在重新思考如何把他们的经典游戏放到iPhone平台上来。以下我们就介绍网络上一些比较重要的编程资源站点。rnrn1. [url=http://developer.apple.com/iphone/]Apple iPhone Developer Center Website[/url]rn 当然,这是iPhone所有资源的中心。rnVisit the [url=http://developer.apple.com/iphone/]ADC[/url].rnrn2. [url=http://icodeblog.com/2008/10/28/iphone-programming-tutorial-animating-a-ball-using-an-nstimer/]Animating a Ball Using An NSTimer[/url]rn 今天我将向你展示如何通过移动屏幕上面的球来做一些简单的动画。我们不会用到OpenGL ES来完成这些,而只用简单的NSTimer和UIImageView。rnSee the Tutorial [url=http://icodeblog.com/2008/10/28/iphone-programming-tutorial-animating-a-ball-using-an-nstimer/]here[/url].rnrn3. [url=http://www.stanford.edu/class/cs193p/cgi-bin/index.php]Stanford iPhone Programming Classes Material[/url]rn拥有很不错PDF教程库来帮助你掌握iPhone编程rnVisit and download your favorite ones [url=http://www.stanford.edu/class/cs193p/cgi-bin/index.php]here[/url].rnrn4. [url=http://www.ibm.com/developerworks/opensource/library/os-eclipse-iphone/]IBM: Develop iPhone Web applications with Eclipse[/url]rn 学习利用Aptana的开发插件Eclipse和iUi框架来创建iPhone网站。观摩Javadoc Viewer的开发,提供用户界面的建议,并且了解iphone软件的开发动向。rnVisit the well documented material from IBM [url=http://www.ibm.com/developerworks/opensource/library/os-eclipse-iphone/]here[/url].rnrn5. [url=http://www.iphonewebdev.com/]iPhone Developers Community at iphonewebdev.com[/url]rn 这个网站是一个web开发者互相帮助开发iphone上最好的web程序的社区。Examples [url=http://www.iphonewebdev.com/examples/]here[/url]rnVisit phonewebdev.com [url=http://www.iphonewebdev.com/]here[/url].rnrn6. [url=http://www.marketcircle.com/iphoney/]iphoney[/url]rn 基于Safari的iPhone模拟器帮助你在发布前完善你的程序rnDownload iPhoney [url=http://www.marketcircle.com/iphoney/]here[/url].rnrn7. [url=http://speckyboy.com/2008/07/18/35-free-icon-sets-for-your-iphone-pimp-it-up/]35 Free Icon Sets for your iPhone[/url]rn 收集了最为精美,易用的iphone图标以便你用在自己的程序上rnVisit speckyboy.com [url=http://speckyboy.com/2008/07/18/35-free-icon-sets-for-your-iphone-pimp-it-up/]here[/url].rnrn8. [url=http://nettuts.com/misc/learn-how-to-develop-for-the-iphone/]Learn How To Develop For The iPhone[/url]rn 我们将教你如何知道一个用户是否使用iPhone来访问这个页面,并且探测他是水平的还是竖直的浏览。rnCheck this well explained tutorial [url=http://nettuts.com/misc/learn-how-to-develop-for-the-iphone/]here[/url].rnrn9. [url=http://weblog.openlaszlo.org/archives/2007/09/iphone-application-development-step-by-step/]iPhone application development, step by step[/url]rn 知道Apple采用Ajax作为iPhone程序开发的SDK时,我们很兴奋能够为它开发一个OpenLaszlo程序rnCheck these interesting tutorials for the iPhone application development [url=http://weblog.openlaszlo.org/archives/2007/09/iphone-application-development-step-by-step/]here[/url].rnrn10. [url=http://iphonetoolbox.com/]iPhone Toolbox[/url]rn 最为全面的iPhone资源网站之一,包含成百的优质教学和技巧文档,让你的开发过程变得简单。rnVisite the iPhonetoolbox.com [url=http://iphonetoolbox.com/]here[/url]. 论坛

没有更多推荐了,返回首页