動態(tài)編程語言的定義說“這些語言是那些在運行時執(zhí)行多種通用行為的語言,這與在編譯時執(zhí)行相同操作的靜態(tài)編程語言相反。它可以通過添加新代碼、擴展對象和定義來實現(xiàn)” .據(jù)我所知,許多編程語言都以 Java 等包或 C++ 等頭文件的形式進行封裝。因此,作為程序員,我將編寫的代碼肯定會在編譯時擴展,并最終轉(zhuǎn)換為匯編代碼,最后轉(zhuǎn)換為機器代碼。那么每一種高級語言都變得動態(tài)了嗎?
1 回答

慕的地10843
TA貢獻1785條經(jīng)驗 獲得超8個贊
一般來說,可以通過類型系統(tǒng)來區(qū)分靜態(tài)和動態(tài)編程語言。在動態(tài)類型系統(tǒng)中你可以有以下
var x = 2
x = "c"
意思是,給定變量的類型可能會在其生命周期內(nèi)發(fā)生變化。靜態(tài)類型系統(tǒng)不允許這樣做。C#dynamic數(shù)據(jù)類型是此功能的一個示例。
注意不要將動態(tài)與推斷或弱類型系統(tǒng)混淆。推斷類型系統(tǒng)不需要變量的正式聲明,但會根據(jù)分配的值推斷類型。它不允許用不同的類型重新聲明變量。
var x = 2 // the type of x is int
x = "C" // compile error: incompatible types!
弱類型系統(tǒng)允許與聲明的變量類型不兼容的操作。C 允許將指針轉(zhuǎn)換為任何類型:
foo(void *ptr) {
char *str;
strcpy(str, (char *)ptr);
int i = &(int *)ptr + 1;
}
類型系統(tǒng)的所有組合都存在,有時使用相同的編程語言:靜態(tài)/動態(tài)、隱式(推斷)/顯式、弱/強。
添加回答
舉報
0/150
提交
取消