(Translated by https://www.hiragana.jp/)
型別系統 - 维基百科,自由的百科全书

かたべつ系統けいとう

はたたたえため類型るいけいてき屬性ぞくせい分配ぶんぱいきゅう計算けいさんほどじょてき各種かくしゅ構造こうぞうてき規則きそくしゅうれい如變りょうひょうたちしき函數かんすうあるかたまり
重定しげさだこうかたたい系統けいとう

ざい计算つくえ科学かがくなか类型系統けいとう英語えいごtype systemよう定義ていぎ如何いかはたほどしきげんなかてきかず運算うんざんしき归類为许不同ふどうてきかたべつ如何いか操作そうさ这些がたべつ,这些がたべつ如何いか互相作用さようかたべつ以确认一个值或者一组值具有特定的意义和目的(雖然ぼう些型べつ,如抽象ちゅうしょうがたべつはこしきがたべつざいほどしき執行しっこうちゅう可能かのう表示ひょうじため值)。かたべつ系統けいとうざい各種かくしゅげんあいだゆう非常ひじょうだいてき不同ふどう,也許,さい主要しゅようてき差異さい存在そんざい於編やく時期じきてき語法ごほう,以及執行しっこう時期じきてき操作そうさ实现方式ほうしき

へんやく可能かのう使用しよう值的靜態せいたいがたべつ以最けいしょ需的もうかそんなみせんたい運算うんざんてき較佳演算えんざんほうれい如,ざい許多きょたCへんやくちゅう,「浮點すう資料しりょうがたべつ以32 もと表示ひょうじあずかIEEE 754規格きかく一致いっちてき單精度たんせいど浮點すうよし此,ざいすう運算うんざんじょう,C應用おうようりょう浮点すう規範きはん(浮點すう加法かほう乘法じょうほうとうとう)。

かたべつてき約束やくそく程度ていど以及ひょう估方ほう影響えいきょうりょうげんてきかたべつ更進こうしんいちほどしきげん可能かのうかたべつたいせい部分ぶぶんたいごと一個型別都對應了一個極度個別的演算法的運算。かたべつ理論りろん研究けんきゅうがたべつ系統けいとう,儘管實際じっさいてきほどしきげんがたべつ系統けいとう起源きげん電腦でんのう構的實際じっさい問題もんだいへんやくさく,以及げん設計せっけい

基礎きそ

编辑

定型ていけいtypingまたたたえがたべつゆびいちくみもとぼう意義いぎかたべつ通常つうじょう記憶きおくたいなかてきすう值或物件ぶっけん(如變數へんすうあいれん繫。よしためざい電腦でんのうなかにんなんすう值都いちくみもと簡單かんたん組成そせいてきかたたい無法むほう區分くぶん記憶きおく體位たいい指令しれいもと整數せいすう、以及浮點すうかたべつ告知こくちほどしきほどしき設計せっけいしゃおう該怎麼對まち些位もと

かたべつ系統けいとう提供ていきょうてき主要しゅようこうのうゆう

  • 安全あんぜんせい
使用しようがたべつ允許いんきょへんやく偵測無意義むいぎてきあるもの可能かのう無效むこうてきだい碼。れい如,以識いち無效むこうてき運算うんざんしき"Hello, World" + 3いんため不能ふのうたいざい平常へいじょうてき直覺ちょっかくちゅう逐字ちくじくしじょういち整數せいすうつよがたべつ提供ていきょうさらてき安全あんぜんせいただし它並不能ふのう保證ほしょう絕對ぜったい安全あんぜんしょうじょう請見かたべつ安全あんぜん)。
  • さいけい
靜態せいたいがたべつけん查可提供ていきょう有用ゆうようてき訊給へんやくれい如,如果一個型別指明某個值必須以4てき倍數ばいすうたいひとしへんやく就有以使ようさら有效ゆうこうりつてき機器きき指令しれい
  • 可讀かどくせい
ざいさら表現ひょうげんりょくてきがたべつ系統けいとうちゅうわか其可以闡明せんめいほどしき設計せっけいしゃてき意圖いとてきはなしがたべつ就可以充當為とういいちしゅぶんけん形式けいしきれい如,時間じかん戳記以是整數せいすうてきがたべつただし如果ほどしき設計せっけいしゃ宣告せんこく一個函式為返回一個時間戳記,而不ただいち整數せいすう,這個はこしき就能ひょう現出げんしゅつ一部分文件的闡釋性。
  • 抽象ちゅうしょうあるぐみ
かたべつ允許いんきょほどしき設計せっけいしゃたいほどしき以較高層こうそうてき方式ほうしき思考しこう,而不うるさ人的じんてき低層ていそうさくれい如,ほどしき設計せっけいしゃ以將くしそうなりいち值,以此取だい僅僅きんきんもとくみてき陣列じんれつあるものがたべつ允許いんきょほどしき設計せっけいしゃひょうたち兩個りゃんこ系統けいとうあいだてきかいめん將子まさこ系統けいとうあいだ互動てき必要ひつよう定義ていぎ以定防止ぼうし系統けいとうあいだてきどおり發生はっせい衝突しょうとつ

ほどしき通常つうじょうたいごと一個值關聯一個特定的型別(儘管一個型別可以有一個以上的がたべつ)。其它てき實體じったい,如物件ぶっけんぐみつう訊頻どう依賴いらい關係かんけいあるもの純粹じゅんすいてきがたべつ自己じこ以和いちがたべつ關聯かんれんれい如:

いちすう值的がたべつ
いち物件ぶっけんてきがたべつ
いちがたべつてきがたべつ

ざいまい一個程式語言中,ゆういち特定とくていてきかたべつ系統けいとう保證ほしょうほどしきてき表現ひょうげん良好りょうこうなみ排除はいじょたがえぶんまわしてき行為こうい作用さよう系統けいとうたいがたべつ系統けいとう提供ていきょうさら細微さいびてきひかえせい

类型

编辑

 断言だんげん变量eてき类型int。

かたべつけん

编辑

かたべつけんところ進行しんこうてきけんけん處理しょり以及實行じっこうがたべつてき約束やくそく發生はっせいざいへんやく時期じき靜態せいたいけん查)ある執行しっこう時期じき動態どうたいけん查)。靜態せいたいがたべつけん查是ざいへんやくところ進行しんこう語義ごぎ分析ぶんせきちゅう進行しんこうてき。如果一個語言強制實行型別規則(そく通常つうじょうただ允許いんきょ以不遺失いしつ訊為前提ぜんていてき自動じどうがたべつ轉換てんかん)就稱此處ここためつよがたべつたんたたえためじゃくかたべつ

