軟件開發(fā)需要學(xué)什么知乎(軟件開發(fā)很難學(xué)嗎)
本篇文章給大家談?wù)勡浖_發(fā)需要學(xué)什么知乎,以及軟件開發(fā)很難學(xué)嗎對(duì)應(yīng)的知識(shí)點(diǎn),希望對(duì)各位有所幫助,不要忘了收藏本站喔。
軟件開發(fā)人員需要學(xué)習(xí)多門編程語言么 知乎
作為一個(gè)從開發(fā)人員轉(zhuǎn)行的人,我自己認(rèn)為不需要精通多門語言,但是都要略懂一點(diǎn):
精通一門或者兩門編程語言就好,畢竟現(xiàn)在語言猶如繁星,你根本沒有精力去學(xué)習(xí)那么多,更別談精通了;
但是多少都要懂一點(diǎn),為什么呢?因?yàn)樵谡嬲_發(fā)時(shí),你會(huì)遇到各種各樣的問題,有的插件需要用其他語言寫(比如與硬件的對(duì)接大多數(shù)時(shí)候需要用到C和匯編),所以到時(shí)候你至少也要看得懂這些語言的語法
語言只是工具,精髓在算法(也可以說是邏輯),不管有多少種編程語言,真正應(yīng)用到軟件時(shí),都是需要算法來實(shí)現(xiàn)的,所以學(xué)多門語言,不如努力學(xué)習(xí)算法,到時(shí)候需要用到新語言時(shí),你只需要學(xué)習(xí)相關(guān)語法和函數(shù)即可
希望能幫到你
軟件開發(fā)如何開始學(xué)習(xí)?
開始自學(xué)軟件編程課程
編程語言種類繁多,各有千秋,在學(xué)習(xí)之前需要明確自己要學(xué)習(xí)哪一門編程語言。確定之后需要制訂一個(gè)合理的學(xué)習(xí)計(jì)劃,并且持之以恒地執(zhí)行學(xué)習(xí)計(jì)劃。在學(xué)習(xí)過程中要養(yǎng)成良好的學(xué)習(xí)習(xí)慣。
不愛研究、坐不住,但凡三天打魚兩天曬網(wǎng),或者對(duì)計(jì)算機(jī)不喜歡等一類人不適合學(xué)習(xí)編程,哪怕一時(shí)努力,最后也不是結(jié)不了業(yè),就是功敗垂成,難以在這條路上走遠(yuǎn)。編程入門點(diǎn)是興趣。興趣是學(xué)習(xí)的最大動(dòng)力源。需要有恒心有耐心,進(jìn)入這個(gè)行業(yè)并不難,就算你沒有基礎(chǔ)和經(jīng)驗(yàn),也是可以學(xué)好的。那些創(chuàng)造編程語言的人,創(chuàng)造計(jì)算機(jī)的人也都是從零開始的。他們也是在不斷揣摩、不斷學(xué)習(xí)和實(shí)踐之火才獲得成果。沒有一個(gè)技術(shù)大牛是從一開始就什么都會(huì)的,都是從什么也不會(huì)開始的。只需你有興趣而且肯努力,可能慢慢就會(huì)發(fā)現(xiàn)學(xué)習(xí)軟件開發(fā)也沒有想象中的那么難。
2、要重視編程基本功
絕大部分行業(yè)內(nèi)的大牛都是經(jīng)歷過辛苦而又長期的程序開發(fā)學(xué)習(xí)和實(shí)戰(zhàn)進(jìn)程的,假如你想要成為一名優(yōu)秀的程序員,最基本的編碼學(xué)習(xí)肯定是不能跳過的,底層的知識(shí)必需要扎實(shí)掌握,就如同Java開發(fā),項(xiàng)目訓(xùn)練前提是掌握一定的java課程基礎(chǔ),假如不先把基礎(chǔ)穩(wěn)固,就直接做項(xiàng)目的話,是很難做出來而且學(xué)不會(huì)那種邏輯思考的能力。
3、附加技能的學(xué)習(xí)
前面說了軟件開發(fā)涉及到一種邏輯思維,那么必定要學(xué)習(xí)一些數(shù)學(xué)知識(shí),學(xué)會(huì)數(shù)學(xué)公式的運(yùn)算。軟件開發(fā)行業(yè)是特別注重效率的,假如你編寫的某個(gè)功能的邏輯不是很清楚,可能整個(gè)項(xiàng)目都會(huì)繞一個(gè)很大的圈子,這樣的代碼存在許多冗余成分,浪費(fèi)很多時(shí)間,所以要懂得培養(yǎng)自己必定的邏輯思維。其次就是英語的學(xué)習(xí)了,雖然學(xué)軟件開發(fā)不需要有很強(qiáng)的英語能力,但有必定的英語才能的話,更加有利于自己往更深邃的技術(shù)發(fā)展。
4、動(dòng)手能力的培養(yǎng)
作為一個(gè)程序員動(dòng)手能力是非常重要的,你學(xué)習(xí)的各個(gè)知識(shí)點(diǎn)和思維都自己去開發(fā)操練才能穩(wěn)固,作為老師最怕的學(xué)生就是他們只停留在書本或許課堂上的了解,而自己不去實(shí)實(shí)在在的把它完成出來,著手做的過程中你會(huì)不斷發(fā)現(xiàn)問題,然后自己去解決問題,這樣你才能成為一個(gè)真正的高手。也要學(xué)會(huì)找到有效的學(xué)習(xí)辦法,這樣學(xué)起來會(huì)如魚得水的。可以先看視頻學(xué)習(xí),學(xué)起來就比曾經(jīng)看書快許多,并且也更簡略,覺得自己掌握了一定的知識(shí)后,可以嘗試做項(xiàng)目,從小項(xiàng)目開始練手到商業(yè)項(xiàng)目實(shí)戰(zhàn),懂得實(shí)操的軟件開發(fā)工程師才是企業(yè)真正喜歡的
計(jì)算機(jī)軟件開發(fā)學(xué)習(xí)路線是什么?
Java零基礎(chǔ)的小伙伴,我建議看Java的在線教程去學(xué)習(xí)。
第一:先學(xué)習(xí)Java的核心庫(JavaSE)
JavaSE的內(nèi)容包括:環(huán)境搭建、基礎(chǔ)語法、面向?qū)ο蟆?shù)組、集合、常用類、IO流、反射機(jī)制、網(wǎng)絡(luò)編程……..
第二:MySQL數(shù)據(jù)庫
搞定一門數(shù)據(jù)庫相關(guān)的課程,例如:MySQL、Oracle,搞定一個(gè)就可以了,目前互聯(lián)網(wǎng)公司,例如:京東、阿里等,他們都在使用MySQL,所以建議大家學(xué)習(xí)MySQL數(shù)據(jù)庫,小巧輕盈,免費(fèi)。
由于互聯(lián)網(wǎng)公司的項(xiàng)目訪問量比較大,所以一般會(huì)搭建數(shù)據(jù)庫的集群,可以一個(gè)數(shù)據(jù)庫不夠,所以需要搭建數(shù)據(jù)庫集群,為了應(yīng)付高并發(fā)。(搭建的比較多的時(shí)候,免費(fèi)就很重要了。)
第三:WEB前端
以后從事Java開發(fā),從事JavaEE開發(fā),主要開發(fā)的系統(tǒng)結(jié)構(gòu)是B/S結(jié)構(gòu)的,B指的是Browser,S指的是Server。要開發(fā)這種系統(tǒng),B端要會(huì),S端也要精通。WEB前端的學(xué)習(xí)就是學(xué)習(xí)B端技術(shù)。
包括:HTML 、CSS、JavaScript(JS)、jQuery框架(底層對(duì)JS進(jìn)行了封裝)…
第四:JavaWEB
WEB后端其實(shí)可以是很多種不同的編程語言,例如:PHP、C、C++、Java,他們都可以進(jìn)行WEB后端的開發(fā),我們既然選擇了比較火爆的Java,那么我們學(xué)習(xí)的后端一定是基于Java語言實(shí)現(xiàn)的。
包括:Servlet、Filter、Jsp、EL、JSTL、MVC架構(gòu)模式、數(shù)據(jù)庫連接池(阿里巴巴的Druid連接池)、代理模式(動(dòng)態(tài)代理)。另外后端學(xué)習(xí)了之后,還要學(xué)習(xí)一個(gè)異步編程技術(shù)AJAX。(完成網(wǎng)頁的局部刷新,AJAX其實(shí)不屬于后端,是前端瀏覽器上的程序。)
學(xué)習(xí)到這里為止,表示Java基本/基礎(chǔ)的技術(shù)已經(jīng)學(xué)完了。但是這些最基層的技術(shù)在實(shí)際的開發(fā)中不會(huì)使用的,一般為了開發(fā)效率,都會(huì)使用大量的提前封裝好的框架。
第五:最好能夠停留下來,做一個(gè)項(xiàng)目。
這個(gè)項(xiàng)目最好能將之前所學(xué)全部串起來。(對(duì)以前的知識(shí)點(diǎn)進(jìn)行鞏固。)
這個(gè)項(xiàng)目最好是基于:Servlet + Jsp+AJAX+jQuery+MySQL….
在這個(gè)項(xiàng)目的開發(fā)過程中:大家一定要記住,目前比較好的項(xiàng)目自動(dòng)構(gòu)建工具:Maven是一定要精通的。還有一個(gè)就是團(tuán)隊(duì)協(xié)作開發(fā):Git/SVN是一定要會(huì)用的。(目前使用Git比較多一些。)
第六:學(xué)習(xí)高級(jí)框架
Spring、SpringMVC、MyBatis(持久層框架,這個(gè)框架互聯(lián)網(wǎng)公司使用比較多,因?yàn)榛ヂ?lián)網(wǎng)項(xiàng)目需要進(jìn)行SQL優(yōu)化,MyBatis的SQL優(yōu)化很方便,所以大部分都是使用MyBatis)
Struts2(很少使用了,使用這個(gè)的肯定是很老的項(xiàng)目)、Hibernate(傳統(tǒng)企業(yè),還有政府等可能會(huì)使用Hibernate。)
SpringBoot(新項(xiàng)目大部分使用的都是boot了。所以在項(xiàng)目中遇到還在使用SSM的一般都是遺留項(xiàng)目。)
當(dāng)你走到這里之后,基本上你可以出山了。(去找工作應(yīng)該問題不大,但前提是你學(xué)得好。學(xué)習(xí)的深度夠了,廣度夠了。)
第七:最好能有一個(gè)大型項(xiàng)目是使用框架來完成的。
SpringBoot做一個(gè)項(xiàng)目。
Spring SpringMVC MyBatis做一個(gè)項(xiàng)目。
這個(gè)項(xiàng)目最好是找?guī)讉€(gè)人搭伙做一下。體驗(yàn)一下團(tuán)隊(duì)協(xié)作。(尤其是使用一些協(xié)作的工具。怎么溝通,怎么寫日?qǐng)?bào),怎么開會(huì),怎么使用Git,等等….)
第八:如果你的薪資想達(dá)到15K的話,你可能需要還要學(xué)習(xí)一些分布式相關(guān)的一些技術(shù)。
能夠應(yīng)付高并發(fā)的一些技術(shù),例如:分布式框架Dubbo、SpringCloud、MQ、Nginx、Redis…..
最后在啰嗦一下,一定要形成自己的編程思想。
編程思想的形成很難。需要大量代碼的堆積才可以。怎么形成編程思想呢?
千萬別死抄代碼。不要像行尸走肉般的抄代碼,沒有用。只能提高指法速度,無法形成編程思路。
1、打好基礎(chǔ)是重中之重
基礎(chǔ)部分可能很枯燥,但是一定要耐心堅(jiān)持下去。因?yàn)榇蚧A(chǔ)好比是在造輪子造汽車,沒有打好基礎(chǔ)在后面的學(xué)習(xí)就好比走路,可以說后面遇到的百分之七八十的問題都是基礎(chǔ)沒學(xué)好造成的。
2、多看官方文檔多讀源碼
一定要看JDK相關(guān)類庫、常用框架各種功能的源碼,去了解其底層實(shí)現(xiàn)的原理??偟膩碚f這個(gè)也是在打基礎(chǔ)的部分,Java基礎(chǔ)非常扎實(shí)才能看懂,在我們學(xué)習(xí)一個(gè)類的源碼時(shí),肯定會(huì)衍生出其他各種各樣的問題,供我們來了解和學(xué)習(xí),這也就是我們下一步學(xué)習(xí)的目標(biāo)和方向。慢慢的,我們就會(huì)學(xué)習(xí)更多的知識(shí),并積累更多的經(jīng)驗(yàn)。
3、系統(tǒng)性學(xué)習(xí),循序漸進(jìn)
不要急于求成,每個(gè)知識(shí)點(diǎn)都要看,并且每個(gè)知識(shí)點(diǎn)都要勤加練習(xí)。有的同學(xué)在學(xué)習(xí)過程中覺得這個(gè)知識(shí)點(diǎn)簡單,就跳著學(xué)習(xí),其實(shí)這是個(gè)很大的問題,知識(shí)點(diǎn)細(xì)節(jié)必須要了解。我們學(xué)習(xí)Java需要循序漸進(jìn),一步一步來,不能操之過急。
4、遇到問題
遇到不會(huì)做的問題,當(dāng)然不能置之不理。先在網(wǎng)上查,目前網(wǎng)絡(luò)上針對(duì)很多問題都有完美的解決方案,如果網(wǎng)上沒有類似的問題,那可能是你犯了什么小錯(cuò)誤。也不要在這個(gè)問題上花費(fèi)太多時(shí)間,這需要一定的學(xué)習(xí)技巧。Java中的知識(shí)有很強(qiáng)的相關(guān)性,有不懂的地方,可以用其他周邊相關(guān)知識(shí)再回過頭來理解,這樣既不會(huì)耽誤學(xué)習(xí)進(jìn)度,又能理解自己不懂的地方
1)jvm有很多種,其實(shí)jvm是一個(gè)標(biāo)準(zhǔn),sun做的那個(gè)叫hotspot,作者就是后來v8的作者lars bak,其他公司也做過jvm,其中做得比較好的有bea的jrockit,其他的包括ibm的r9,apple的jvm等在內(nèi),都做得不行,所以jvm主要是整合淘汰掉這些做得不好的jvm(s),整合成一個(gè)統(tǒng)一的openjdk。
2)java是典型的oop語言,其執(zhí)行效率的優(yōu)化,最早就是lars bak等人從smalltalk等長期優(yōu)化的經(jīng)驗(yàn)中總結(jié)出來并apply到hotspot上去滴,而smalltalk在早期apple機(jī)上搞出了那種拖拖拽拽就開發(fā)出app的做法,后來vc,delphi之類的其實(shí)都是抄襲或者說借鑒apple的smalltalk的做法,jobs說微軟從頭到尾都在抄襲apple是空穴來風(fēng),這里空穴來風(fēng)跟王垠使用的空穴來風(fēng)是一個(gè)意思,有趣的是,java的gui并沒有繼承這種搞法,反而對(duì)這種拖拖拽拽就作出app的做法批判有加,到今天,其實(shí)java的gui都還不能真正做到拖拖拽拽就作出來,問題很多,個(gè)人建議對(duì)于純java的gui開發(fā),還是以寫代碼為主。
3)jee也是一個(gè)或者說是一堆標(biāo)準(zhǔn),知乎上有些人把maven,jenkins都算做jee是不對(duì)滴,jee的標(biāo)準(zhǔn)核心是ejb,其實(shí)就是一個(gè)xml配置化的java文件,這個(gè)標(biāo)準(zhǔn)在4的時(shí)候,達(dá)到了頂峰狀態(tài),幾乎所有的挨踢大廠都主動(dòng)支持該標(biāo)準(zhǔn),之后開始走下坡路,支持的廠越來越少。
4)java和javascript的關(guān)系比很多人認(rèn)為的要密切,javascript里面的java這四個(gè)字母可不是白叫的,比如js的版權(quán)和商標(biāo)都控制在oracle手里,oracle對(duì)于js的支持甚至超過其對(duì)java的支持,并且喜歡捆綁銷售,比如jvm里面就有一個(gè)js引擎。
5)jvm里面除了js engine以外還有一個(gè)瀏覽器排版引擎webkit,就是apple safari和google chrome用的那個(gè)那個(gè)。
6)java支持絕大多數(shù)腳本語言,你能叫得上名字的腳本語言,幾乎都可以在jvm上執(zhí)行,比如常見的js,ruby,python,甚至php,lua,只不過除了js以外你需要找到相關(guān)的腳本引擎。
7)spring的版權(quán)被控制在vmware手里,其實(shí)spring的那一大堆東西,本質(zhì)上是一個(gè)非標(biāo)準(zhǔn)的jee實(shí)現(xiàn),比如在jee里面用的inject,在spring里面就是autowire,當(dāng)然spring曾經(jīng)深刻滴影響了jee,所以有些東西比如di標(biāo)準(zhǔn),是spring影響下制定出來的,所以spring的做法會(huì)比較特例一點(diǎn)。
8)maven上的jars數(shù)量前兩天突破800萬,其他語言的類庫,排名第二的是npm,大概數(shù)量是maven的十分之一,也就是幾十萬,不知道現(xiàn)在突破100萬沒有,然后是gem,也就是ruby那個(gè),大概是十幾萬,下來是python的module,大概數(shù)量級(jí)是幾萬,沒突破十萬。
9)java的標(biāo)準(zhǔn)是由一個(gè)叫做jcp的組織制定的,所有標(biāo)準(zhǔn)需要經(jīng)過jcp的執(zhí)行委員會(huì)通過方可執(zhí)行,jcp幾乎包括了你所知道的絕大多數(shù)知名挨踢公司和組織,比如google,apple,ibm,intel,arm,red hat,twitter等,還有一些教育機(jī)構(gòu),比如我國的北京大學(xué),阿里最近一次申請(qǐng)jcp執(zhí)行委員會(huì)成員資格,似乎投票不通過,最近一次執(zhí)行委員會(huì)新增兩個(gè)成員是arm和jetbrains。
10)微軟也曾經(jīng)是jcp甚至是java的主要貢獻(xiàn)者,但是利益驅(qū)使下,想擴(kuò)展java,從而破壞java跨平臺(tái)的特性,所以跟sun鬧翻,其本質(zhì)原因就是想讓客戶寫的java代碼跟windows綁定,sun堅(jiān)決不同意,鬧翻,今天回頭看這個(gè)結(jié)果,只能說:雙輸,sun掛了,微軟的ria也離掛不太遠(yuǎn)了,silverlight已經(jīng)放棄了,比起當(dāng)年ie自帶有jvm的支持來說,那完全就是兩回事。
11)除了微軟以外,jcp還缺少一個(gè)重要組織apache,因?yàn)閍pache跟oracle也鬧翻了,oracle似乎并不在乎開源組織,而更在意商業(yè)公司的支持。
12)java曾經(jīng)有一個(gè)內(nèi)置的數(shù)據(jù)庫,9之后被剝離。
13)j2me是j2se的子集。
14)vert.x作者tim fox最早在vmware做spring時(shí)候看到了node.js,萌生出了制作支持多核的node.x的想法,并在離開vmware后加入red hat將其實(shí)現(xiàn),vmware看到后開始耍無賴,claim node.x后來改叫vert.x的版權(quán),不惜跟red hat打官司,后來各方妥協(xié),將其交給eclipse foundation。
15)oracle在收購bea之前,一開始的目標(biāo)并不是bea和bea的weblogic,而是jboss,但是jboss表現(xiàn)出了極為有種的一面,在oracle收購成功之前,投入了red hat的懷抱,因?yàn)槎际情_源組織,從此jboss成了red hat的一個(gè)子部門,oracle收購jboss失敗之后,轉(zhuǎn)向bea,莊思浩氣死了,但是沒用,最后還是被惡意收購。
16)sun在玩不下去之前最早嘗試接觸的目標(biāo)是ibm,ibm嫌太貴,放棄之后,被轉(zhuǎn)手給了oracle。(Java學(xué)習(xí)交流QQ群:589809992 我們一起學(xué)Java?。?/p>
17)vert.x的作者tim fox在離開red hat之前曾經(jīng)發(fā)過twitter抱怨,外人比如我們,猜測是因?yàn)閞ed hat內(nèi)部已經(jīng)有了一個(gè)jboss,所以跟vert.x在應(yīng)用上有了重疊,所以導(dǎo)致tim fox的出走,但是出走之后,red hat答應(yīng)對(duì)vert.x做持續(xù)性的戰(zhàn)略投入,所以vert.x core的幾個(gè)developers,其實(shí)拿的是red hat的工資,但是vert.x的版權(quán)并不在red hat手里,而在eclipse foundation手里。
18)vert.x的幾個(gè)核心開發(fā)人員都是google summer of code的導(dǎo)師,每年年初時(shí)候會(huì)招收在校大學(xué)生搞項(xiàng)目。
19)教育機(jī)構(gòu)相關(guān):scala的作者馬丁是德國人,eth的博導(dǎo),groovy的主要領(lǐng)導(dǎo)人是法國人,jruby背后是東京大學(xué),jboss的作者是法國大學(xué)校x的校友,x就是伽羅瓦考不進(jìn)去的那所大學(xué),伽羅瓦進(jìn)不了x,所以改讀巴黎高師,tim fox畢業(yè)于帝國理工,主席去的那個(gè),netty作者trustin lee是acm銀牌,現(xiàn)在line工作,畢業(yè)于sky里面的延世大學(xué),kotlin是毛子公司jetbrains的作品,看linkedin,很多人畢業(yè)自圣彼得堡大學(xué),spring作者rod johnson是悉尼大學(xué)的音樂博士,hibernate作者gavin king是澳洲莫那什大學(xué)的數(shù)學(xué)本科畢業(yè)生,james gosling這種cmu和calgory的估計(jì)爛大街了,sun是斯坦福大學(xué)網(wǎng)絡(luò)的意思,夾帶兩個(gè)私貨,aspectj有一個(gè)維護(hù)小組在mcgill,hbase跟waterloo關(guān)系密切。
20)java早期被人認(rèn)為慢,跟java堅(jiān)持不用硬件加速渲染有關(guān),死活就是不肯接入directx和opengl,7之后總算開竅,搞了一個(gè)圖形引擎接入了directx/opengl。
21)casssandra是facebook做失敗的項(xiàng)目,被貢獻(xiàn)給了apache之后老樹開花。
22)groovy被貢獻(xiàn)給了apache,現(xiàn)在叫做apache groovy,ceylon被貢獻(xiàn)給了eclipse,現(xiàn)在叫做eclipse ceylon。
23)netflix現(xiàn)在是java shop,之前是用.net的。
先想到這么多,有空再寫。
關(guān)于軟件開發(fā)需要學(xué)什么知乎和軟件開發(fā)很難學(xué)嗎的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。