導航:首頁 > 編程語言 > 精通一門編程語言學習

精通一門編程語言學習

發布時間:2023-04-12 07:00:57

① 如何才能學會編程並且精通,編寫自己的軟體

程序員學習編程的步驟 在中國,大多數程序員都是自學成材的,這其中的艱辛自不必多言,如果能夠有一個正確的學習步驟,循序漸進,便能省卻不少力氣了. 1:如果你能夠熟練的使用Windows的話,你就可以開始你的程序生涯了! 2:首先從C語言開始。有的朋友可能認為C語言太難了,應該從VB開始。雖然,對於一個初學者來說,用一些控制項堆砌成一個小軟體,是有一些成就感,但是,基礎才是最重要的!C語言對於數據類型的描敘,遠比VB裡面說的更為全面,清楚,明白,而這些卻是編程中的根本! 3:學C語言,從數據類型,基本表達式,再到條件語句,循環語句,然後學習函數,再加上一些簡單的數組知識,就可以了!一句話,到現在為止,你只要理解結構化程序設計的思想也就夠了! 4:有了以上的基礎,就要開始學匯編了。匯編開始的時候是很難,那些各種各樣的寄存器,分段的內存地址,是很難理解,可是這些知識理解了以後,後面的內容就簡單了,學習8086的那些指令,再加上一些偽操作,還有DOS和BIOS中斷的調用,就可以看懂書上的匯編程序了。(著重是理解演算法,對於後面的那些匯編的應用有興趣的可以看一下!)到此,你應該會對計算機的理解更深一層! 5:有了匯編的基礎,再來學習C語言中的精華部分----指針,可謂如魚得水了。現在你要對C語言全全面面的學一遍了,譚版的教材要從頭到尾認認真真的看兩遍以上。 6:學完以上的內容,有必要研究一下數據結構了,線性表,堆棧,隊列,樹,圖,二叉樹,等等,都要滾瓜爛熟!(最好是清華嚴蔚敏老師的那本教材) 7:請時刻記住:浮躁是學習編程的大忌! 8:現在,你應該學習一些資料庫的知識,還有一些常用的演算法了! 9:如果以上的知識你都學精通的話,就可以開始C++的課程了,找本C++上手的書,用一個星期的時間大概了解一下C++,然後找一本VC上手的書,再花一個星期的時間學習VC的界面和用法,就可以做一些簡單的應用了! 10:要想學好VC,沒有扎實的C++知識是不行的,以下書籍是VC程序員必須翻的爛熟的:C++Primer,Effective C++,Thinking in C++,More Effective C++ 深入淺出MFC。 11:深刻理解C++面向對象的思想! 12:編程的時候,出錯是難免的,所以,MSDN一定要熟練使用;好的代碼風格會使調試的時候,更加簡單的查錯,所以,一定要養成良好的編程風格! 13:如果你嚴格的走好了以上的每一步,你才踏上了編程的門檻,可以混口飯吃了! 至於在以後,編譯原理,操作系統,還有軟體工程等等基礎知識,是必不可少的!

② 如何學好一門編程語言

學好一門編程語言是十分不容易的,但是如果學會了,它的實用性是很強的,下面我為大家整理了學好一門編程語言的辦法,大家可以參考借鑒。


如何學好一門編程語言?

一、多總結

多總結才能加深理解、增強記憶。舉例,Go 中有 slice、map、channal 類型,它們都可以用 make 生成實例,但 slice 和 map 還可以用以下形式初始化,也是編程規范中建議的初始化方式:

colors := map[string]string{}

slice := []int{}

但注意了,channal 則沒有這樣的語法:msg := chan string{}

上面兩句是生成實例,表示空集合,但下面兩句則表示實例不存在,值為 nil

var colors map[string]string

var slice []int

另外,結構體指針 slice 還可以象下面這樣初始化,結構體實例不用明確地指定類型(使用了類型推導)、不用明確地取地址運算(&)。

type Proct struct {

name string

price float64

}

procts := []*Proct{{"Spanner", 3.99}, {"Wrench", 2.49}, {"Screwdriver", 1.99}}

看到沒有,如果不經常總結,這一圈學下來會把你整的稀里糊塗的。

二、多比較

學一門新語言一定要與你之前已經熟悉的語言經常作比較,找出它們的相同與不同,這樣才能加深記憶和理解,否則學完之後腦子里會一片混亂,搞不清誰是誰非了。

就拿數組來說吧,在 Java、Scala、Go 中定義、實例化、賦值是不一樣的。

//Java

int[] arr;//定義數組,不可以指定數組長度

arr = new int[5];//創建數組對象(實例化),指定數組長度

