正确的C++并行

本文探讨了C++的并行编程,强调了正确理解和应用语言抽象的重要性。通过操作语义的角度,解释了如何将C++程序转化为计算机执行的步骤,帮助读者深入理解并行代码的含义和行为。
摘要由CSDN通过智能技术生成
《C++0x漫谈》系列之:多线程内存模型 (简称为漫谈)解释了多线程并行的困难,在这里我分层地看看这个问题。


1.为什么分层次?
C++语言表达的抽象和机器的抽象距离比较近,而且几乎看不到C++在虚拟机上跑的实例,所以两者的关系容易混淆。有人常常把反汇编拿出来一看,并作为C++语言是如此的证据,这是本末倒置的。假定C++都是直接翻译为汇编,于是这只是一个如何将一个语言翻译为另外一个语言的问题。编译器干的事就是用目标语言的一些抽象来实现源语言一些抽象,所以目标语言的语义,行为,并不能决定源语言,而只能说明翻译的正确性和质量。比如,某个C++类在语义上有个构造函数的调用,但是其行为是平凡的,在翻译后的代码中看不到任何构造函数调用的代码,这并不是构造函数不存在的证据。所以,这里我们分出层次,一方面是汇编及其实现(即CPU)的结合体,另一方面就是C++了。

2.怎么翻译?

显然,翻译建立在对两种语言上的充分理解上。理解一个语言,就要理解其提供的抽象及其语义。如何定义语义?这是研究程序设计语言的人干的,比较经典的有操作语义,指称语义。在这里我们不严格地从操作语义的角度来看这两种语言。

根据维基的描述:一个计算机语言的操作语义描述一段合理的程序是怎样被理解为一系列计算机步骤的。这些步骤就是这个程序的意义。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值