用9天入門三門編程語言,有可能嘛,尤其是對沒有基礎的同學來說?對於想學好的編程的人來說,無論從哪一門語言開始入手,語言的本身其實並不是我們最應該的關心的,至少不是作為一個初學者首先關心的。
網絡上,網友們爭論的哪個語言是最好的語言在我看來是這個世界上最無聊的爭論。語言只是最基礎的工具,是為我們服務,為業務服務的。如果你會編程,從A語言切換到B語言不會有太大的gap。以后我要寫的一系列文章,總結了如何快速入門一門新語言。核心思想是重視編程特性,而不是具體的語言。先把編程實現的特性拿出來,再看看某種語言是怎么做到的。
先說編程特性,任意一門編程語言都會具有以下特性:
- 變量和數據類型,賦值和輸出
- 算術運算
- 選擇結構
- 循環結構
- 函數定義,函數調用
- 變量作用域
- 棧,程序運行的基石
- 面向對象
- 語言提供的公用包
如果你不同意,請給我留言!如果是零基礎的同學,請把以上幾個關鍵字背下來。
如果是已經有編程基礎的同學,相信用不了9天,大概3天是完全可以入門一門新語言的。
后面我會講的三門語言的入門。先講Java,后講Python和JavaScript。講Java時只講Java的知識點,到后面講Python和JavaScript時會類比其他語言,橫向做比較。
解釋一下為什么是Java,Python,JavaScript。Java是廣泛使用的后端語言,Python是廣泛使用的腳本語言,當膠水,做數據處理,做后端都可以。JavaScript是前端語言。這三門語言都是適合初學者入門,也是工業界廣泛使用的,如果同時學這三門語言不難,以后學習其他語言肯定不會再有門檻。
在開始講語言入門之前,我再舉一個例子說明我們為什么要先掌握編程特性。如果你要DIY一台電腦,你肯定要買CPU,內存,主板,硬盤,機箱,顯示器,鼠標鍵盤外設。這是一台電腦的基本組成,這個基本組成可以類比成我所說的編程特性。好了,當我們了解這些基本特性之后,我可能會有一些選擇,比如CPU買Intel的還是AMD的,對應的主板也會有不同的選擇。Intel還是AMD就可以類比成我要用Java還是Python。
所以呀,初學者千萬不要糾結學哪門語言,糾結來糾結去,時間都浪費了什么都沒掌握。掌握了編程特性之后,隨着思考和實踐的深入,學什么語言用什么語言是信手拈來的事。
我見過一些已經有工作經驗的工程師,用Java寫排序引擎,代碼一團亂,自己罵Java這不好那不好,宣稱用Go寫肯定性能就好如何如何。我相信他不能用Java的基本特性做好一個工程,換一種語言也是於事無補的。能否寫出好代碼在於人,在於設計,在於實踐,不在於語言。
真正有經驗的程序員會如何學一門新語言呢,他肯定不是去看磚頭厚的書籍學幾個月再出山。往往是碰到一個需要解決的問題,然后花幾分鍾了解一下這門語言的特性,參考例子代碼修改搗鼓,接着開始修改代碼,實現新需求。整個過程中,他是利用編程特性解決自己的問題,而不是特意去學習一門語言。
說了半天,還沒講怎么准備編程環境工具之類的。對於Java,網絡上很多安裝教程,just Google it,IDE(集成開發環境)我推薦使用Intellij idea。對於Python,安裝教程同樣很多,IDE推薦PyCharm,以上都是安裝社區版即可。對於JavaScript,不需要安裝什么環境,我們直接用瀏覽器執行。IDE(集成開發環境)推薦使用Sublime。
現在我們開始說編程特性第一條“變量和數據類型,賦值和輸出”。從廣為流傳的Hello World說起,
Hello World
- 用Intellij Idea建立一個新的Java工程
- 在src目錄建一個FirstLesson.java 文件
/**
* 變量和數據類型,賦值和輸出
*/
public class FirstLesson {
/**
* 在java中,main()方法是java應用程序的入口方法。java虛擬機通過main方法找到需要啟動的運行程序
*/
public static void main(String[] args) {
/**
* variable就是一個變量
* 任何一門語言都會有變量的概念
* 計算機會在內存留出一個區域存儲變量的值,
* 然后使用變量名對變量進行訪問,讀取變量的值,或者修改變量的值
*/
String variable = "Hello World";
/**
* 輸出variable,為什么是System.out,而不是其他方式
* System里封裝了很多基本的操作系統接口
*/
System.out.println(variable);
}
}
/**/ 內包含的文本是注釋,注釋即輔助你理解程序說明,但編譯器不會去編譯的文字段。
變量
String variable = "Hello World";
包含三個知識點,(1)新建變量variable;(2)variable是字符串類型;(3)給變量variable賦值。
注意代碼里我對這兩行代碼的說明。
下圖講解了變量在計算機里是什么意思
k是變量的名稱,3是變量的值,還有一個變量的地址,即內存的地址。變量名稱以及值的概念一定要記住,內存地址可以暫時不理解。
"變量就像個盒子(占用存儲空間),盒子有個名字(變量名),盒子可以存放東西(存變量的值)"
變量基本類型
說到變量,就得說清楚變量都有什么類型。如果我把所有的變量類型都羅列出來,恐怕太多了不好記。下面只列出常用的
- 字節型(byte,字節型是一種 8 位有正負的二進制整數
最小值是 -128
最大值是 127 - 短整數(short)
最小值是 -32768
最大值是 32767 - 整數型(int)
最小值是 - 2,147,483,648
最大值是 2,147,483,647 - 長整型(long)
長整型是一種 64 位有正負的二進制整數
最小值是 -9,223,372,036,854,775,808(-2^63)
最大值是 9,223,372,036,854,775,807 (2^63 -1) - 浮點型(float)
浮點型數據是一種單精度的 32 位 IEEE 754 標准下的浮點數據。 - 雙精度型(double)
雙精度型數據是一種雙精度的 64 位 IEEE 754 標准下的浮點數據。 - 布爾型(boolean)
布爾型數據代表一個信息比特。
它只有兩個可能的值:真(true)和假(false)
賦值
前面提到了,你在代碼里寫一個變量,計算機會在內存給他留出一個空間存儲他的值。但是你得給他賦值啊,不然計算機怎么知道這個變量該存什么值。
在Java里面,賦值操作符就是=
。直觀理解,就是把等號右邊的值,賦予左邊的變量。
輸出
我們和計算機的交互過程就是一個輸入和輸出的鍵盤,我們操作鼠標,操作鍵盤即是輸入。顯示屏幕,音箱的輸出就是計算機的輸出。
System.out.println(variable);
就是一種最簡單的輸出,Java調用系統函數,告訴操作系統打印變量variable
。這個輸出看起來不那么fancy,沒關系,你只要理解好他就是最簡單的輸出即可。
總結
- 任意編程語言都有變量
- 變量由變量名稱和值構成
- 變量可以是字符串,整數,布爾值,浮點數等
- 賦值是一個等號,把等號右邊的值賦予左邊的變量
- System.out.println就是一個最簡單的輸出
作業
- 模仿Hello World 樣例,寫下你心愛的人的名字,讓計算機輸出你心愛的人的名字
完整章節
- 九天學會Java,第一天,變量和數據類型,賦值和輸出
- 九天學會Java,第二天,算術運算
本文所有內容歸原創者凱威的講堂所有。請轉載時請遵循 “署名-非商業用途-保持一致” 的創作共用協議。不歡迎商業網站擅自復制內容,並且保留所有權利。