arr[1] = 8;//賦值

//Scala

val arr = new Array[Int](5) //數組在Scala里用的是泛型類,構造函數參數指定數組大小

arr(1) = 8 //賦值,注意用的是括弧

//Go

arr := [5]int{} //創建數組,初始化5個元素都為0,注意如果不指定數組長度,則是另外一種類型Slice

arr[1] = 8 //賦值

再比如 Map 在 Scala 與 Go 語言里定義、初始化、訪問也是不同的,作了以下比較後印象會非常深刻,把它們記下來,這樣以後使用就不會搞混了。

//Scala

val capital = Map("France" -> "Paris", "Japan" -> "Tokyo")

println(capital.get("France"))

//Go

capital := map[string]string{"France": "Paris", "Japan": "Tokyo"}

fmt.Println(capital["France"])

Go 同時給多個變數賦值在 Scala 里可以用模式匹配做到,如下:

//Scala(使用樣本類的模式匹配)

case class Tao(name: String, age: Int);

val Tao(myName, myAge) = Tao("taozs", 18);

println(myName)

println(myAge)

//Go

myName, myAge := "taozs", 18

fmt.Println(myName)

fmt.Println(myAge)

//Scala(使用元組的模式匹配)

val (myNumber, myString) = (123, "abe")

println(myNumber)

println(myString)

//Go

myNumber, myString := 123, "abe"

fmt.Println(myNumber)

fmt.Println(myString)

以下是 Scala 和 Go 定義和實現函數的區別:

//Scala

val increase: Int => Int = (x: Int) => x + 1

println(increase(8))

//Go

var increase func(int) int = func(x int) int { return x + 1 }

fmt.Println(increase(8))

除了在 Scala 和 Go 里都可以類型推導外,在 Scala 里還可以這樣定義函數:

//Scala

val increase = (_: Int) + 1

為方便自己將來隨時查閱,可以建立下面這樣的對比表格,描述不一定要求規范,自己能看懂就行。

三、轉變思維方式,

學會用這門語言去思考

學會用語言去思考是關鍵。如果你以前是學 C 的,轉學 Java,你一定要改變以前面向過程的思維,學會用面向對象的思維去分析問題;以前學 Java 的,轉學 Scala 則要學會用函數式的編程思維解決問題。

舉一個函數式編程的例子,以下是 Java 語言常用的 for 循環,循環變數從 1 到 10 執行 10 次循環體:

// 命令式編程

for (int i = 1; i < 10; i++) {

// 此處是循環體做10次

}

