欢迎光临南京典乐信息科技有限公司
24小时:400-025-1949
繁體版
手机版
公司新闻
行业新闻
当前位置:首页 » 新闻中心 » 公司新闻

The data affinity of language

发表日期:2017-12-08 17:16:36文章编辑:浏览次数:185 标签:公司新闻    

now,Programminglanguage似乎进入了一个蓬勃发展的时期,Javascript、Perl、Python、Ruby、Groovy等一批较新的语言正越来越多地被熟悉和使用,而C++、C#、Java等主流语言也在不断地融入函数式和动态性特征。程序员的百宝箱中可供选择的宝贝是越来多了,而社 ...

nowProgramming language似乎进入了一个蓬勃发展的时期,JavascriptPerlPythonRubyGroovy等一批较新的语言正越来越多地被熟悉和使用,而C++C#Java等主流语言也在不断地融入函数式和动态性特征。程序员的百宝箱中可供选择的宝贝是越来多了,而社区中关于语言间的比较和争论也更为热烈,我们常常见到关于面向过程和面向对象的比较动态语言和静态语言的比较命令式和函数式范式的比较等比较。我注意到这类讨论的关注点多集中于设计相关话题,如动态语言的Duck typing多态和静态语言的继承多态的比较“Prototype basedClass based的比较等。但我认为还有一个十分重要的方面值得关注,这就是数据处理。

 

数据处理之所以重要是因为不论是本地信息存储还是系统间信息交换都需要建立在一定的数据格式基础上。另外,不管语言属于那种范式,设计上采用什么模式,在微观层次上程序很大一部分工作都是在做数据处理。所以,从数据处理角度比较和理解语言间的差异有重要的现实意义。虽然数据通常是平台和语言无关的,但不同的语言在处理某种格式的数据时会表现出不同的难度,甚至某些数据格式只能采用特定的语言才能实现,这就是数据亲和力的不同。

语言的数据亲和力(Data Affinity)指的是语言与某种数据格式之间的相容程度,它主要取决于语言的数据模型,类型系统,以及库的支持等。语言对某种数据格式亲和力越强,则操作某类数据越容易。

 

二进制字节块格式

 

在偏底层的操作系统、嵌入式和通信系统中,二进制的字节块是最常见的一种数据格式。二进制数据布局紧凑和接近机器的特点使得它常常作为系统间通信或系统文件的数据格式。但一般高级语言不方便直接和0101打交道,而是基于记录、结构体和类等结构化表示操作数据,这就存在着在底层的二进制字节块和高层的结构化数据之间的转换问题。

 

C语言作为最主要的系统语言具有很高的字节块数据亲和力。这不仅因为C语言具有指针可以直接访问内存以外,还因为C的结构体(struct)可以和字节块建立起直接的映射关系。例如,在基于Socket连接的分布式系统中服务器端和客户端通过二进制的字节数据进行通信,通信双方只要事先定义共用的结构体,发送方先创建相应的结构体变量并填充字段,然后把变量对应的内存块copySocket,接收方从Socket读取字节块,然后把字节块强制类型转换为相应的结构体指针即可读取个字段信息。整个过程中通信的双方都没有复杂的信息编码和解码的过程。示例代码如下: 

上面的方法在实际应用中还需要注意内存对齐问题和大小端问题。内存对齐问题可以通过编译器预处理命令来进行控制,保证内存中struct结构与传输的字节块具有相同的对齐方式;大小端问题需要通信的双方采用同样的大小端方式,否则就需要进行转换。

 

 

 

专业服务:南京建站,南京网站制作,南京网站设计,南京网站制作公司

咨询电话:400-025-1949(7*24小时在线服务)

咨询QQ:260193150

公司网址:www.icanpk.com

本文地址:http://www.025app.com/news/detail_205.html

相关新闻

两Q友非法入侵他人网站推广赌博公司 南京医药官网等中招

两人利用木马信息侵入南京医药、世纪华联等单位官网串改链接帮助…

日期:2020-04-28 浏览次数:298

3月8日后南京长江二桥车道封闭维护 为期22天

为保障路桥结构和交通通行安全,经市政府批准,南京长江第二大桥…

日期:2020-03-08 浏览次数:281

怎样解决企业网站没有客户咨询的问题?

我们都知道如今是互联网的时代,传统的线下业务已经满足不了企业…

日期:2020-03-06 浏览次数:235

房地产税还有2年到达战场,3千多南京人涌向了河西...

关注两会3月4日的人大新闻发布会上,针对房地产税,发言人张业…

日期:2020-03-06 浏览次数:133

南京仙林汽配城内一物流公司卷款跑路

3月5日,有市民反映,南京仙林汽配城内的一家物流公司突然跑路…

日期:2020-03-06 浏览次数:106

关于我们
技术支持
联系我们
南京典乐科技
客服电话:400-025-1949 (工作日9:00~18:00)
项目经理:138-519-41123
咨询 Q Q:260193150
公司地址:南京中华路420号江苏省科技中心5层
客服QQ
获取报价
联系电话
400-025-1949
返回顶部