靜態せいたい動態どうたいけん

编辑

如果一個程式語言的型別檢查,ざい不測ふそくためし執行しっこう時期じき運算うんざんしきてき等價とうかせいてき情況じょうきょう進行しんこう,該語げんそくため靜態せいたいがたべつてき。一個靜態型別的程式語言,ざい執行しっこう時期じきへんやく時期じきあいだてき處理しょり階段かいだん重視じゅうし這些區別くべつてき。如果ほどしきてき獨立どくりつぐみ進行しんこう各自かくじてきがたべつけん查(獨立どくりつへんやく),而無須所すぞゆうかいざい執行しっこう出現しゅつげんてきぐみてき些資訊,該語げんそく具有ぐゆういちへんやく時期じき階段かいだん。如果一個程式語言支援執行時期(動態どうたい調度ちょうどやめ標記ひょうきてき資料しりょう,該語げんそくため動態どうたいがたべつてき。如果一個程式語言破壞了階段的區別,いん而型べつけん需要じゅようはかためし執行しっこう時期じきてき運算うんざんしきてき等價とうかせい,該語げんそくため依存いぞんがたべつてき[1]

ざい動態どうたいがたべつちゅう經常けいじょうざい執行しっこう時期じき進行しんこうがたべつ標記ひょうきてきけん查,いんため變數へんすうしょ約束やくそくてき值,經由けいゆ執行しっこうみちみち獲得かくとく不同ふどうてき標記ひょうきざい靜態せいたいがたべつほどしきげんちゅうがたべつ標記ひょうき使用しようべん聯合れんごうかたべつ表示ひょうじ

動態どうたいがたべつ經常けいじょう出現しゅつげん腳本げんRADかたりごとちゅう動態どうたいがたべつざいかい释型语言ちゅうきょくため普遍ふへんへん譯語やくごげんのりへんこう執行しっこう時期じき標記ひょうきてき靜態せいたいがたべつたい於型べつかくれしきがたべつげん較完せいてきれつひょうさんかたべつかくれしきがたべつげん

術語じゅつご推斷すいだんがたべつ鸭子类型,duck typing)ゆびてき動態どうたいがたべつざいかたりごとちゅうてき應用おうよう方式ほうしき,它會「推斷すいだんいちすう值的がたべつ

