千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:太原千锋IT培训  >  技术干货  >  为什么大多数编程语言被设计成函数只有一个返回值?

为什么大多数编程语言被设计成函数只有一个返回值?

来源:千锋教育
发布人:xqq
时间: 2023-10-14 01:21:08

一、为什么大多数编程语言被设计成函数只有一个返回值

大多数编程语言被设计成函数只有一个返回值是因为从本质上说,因为图灵机只有一个返回值(或者说状态)。有一个返回值就能达到图灵完备,不需要两个返回值。

另外,多个返回值就需要多个寄存器,既浪费又不利于编译器优化。从我们的直觉来看,你得到的两个返回值,它们一定能在某个层级上被抽象为一个东西,这在程序中的表现就是返回抽象体的指针(或引用)。

假设我们设计了一个语言叫C-,函数的参数和返回值都只能是一个,那么在C-里,一个多参数多返回值的函数的定义和使用过程就是这样的:struct Para…;//define a parameter struct

struct Ret…;//define a return struct

Ret func(Para p){

    …

}

Para para = XXX;

Ret ret;

ret = func(para);为了使用这个函数,我们需要定义数据结构Para和Ret,是不是很麻烦?如果能去掉会省很多事。好了,那么问题就变成了:为什么编程语言大多去掉了Para而不是Ret?这和函数本身的行为有关。一个函数的行为如下图:大家看出什么问题没?参数可以看做是函数的属性,因为Para这个结构可能只在函数内使用(大多数情况下)。因此,我们为这个函数定义Para结构的行为,其实就是函数定义过程中的一个步骤。既然如此,那么把Para的定义放到函数定义里就好了嘛。把下面的代码:struct Para{

    int a;

    int b;

}

int func(Para p)

…变成:int func(int a, int b)

是不是变得简单清晰易读了?那为什么Ret的结构不放在函数定义中呢?因为Ret是函数的产出,别的地方肯定也要用。一个公用的数据结构放在函数定义里显然不是合理的设计。当然,很多情况下我们也可能会给函数传入一个自己定义的作为参数。不过这大多是因为这个数据结构本来就是要到处用的(比如用结构(x,y)来代表平面上的一个点)。一般而言,我们不会为了表达一个函数的结构,而单独地定义一个数据结构。因此参数结构就内化为了的属性。

延伸阅读:

编程语言选用原则

综合思考软件运行过程中所处的硬件环境

如果在硬件环境中。更新效率相对偏高,一旦硬件环境出现一定转变,将会使计算机编程预算无法快速地和硬件环境相迎合。使得程序编程带来一定影响。所以,程序人员在程序编程的过程中,需要对软件调整内容加以综合思考。并且注重适当地减少软件调整难度。

全面思考平台支撑性

在开展程序编程工作的过程中,应该思考应用平台给编程语言带来的影响,结合编程语言自身特性对应用平台实施科学调整,从而实现工作水平的提升,将编程语言自身作用充分发挥。

思考程序编程实际问题

在进行程序编程的过程中,综合思考上述两个问题时。还要对编程实际情况进行全面思考。所以,在进行计算机编程语言选择的过程中,要求编程人员对编程语言特性有所了解。编程人员在对特殊性软件开发过程中。应该选用较为专业的计算机编程语言.专业性编程语言能够有效提升软件开发的规范性。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

OD、OC、TD是什么意思?

2023-10-14

Python的a//b和int(a/b)的区别?

2023-10-14

SSR、SSG、ISR、DPR都在做什么?

2023-10-14

最新文章NEW

在线文档哪些好用?

2023-10-14

算法和数据结构什么关系?

2023-10-14

使用 open addressing 的 Hash 表载荷过高为什么会降低 CPU 的缓存命中率?

2023-10-14

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>