強弱型別
(重定向自強類型)
強弱型別(Strong and weak typing)表示在電腦科學以及程式設計中,經常把程式語言的类型系统分为強型別(英語:strongly typed)和弱型別(英語:weakly typed (loosely typed))两种。這兩個術語並沒有非常明確的定義,但主要用以描述程式語言對於混入不同資料型別的值進行運算時的處理方式。強型別的語言遇到函式引數型別和實際叫用型別不符合的情況經常會直接出錯或者編譯失敗;而弱型別的語言常常會實行隐式转换,或者产生难以意料的结果。這對術語在短短的電腦歷史中,早已含括了更多的意義,而且時常很難知道寫的人究竟要表達哪個意思。
解釋编辑
程式語言專家 Benjamin C. Pierce,《Types and Programming Languages》和《Advanced Topics in Types and Programming Languages》的作者,曾說:
- 「我花了幾個星期…試著弄清楚「強型別」、「靜態型別」、「安全」等術語,但我發現這異常的困難…這些術語的用法不盡相同,所以也就近乎無用。」[1]
大致而言,「強型別」隱含著程式語言對容許混合情況出現加上了嚴格的限制,以避免程式碼以無效的資料使用方式編譯或執行。例如,整數除法運算不可用於字串;鏈表上的運算步驟不可用於數字。然而,這些限制的本質和效力是極易改變的。
強型別在文獻中的含義编辑
已经被写作者认定为“强型別”的一些要素包括:
- 靜態型別不同於動態型別。在靜態型別系統中,型別是與變數相連繫的名稱(通常是在声明時),而不是值(通常是在初始化時)。型別也可藉由編譯器來推斷。
- 通过语言定义,对型別约束违规的编译时间检查的托管要求。就是说,编译器确保操作只发生在对这个运算有效的操作数上。
- 型別安全;就是说,拒绝(在要么编译时间要么執行时间)尝试忽视資料型別的操作或函式呼叫。在更严格的设置下,通过证明进行性和藏存性来证明关于形式语言的型別安全。
- 禁止型別轉換。某個型別的值,不論是不是以顯式或隱式的方式,都不可轉換為另一個型別。
- 但是某些作者,把“强型別语言”称呼保留给省略隐式型別转换(就是说编译器为了利益编程者而插入的转换)的语言。对于这些作者,编程语言是强型別的,如果型別必须通过通常叫做“强制”的显式符号来转换。
- 無法規避型別系統。某些語言允許程式員取得值的表示法之下的東西(即位元模式),這有可能規避型別系統。
- 有复合型別的复杂而细致的型別系统。
- 資料物件中固定且不變的型別。给定資料物件的型別在这个物件的生命期内不改变。例如,类实例不可以改变它们的类。
- 在執行程式之前,強型別就保證了執行時期的程式行為,其以靜態分析或其它的機制提供。
程式語言中的含義變異编辑
參閱编辑
- 資料型別,更詳盡的型別問題
参考文献编辑
- ^ 「強型別」指的是什麼. [2007-03-30]. (原始内容存档于2007-03-23).
🔥 Top keywords: Baike: 首页Special:搜索胖猫跳江事件背着善宰跑九龍城寨之圍城逆天奇案2璩静淚之女王歌手2024Energy (組合)新生 (网络剧)习近平匈牙利邊佑錫劉俊謙 (香港)金智媛神耆小子塞尔维亚金秀賢 (男演員)母亲节猩球崛起:王國誕生九龍寨城馴鹿寶貝家族榮耀之繼承者Seventeen (組合)六四事件不夠善良的我們张维为楊佩潔TripleS支配物种庆余年郭葦昀洪若潭命案金惠奫2024年英雄联盟季中邀请赛春色寄情人BABYMONSTER笑看風雲乘風2024排球少年!!角色列表破墓徐巧芯中华人民共和国中華民國打天下2WIND BREAKER—防風少年—习明泽排球少年!!彭丽媛磁暴ILLIT贾斯汀·比伯逆天奇案BOYNEXTDOOR猿人爭霸戰:猩凶革命張書偉我的婆婆怎麼那麼可愛我獨自升級怪獸8號謝坤達IVE (組合)與鳳行關於我轉生變成史萊姆這檔事角色列表黃道十二宮福建號航空母艦虽然不是英雄葉乃文五月天張員瑛草榴社区張文傑2024年花蓮地震极光香緹·摩爾迷宮飯呂家愷搜查班長1958日本劉德華海莉·鮑德溫蕭景鴻越位 (足球)葬送的芙莉蓮周處除三害 (電影)毛泽东願榮光歸香港林峯周雨彤伍允龍羅毓儀香港Baike: 分類索引沒有秘密猩球崛起:終極決戰角質層唐振剛柯佳嬿文化大革命