首先,你需要選擇一門自己感興趣的編程語言?,F(xiàn)在常見的編程語言有:
站在用戶的角度思考問題,與客戶深入溝通,找到綏陽網(wǎng)站設(shè)計與綏陽網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站設(shè)計、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名注冊、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋綏陽地區(qū)。
C / C++:屬于大多數(shù)情況下能接觸到的相對基礎(chǔ)的編程語言了,優(yōu)勢是基本掌握以后面對其他語言均可以“無壓力”;壞處是學(xué)習(xí)起來非常的困難,需要系統(tǒng)性的了解非常多知識點,且耗時一般較長。如果你有更多的時間和精力,同時希望能夠長期更好的發(fā)展成架構(gòu)師,那么這可能就是你比較合適的語言選擇了。
Java:應(yīng)用廣泛,幾乎大多數(shù)開發(fā)場景都有java或者java變體的身影。學(xué)習(xí)java你可以了解到面向?qū)ο笏枷?,了解虛擬機等的概念,面對常見的開發(fā)也能夠有應(yīng)對方案。同時這個語言對比C/C++能簡單不少,在很多情況下是面向新手比較合適的選擇了。
Go:最近一段時間流行起來的語言,在面對高并發(fā)等場景下有天然的優(yōu)勢。Go語言有自己獨到的特性,同時也可以支持一些C語言的能力,而且也越來越在國內(nèi)的互聯(lián)網(wǎng)公司作為首選開發(fā)語言之一。
PHP /?Python /?JavaScript / .net / Swift / ...:這些語言大多有自己的特定應(yīng)用場景,比如Python在大數(shù)據(jù)和人工智能領(lǐng)域比較常見,JavaScript是前端開發(fā)的必備語言等。如果你希望的工作有比較強烈的語言要求,那么選擇上面的語言準(zhǔn)沒錯。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
其次,掌握數(shù)據(jù)結(jié)構(gòu)及算法,同時能夠通過程序語言實現(xiàn)。
比如常見的數(shù)據(jù)結(jié)構(gòu),像是數(shù)組、鏈表、堆、棧、隊列、樹、圖等,盡量都有機會了解數(shù)據(jù)結(jié)構(gòu)的實現(xiàn)原理(包括自己用代碼能夠簡單編寫),知道數(shù)據(jù)結(jié)構(gòu)的優(yōu)缺點,以及在什么場景下使用。算法原理上如時間空間復(fù)雜度,一些數(shù)學(xué)概念;同時一些經(jīng)典的排序、與數(shù)據(jù)結(jié)構(gòu)結(jié)合的實現(xiàn),也應(yīng)當(dāng)有了解。
這些推薦你去找專業(yè)的書籍,系統(tǒng)性的選擇;盡量減少如面試寶典等取巧的方式,深入掌握不僅僅是找工作,在后續(xù)的工作中也能更好的幫到你。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
再次,了解計算機基礎(chǔ)。
常見的計算機基礎(chǔ)包括計算機組成原理(簡稱機組)、操作系統(tǒng)、網(wǎng)絡(luò)、編譯原理等。這里需要投入比較多的精力,如果確實時間上比較緊張,可以有側(cè)重的選擇。
比如你希望從事偏底層的開發(fā)工作,那么更側(cè)重在機組和操作系統(tǒng)上;如果側(cè)重在上層開發(fā),那么可以側(cè)重在網(wǎng)絡(luò)上,以此類推。當(dāng)然,更好的掌握以上知識能夠在很多不經(jīng)意的時間給到你幫助,如果有空,也建議多深入的理解。
最后,知道一些計算機知識的應(yīng)用。
這里就比較多了,比如數(shù)據(jù)庫、一些基本的項目設(shè)計、項目實戰(zhàn)等等,根據(jù)你希望的工作有針對性的去了解,或許有不小的幫助。
按照上面這幾個步驟進行下去,可能確實需要投入一定的時間和精力,但是一旦你選擇希望成為一名程序員,就一定要堅持下去,才能取得更好的結(jié)果。
可以的
go不以C為基礎(chǔ)
可以直接學(xué)go
問題是 目前go語言應(yīng)用面還不是太大
未來會怎么樣還不確定。
或許會大熱 也可能會只在安卓上用。這個說不定的。
僅僅就學(xué)習(xí)算法,還是C++/Java/C#最適合。
首先,沒泛型的語言未必工作不好用,我司現(xiàn)在服務(wù)端代碼幾乎都是go,但是沒有泛型,寫通用的代碼就是不好用。我用Go把半本《算法》實現(xiàn)了一遍,移植了Haskell 的 Parsec 庫。這些代碼大部分都在我團隊的項目里實際使用。你要說 Go 有多熟練未必,但是要說它在語言功能上有多少坑我倒是挺熟悉。沒泛型的話算法實現(xiàn)起來太坑人了,別的不說 float32/float64/int8/int16/int32/int64/int 這些數(shù)值類型你能都覆蓋么?如果只是基于某一組有限的數(shù)據(jù)類型和問題領(lǐng)域?qū)崿F(xiàn)一遍,用 go 倒是不錯,它環(huán)境配置容易,不太依賴ide,但是對ide還是比較友好的,天然集成test,編譯快速,模型簡單,學(xué)習(xí)容易,可以說是我用過的靜態(tài)編譯型語言里最像動態(tài)腳本語言,最適合快速開發(fā)微型工具的。
其次,Python/Ruby 這類語言其實不太適合練習(xí)算法實現(xiàn),它們太“高級”了。例如用Python的時候,你很難規(guī)避它的內(nèi)置容器List和Dict,這些東西封裝了太多東西,在學(xué)習(xí)的過程中容易被干擾。另外沒有靜態(tài)的類型控制,在學(xué)習(xí)過程中也會失去一些知識。倒不是就會導(dǎo)致你后半生這部分都不能自理,但是需要另外學(xué)習(xí)。
在我的經(jīng)驗,要學(xué)習(xí)算法,C++/C#/Java 仍然是比較好的選擇,它們的泛型已經(jīng)比較成熟,能夠在學(xué)習(xí)中建立比較完備的知識概念。可以找到一些比較好的IDE用,我個人其實在工作中不怎么用IDE,但是算法學(xué)習(xí)的時候,有個不錯的IDE可以幫你跟蹤代碼的運行過程,還能比較容易的做性能分析,這樣就可以用動態(tài)、直觀、形象的視角去理解和觀察算法。這對學(xué)習(xí)非常有幫助。
如果只是在一個特定的領(lǐng)域做知識學(xué)習(xí)的工具,其實C++反而不算很難,C++的難度主要在于覆蓋的領(lǐng)域太廣泛,當(dāng)你要做一個專業(yè)的C++程序員,要掌握的東西就太多了。
個人不太建議用C去學(xué)習(xí)這些東西,需要處理太多跟問題本身無關(guān)的事情了。
C++適合本地程序的開發(fā).
Go語言適合網(wǎng)絡(luò)程序和本地程序的開發(fā).
相對于C++Go的優(yōu)點:
垃圾回收
語意明確
格式統(tǒng)一
缺點:
效率目前沒有C++高,但對于桌面程序而言,效率問題不大,因為硬件已經(jīng)很快了.
C++是目前的主流語言,相信會和C一樣成為經(jīng)典.
成為經(jīng)典的意思就是:學(xué)它的人能拿一份不錯的工資,但也僅僅是不錯而己.
將來的網(wǎng)絡(luò)的世界,Go發(fā)熱的機會很大,認為其前途看好.
Go的開發(fā)者包括Unix的創(chuàng)始人和C語言的創(chuàng)始人等,都是一代黑客之首,相信會做得很好.