# 【程式語言】Chapter.1 Preliminaries ## 學習程式語言的核心原因 * 增強自己的表達能力 * 你的code不能只有自己看懂。 * 增強你選擇合適的程式語言的能力 * 不同的case你需要用不同的語言來進行,會更加適合。 * 增強你學新的語言的能力 * 更快速瞭解實作的意義 * 簡單來說可以加強電腦能力 ## 程式領域 * 不同的語言在設計時都有不同的考量,為了達到各自的目的而在架構上有所不同。 --- * 科學應用 * 大數和浮點數的運算 * 代表語言:**Fortran** * 商業應用 * 產品報告、特別使用decimal numbers(特有的小數型別)和字元 * 代表語言:**COBOL** * COBOL幾乎是上古神獸的語言,但還是有許多如銀行單位在使用。 * 很多銀行等單位只要程式能work就不太想改變或更新,因為不保險。 * 人工智慧 * 使用符號來取代數字的操作 * 代表語言:**LISP** * LISP的描述對電腦來說簡單,但是工程師可能難以理解。 * 之後會有LISP的作業。 * 系統設計 * 因為大量的連續使用,需要高效率 * 代表語言:**C** * 最能代表的就是UNIX系統,大多的OS都是以此為底往上開發的,而UNIX就是用C撰寫的。 * 網路軟體 * 以相容為主的概念去架構的,原先理想是做什麼事都可以用該種語言 * 代表語言:**XHTML**、**PHP**、**Java** ## 語言評估的標準 * 基本上我們可以從幾個大面向去講一個語言的特性:<u>Readability</u>、<u>Writability</u>、<u>Reliability</u>、<u>Cost</u>。 ### Readability(可讀性) - 程式有多好看懂就是可讀性。 * 整體簡單性:程式整體的結構和特徵,還有符號overloading的支援度。 * 正交性:結構和結構間應該可以彼此交融不衝突,同時行為都是合法的。 * 如:巢狀迴圈是兩個迴圈結構,內外層都保持自己的運行規則而不會衝突。 * 控制手段:while、for等控制的結構設計好壞會大幅影響程式語言的可讀性。 * 資料型別和結構:有點廢話不想打了。 * 語法考量:保留字或語法架構是否有彈性又好懂。 ### Writability(可寫性) - 對於程式設計師來說這語言多容易撰寫就是可寫性。 - 可讀和可寫蠻大的部分會交疊在一起,因為好寫的程式語言同時代表它不難看懂。 * 簡單和正交性:基本上同上。 * 支援抽象化:善用抽象化的概念可以節省大量的時間去實作不重要的細節。 * 舉例:大多數語言內建log的函式,你雖然不明白它內部如何實作完成log的運算,但你還是可以用得很開心。 * 表達性:支援多種功能類似,但視情況更方便使用的結構。 * 舉例:for其實有while loop的情況下根本不需要使用,但是for在很多情況很方便。 ### Reliability(可信度) - 一個語言從開發到完成的強健性。 * 型別檢查:語言會不會自動判斷型別錯誤去做修正。 * 舉例:撰寫C的時候你型別用錯直接當機,但C#可能只會出現NaN。 * 例外處理:遇到錯誤時有沒有能力自動修正回到正確的流程上。 * 舉例:除0有些語言會當機,有些會變無限大然後繼續運作。 * 別名(Aliasing):不同的變數去存取同一塊記憶體的時候要如何處理。 * 很多時候是設計上故意的,如pointer就常常做這件事,但提供的除錯功能就要看語言的可信度了。 * 可讀性和可寫性:其實這兩點都會影響到可信度,因為太難撰寫的語言就容易寫錯。 ### Cost(消耗、成本) - 討論一個語言的cost不只有我們常說的運行時間和記憶體空間等。 - 訓練成本:今天你要找到一個COBOL工程師可不簡單,如果要重頭學又很花時間或金錢。 - 編譯成本:有些好的IDE工具本來就要錢(VS專業版就要付費),而編譯所花的時間也是成本。 - 維護成本:已經寫好的程式是有可能出bug的,要維修或是怎樣都是額外的成本。 ###### tags: `note`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up