1、動態語言
是一類在運行時可以改變其結構的語言:例如新的函數、對象、甚至代碼可以被引進,已有的函數可以被刪除或是其他結構上的變化。通俗點說就是在運行時代碼可以根據某些條件改變自身結構。
主要動態語言:Object-C、C#、JavaScript、PHP、Python、Erlang。
2、靜態語言
與動態語言相對應的,運行時結構不可變的語言就是靜態語言。如Java、C、C++。
1、編譯型語言
需通過編譯器(compiler)將源代碼編譯成機器碼,之後才能執行的語言。一般需經過編譯(compile)、鏈接(linker)這兩個步驟。
編譯是把源代碼編譯成機器碼,
鏈接是把各個模塊的機器碼和依賴庫串連起來生成可執行文件。
優點:編譯器一般會有預編譯的過程對代碼進行優化。因爲編譯只做一次,運行時不需要編譯,所以編譯型語言的程序執行效率高。可以脫離語言環境獨立運行。
缺點:編譯之後如果需要修改就需要整個模塊重新編譯。編譯的時候根據對應的運行環境生成機器碼,不同的操作系統之間移植就會有問題,需要根據運行的操作系統環境編譯不同的可執行文件。
代表語言:C、C++、Pascal、Object-C以及最近很火的蘋果新語言swift
2、解釋型語言
解釋性語言的程序不需要編譯,相比編譯型語言省了道工序,解釋性語言在運行程序的時候才逐行翻譯。
優點:有良好的平臺兼容性,在任何環境中都可以運行,前提是安裝瞭解釋器(虛擬機)。靈活,修改代碼的時候直接修改就可以,可以快速部署,不用停機維護。
缺點:每次運行的時候都要解釋一遍,性能上不如編譯型語言。
代表語言:JavaScript、Python、Erlang、PHP、Perl、Ruby
1、強類型語言
強類型語言是一種強制類型定義的語言,一旦某一個變量被定義類型,如果不經過強制轉換,則它永遠就是該數據類型了,強類型語言包括Java、.net 、Python、C++等語言。
2、弱類型語言
弱類型語言是一種弱類型定義的語言,某一個變量被定義類型,該變量可以根據環境變化自動進行轉換,不需要經過顯性強制轉換。弱類型語言包括vb 、PHP、javascript等語言
腳本語言
腳本語言是一種解釋性的語言,例如vbscript,javascript,installshield script,ActionScript等等,它不象c\c++等可以編譯成二進制代碼,以可執行文件(文本形式存在,類似於一種命令)的形式存在.腳本語言不需要編譯,可以直接用,由解釋器來負責解釋。
解釋性語言有個特列就是java,他是不是腳本語言,他要編譯,也要解釋