這被稱為命令式編程 (Imperative Programming),但學了 Scala 的函數式編程 (Functional Programming) 後,解決同樣的問題,我們可以換一種思維:構建 1 到 10 的列表序列,針對列表中的`每個元素分別執行函數,如下:

//函數式編程

val autoList = (1 to 10).map(i => /*此處是函數體,針對1到10的每一個分別調用 1次*/)

已經習慣了 Java 編程的,對 Scala 的函數式編程、樣本類、模式匹配、不可變對象、隱式轉換等需要一個逐步適應的過程,要漸漸學會用它們思考和解決問題。

再舉個 Scala 與 Go 思維方式不同的例子,要實現對一個字元串里的每個字元加 1 的操作,Scala 里可以這樣:

"abc".map(cc => cc + 1)

"abc"是一個字元串對象,調用它的方法 map,這是純面向對象的思維,但在 Go 里就要轉變為面向過程的思維:

name := "abc"

second := strings.Map(func(x rune) rune {

return x + 1

}, name)

注意,這里的 strings 是包 (package),調用它的公共函數 Map,被人操作的對象 name 字元串作為函數參數傳入。Go 提供的函數 len、cap、append、 等其實都是面向過程的,雖然 Go 也提供有面向對象的支持,已經習慣了面向對象編程的,剛開始學 Go 語言需要特別留意這一點。

四、多看開源代碼

學一門語言就是學一種思維方式,如今 GitHub 上可下載的開源代碼海量級,通過看別人的代碼,學習別人是如何解決問題的,養成用該語言思考的習慣,另外還能學習到一些非常有用的技巧,比如我在看一個 Go 語言性能測試框架代碼時看到有以下寫法:

func main() {

defer profile.Start().Stop()

...

}

這個意思是指剛進入程序時執行 Start( ) 函數,程序退出前調用 Stop( ) 函數,非常好的技巧啊!可以用於需要在程序執行前和程序完成後分別執行一段邏輯的場景。再看 Start( ) 函數是怎麼實現的:

func Start(options ...func(*Profile)) interface {

Stop()

} {

...

return &prof

}

該函數返回了一個實現了含有 Stop( ) 函數介面的對象,如此才能在調用 Start 調用後連調 Stop。

五、優先學會使用代碼分析工具

代碼分析的工具包括靜態檢查、測試、測試覆蓋率分析、性能分析(內存、CPU)、調試工具等,工具的價值在於它可以有效幫我們發現代碼問題,這在我們剛開始學一門編程語言時意義尤其重大。

例如,以下這句 Java 賦值語句估計沒有哪本教科書會告訴你有性能問題:

String sb = new String(「Hello World」);

以下這段 Java 代碼你也不一定能意識到有多線程問題:

synchronized public void send(authuserPacket pkt, Thread t, String flowNo) throws IOException

{

logger.info("start");

//連接不可用,直接拋出異常,等待接收線程連接伺服器成功

if (!this.avaliable)

{

try

{

//如果連接不可用,則等待2S,然後重新檢測

Thread.sleep(2000);

}

... ...

如果我們及時用 FindBugs 工具檢查就會發現上面這些問題,進而你會去分析研究為什麼,如此,你對這門語言的了解也會越來越多。

另外,Go 語言自帶的 vet/test/cover/pprof/trace 都是非常有用的工具,一邊學一邊使用這些工具分析代碼,能加深對語言的理解。

六、多練習、多實踐

就象學自然語言一樣,如果只知道語法不去練是沒有任何效果的,只有反復地練習,慢慢才能變成自己的一項技能。書本上的例子代碼最好能從頭到尾親自敲一遍,多運行、多嘗試,另外再找一些題目來練習,如能有機會參與項目開發則更好啦,勤動手、勤實踐是最好的學習方法。

其它的方法還有:

做好筆記,把學習中遇到的關鍵點和自己的思考記下來,便於後面復習和對比;

復習,學習一定要重復、重復、再重復;

學習貴在堅持,每天學一點(比如堅持每天學 1 小時),日積月累。

③ Python多長時間可以學會精通

很多初學者都有這樣的疑問,Python需要多長時間可以學會,達到精通呢?
學會Python需要多長時間?
如果是自學,從零基礎開始學習Python的話,依照每個人理解能力的不同,大致上需要半年到一年半左右的時間,
當然,如果有其它編程語言的經驗,入門還是非常快的,大概需要2~3個月可以對上手Python語言編寫一些簡單的應用。
無論是新手還是有一定基礎的朋友,有一個有經驗的人帶著自己學習,或者參加我們的玩蛇網Python培訓課程,都會1個月左右入門,3個月左右對Python有一個全面系統的了解,達到自己動手編程解決問題的能力。
精通Python需要多長時間?
任何知識都是基礎入門比較快,達到精通的程序是需要時日的,這是一個逐漸激烈的過程。
精通任何一門編程語言,都需要通過大量的實踐來積累經驗,解決遇到的各種疑難問題,看別人的源碼,分享自己的分碼的這個過程,才能夠精通Python的方方面面。從編程的一開始,就應該不斷的動手去編寫代碼,不停的去實踐,不停的去修改,不停的總結經驗,最終才能熟能生巧,達到精通。
一個對Python程序能算的上精通的程序員,對同樣一個問題,他知道很多種解決問題的方法,並能從中選擇最有效率的方法!

④ 如何更加有效的學習一門編程語言

學習編程語言是一項技能,在學習過程中,那種獲取新知識後的快感也是我們所想要的;反之,就會陷入負面情緒,不願寫代碼的境況。那麼,我們應該如何做到有效且高效地學習一門編程語言呢?

閱讀全文

與精通一門編程語言學習相關的資料

熱點內容
php多個分隔符分割 瀏覽:374
表格怎麼轉移到另一個文件夾 瀏覽:923
同態加密gpu 瀏覽:216
程序員告訴你網賭為什麼贏不了 瀏覽:971
程序員最帥操作 瀏覽:72
雲伺服器可以隨時更換嗎 瀏覽:489
老款車在哪裡可以買到app 瀏覽:460
程序員事業單位 瀏覽:68
特來電需要用哪個App 瀏覽:881
電腦如何共享其他伺服器 瀏覽:260
php網站性能優化 瀏覽:354
被子收納袋壓縮真空 瀏覽:30
h1z1選什麼伺服器 瀏覽:484
蘋果版三國殺怎麼在安卓上下載 瀏覽:728
安潤國際app在哪裡下載 瀏覽:438
iospdf教程下載 瀏覽:332
加密貨幣換手率300表示什麼 瀏覽:727
手機wps新建文件夾存照片 瀏覽:399
單片機rgbled 瀏覽:963
怎麼通過文件加密後發給微信好友 瀏覽:90