建議可以從以下幾個(gè)方面著手:
成都創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括觀山湖網(wǎng)站建設(shè)、觀山湖網(wǎng)站制作、觀山湖網(wǎng)頁(yè)制作以及觀山湖網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,觀山湖網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到觀山湖省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
1、建議學(xué)習(xí) Python。Python 基礎(chǔ)語(yǔ)法內(nèi)容較為簡(jiǎn)單,可以比較快的了解編程的思維習(xí)慣,并能夠較快接觸到 Python GUI 庫(kù)(比如Tkinter),很容易借用這些庫(kù)開(kāi)發(fā)出一些有趣的程序。同時(shí) Python 的縮進(jìn)格式也比較嚴(yán)格,這也很好的讓編程初學(xué)者養(yǎng)成一個(gè)良好的編寫(xiě)代碼習(xí)慣。
在美國(guó)有很多編程初學(xué) Python 的書(shū)籍,其受眾就是小學(xué)、初中的青少年,比如《Python for Kids》,這些書(shū)籍一個(gè)很大的特點(diǎn)就是圖文并貌,并且很快引入圖形庫(kù)的學(xué)習(xí),教會(huì)小朋友制作出一些圖形和簡(jiǎn)單的游戲,比如畫(huà)星星,彈球。這樣的好處是激發(fā)小朋友學(xué)習(xí)編程的樂(lè)趣,讓小朋友從小就感受到編程的魅力。
2、讀大一零基礎(chǔ)學(xué)編程
上學(xué)習(xí)編程的首要任務(wù)是學(xué)習(xí)電腦的基礎(chǔ)操作,熟悉鍵盤,讓自己對(duì)電腦有初步的了解認(rèn)識(shí)。至于理工科專業(yè)的學(xué)生大一估計(jì)都會(huì)教《計(jì)算機(jī)科學(xué)導(dǎo)論》這樣類似的課程,如果想盡快編程,學(xué)生應(yīng)盡快將該書(shū)內(nèi)容看一遍,讓自己對(duì)計(jì)算機(jī)有一個(gè)整體的認(rèn)識(shí)。
那么大一學(xué)生若要系統(tǒng)的學(xué)習(xí) C語(yǔ)言,建議使用 《C Primer Plus》,英語(yǔ)好的同學(xué)可以直接看英文版,注意該書(shū)不是《C++ Primer》,《C++ Primer》可以在 C語(yǔ)言學(xué)的有一定基礎(chǔ)的時(shí)候看。當(dāng)學(xué)完《C Primer Plus》之后,可以對(duì)算法的知識(shí)學(xué)習(xí),有精力的話可以啃《算法導(dǎo)論》。平時(shí)可以多上 github 上直接看源碼,這樣比單純看書(shū)進(jìn)步的更快。
3、新手學(xué)習(xí)編程,看書(shū)時(shí)一定要不能只看不動(dòng)手,一定要同時(shí)動(dòng)腦、動(dòng)手,要將書(shū)里面的代碼都勤奮的敲。
值得注意的是,編程是個(gè)比較廣義的概念,編程語(yǔ)言有數(shù)種,所以要學(xué)習(xí)計(jì)算機(jī)語(yǔ)言就要先了解語(yǔ)言的發(fā)展史以及各種語(yǔ)言在不同領(lǐng)域的作用,推薦先學(xué)C/C++,這門計(jì)算機(jī)語(yǔ)言是一門相對(duì)簡(jiǎn)單且發(fā)展的比較完善的計(jì)算機(jī)語(yǔ)言,初次之外呢還有basic、C#、java等等,在C之前還有更加原始的計(jì)算機(jī)語(yǔ)言。
推薦的學(xué)習(xí)資料是郝斌老師的教學(xué)視頻,還有譚浩強(qiáng)老師的《C程序設(shè)計(jì)》一書(shū),建議先看書(shū)在看視頻,當(dāng)然也可以同時(shí)看,這兩樣都是入門的較好的參考資料。
服務(wù)端開(kāi)發(fā)的話建議首選還是Java吧,畢竟國(guó)內(nèi)用Java的偏多,相對(duì)來(lái)說(shuō)比較好找工作。或者golang也可以考慮,但是golang國(guó)內(nèi)崗位相對(duì)來(lái)說(shuō)還是不多的。C++嘛,慎重選擇咯,一個(gè)是學(xué)習(xí)曲線相對(duì)比較陡峭,另一個(gè)是越來(lái)越少用C++來(lái)做服務(wù)端開(kāi)發(fā)的了。
c,c++學(xué)會(huì)了,幾乎可以在任何領(lǐng)域編程,你才知道編程世界有多大
僅僅就學(xué)習(xí)算法,還是C++/Java/C#最適合。
首先,沒(méi)泛型的語(yǔ)言未必工作不好用,我司現(xiàn)在服務(wù)端代碼幾乎都是go,但是沒(méi)有泛型,寫(xiě)通用的代碼就是不好用。我用Go把半本《算法》實(shí)現(xiàn)了一遍,移植了Haskell 的 Parsec 庫(kù)。這些代碼大部分都在我團(tuán)隊(duì)的項(xiàng)目里實(shí)際使用。你要說(shuō) Go 有多熟練未必,但是要說(shuō)它在語(yǔ)言功能上有多少坑我倒是挺熟悉。沒(méi)泛型的話算法實(shí)現(xiàn)起來(lái)太坑人了,別的不說(shuō) float32/float64/int8/int16/int32/int64/int 這些數(shù)值類型你能都覆蓋么?如果只是基于某一組有限的數(shù)據(jù)類型和問(wèn)題領(lǐng)域?qū)崿F(xiàn)一遍,用 go 倒是不錯(cuò),它環(huán)境配置容易,不太依賴ide,但是對(duì)ide還是比較友好的,天然集成test,編譯快速,模型簡(jiǎn)單,學(xué)習(xí)容易,可以說(shuō)是我用過(guò)的靜態(tài)編譯型語(yǔ)言里最像動(dòng)態(tài)腳本語(yǔ)言,最適合快速開(kāi)發(fā)微型工具的。
其次,Python/Ruby 這類語(yǔ)言其實(shí)不太適合練習(xí)算法實(shí)現(xiàn),它們太“高級(jí)”了。例如用Python的時(shí)候,你很難規(guī)避它的內(nèi)置容器List和Dict,這些東西封裝了太多東西,在學(xué)習(xí)的過(guò)程中容易被干擾。另外沒(méi)有靜態(tài)的類型控制,在學(xué)習(xí)過(guò)程中也會(huì)失去一些知識(shí)。倒不是就會(huì)導(dǎo)致你后半生這部分都不能自理,但是需要另外學(xué)習(xí)。
在我的經(jīng)驗(yàn),要學(xué)習(xí)算法,C++/C#/Java 仍然是比較好的選擇,它們的泛型已經(jīng)比較成熟,能夠在學(xué)習(xí)中建立比較完備的知識(shí)概念。可以找到一些比較好的IDE用,我個(gè)人其實(shí)在工作中不怎么用IDE,但是算法學(xué)習(xí)的時(shí)候,有個(gè)不錯(cuò)的IDE可以幫你跟蹤代碼的運(yùn)行過(guò)程,還能比較容易的做性能分析,這樣就可以用動(dòng)態(tài)、直觀、形象的視角去理解和觀察算法。這對(duì)學(xué)習(xí)非常有幫助。
如果只是在一個(gè)特定的領(lǐng)域做知識(shí)學(xué)習(xí)的工具,其實(shí)C++反而不算很難,C++的難度主要在于覆蓋的領(lǐng)域太廣泛,當(dāng)你要做一個(gè)專業(yè)的C++程序員,要掌握的東西就太多了。
個(gè)人不太建議用C去學(xué)習(xí)這些東西,需要處理太多跟問(wèn)題本身無(wú)關(guān)的事情了。
某語(yǔ)言是否會(huì)替代另一種語(yǔ)言,是要看使用場(chǎng)景的。
如果說(shuō)全面替代,確實(shí)如前所說(shuō)至少短期內(nèi)不會(huì),除非Google或者第三方愿意實(shí)現(xiàn)一個(gè)Go芯片之類的,短期內(nèi)可以期待的是ChromeOs對(duì)Go的依賴和支持,是否會(huì)向Qt之于Linux桌面一樣。
但是Go的使用場(chǎng)景跟C的使用場(chǎng)景并不完全一致,它的出現(xiàn)并不是為了取消某種語(yǔ)言,而是為了加速、簡(jiǎn)化并行編程、服務(wù)開(kāi)發(fā),以及增加很多C、C++這種底層語(yǔ)言所難以支持的語(yǔ)言特性,讓開(kāi)發(fā)更有人性化。在這一點(diǎn)上,Go是有可能取代C的。
C++適合本地程序的開(kāi)發(fā)。Go語(yǔ)言適合網(wǎng)絡(luò)程序和本地程序的開(kāi)發(fā)。Go的優(yōu)點(diǎn):垃圾回收,語(yǔ)意明確,格式統(tǒng)一。?Go的缺點(diǎn):效率目前沒(méi)有C++高,但對(duì)于桌面程序而言,效率問(wèn)題不大,因?yàn)橛布呀?jīng)很快了。c++過(guò)于復(fù)雜了,加入很多炫技的內(nèi)容。這些內(nèi)容脫離了事情的本質(zhì)。
最明顯的就是所謂的面向?qū)ο蟆;诿嫦驅(qū)ο蟮墓こ倘绻銐虼蟮那闆r下,會(huì)帶來(lái)很大的耦合度,如果再加上內(nèi)存管理,多線程等等。項(xiàng)目后期基本上沒(méi)辦法維護(hù)和增加功能。
關(guān)于c++的語(yǔ)言復(fù)雜性,你可以問(wèn)知乎上的任何一位高手。沒(méi)一個(gè)敢說(shuō)自己精通c++。你也可以去看一下所有的c++編繹器,沒(méi)有任何一個(gè)敢說(shuō)自己完全實(shí)現(xiàn)了c++的標(biāo)準(zhǔn)。不同的編繹器之間實(shí)現(xiàn)細(xì)節(jié)又不同。所以功能再?gòu)?qiáng)大沒(méi)有實(shí)用性,就失去了意義,只會(huì)制造更多的問(wèn)題。