smw*_*dia 8 .net language-agnostic types strong-typing
我听过很多关于" 类型系统","强类型语言"等等.目前我正在研究一些.NET COM互操作问题,它解决了"编组"问题.而AFAIK,marshaling则是关于.NET类型和COM类型之间的转换.
在诸如编程语言的许多场景中,当谈论类型时,我们关注逻辑意义.
现在我想知道:"类型"在物理上意味着什么?在某种程度上,我们可以观看和触摸.
我目前的理解是"类型"只不过是计算实体的内存表示.
非常感谢您的回复.
来自MSDN的一些引用:
在托管/非托管边界上编组简单,易于浏览的结构首先要求定义每个本机结构的托管版本.这些结构可以有任何合法的名称; 除了数据布局之外,两个结构的本机版本和托管版本之间没有任何关系.因此,托管版本包含与本机版本大小相同且顺序相同的字段至关重要.(没有机制可以确保结构的托管版本和本机版本是等效的,因此不兼容性在运行时才会变得明显.程序员有责任确保两个结构具有相同的数据布局.)
因此,就Marshaling而言,布局至关重要.
Tim*_*mwi 15
我认为编程中"类型"有三个方面(它们可能重叠,所以不要将其视为一种快速分离):
甲类型是一个的元件组的类型,和每个节目/组件/单元定义这样的集合.这是我能想到的最理论化的想法,可能对逻辑学家和数学家最有用.它非常通用,它允许您在其上定义类型系统的想法.例如,编程环境可以定义这些类型的关系,例如is-assignable-to relation.
甲类型是语义类别.这是一种语言或认知的想法; 换句话说,对于正在考虑如何编程计算机的人来说,它是最有用的.该类型封装了我们所认为的"属于某一类别的东西".类型可以由实体的共同目的来定义.当然,这种根据目的的分类是任意的,但这没关系,因为编程中的类型声明也是任意的.
甲类型是数据如何在存储器奠定了规范.这是我能想到的最低级别的想法.在这种观点下,一个类型没有说明数据的目的或语义,而只是计算机将如何构建它,处理它等等.在这个想法中,类型更像是数据编码或通信协议.
您选择的类型含义取决于您的域名.正如已经暗示的那样,如果你是一位正在研究如何证明程序属性的逻辑学家,那么第一个定义将比第三个定义更有用,因为数据布局(通常)与证明无关.如果您是硬件设计人员或CLR或JavaVM等低级系统的程序员,那么您需要第三个想法并且您并不真正关心第一个想法.但对于那些只想继续完成任务的普通程序员来说,它可能是适用的中间程序员.
| 归档时间: |
|
| 查看次数: |
712 次 |
| 最近记录: |