がたべつ標記ひょうきけん查是如何いかうんさくてき考慮こうりょれつかりはんれい

var x; //(1)
x := 5; //(2)
x := "hi"; //(3)

ざい這個はんれいちゅう,(1)宣告せんこくx;(2)しょう整數せいすう值5だいきゅうx;(3)しょうくし值"hi"だいきゅうx。ざい主要しゅようてき靜態せいたい系統けいとうちゅう,這個だい碼片だんしょうかい違反いはん規則きそくいんため(2)かず(3)たい xしょ約束やくそくてきがたべつしょう矛盾むじゅん

あい較之,一個純粹的動態型別系統允許上述程式的執行,いんためがたべつ標記ひょうきいたかずうえ變數へんすう)。ざい處理しょり錯誤さくご語句ごくある運算うんざんしきてき時候じこう,以動態どうたいがたべつさくてきげんかい捕捉ほそくほどしきてき錯誤さくご,而不誤用ごよう錯誤さくごがたべつてきすう值。かわはなしせつ動態どうたいがたべつ捕捉ほそくざいほどしき執行しっこうてき錯誤さくご

典型てんけいてき動態どうたいがたべつさくかい以型べつ標記ひょうき維持いじほどしき所有しょゆうすう值的「標記ひょうき」,なみざい運算うんざんにんなんすう值之ぜんけん標記ひょうきれい如:

var x := 5; //(1)
var y := "hi"; //(2)
var z := x + y; //(3)

ざい這個ほどしきかただんちゅう,(1)しょうすう值5約束やくそくきゅうx;(2)しょうすう值"hi"約束やくそくきゅうy;以及(3)嘗試しょうxいたy。ざい動態どうたいがたべつげんちゅう約束やくそくきゅうxてき值會いちたい整數せいすう, 5),且約束やくそくきゅうyてき值會いちたいくし, "hi")とう這個ほどしき嘗試執行しっこうだい3ぎょうげんたいがたべつ標記ひょうき整數せいすうくし進行しんこうけん查,如果這兩個りゃんこがたべつてき+加法かほう運算うんざんなお定義ていぎ,就會發出はっしゅついち錯誤さくご

ぼう靜態せいたいげんゆういちこうもん」,ざい這些ほどしきげんちゅうのう夠編うつし一些不被靜態型別所檢查的代碼。れい如,JavaC-風格ふうかくてきげんゆうてんがた可用かようざい靜態せいたいがたべつてきほどしきげんちゅう必然ひつぜん意味いみちょ缺乏けつぼう動態どうたいがたべつせいれい如Java使用しよう靜態せいたいがたべつただしぼう運算うんざん需要じゅよう支援しえん執行しっこう時期じきてきがたべつはかこころみ,這就動態どうたいがたべつてきいちしゅ形式けいしきさら靜態せいたい動態どうたいがたべつてき討論とうろん,請參閱ほどしきげん

實踐じっせんちゅうてき靜態せいたい動態どうたいがたべつけん

编辑

たい靜態せいたいがたべつ動態どうたいがたべつ兩者りょうしゃあいだてき權衡けんこう也是必要ひつようてき

