『壹』 零基礎小白怎麼學編程
零基礎小白自學入門編程方法
第一步,選擇一門編程語言
在學習的過程中,不要盲目的按照別人的代碼敲。甚至我都不建議你記筆記,因為最重要的是能夠學習別人的編程思路,所以你要時刻思考這個函數是怎麼實現的,為什麼要這樣去實現。最好在每次看書或者看視頻的時候,用自己的思路把這些東西整理出來,和視頻對比,找出問題所在,這樣才能把別人的精華融入到自己的思維中。
第三步,勤加練習
學習的時候,要給自己一個心理暗示,把自己當成一個真正的開發者。因為編程是一個必須經過實踐檢驗的工作。背語法和API只是基礎,用它們解決實際問題才是編程。在你接觸了一些編程思路後,可以嘗試完全靠自己實現功能,不需要課本。自己實現一些小項目來練習,看看別人的項目代碼,和別人討論,提高代碼能力。在最後的就業面試中,你做過的項目就是能證明你個人價值的經歷。
第四步,明白業務邏輯
什麼是業務邏輯?簡單來說就是客戶給你的框架和要求。
剛開始工作的時候,也是一接到業務就寫代碼,這樣到了中後期就會錯過客戶要求的點,或者不能充分考慮客戶的需求。這也是很多新手都會犯的錯誤。有經驗的老手通常會告訴你,沒有一上來就寫代碼的項目。
我們需要在做任何事情之前仔細研究客戶的框架和需求,理清業務邏輯。把編程過程中要注意的點列清楚,開始編程前可以做個流程圖。
作為一個零基礎的初學者,如果能走過這四個步,基本上就算是入行了。
『貳』 如何學好編程
學好編程其實很簡單 就是要多花點時間去做以下事情: 1. 多做筆記,特別是電子筆記,如:遇到好的代碼可以記下來,下次使用時不必重新敲了,整理歸類; 2. 多上機實踐:這個是關鍵,對於書上的每個例子最好自己編程實踐一下 最重要的就這兩條,至少我當初學習編程的時候是這樣做的,也很管用。 你是業余的,那就更需要花時間了,剛開始學的時候肯定有很多不明白,你就把它先記下來,像記英語語法一樣,程序也有它自己的語法,多實踐後自然就明白了。另外,網上有很多這方面的電子書,你可以在狗狗里搜一下,CHM和PDF的電子書最多,從C語言開始學,因為C是每個程序員的起點語言。
『叄』 如果自己要發明一種編程語言,那麼需要做些什麼事情呢
如果你要做這個,那麼先要完成對於一門編程語言的各個要素:比如定義你自己的語法、數據類型、語言結構等等,其次你要寫一個支持這些語法的解釋器或編譯器。
就我的理解,當你編寫完成一個編譯器或解釋器,基本上你的代碼就可以用了。
比較粗陋的比方,你會一門地球人都不會的外星語言,現在語言已經存在了,硬體條件:運行的器官(你的嘴巴)可以說這些語言,但要讓除你之外的地球人聽明白你說什麼,顯然你需要個翻譯,將你的外星語言變成別人能聽懂的(這就是將高級語言變成機器指令)。
『肆』 如何自創一門編程語言
從你的描述來看,自創一門編程語言是非常困難的。現在的編程語言都是幾十年前研究人員做出來的,他們為編程語言做出了很大的貢獻。
如果自創一門編程語言的話,幾乎是不可能的,就算一個國家,集一國之力也很難做出來。
『伍』 如何自創一門計算機語言
學練相結合:在學習新知識的同時,充分利用身邊的電腦,做到邊學新知識邊上機操作練習,這樣對於加強知識的穩固具有十分重要的作用。
深入學習細節過程中,對於電腦編程的學習,即要從整體把握,又要深入細節當中,了解並掌握
知識的核心理念。
努力學好一門計算機編程語言。根據電腦編程語言的相通性,當充分掌握一門計算機編輯語言後,對於其它語言的掌握時間將明顯減少。
最好先從低層(級)語言學起,這樣就可以有效的掌握計算機的硬體低層知識,從而為更高級語言的學習打下良好的基礎。
嘗試自己編寫若干個功能模塊,從而加強對計算機編程語言基礎能力的加強以及應用,並為新知識的學習奠定基礎。
向別人學習,多看看別人寫的代碼,了解應用計算機編程解決問題的通用方法,從中提煉解決問題的通用方法。
『陸』 如何學好一門編程語言
學好一門編程語言是十分不容易的,但是如果學會了,它的實用性是很強的,下面我為大家整理了學好一門編程語言的辦法,大家可以參考借鑒。
一、多總結
多總結才能加深理解、增強記憶。舉例,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 小時),日積月累。
『柒』 如何創造一門編程語言
設計一門計算機語言其實有蠻成熟的技術路徑,只是時間和工作量的問題,但要從已經存在的眾多語言中找出需求差異,找到新語言的存在價值,卻是一件很難很難的事
『捌』 如何設計一門計算機編程語言呢
設計一門語言太容易,只要用某個符號表示某個功能就行。但能設計出別人願意用的就不容易了。
記得採納啊
『玖』 如何更加有效的學習一門編程語言
在了解到,如何寫一個軟體或者程序後,想要深入的了解的話,那麼你就要補課了,什麼是數據結構,什麼是計算機網路,什麼是操作系統,只有了解這些之後,你才會發現,原來是這樣,為什麼介面是這樣的,演算法這么寫才更簡便呀。
快速有效的學一門編程語言,不是找一個視頻課跟著學,而是在學習的過程中,自己上手來敲一遍,這樣才能快速有效的掌握。
『拾』 如何自創一門編程語言
我也有這種想法,不過我查過很多資料,要想自己創造一門編程語言(我說的是中文編程語言),需要從頭開始,比如,從機器代碼開始,創造出中文的匯編語言,然後從中文匯編語言創造出高級中文編程語言。編程語言是為了讓計算機知道我們到底想讓它做些什麼。所以從頭開始是最簡單的事情,但也是最難的事情,單單是其中低級轉到高級語言中的轉換解釋就需要很多知識。我說的不是那種把英文單詞改成中文單詞那種。而是改變結構,語法分析等等。現在我還在研究,但是很多東西真的不懂。因為不是母語,所以看不懂英文教材。也記不住基本的英文指令代碼。更加不理解到底是什麼意思。哎。加油。