基礎概念
Program Errorstrapped errors矢渊。解釋器或編譯器不能處理的錯誤继准。導致程序終止執(zhí)行,如除0矮男,Java中數(shù)組越界訪問untrapped errors移必。 出錯后繼續(xù)執(zhí)行,但可能出現(xiàn)任意行為毡鉴。如C里的緩沖區(qū)溢出崔泵、Jump到錯誤地址
Forbidden Behaviours 運行環(huán)境預先定義的錯誤。 語言設計時眨补,可以定義一組forbidden behaviors. 它必須包括所有untrapped errors, 但可能包含trapped errors.
Well behaved: 如果程序執(zhí)行不可能出現(xiàn)forbidden behaviors,則為well behaved
ill behavedwell behaved:可能出現(xiàn)forbidden behaviors則為ill behaved…
強管削、弱類型,靜態(tài)撑螺、動態(tài)類型
強類型strongly typed: 如果一種語言的所有程序都是well behaved——即不可能出現(xiàn)forbidden behaviors含思,則該語言為strongly typed。
弱類型weakly typed: 否則為weakly typed甘晤。比如C語言的緩沖區(qū)溢出含潘,屬于trapped errors,即屬于forbidden behaviors…故C是弱類型线婚。弱類型語言遏弱,類型檢查更不嚴格,如偏向于容忍隱式類型轉(zhuǎn)換塞弊。譬如說C語言的int可以變成double漱逸。 這樣的結(jié)果是:容易產(chǎn)生forbidden behaviours,所以是弱類型的動態(tài)游沿、靜態(tài)類型
靜態(tài)類型 statically: 如果在編譯時拒絕ill behaved程序饰抒,則是statically typed; a. 如果類型是語言語法的一部分,在是explicitly typed顯式類型诀黍; b. 如果類型通過編譯時推導袋坑,是implicity typed隱式類型, 比如ML和Haskell
動態(tài)類型dynamiclly: 如果在運行時拒絕ill behaviors, 則是dynamiclly typed。
Note
腳本語言直接運行在解釋器眯勾,一般沒有編譯的過程枣宫,所以也稱為解釋語言婆誓。但為了工作效率,腳本語言的編譯環(huán)境也可能被開發(fā)也颤,像運行JavaScript的Node.js.
腳本語言沒有編譯的過程洋幻, 通常會在運行環(huán)境下報錯,所以多為動態(tài)類型
C#和Java歇拆, 為了編程效率及商業(yè)因素鞋屈,都有自己的專用IDE,像VS和Eclipse故觅。IDE為了代碼的運行效率和健壯性會將程序員輸入的自然語言編譯為中間語言厂庇,例如.lib文件和.jar文件,編譯的過程在不同的IDE中是不同的输吏。之后就是將各自格式的中間語言文件部署到其運行環(huán)境权旷, 也就是常說的 .Net Framework和 JRE()