靜態せいたいがたべつざいへんやく時期じき,就能もたれ發現はつげんがたべつ錯誤さくごよし通常つうじょうのう增進ぞうしん最終さいしゅうほどしきてきもたれせいしか而,ゆう多少たしょうてきがたべつ錯誤さくご發生はっせい,以及ゆう多少たしょう比例ひれいてき錯誤さくごのう靜態せいたいがた別所べっしょ捕捉ほそく目前もくぜんたい此仍ゆう爭論そうろん靜態せいたいがたべつてき擁護ようごしゃみとめためとうほどしき通過つうかがたべつけん查時,它才ゆうさらだかてきもたれせい。雖然動態どうたいがたべつてき擁護ようごしゃ指出さしで實際じっさい流通りゅうつうてき軟體證明しょうめい兩者りょうしゃざいもたれせいじょうなみぼつゆう多大ただい差別さべつ以認ため靜態せいたいがたべつてきあたい值,ざい增進ぞうしんがたべつ系統的けいとうてき強化きょうかつよがたべつげん(如MLHaskellてき擁護ようごしゃ提出ていしゅついく所有しょゆうてきbug以看さくがたべつ錯誤さくご,如果へんうつししゃ以足夠恰とうてき方式ほうしきあるものよしへんやく推斷すいだんらい宣告せんこくいちがたべつ[2]

靜態せいたいがたべつ通常つうじょう以編譯出やくしゅつ速度そくど較快てきだい碼。とうへんやく清楚せいそ知道ともみち所要しょよう使用しようてき資料しりょうがたべつ,就可以產せいさいけいこうてき機器きき碼。更進こうしんいち靜態せいたいがたべつげんちゅうてきへんやく以更輕易けいい發現はつげん較佳捷徑しょうけいぼう動態どうたいげん(如Common Lisp允許いんきょ任意にんいがたべつてき宣告せんこく,以便於最けい以上いじょう理由りゆう使靜態せいたいがたべつさらため普及ふきゅうまいりさいけい

あい較之動態どうたいがたべつ允許いんきょへんやく和解わかいやくさら快速かいそくてきうんさくよしため原始げんし碼在動態どうたいがたべつげんちゅう變更へんこうため減少げんしょう進行しんこうけん查,なみ減少げんしょう解析かいせきだい碼。這也減少げんしょう編輯へんしゅうへんやくはかためしじょ錯的しゅう

靜態せいたいがたべつげんかけしょうかたべつ推斷すいだん(如Java),而需要じゅようへんうつししゃ宣告せんこく所要しょよう使用しようてき方法ほうほうあるはこしきてきがたべつへんやくはた允許いんきょへんうつししゃゆるがせりゃく,這可ためほどしきおこり附加ふかせい說明せつめいぶんけんてき作用さようただし靜態せいたいがたべつげん也可以無須型べつ宣告せんこくしょ以與其說靜態せいたいがたべつてき代價だいかたおせ如說がたべつ宣告せんこくてき報酬ほうしゅう

靜態せいたいがたべつ允許いんきょけん構函しき,它們てき使用しようしゃふと可能かのう意外いがいてき誤用ごよう。這可作為さくい傳達でんたつはこしき開發かいはつしゃ意圖いとてきがくがいせい

動態どうたいがたべつ允許いんきょけん構一些靜態型別系統所做不出來的東西。れい如,evalはこしき,它使とく執行しっこう任意にんい資料しりょう作為さくいだい碼成ため可能かのう其代碼的がたべつ仍是靜態せいたいてき)。此外,動態どうたいがたべつようおさめ過渡かとだい碼和原型げんけい設計せっけい,如允許いんきょ使用しようくし代替だいたい資料しりょう結構けっこう靜態せいたいがたべつげん最近さいきんてき增強ぞうきょう(如Haskell 一般いっぱん代數だいすう資料しりょうがたべつ允許いんきょevalはこしき以型べつ安全あんぜんてき方式ほうしきせんうつし

動態どうたいがた別使べっしもとほどしき設計せっけいさらため強大きょうだい,且更えき使用しようれいC++ばんてきうつしほうおこり等價とうかてきRubyあるPythonうつし法要ほうようらいてきあさはんさら高度こうどてき執行しっこう時期じき構成こうせいぶつ,如もと類別るいべつ(metaclass)內觀(Introspection),たい靜態せいたいがたべつげん而言通常つうじょうさらため困難こんなん

つよがたべつじゃくがたべつ

编辑

つよがたべつてき基本きほん定義ていぎそくため禁止きんし錯誤さくごがたべつてきまいりすう繼續けいぞく運算うんざんCげんてきかたべつ轉換てんかんそくため缺乏けつぼうきょうがたべつてきあかしれい;如果へんうつししゃようCげんたいいち轉換てんかんがたべつ僅令へんやく允許いんきょ這個だい碼,而且ざい執行しっこう時期じき中也ちゅうや同樣どうよう允許いんきょ。這使とくCだい碼可さらため緊密きんみつ快速かいそく也使じょへんてきさらため困難こんなん

部分ぶぶん學者がくしゃ使用しよう術語じゅつご記憶きおくたい安全あんぜんげんある簡稱ため安全あんぜんげん形容けいよう禁止きんし未定義みていぎ運算うんざん發生はっせいてきげんれい如,ぼう記憶きおくたい安全あんぜんげんしょうかいけん陣列じんれつかい

じゃくかたべつゆび一個語言可以隱式的轉換型別(ある直接ちょくせつてんがた)。さきまえてきれい

var x := 5;
var y := "37";
x + y;

ざいじゃくがたべつげん中編ちゅうへんうつし上述じょうじゅつだい碼,なみ清楚せいそはた會得えとくいたいちしゅ結果けっかぼう些語げんVisual Basicしょうかいさんせい以運さくてきだい碼,它將かいきゅうてき結果けっか42:系統けいとうはたくし"37"轉換てんかんなり數字すうじ37,以符合ふごう運算うんざんじょうてき直覺ちょっかく;其它てきげんぞうJavaScriptしょうかいさんせいてき結果けっか"537":系統けいとうはた數字すうじ5轉換てんかんなりくし"5"なみ兩者りょうしゃくしせっおこりらいざいVisual BasicJavaScriptちゅう最終さいしゅうてきがたべつ以那兩個りゃんこ運算うんざんもとため考量こうりょうてき規則きそくしょ決定けっていざい部分ぶぶんげんちゅう,如AppleScriptぼう最終さいしゅうてきがたべつただ以最左邊さへんてき運算うんざんもとてきがた別所べっしょ決定けってい

設計せっけい精巧せいこうてきげん允許いんきょげん顯現けんげんじゃくがたべつ(藉由类型推断すいだんこれるいてき技術ぎじゅつてき特性とくせい以方便びん使用しようなみ保留ほりゅうりょうきょうがたべつげんしょ提供ていきょうてきがたべつけん查和保護ほごれい包括ほうかつVB.NetC#以及Java

運算うんざん所帶じょたいらいてき簡化,ぞう以算じゅつ運算うんざんちゅうてき加法かほうらい使用しよう「+」,減少げんしょう一些由動態型別所造成的混亂。れい如,部分ぶぶんげん使用しよう「.」ある「&」らいくしれんくし

かたべつ系統的けいとうてき安全あんぜんせい

编辑

ほどしきげんてきがたべつ系統的けいとうてきだい三種さんしゅ分類ぶんるい方法ほうほう,就是がたべつ運算うんざん轉換てんかんてき安全あんぜんせい。如果它不允許いんきょしるべ致不正確せいかくてき情況じょうきょうてき運算うんざんある轉換てんかん電腦でんのう科學かがく就認ため該語げんかたべつ安全あんぜんてき

さいつぎ這個かり碼例

var x := 5;
var y := "37";
var z := x + y;

ざいいちVisual Basicまとげんちゅうれい子中こなかてき變數へんすうzいたてき值為42。かんへんうつししゃゆうぼつゆう這個意圖いと,該語げん定義ていぎりょう明確めいかくてき結果けっか,且程しきかい就此崩潰ほうかいあるはた不明ふめい定義ていぎてき值賦きゅうz。就這方面ほうめん而言,這樣てきげん就是がたべつ安全あんぜんてき

げん在來ざいらいCてきしょうどうれい

int x = 5;
char y[] = "37";
char* z = x + y;

ざい這個れい子中こなか,zしょうかい指向しこういち超過ちょうかy5もとくみてき記憶きおく體位たいい相當そうとう指向しこうyくしてき指標しひょうこれてき兩個りゃんこそらもとしょ。這個てき內容ひさし未定義みていぎ,且有可能かのうちょう記憶きおくたいてきじょう界線かいせん,而且就這麼引用いんよう參考さんこうzかい引起ほどしきてき終止しゅうし。雖是いち良好りょうこうがたべつただし卻不記憶きおくたい安全あんぜんてきほどしき——如果以對がたべつ安全あんぜんげん而言發生はっせいため先決せんけつ條件じょうけんてきばなし

たいせいがたべつ

编辑

術語じゅつごたいせいゆびてきだい碼(ゆう其是はこしき類別るいべつたい各種かくしゅがたべつてき值能夠動作どうさあるしょうどう資料しりょう結構けっこうてき不同ふどう實體じったいのう夠控せい不同ふどうがたべつてき元素げんそためりょうつつみますふくようだい碼的潛在せんざい值,がたべつ系統けいとう逐漸允許いんきょたいせいざい具有ぐゆうたい性的せいてきげんちゅうほどしき設計せっけいしゃただ需要じゅようさく如列ひょうあるてんてき資料しりょう結構けっこういち,而不たい使用しよういた它的元素げんそてきごと一個型別都規劃一次。もと於這原因げんいん電腦でんのうがく也稱使用しようりょう一定的多態性的方法為泛型ほどしき設計せっけいかたべつ理論りろんてきたいせい基礎きそあずか抽象ちゅうしょうぐみかず(偶爾)がたべつゆう相當そうとうみつきりてきれん關係かんけい

推斷すいだんがたべつ

编辑

推斷すいだんがたべつ鸭子类型,Duck typing)最初さいしょゆかりDave ThomasざいRubyしゃぐんちゅう提出ていしゅつてき推斷すいだんがたべつようりょう這個論證ろんしょうほう「如果它像什麼いんも,而且其它地方ちほう也像什麼いんも麼它就是什麼いんも。」

ざいぼう些程しき設計せっけい環境かんきょうちゅう兩個りゃんこ物件ぶっけん以有しょうどうまとがたべつそく使つかい它們ぼつゆう什麼いんも交集。いちれいC++なか迭代かずゆび针所拥有てきてきそうじゅうせい兩者りょうしゃみな以不甚相どうまとせいじつ作並さくなみ提供ていきょういち* 運算うんざん

這個技術ぎじゅつ所以ゆえんつねしょうさくかもがたべつ」,もと於這格言かくげん:「如果它搖ゆら擺擺てきはしほう很像かも,而且它的嘎嘎さけべごえ也像かも它就いちせきかも!」

"If it waddles like a duck, and quacks like a duck, it's a duck!"

顯示けんじ宣告せんこくかくれしき暗示あんじ

编辑

許多きょた靜態せいたいがたべつ系統けいとう,如CJava,要求ようきゅうよう宣告せんこくがたべつへんうつししゃ必須ひっす以指定型ていけいべつ明確めいかく關聯かんれんいたまいいち變數へんすうじょう。其它てき,如Haskellのり進行しんこうかたべつ推斷すいだんへんやく根據こんきょへんうつししゃ如何いか運用うんよう這些變數へんすう,以草なずらえせき於這變數へんすうてきがたべつてき結論けつろんれい如,きゅうじょういちはこしきf(x,y),它將xyおこりらいへんやく推斷すいだんxy必須ひっす數字すうじ——いんため加法かほう定義ていぎきゅう數字すうじよし此,にんなんざい其它地方ちほう以非すう值型べつ(如字くしある鏈表)作為さくいさんすうらいよびさけべfまとばなししょうかい發出はっしゅついち錯誤さくご

ざいだい碼中すう值、くし常數じょうすう以及運算うんざんしき經常けいじょう以在詳細しょうさいてき前後ぜんこう文中ぶんちゅう暗示あんじがたべつれい如,いち運算うんざんしき3.14暗示あんじ浮點すうかたべつ;而[1, 2, 3]のり暗示あんじいち整數せいすうてき鏈表;通常つうじょういち陣列じんれつ

かたべつてきがたべつ

编辑

かたべつてきがたべついちしゅ種類しゅるいざいかたべつほどしき設計せっけい中有ちゅうう明確めいかくてき種類しゅるい,如Haskellほどしきげんてきかたべつけん構子ざい申請しんせい比較ひかく簡單かんたんてきがたべつこれ,其返かいいち簡單かんたんてきがたべつれい如,がたべつけん構子せんいちゆう這些種類しゅるい* -> * -> **代表だいひょう種類しゅるい),而且它的申請しんせいせんいちくし整數せいすういち簡單かんたんてきがたべつしか而,だい多數たすうほどしきげんてきがたべつよしへんうつししゃらい暗示あんじあるうつし,這就なみしょう種類しゅるいてき概念がいねんよう作為さくいくびせんそう

かたべつ可分かぶんためいく大類おおるい

這是さい簡單かんたんてきがたべつ種類しゅるいれい如:整數せいすう浮點すう
全部ぜんぶ數字すうじてきがたべつれい如:整數せいすう自然しぜんすう
以浮點數てんすう表示ひょうじ數字すうじてきがたべつ
よし基本きほんがたべつぐみ合成ごうせいてきがたべつれい如:陣列じんれつある記錄きろく單元たんげん抽象ちゅうしょう資料しりょうがたべつ具有ぐゆうふくごうがたべつ界面かいめんりょうたね屬性ぞくせい,這取けつ於你ひさげ及哪いち
れい如:變數へんすうがたべつ
れい如:二元にげん函數かんすう
さんすうがたべつかたべつ變數へんすう
ぐみ
識別しきべつ其它がたべつてきしゅうてきがたべつ
けつ執行しっこう時期じきてきすう值的がたべつ
描述ある約束やくそく物件ぶっけんみちびけこう系統けいとう結構けっこうてきがたべつ

あいようせい等價とうかせい和子わこがたべつ

编辑

たい靜態せいたいがたべつげんてきがたべつけん查器,必須ひっすけんけん所有しょゆう運算うんざんしきまとがたべついなあずか前後ぜんごぶん所期しょきもちてきがたべつ一致いっちれいゆび語句ごくx := e推斷すいだん運算うんざんしきeまとがたべつ必定ひつじょうあずか宣告せんこくある推斷すいだんてき變數へんすうがたべつx一致いっち。這個一致いっちせいてき概念がいねん,就稱ためあいようせいごと一個程式語言所特有的。

很明あらわ,如果exまとがたべつしょうどう,就允許いんきょゆびしかこう這是いち有效ゆうこうてき運算うんざんしきよし此在さい簡單かんたんてきがたべつ系統けいとうちゅう問題もんだいしたがえ兩個りゃんこがたべつしょうよう,簡化ため兩個りゃんこがたべついな相等そうとうある等價とうか)。しか不同ふどうてきげんたい兩個りゃんこがたべつ運算うんざんしき理解りかいため表示ひょうじりょうしょう同型どうけいべつゆうちょ不同ふどうてき標準ひょうじゅんかたべつてき相等そうとう理論りろんてき差異さい相當そうとう巨大きょだい兩個りゃんこ極端きょくたんてきれい結構けっこうかたべつ系統けいとう(Structural type system),にん兩個りゃんこ以相どう結構けっこうしょ描述てき值的がたべつ等價とうかてき,且在しめぎあきらがたべつ系統けいとう(Nominative type system)じょうぼつゆう兩個りゃんこ獨特どくとくてき語法ごほう構成こうせいてきがたべつ運算うんざんしき表示ひょうじどういちがたべつ,(そくかたべつわかよう相等そうとう,就必須ひっす具有ぐゆうしょうどうてき名字みょうじ」)。

ざいがたべつまとげんちゅうあいよう關係かんけいさら複雜ふくざつ特別とくべつ如果AこれBてきがたべつ麼型べつAてき值可よう於型べつB也屬りょうなかただしはんらい就不這樣。如同等價とうかせいたいごと一個程式語言而言,がたべつてき關係かんけいてき定義ていぎ不同ふどうてき可能かのう存在そんざい各種かくしゅ變化へんかざいかたりごとちゅう出現しゅつげんてきさんすうあるもの特定とくていてきたいせい,也可能かのう意味いみちょ具有ぐゆうたいがたべつてきしょうようせい

爭議そうぎ

编辑

ざいきょうがたべつ靜態せいたいがたべつげんてき支持しじしゃかず動態どうたいがたべつ自由形じゆうがたしきてき支持しじしゃあいだ經常けいじょう發生はっせいそう前者ぜんしゃ主張しゅちょうざいへんやくてき時候じこう就可以較發現はつげん錯誤さくご,而且かえ增進ぞうしん執行しっこう時期じきてき效能こうのう後者こうしゃ主張しゅちょう使用しようさら動態どうたいてきがたべつ系統けいとう分析ぶんせきほどしき碼更ため簡單かんたん減少げんしょう錯機かい才能さいのうさらけい快速かいそくてきへんうつしほどしき[3]あずか相關そうかんてき考慮こうりょいたざいかたべつ推斷すいだんてきほどしきげんちゅう通常つうじょう需要じゅよう手動しゅどう宣告せんこくがたべつ,這部分ぶぶんてきがくがいひらき銷也就自動じどうくだていりょう

参考さんこう文献ぶんけん

编辑
  1. ^ Harper, Robert & Benjamin C. Pierce (2005), "Design Considerations for ML-Style Module Systems", in Pierce, Benjamin C., Advanced Topics in Types and Programming Languages, Cambridge, MA: MIT Press, ISBN 0262162288页面そん档备份そん互联网档あん
  2. ^ そん副本ふくほん. [2007-03-24]. (原始げんし内容ないようそん于2008-05-12). 
  3. ^ Meijer, Erik and Peter Drayton. Static Typing Where Possible, Dynamic Typing When Needed: The End of the Cold War Between Programming Languages (PDF). Microsoft Corporation. (原始げんし内容ないよう (PDF)そん档于2007-02-16). 

まいり

编辑