fbpx
维基百科

強弱型別

強弱型別(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]

大致而言,「強型別」隱含著程式語言對容許混合情況出現加上了嚴格的限制,以避免程式碼以無效的資料使用方式編譯或執行。例如,整數除法運算不可用於字串;鏈表上的運算步驟不可用於數字。然而,這些限制的本質和效力是極易改變的。

強型別在文獻中的含義

已经被写作者认定为“强型別”的一些要素包括:

  • 靜態型別不同於動態型別。在靜態型別系統中,型別是與變數相連繫的名稱(通常是在声明時),而不是值(通常是在初始化時)。型別也可藉由編譯器來推斷。
  • 通过语言定义,对型別约束违规的编译时间检查的托管要求。就是说,编译器确保操作只发生在对这个运算有效的操作数上。
  • 型別安全;就是说,拒绝(在要么编译时间要么執行时间)尝试忽视資料型別的操作或函式呼叫。在更严格的设置下,通过证明进行性和藏存性来证明关于形式语言的型別安全
  • 禁止型別轉換。某個型別的值,不論是不是以顯式或隱式的方式,都不可轉換為另一個型別。
  • 但是某些作者,把“强型別语言”称呼保留给省略隐式型別转换(就是说编译器为了利益编程者而插入的转换)的语言。对于这些作者,编程语言是强型別的,如果型別必须通过通常叫做“强制”的显式符号来转换。
  • 無法規避型別系統。某些語言允許程式員取得值的表示法之下的東西(即位元模式),這有可能規避型別系統。
  • 有复合型別的复杂而细致的型別系统。
  • 資料物件中固定且不變的型別。给定資料物件的型別在这个物件的生命期内不改变。例如,类实例不可以改变它们的类。
  • 在執行程式之前,強型別就保證了執行時期的程式行為,其以靜態分析或其它的機制提供。

程式語言中的含義變異

參閱

参考文献

  1. ^ 「強型別」指的是什麼. [2007-03-30]. (原始内容于2007-03-23). 

強弱型別, 此條目需要补充更多来源, 2018年7月20日, 请协助補充多方面可靠来源以改善这篇条目, 无法查证的内容可能會因為异议提出而移除, 致使用者, 请搜索一下条目的标题, 来源搜索, 网页, 新闻, 书籍, 学术, 图像, 以检查网络上是否存在该主题的更多可靠来源, 判定指引, 此條目可参照英語維基百科相應條目来扩充, 若您熟悉来源语言和主题, 请协助参考外语维基百科扩充条目, 请勿直接提交机械翻译, 也不要翻译不可靠, 低品质内容, 依版权协议, 译文需在编辑摘要注明来源, 或于讨论页顶部标记, hre. 此條目需要补充更多来源 2018年7月20日 请协助補充多方面可靠来源以改善这篇条目 无法查证的内容可能會因為异议提出而移除 致使用者 请搜索一下条目的标题 来源搜索 強弱型別 网页 新闻 书籍 学术 图像 以检查网络上是否存在该主题的更多可靠来源 判定指引 此條目可参照英語維基百科相應條目来扩充 若您熟悉来源语言和主题 请协助参考外语维基百科扩充条目 请勿直接提交机械翻译 也不要翻译不可靠 低品质内容 依版权协议 译文需在编辑摘要注明来源 或于讨论页顶部标记 a href Template Translated page html title Template Translated page Translated page a 标签 強弱型別 Strong and weak typing 表示在電腦科學以及程式設計中 經常把程式語言的类型系统分为強型別 英語 strongly typed 和弱型別 英語 weakly typed loosely typed 两种 這兩個術語並沒有非常明確的定義 但主要用以描述程式語言對於混入不同資料型別的值進行運算時的處理方式 強型別的語言遇到函式引數型別和實際叫用型別不符合的情況經常會直接出錯或者編譯失敗 而弱型別的語言常常會實行隐式转换 或者产生难以意料的结果 這對術語在短短的電腦歷史中 早已含括了更多的意義 而且時常很難知道寫的人究竟要表達哪個意思 目录 1 解釋 2 強型別在文獻中的含義 2 1 程式語言中的含義變異 3 參閱 4 参考文献解釋 编辑程式語言專家 Benjamin C Pierce Types and Programming Languages 和 Advanced Topics in Types and Programming Languages 的作者 曾說 我花了幾個星期 試著弄清楚 強型別 靜態型別 安全 等術語 但我發現這異常的困難 這些術語的用法不盡相同 所以也就近乎無用 1 大致而言 強型別 隱含著程式語言對容許混合情況出現加上了嚴格的限制 以避免程式碼以無效的資料使用方式編譯或執行 例如 整數除法運算不可用於字串 鏈表上的運算步驟不可用於數字 然而 這些限制的本質和效力是極易改變的 強型別在文獻中的含義 编辑已经被写作者认定为 强型別 的一些要素包括 靜態型別不同於動態型別 在靜態型別系統中 型別是與變數相連繫的名稱 通常是在声明時 而不是值 通常是在初始化時 型別也可藉由編譯器來推斷 通过语言定义 对型別约束违规的编译时间检查的托管要求 就是说 编译器确保操作只发生在对这个运算有效的操作数上 型別安全 就是说 拒绝 在要么编译时间要么執行时间 尝试忽视資料型別的操作或函式呼叫 在更严格的设置下 通过证明进行性和藏存性来证明关于形式语言的型別安全 禁止型別轉換 某個型別的值 不論是不是以顯式或隱式的方式 都不可轉換為另一個型別 但是某些作者 把 强型別语言 称呼保留给省略隐式型別转换 就是说编译器为了利益编程者而插入的转换 的语言 对于这些作者 编程语言是强型別的 如果型別必须通过通常叫做 强制 的显式符号来转换 無法規避型別系統 某些語言允許程式員取得值的表示法之下的東西 即位元模式 這有可能規避型別系統 有复合型別的复杂而细致的型別系统 資料物件中固定且不變的型別 给定資料物件的型別在这个物件的生命期内不改变 例如 类实例不可以改变它们的类 在執行程式之前 強型別就保證了執行時期的程式行為 其以靜態分析或其它的機制提供 程式語言中的含義變異 编辑參閱 编辑資料型別 更詳盡的型別問題参考文献 编辑 強型別 指的是什麼 2007 03 30 原始内容存档于2007 03 23 取自 https zh wikipedia org w index php title 強弱型別 amp oldid 62290224, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。