问题一:学电脑编程有前途吗 1要入对门,先问问自己是否喜欢目前的工作,如果不喜欢赶紧该行,趁现在还年轻。
2兴趣是很重要的,兴趣是成功的动力,如果你觉得喜欢编程,打心里喜欢写程序,觉得写出程序心里新有成就感那么就继续干下去。
3提早规划,趁现在年轻,早点给自己规划一下,比别人早做准备自然就早达到成功。
以上是个人几点总结,不是上面大道理,觉得有帮助就顶下吧!
问题二:软件编程有前途吗 我是软件工程专业的学生,这个专业发展前景很好,具体我自己说不清。这是软件工程的发展方向:一、关于企业计算方向企业计算(Enterprise puting)是稍时髦较好听的名词,主要是指企业信息系统,如ERP软件(企业资源规划)、CRM软件(客户关系管理)、SCM软件(供应链管理,即物流软件),银行证券软件,财务软件,电子商务/政务(包括各种网站),数据仓库,数据挖掘,商务智能等企业信息管理系统
企业计算领域对人才的需求显然永远是数量最大的,因为这是计算机应用最多的领域 搞这方面的好处是:
(1)人才需求量极大,从事企业计算的公司在IT企业中占了大多数。除非在专业上一无特长,一般在这一领域总能找到工作。
(2)这方面的入门门槛相对较低(如果你的软件功底不是很深,可考虑这一领域)
(3)这方面的大公司较多,大公司要赚大钱,所以多将精力花在企业计算业务上如果将来想
到大公司找一份相对稳定的工作,从事这方面机会要大很多。
但从事这一领域的缺点也是明显的:
由于这方面的入门门槛相对较低,虽然这方面的人才需求量是最大的,但将来竞争对手会较多。您会发现,即使他原不是学IT专业的人,也许他突击几个月后,做得照样像模像样。特别是当您年纪渐大后,您可能会发现,后面的年轻人可能很容易追上你的水平。如果您将来到国外去工作,你可能会发现从事这领域的人更多且高手如云。当然,若您在这一领域经过多年企业经验,达到较高境界(如能设计软件架构),则身价永远是高的。国内在这方面人才领域的主要问题是,有经验的高手太少,皮毛了解的人太多。
从事企业计算领域,最重要的技能型技术课程是
(1)J2EE架构与程序设计
(2)大型数据库系统(如Oracle)
(3)基于UML的系统分析与设计。
如果说还有什么重要的技能,还可将XML与Web Service技术包含进来,若您在这几个领域掌握较好,则不愁找不到工作。
其中尤其以J2EE最为重要,目前J2EE已成为企业计算软件开发的最主要平台。希望同学无论将来想从事何种方向,都应学一下J2EE课程,至少可为将来找工作备一手关键功夫。包括想从事嵌入式或其它领域的同学,也是很有必要学一下J2EE的,毕竟J2EE是目前最重要的平台之一,即使您将来不想从事企业计算领域,了解一下J2EE也是必要的,就像一门常识课程一样。
其它与企业计算关系较密切的技能还包括:Dot Net架构与程序设计、软件测试技术、软件配置管理,该领域较高层次的技能包括数据仓库技术、构件与中间件技术、设计模式等。
像恭信协议分析与网络程序设计,Unix系统管理等也属有些关系的课程。
只一个J2EE便是博大精深的,足够你啃下去的,钻研下去,您会发现你还要学的相关知识还有很多(包括EJB、XML、Web Service、Design Pattern等)。
问题三:我自学计算机编程有前途吗 1、 程序员意味着要编程序。(如果你仅仅想得到一份高薪水的工作,喝喝咖啡就等老板发薪水,我奉劝你还是另找一份更合适的工作,譬如练摊,真的,兄弟,这份工作不适合你)
2、你是学文的还是学理的,编程序也许需要浪漫,但更需要逻辑和严谨。(说坦白点就是,在你没有找到乐趣以前,它很枯燥)
3、你有对新技术追求的热情吗?你有刨根问底的探索精神吗?(热情绝对是最重要的!你仔细思考一下自己的性格适合当程序员吗?)
4、当程序员决不是什么好差事,时刻需要学习,需要思考。(直到你成为那个可以引导别人去学习和思考的人,你才可以偷偷的嘿嘿笑,又一群傻蛋)
5、程序员的未来很迷茫。(但我认为关键看你自己!我希望你是一个有追求的人,不仅仅是混碗饭吃。因为真正的乐趣在于创造;如果你能改变软件业的历史,那才是英雄;不想成为Bill Gates,不想成为Dennis Ritchie和 Bjarne Stroustrup,我会说你没有追求。
问题四:电脑编程工作有前途吗 有啊,前提是你学好了。
问题五:软件开发现在学习有前途吗 5分 没有!
因为是收到的求助提问,所以回答下。本人对程序员尊敬,但个人觉得这个职业其成长曲线,还不如民工(因为民工后期就是包工头、承建商、甚至地产商)。
1、我不是这个行业的,但身边有朋友是搞这个行业的。
他以前就是软件开发出生,那还是九十年代末,那时搞软件开发的少,比现在挣钱。即使如此,他坐上老总这个位置,也是历尽千辛、也是离开了这个行业。
从事软件开发,基本上未来发展空间很小、也非常累。也很难改行!
这个朋友后来是完全抛弃了软件技术,又从新学了经济管理、法律,然后才从这个行业走出来。
他现在也算成功人士了,再看看他的老同学,只要还在这个行业内的,基本都还是一个技术人员,虽然有的享受副总级待遇,但非常累,大把年龄了都还要学习技术。
2、而我们看看同龄人,若像程序员这么努力,早就达到一个新高度,处于半退休状态了。搞下管理、调研下市场、做决策就可以了。而且还能把自己创造的资源(如人脉、经验)传递给下一代,你能把软件技术传递给下代吗。
3、这个问题其实也很容易判断,你看看成功人士,比如有钱、有权的人,谁会让自己的孩子去搞软件开发!?现在搞这个行业的基本都是农村来的。当不好抉择时,跟着成功人士走就行了。
举个极端的例子:
A名牌大学毕业,程序学的非常好;B、普通大学毕业,玩了4年啥都没学到。
第1年:A,参加工作起薪1万。B、只能搞销售,底薪1000,业务水平差,总收入也就1千多;
第2年:A,月薪11500B、底薪1000,只做了一年销售,人脉还没有,营销也才刚入门,总收入2000;
第3年:A,月薪13W B、升为部门营销主管。底薪2000,总收入4000
第4年:A,月薪15W B、还是部门营销主管,底薪2000,总收入5000
第5年:A,跳槽月薪2W 升为技术总监 B、跳槽到更正规的公司,还是部门营销主管,底薪3000,总收入5000
第6年:A、月薪2W B、底薪3000,总收入8000
第7年: A月薪22W B、底薪3000,总收入1万,参加公司领导层培训。
第8年:A月薪25W B、底薪5000,晋升为营销总管(副职),参与到公司决策层面。总收入15万。
第9年:A月薪3W(销售副总级待遇),B、底薪近万,总收入过3万,参与公司决策层面1年后,整个公司的运营,高、中、低基本都了解了。人脉也有了。
第10年:A公司拆员,降薪留任。B、公司经营遇到困难,离职,开始自己创业。由于人脉(比如有老客户做第一单)、如何经营公司等都有经验。第一年没有亏本,年总盈余2万。
第11年:A公司在新的转折点,必须启用新的年轻人。不堪忍受主动提出离职。
离职后开始创业,有技术但无人脉、无经营公司的经验,这种情况下,我无法预见其能如何创业、如何融资、如何接第一单。
B、经过第一年的努力,站稳脚跟,开始步入正途,年总盈余50万。
第12年:从这年开始,A、B的人生将发生截然不同的变化。A或许就开始走下坡了。而B才真正开始上路,这年年总盈余超过100万,并且向企业家转变的3年规划将出台。他们的层次已经发生变化。
你还是比较聪明的,知道借智!人要成功借智、借势都是必须的!>>
问题六:编程会是一个没有前途的工作吗 世人知道你远程开机不好用
问题七:25岁开始学编程,还有前途吗 人生没有失败,学东西什么时候都不晚,个人觉得有些东西不一定太关注所谓的钱途了,要相信自已认真学,如果你学成功了,比别人做得更好了,这才是一种成功。
问题八:计算机编程行业就业前景怎么样 计算机应用专业的就业前景 计算机网络技术专业的就业前景
1、软件编程:前途大好,好多软件开发单位都需要这样的人才,经验和能力很重要,作息时间比较混乱,加班常有,但薪水也高,不用担心失业和饭碗问题。
2、硬件、网络工程:适合网管和技术支持,同样经验和能力很重要,更要敬业,比较辛苦,而且反应力要好,如果网络或硬件出了问题,能马上找到症结并快速解决,前途看好,薪水还不错。
3、作图、设计:对艺术鉴赏力和创造力要求较高,有成功案例作品,创意好,视觉效果好,可以从事网页制作、网站维护、广告设计等平面的、立体的设计策划工作。
4、软件应用:操作类,技术含量没有上面3类高,当然工资也不会很高。
最重要的就是计算机这个行业的知识更新很快,要不断学习,学校课堂里学的基本是皮毛,也就是基本原理和操作,关键还要亲自动手,而且学校里学的东西好多都已过时,不适应社会发展,应用性较差,这就需要你自觉地有针对性地多学一些东西,以利于以后的就业。
一、是个很好的专业,就业空间较大,效益也好
二、请看资料:
1、计算机网络技术
(1) 培养目标
掌握计算机网络技术专业的基本知识、基本技能,具备规划、构建局域网,维护管理网络系统及网络软件编程能力的技术应用性人才。
(2) 就业方向
本专业毕业生可在各类企事业单位、计算机软件公司等行业从事计算机网络系统的规划和组网、网络系统的管理和维护、各类网站的建设与管理、网页制作、网络应用软件的开发以及计算机网络相关软硬件的营销工作及技术支持等工作。通过2-5年的锻炼、提高和深造,可以成为网络管理员、网络工程师、网页设计师等。
(3) 主要专业课程
计算机应用基础、C语言程序设计、数据库应用基础、计算机组成原理、数据结构、计算机网络技术、网页制作技术、面向Net的Web应用程序设计、网络集成与设备配置、数据库开发技术、网络与信息安全等及上述课程相应的实践课程和实训。
问题九:学习电脑编程有前途吗? 实际中常用的编程语言有:JAVA、C++、C语言、SQL、C#这些都是高级语言,而汇编是低级语言,不建议学习。java是相对比较好学,而且就业前景好,应用面广泛,薪资也相对较高的编程语言。
java技术好的话,工资会很高,都是拿年薪的。技术一般有项目经验的话,相比其他行业也是偏高的,月薪一万总是有的。
1、程序员意味着要编程序。(如果你仅仅想得到一份高薪水的工作,喝喝咖啡就等老板发薪水,我奉劝你还是另找一份更合适的工作,譬如练摊,真的,兄弟,这份工作不适合你)
2、你是学文的还是学理的,编程序也许需要浪漫,但更需要逻辑和严谨。(说坦白点就是,在你没有找到乐趣以前,它很枯燥)
3、你有对新技术追求的热情吗?你有刨根问底的探索精神吗?(热情绝对是最重要的!你仔细思考一下自己的性格适合当程序员吗?)
4、当程序员决不是什么好差事,时刻需要学习,需要思考。(直到你成为那个可以引导别人去学习和思考的人,你才可以偷偷的嘿嘿笑,又一群傻蛋)
5、程序员的未来很迷茫。(但我认为关键看你自己!我希望你是一个有追求的人,不仅仅是混碗饭吃。因为真正的乐趣在于创造;如果你能改变软件业的历史,那才是英雄;不想成为BillGates,不想成为DennisRitchie和BjarneStroustrup,我会说你没有追求。有个关于程序员未来的笑话,也许你还没听过,你该听一听,摘抄如下:
一个程序员对自己的未来很迷茫,于是去问上帝。
“万能的上帝呀,请你告诉我,我的未来会怎样?”
上帝说“我的孩子,你去问Lippman,他现在领导的程序员的队伍可能是地球上最大的”
于是他去问Lippman。
Lippman说“程序员的未来就是驾驭程序员”
这个程序员对这个未来不满意,于是他又去问上帝。
“万能的上帝呀,请你告诉我,我的未来会怎样?”
上帝说“我的孩子,你去问Gates,他现在所拥有的财产可能是地球上最多的”
于是他去问Gates。
Gates说“程序员的未来就是榨取程序员”
这个程序员对这个未来不满意,于是他又去问上帝。
“万能的上帝呀,请你告诉我,我的未来会怎样?”
上帝说“我的孩子,你去问侯捷,他写的计算机书的读者可能是地球上最多的”
于是他去问侯捷。
侯捷说“程序员的未来就是诱惑程序员”
这个程序员对这个未来不满意,于是他又去问上帝。
“万能的上帝呀,请你告诉我,我的未来会怎样?”
上帝摇摇头“唉,我的孩子,你还是别当程序员了”)
6、当程序员还是很有乐趣的。(当你学到新知识时,当你有新的思想见解时,当你有新的产品问世时,和知己探讨你的成果时我问你,觉得这些是乐趣吗?)
7、当程序员不易也不难。(世间事有难易乎?为之;不为。你有决心和信心吗?)
8、你真的要当程序员?是你自己的想法?
9、你舍得花钱买书吗?(读好书绝对是学习编程的最佳捷径。你一定会说,现在电脑书籍真他XX的贵,没法子,谁让知识和技术在人家的脑袋,在人家的书里呢;等你写书时可以把价格定低一点,记着还有好多没钱但想买书的兄弟很困难呀。要舍得买书,买好书,不好的的书不如不读,其害大于其益,关于买什么书,你可以问高手或看候捷的书评;准备一个小本子记录你想买的书的名字,逛书店时看看,如果好就买下,记住要读,别光买不看。)10、我告诉你,程序就是:任何有目的的、预想好的动作序列,它是一种软件。
11、编程序就是编写程序。
12、你想好了吗?(如果你想好了还是决定要当程序员,可以继续往下读;否则,你可以继续寻找别的出路了。)
(三)一个程序员应该具备的基础知识和概念
1、计算机是有什么组成的,CPU是什么东西,其工作原理是什么。(对于这些以及下面将要提到的概念我不会告诉你什么答案,你可以看相应的教材,关于教材我会在下一部分详述,记住理解最重要!)
2、机器语言和微指令集的概念。
3、程序的概念。
4、汇编语言是低级语言但不是机器语言。
5、高级语言主要有那些?(C,C++,Basic,Pascal,Fortran,C#,Java等等;如果你是中国软件业的英雄,你也写一门语言,最好不用英语)6、编译程序和解释程序的概念和其原理。(编译器是高手和专家编写的)
7、HTML、XML等是标识性语言。
8、Prolog是人工智能语言。
9、操作系统OS的概念和原理。(Windows98,Windows2000,WindowsNT,UNIX,Linux,等等都是OS,还有一些实时OS,嵌入OS,编这些的绝对是高手)
10、Windows编程说白了就是WindowsAPI的调用。(中国的程序员很多只是会编windows程序,用的是VB,我的建议是这些程序员顶多只是低级编码员,我称其是coder)
11、VC++、VB、BC、BCB、Delphi、VF等都只是编程的工具和环境,不是编程语言。
12、面向结构的设计概念。
13、面向对象的概念。(好好理解,兄弟,这个东西还是很重要的)
14、软件工程的概念和原理。(如果你想当老总就需要好好研究了,系统分析员比编码员要高一个等级,薪水也高哟)
15、数据库的概念。(要熟悉一些著名的数据库系统和语言的名字,如Orcle,SQL,DB2,DyBase等)
16、了解网络概念。
17、了解多媒体概念。
18、熟悉和掌握数据结构和基本算法。
19、是不是要求太高了,别着急慢慢来,进步在不知不觉之中。(一旦开始学习,一个月以后你就会有一个基本的概念;两个月以后你就会感觉自己有了全面的基础知识;当你知道编程序是怎么回事时,说明你已经入门了。也有很多人编了很多年程序还没有入门呢,你不会希望自己步其后尘吧。要有信心和耐心。沉不住气怎么能成大事?!)
(四)教材推荐
——-推荐的教材主要还是针对概念来的,最好选用名校的教学用书。
1、《计算机组成原理》(熟悉)
2、《数据结构》(掌握)
3、《操作系统》(了解->熟悉)
4、《TheClanguage》(掌握)
5、《编译原理》(了解原理)
6、《汇编语言》(了解)
7、《计算机网络》(了解)
8、《软件工程》(了解)
9、《关系数据库》(熟悉)
10、《TheC++Languege》(掌握)
11、《面向对象设计》(掌握;结合C学习)
(五)一些经验和体会
1、真正的程序员用C;(一位专家说的)
2、动手去编程序;
3、动脑去思考;
4、要有良好的编程风格;
5、读书,读好书,尽量读原版书!(我反复强调这一点,读书要有选择,坚持读好书,名家出的经典书,不要浪费实践在一些粗制滥造的书上面;坚持博览群书)
6、有自己的学习计划;
7、总结自己的经验教训;(准备一个笔记本,记录错误和心得)
8、不要怕学新东西;
9、要有软件工程的思想;
10、善于发现问题,然后去寻找答案;
11、向高手请教;(要虚心直到你成为高手)
12、和同行交流;(不善于交流肯定不行)
13、懂得软件的实质,不要被千变万化的表象所迷惑;
14、真正要学习用的是编程语言和方法,不是什么库,什么类,什么工具;(学用那些什么库都比较简单,但光会这些库,我觉得还远远不够)
15、学习wiodows编程主要是学习windowsOS和win32API;
16、有空了解一下嵌入式开发;
17、有空了解一下PDA软件开发;
18、了解一下NET框架和C#语言,也许它是你新的衣食父母;
19、要有耐心,不要作浮躁的人;20、对程序加注释,并保留你的老程序;
21、学到的东西越多,了解的越多,你就越接近专家;
22、有空去逛逛CSDN,那里有你很多知己;
23、要有信心成为一个优秀的程序;
(六)一些好书的推荐
1、《TheCProgramminglanguage》(Keinighan&DennisRitchie1988)
2、《TheCProgrammingLanguague》(BjarneStroustrup1997)
3、《InsideTheCObjectModel》(lippmans)
4、《EffectiveC》(同上)
5、《MoreEffectiveC》(同上)
6、《Exceptionalc》
7、《C面向对象高效编程》
8、《设计模式》
9、《ThinkingInC》
10、《TheStandardCBible》(一般推荐)
11、《TheArtofComputerProgramming》
12、《ProgrammingWindows》(CharlesPetzold)
13、《VC50技术内幕》
14、《MFC深入浅出》
15、《软件需求》
16、《AdvancedWindows》
17、《Cprimer》
18、《win32程序员参考手册》
19、《用TCP/IP进行网际互连》
20、《COM本质论》
(七)学习计划
——-这个学习计划是我个人定的,也共享给大家参考一下,共同进步吧。1、《计算机组成原理》
2、《操作系统》
3、《数据结构》
4、《汇编语言》
5、《C》
6、《C》
7、《VC技术内幕》
8、《ProgrammingWindows》
9、《深入浅出MFC》
10、《AdvancedWindows》
11、《InsideTheCObjectModel》
12、《ThinkinginC》
13、《EffectiveC》
14、数据库
15、网络
16、嵌入式OS和编程
17、硬件单片机
18、NET和C#
19、软件工程
20、UNIX和Linux
以下这些时刻让我体会到“知识的实用与浪漫”!
人们常说,知识就像一盏明灯,能够照亮前方的路。但是,知识不仅仅只是为了指引我们走向成功的道路,它还有着许多令人惊艳的浪漫与美好。在我的学习生涯中,有许多时刻让我感受到了知识的实用性和浪漫气息。
首先,我想谈谈我在阅读经典文学作品时的体验。读经典,不仅能够让我领略到文学的魅力和深度,更重要的是,它们帮助我了解历史和文化。在读《红楼梦》时,我深深地感受到了封建社会的危机和变革。在读《傲慢与偏见》时,我又能够体会到英国社会的等级制度和社交习惯。这些经典作品不仅让我拓宽了视野,也让我更加深入地了解了人性和社会。
其次,我还想分享一下我在实践中运用知识的体验。作为一名学习者,学习知识当然是为了能够更好地应用它们。在我的学习过程中,我学习了编程、设计和营销等诸多领域的知识,并在实践中加以应用。我曾经制作过一个App,将学习笔记和时间管理功能结合在一起,帮助我更好地管理我的学习生活。我也曾经为一家新兴公司设计了一份市场调研报告,通过数据分析和营销策略,让该公司得以顺利进入市场。这些实践过程不仅让我感受到知识的实用性,也让我体会到知识能够带来的巨大成就感和满足感。
最后,我想谈谈我在艺术领域中的体验。艺术是一种浪漫而美好的事物,它可以激发人们的想象力和创造力。在学习音乐和绘画时,我深深感受到了艺术的魅力。在绘画中,我能够表达自己的情感和想法,将我的内心世界呈现在画布上。在音乐中,我能够感受到音符和旋律带给我的愉悦和安宁。艺术让我感受到了生活的美好和诗意,让我更加热爱这个世界。
在这些时刻中,我深刻地感受到了知识的实用和浪漫。知识不仅能够帮助我们更好地认识这个世界,还能够带来许多美好的体验和感受。正是这些时刻让我更加热爱学习和探索,也让我更加珍惜生活中的每一个美好瞬间。
人的生命中总有那么些时刻,让我们不仅知道知识的实用,更感受到它的浪漫。这些时刻或许是平凡的,或许是特殊的,但它们都让我们对世界充满了更多的好奇和热爱。
一、探索自然
自然是一个充满奇妙和未知的世界,当我们走进自然,就能够感受到知识的实用和浪漫。在自然中,我们可以看到许多美丽的景象,也可以发现许多奇异的现象。例如,在夜晚仰望星空,我们可以感受到宇宙的浩瀚和神秘;在森林中徜徉,我们可以感受到生命的力量和生态的平衡。通过探索自然,我们不仅可以获得知识,更能够感受到自然的美妙和奇迹。
二、解决问题
解决问题是知识实用的最好体现。当我们面临问题时,我们需要运用知识来解决它。例如,在学习数学时,我们需要运用数学知识来解决数学问题;在学习编程时,我们需要用编程知识来解决编程问题。解决问题的过程中,我们不仅能够获得知识,更能够感受到知识的实用性和重要性。
三、学习新知识
学习新知识是让人感受到知识的浪漫的最好方式之一。当我们学习新知识时,我们会发现它是如此的神奇和有趣。例如,在学习历史时,我们可以了解到过去的文明和人类的发展历程;在学习文学时,我们可以感受到作家的情感和思想;在学习科学时,我们可以了解到自然界的奥秘和规律。学习新知识不仅能够让我们获得知识,更能够让我们感受到知识的浪漫和魅力。
四、创造艺术
创造艺术是让人感受到知识的浪漫的另一个途径。艺术是一种表达思想和情感的方式,当我们创造艺术时,我们可以感受到知识的美妙和艺术的魅力。例如,在绘画时,我们可以感受到色彩和形式的美妙;在音乐中,我们可以感受到音乐的节奏和和谐;在写作中,我们可以感受到语言的魅力和表达的力量。通过创造艺术,我们不仅能够获得知识,更能够感受到知识的浪漫和创造的快乐。
总之,知识的实用和浪漫是相辅相成的。通过探索自然、解决问题、学习新知识和创造艺术,我们可以感受到知识的实用和浪漫。让我们在生活中积极探索和学习,感受知识的美妙和奇妙。
在你学习编程之前思考一下你的目标,当你有最终目标时道路会更加的清晰。那么,你想要写什么?网站?游戏?iOS或者Android应用?或是你是想自动化完成一些乏味的任务让你有更多的时间看窗外的风景?也许你只是想更具有就业竞争力找个好工作。所有的这些都是有价值的目标,这些目标都是你编程学习推动力的一部分,没有推动力的人,是无法在略显枯燥的漫长学习之旅中走远的。
不要浮躁
BadprogrammingiseasyEvenDummiescanlearnitin21daysGoodprogrammingrequiresthought,buteveryonecandoitandeveryonecanexperiencetheextremesatisfactionthatcomeswithit
不管是在线下还是线上的书店,满目都是《21天学通Java》这种速成书目,它们都承诺在很短一段时间内就让你能够学会相关技术。MatthiasFelleisen在他的著作HowtoDesignPrograms,SecondEdition一书中明确指出了这种「速成」的趋势并予以了以上的讽刺。
所谓的「捷径」或者说「银弹」是不存在的,智者说过,精通某个东西需要10年或10000个小时,也就是汉语中的「十年磨一剑」,所以不用着急,功不唐捐。
培养兴趣
Mostgoodprogrammersdoprogrammingnotbecausetheyexpecttogetpaidorgetadulationbythepublic,butbecauseitisfuntoprogram
_LinusTorvalds
沉醉于编程,编程更是为了兴趣。兴趣是推动力的不竭源泉,保持这种充满兴趣的感觉,以便于你能将其投入到你的10年/10000小时的编程时间中。编程很有趣,那是探索的喜悦。那是创造的喜悦。看到自己亲手完成的作品显示在屏幕上很有趣。有人为你的代码而惊叹很有趣。有人在公共场合称赞你的产品、邻居使用你的产品、以及在媒体上讨论你的产品很有趣。编程应该十分有趣,若并非如此,就找出导致编程无趣的问题,然后解决之。
在这里对于初学者有两个大坑:
如果初学者们只与预先构建好的「发动机和组件」接触(没有理解和思考它们构造的原理),这会严重限制他们在将来构建这些东西的能力,并且在诊断解决问题时无从下手。
第二个坑没有第一个那么明显:幼稚的「整体论」方法有些时候会显得很有效,这有一定的隐蔽性与误导性,但是一两年过后(也许没那么长),当你在学习路上走远时,再想回过头来「补足基础」会有巨大的心理障碍,你得抛弃之前自己狭隘的观念,耐心地缓步前进,这比你初学时学习基础知识困难得多。
但也不能矫枉过正,陷入还原论的大坑,初学时便一心试图做宏大的理论,这样不仅有一切流于理论的危险,枯燥和乏味还会让你失去推动力。这种情况经常发生在计算机科班生身上。
为了更好理解,可以将学习编程类比为学习厨艺:你为了烧得一手好菜买了一些关于菜谱的书,如果你只是想为家人做菜,这会是一个不错的主意,你重复菜谱上的步骤也能做出不赖的菜肴,但是如果你有更大的野心,真的想在朋友面前露一手,做一些独一无二的美味佳肴,甚至成为「大厨」,你必须理解这些菜谱背后大师的想法,理解其中的理论,而不仅仅是一味地实践。但是如果你每天唯一的工作就是阅读那些厚重的理论书籍,因为缺乏实践,你只会成为一个糟糕的厨子,甚至永远成为不了厨子,因为看了几天书后你就因为枯燥放弃了厨艺的学习。
总之,编程是连接理论与实践的纽带,是计算机科学与计算机应用技术相交融的领域。正确的编程学习方法应该是:通过自顶而下的探索与项目实践,获得编程直觉与推动力;从自底向上的打基础过程中,获得最重要的通用方法并巩固编程思想的理解。
作为初学者,应以后者为主,前者为辅。
启蒙
「学编程应该学哪门语言?」这经常是初学者问的第一个问题,但这是一个错误的问题,你最先考虑的问题应该是「哪些东西构成了编程学习的基础」?
编程知识的金字塔底部有三个关键的部分:
算法思想:例如怎样找出一组数中最大的那个数?首先你得有一个maxSoFar变量,之后对于每个数
语法:我怎样用某种编程语言表达这些算法,让计算机能够理解。
系统基础:为什么while(1)时线程永远无法结束?为什么intfoo(){intx=0;return&x;}是不可行的?
启蒙阶段的初学者若选择C语言作为第一门语言会很困难并且枯燥,这是因为他们被迫要同时学习这三个部分,在能做出东西前要花费很多时间。
因此,为了尽量最小化「语法」与「系统基础」这两部分,建议使用Python作为学习的第一门语言,虽然Python对初学者很友好,但这并不意味着它只是一个「玩具」,在大型项目中你也能见到它强大而灵活的身影。熟悉Python后,学习C语言是便是一个不错的选择了:学习C语言会帮助你以靠近底层的视角思考问题,并且在后期帮助你理解操作系统层级的一些原理,如果你只想成为一个普通(平庸)的开发者你可以不学习它。
下面给出了一个可供参考的启蒙阶段导引,完成后你会在头脑中构建起一个整体框架,帮助你进行自顶向下的探索。
完成Codecademy的Python部分。这只是热身部分,尽快完成它,因为你永远只是在浏览器里,你不会学到如何搭建开发环境。在Codecademy这类的编程学习网站学到的那点儿东西,哪怕你只想做一个小的不能再小的项目,你都不知道该从哪儿开始。
完成MIT6001x(中文化)(如果你英语不过关,完成麻省理工学院公开课:计算机科学及编程导论。MOOC是学习编程的一个有效途径。虽然该课程的教学语言为Python,但作为一门优秀的导论课,它强调学习计算机科学领域里的重要概念和范式,而不仅仅是教你特定的语言。如果你不是科班生,这能让你在自学时开阔眼界;课程内容:计算概念,python编程语言,一些简单的数据结构与算法,测试与调试。支线任务:
完成Python核心编程
完成HarvardCS50(如果你英语不过关:完成哈佛大学公开课:计算机科学cs50。同样是导论课,但这门课与MIT的导论课互补。教学语言涉及C,PHP,JavaScript+SQL,HTML+CSS,内容的广度与深度十分合理,还能够了解到最新的一些科技成果,可以很好激发学习计算机的兴趣。支线任务:
阅读《编码的奥秘》
完成《C语言编程》
[可选]如果你的目标是成为一名Hacker:阅读Hacker'sDelight
PS:如果教育对象还是一个孩子,以下的资源会很有帮助:
5-8岁:TurtleAcademy
8-12岁:PythonforKids
12岁以上:MITScratch或KhanAcademy
入门
结束启蒙阶段后,初学者积累了一定的代码量,对编程也有了一定的了解。这时你可能想去学一门具体的技术,诸如Web开发,Android开发,iOS开发什么的,你可以去尝试做一些尽可能简单的东西,给自己一些正反馈,补充自己的推动力。但记住别深入,这些技术有无数的细节,将来会有时间去学习;同样的,这时候也别过于深入特定的框架和语言,现在是学习计算机科学通用基础知识的时候,不要试图去抄近路直接学你现在想学的东西,这是注定会失败的。
那么入门阶段具体该做些什么呢?这时候你需要做的是反思自己曾经写过的程序,去思考程序为什么(Why)要这样设计?,思考怎样(How)写出更好的程序?试图去探寻理解编程的本质:利用计算机解决问题。
设想:
X=用于思考解决方案的时间,即「解决问题」部分
Y=用于实现代码的时间,即「利用计算机」部分」
编程能力=F(X,Y)(X>Y)
要想提高编程能力,就得优化X,Y与函数F(X,Y),很少有书的内容能同时着重集中在这三点上,但有一本书做到了——StructureandInterpretationofComputerPrograms(SICP)《计算机程序的构造和解释》,它为你指明了这三个变量的方向。在阅读SICP之前,你也许能通过调用几个函数解决一个简单问题。但阅读完SICP之后,你会学会如何将问题抽象并且分解,从而处理更复杂更庞大的问题,这是编程能力巨大的飞跃,这会在本质上改变你思考问题以及用代码解决问题的方式。此外,SICP的教学语言为Scheme,可以让你初步了解函数式编程。更重要的是,他的语法十分简单,你可以很快学会它,从而把更多的时间用于学习书中的编程思想以及复杂问题的解决之道上。
PeterNorvig曾经写过一篇非常精彩的SICP书评,其中有这样一段:
Touseananalogy,ifSICPwereaboutautomobiles,itwouldbeforthepersonwhowantstoknowhowcarswork,howtheyarebuilt,andhowonemightdesignfuel-efficient,safe,reliablevehiclesforthe21stcenturyThepeoplewhohateSICParetheoneswhojustwanttoknowhowtodrivetheircaronthehighway,justlikeeveryoneelse
如果你是文中的前者,阅读SICP将成为你衔接启蒙与入门阶段的关键点
虽然SICP是一本「入门书」,但对于初学者还是有一定的难度,以下是一些十分有用的辅助资源:
UdacityCS212DesignofComputerProgram):由上文提到的Google研究主管PeterNorvig主讲,教学语言为Python,内容有一定难度。
HowtoDesignPrograms,SecondEdition:HtDP的起点比SICP低,书中的内容循循善诱,对初学者很友好,如果觉得完成SICP过于困难,可以考虑先读一读HtDP。
UCBerkeleySICP授课视频以及SICP的两位作者给Hewlett-Packard公司员工培训时的录像(中文化项目)
ComposingPrograms:一个继承了SICP思想但使用Python作为教学语言的编程导论(其中包含了一些小项目)
SICP解题集:对于书后的习题,作为初学者应尽力并量力完成。
完成了这部分学习后,你会逐步建立起一个自己的程序设计模型,你的脑子里不再是一团乱麻,你会意识到记住库和语法并不会教你如何解决编程问题,接下来要学些什么,在你心里也会明朗了很多。这时候才是真正开始进行项目实践,补充推动力的好时机。
关于项目实践:对于入门阶段的初学者,参与开源项目还为时过早,这时候应该开始一些简单的项目,诸如搭建一个网站并维护它,或是编写一个小游戏再不断进行扩展,如果你自己的想法不明确,MegaProjectList中选取项目。总之,务必在这时拿下你项目实践的第一滴血。
与此同时,别忘了继续打好根基。为了将来的厚积薄发,在下面这几个方面你还要继续做足功课(注意:下面的内容没有绝对意义上的先后顺序):
计算机系统基础
有了之前程序设计的基础后,想更加深入地把握计算机科学的脉络,不妨看看这本书:《深入理解计算机系统》ComputerSystemsAProgrammer'sPerspective。这里点名批评这本书的中译名,其实根本谈不上什么深入啦,这本书只是CMU的「计算机系统导论」的教材而已。CMU的计算机科学专业相对较偏软件,该书就是从一个程序员的视角观察计算机系统,以「程序在计算机中如何执行」为主线,全面阐述计算机系统内部实现的诸多细节。
如果你看书觉得有些枯燥的话,可以跟一门Coursera上的MOOC:TheHardware/SoftwareInterface,这门课的内容是CSAPP的一个子集,但是最经典的实验部分都移植过来了。同时,可以看看TheCProgrammingLanguage,回顾一下C语言的知识。
完成这本书后,你会具备坚实的系统基础,也具有了学习操作系统,编译器,计算机网络等内容的先决条件。当学习更高级的系统内容时,翻阅一下此书的相应章节,同时编程实现其中的例子,一定会对书本上的理论具有更加感性的认识,真正做到经手的代码,从上层设计到底层实现都了然于胸,并能在脑中回放数据在网络->内存->缓存->CPU的流向。
此外,也是时候去接触UNIX哲学了:KISS-KeepitSimple,Stupid在实践中,这意味着你要开始熟悉命令行界面,配置文件。并且在开发中逐渐脱离之前使用的IDE,学会使用Vim或Emacs(或者最好两者都去尝试)。
阅读《UNIX编程环境》
阅读《UNIX编程艺术》
折腾你的UNX系统
数据结构与算法基础
如今,很多人认为编程(特别是做web开发)的主要部分就是使用别人的代码,能够用清晰简明的方式表达自己的想法比掌握硬核的数学与算法技巧重要的多,数据结构排序函数二分搜索这不都内置了吗?工作中永远用不到,学算法有啥用啊?这种扛着实用主义大旗的「码农」思想当然不可取。没有扎实的理论背景,遭遇瓶颈是迟早的事。
数据结构和算法是配套的,入门阶段你应该掌握的主要内容应该是:这个问题用什么算法和数据结构能更快解决。这就要求你对常见的数据结构和算法了熟于心,你不一定要敲代码,用纸手写流程是更快的方式。对你不懂的数据结构和算法,你要去搜它主要拿来干嘛的,使用场景是什么。
供你参考的学习资源:
《算法导论》:有人说别把这本书当入门书,这本书本来就不是入门书嘛,虽说书名是IntroductiontoAlgorithms,这只不过是因为作者不想把这本书与其他书搞重名罢了。当然,也不是没办法拿此书入门,读第一遍的时候跳过习题和证明就行了嘛,如果还觉得心虚先看看这本《数据结构与算法分析》
CourseraAlgorithms:DesignandAnalysis[Part1]&[Part2]:Stanford开的算法课,不限定语言,两个部分跟下来算法基础基本就有了;英语没过关的:麻省理工学院公开课:算法导论
入门阶段还要注意培养使用常规算法解决小规模问题的能力,结合前文的SICP部分可以读读这几本书:《编程珠玑》,《程序设计实践》
编程语言基础
DifferentlanguagessolvethesameproblemsindifferentwaysBylearningseveraldifferentapproaches,youcanhelpbroadenyourthinkingandavoidgettingstuckinarutAdditionally,learningmanylanguagesisfareasiernow,thankstothewealthoffreelyavailablesoftwareontheInternet
-ThePragmaticProgrammer
此外还要知道,学习第n门编程语言的难度是第(n-1)门的一半,所以尽量去尝试不同的编程语言与编程范式,若你跟寻了前文的指引,你已经接触了:「干净」的脚本语言Python,传统的命令式语言C,以及浪漫的函数式语言Scheme/Racket三个好朋友。但仅仅是接触远远不够,你还需要不断继续加深与他们的友谊,并尝试结交新朋友,美而雅的Ruby小姑娘,Hindley-Milner语言家族的掌中宝Haskell都是不错的选择。但有这么一位你躲不开的,必须得认识的大伙伴—C++,你得做好与他深交的准备:
入门:C++Primer
[可选]进阶:
高效使用:EffectiveC++
深入了解:《深度探索C++对象模型》;C++Templates
研究反思:TheDesignandEvolutionofC++;对于C++这个NecessaryEvil,看这本书可以让你选择是成为守夜人还是守日人。
现实是残酷的,在软件工程领域仍旧充斥着一些狂热者,他们只掌握着一种编程语言,也只想掌握一种语言,他们认为自己掌握的这门语言是最好的,其他异端都是傻X。这种人也不是无药可救,有一种很简单的治疗方法:让他们写一个编译器。要想真正理解编程语言,你必须亲自实现一个。现在是入门阶段,不要求你去上一门编译器课程,但要求你能至少实现一个简单的解释器。
供你参考的学习资源:
《程序设计语言-实践之路》:CMU编程语言原理的教材,程序语言入门书,现在就可以看,会极大扩展你的眼界,拉开你与普通人的差距。
Coursera编程语言MOOC:课堂上你能接触到极端FP(函数式)的SML,中性偏FP的Racket,以及极端OOP(面向对象)的Ruby,并学会问题的FP分解vsOOP分解、ML的模式匹配、Lisp宏、不变性与可变性、解释器的实现原理等,让你在将来学习新语言时更加轻松并写出更好的程序。
UdacityCS262ProgrammingLanguage:热热身,教你写一个简单的浏览器——其实就是一个javascript和html的解释器,完成后的成品还是很有趣的;接下来,试着完成一个之前在SICP部分提到过的项目:用Python写一个SchemeInterpreter
其他
编程入门阶段比较容易忽视的几点:
学好英语:英语是你获取高质量学习资源的主要工具,但在入门阶段,所看的那些翻译书信息损耗也没那么严重,以你自己情况权衡吧。此外英语的重要性更体现在沟通交流上,LinusTorvalds一个芬兰人,一口流利的英语一直是他招募开发者为Linux干活的的法宝,这是你的榜样。
学会提问:学习中肯定会遇到问题,首先应该学会搜索引擎的「高级搜索」,当单靠检索无法解决问题时,去StackOverflow或知乎提问,提问前读读这篇文章:Whathaveyoutried
不要做一匹独狼:尝试搭建一个像这样简单的个人网站,不要只是一个孤零零的About页面,去学习Markdown与LaTeX,试着在Blog上记录自己的想法,并订阅自己喜欢的编程类博客。推荐几个供你参考:JoelonSoftware,PeterNorvig,CodingHorror
小结
以上的内容你不应该感到惧怕,编程的入门不是几个星期就能完成的小项目。期间你还会遇到无数的困难,当你碰壁时试着尝试「费曼」技巧:将难点分而化之,切成小知识块,再逐个对付,之后通过向别人清楚地解说来检验自己是否真的理解。当然,依旧会有你解决不了的问题,这时候不要强迫自己——很多时候当你之后回过头来再看这个问题时,一切豁然开朗。
此外不要局限与上文提到的那些材料,还有一些值得在入门阶段以及将来的提升阶段反复阅读的书籍。ThePragmaticProgrammer就是这样一本程序员入门书,终极书。有人称这本书为代码小全:从DRY到KISS,从做人到做程序员,这本书教给了你一切,你所需的只是遵循书上的指导。
后记
如果你能设法完成以上的所有任务,恭喜你,你已经真正实现了编程入门。这意味着你在之后更深入的学习中,不会畏惧那些学习新语言的任务,不会畏惧那些「复杂」的API,更不会畏惧学习具体的技术,甚至感觉很容易。当然,为了掌握这些东西你依旧需要大量的练习,腰还是会疼,走路还是会费劲,一口气也上不了5楼。但我能保证你会在思想上有巨大的转变,获得极大的自信,看老师同学和csdn的眼光会变得非常微妙,虽然只是完成了编程入门,但已经成为了程序员精神世界的高富帅。不,我说错了,即使是高富帅也不会有强力精神力,他也会怀疑自己,觉得自己没钱就什么都不是了。但总之,你遵循指南好好看书,那就会体验「会当凌绝顶」的感觉。
首先要想学编程,选一门合适的计算机语言就十分重要了,怎么去选择就显得尤为重要了,这要根据自己的兴趣爱好及每个语言的特性来选择,比如说PHP适合做web开发,易学习,易上手,非常流行的一门计算机语言了,我个人比较推荐php语言。
java可以做web开发,做安卓app开发也用的是java,在学习程度上上可能比php稍微难上手一点,不过也是没问题的,如果对java感兴趣可以尝试一下。
python是目前比较火的一门语言了,比较适合做人工智能领域,另外写网络爬虫类的程序,用python也是非常合适的了,看个人兴趣来选择了。
c,c++,c#这些语言就不推荐给了,特别是c#,已经是比较过时的一门语言了,即使学习好了,也不太适合去找工作,c与c++并不是十分适合初学者来学习,因此也是没必要进行考虑了,还有一些更小众的语言,更是没有必要去考虑,因此关于语言的学习就从上面3种语言去选择一门自己所感兴趣的吧!
研发搭建环境
如果选择好计算机语言,那么接下来就是研发环境的搭建了,因为只有研发环境搭建好了,才可以进行后续的编程工作,比如说PHP,那么就从百度上搜一下如何安装PHP环境,能搜出一些简单的教程,初学者按照教程一步一步来,顶多半天时间就可以把研发环境装好了,如果是java,就需要先安装jdk,进行环境变量的配置等,网上也有相关的教程,也是十分容易的,相信大家只要按照教程来做,都可以很轻易的把研发环境搭建起来的
选好视频和书籍,辅助学习。既然是零基础学习,就需要进行系统的学习,而不是到处百度零基础的知识点进行学习。
代码练习
跟随教程一个一个章节的进行学习,需要注意的一点就是不能只是去看,那样不行,要对每一个章节的知识点要亲自用代码敲一遍,运行一下试试效果才行,这样才能提高自己的动手能力,才开始会觉得有一点生疏,慢慢的就会熟练起来,逐渐会增加编程的兴趣。这个过程就是需要反复的进行练习,大量的代码练习才行。这个过程是5步中最关键的阶段了,重在代码亲自练习,对编程中有的章节不明白的地方,千万不要放过去,可以在网上找一些相关的编程交流群,参加进去,在线上咨询一些过来人,也许就可以轻松帮你解决疑问了,对你的学习十分帮助,并且整个过程也都是免费的。
项目实战
如果说基础教程都按部就班的都实践过一遍了,那么你就有一定的编程的基本功了,那么自己就可以尝试着做一些小项目,把学到的知识给串起来,进入项目实战阶段,比如说自己设计一个学生管理系统,并把它完成,如果不了解怎么设计,可以去网上搜索。慢慢就有思路了。
我也在学习这方面,视频书籍看过不少,最推荐的还是北京尚学堂的学习资料,Java300集,Python400集,都是很经典的入门基础教程,而且是结合项目学习的,很有意思,干货满满,还都是免费的,推荐你可以去看看,相信可以带你走进变成的世界。
从零开始学编程,第一关就是要选择你所要学习的编程语言。面对着琳琅满目的编程语言,初学者常常一筹莫展,拿不定主意,不知该选哪
欢迎分享,转载请注明来源:浪漫分享网
评论列表(0条)