编程语言中的循环体不设计成函数调用是因为for就是更加倾向于函数式范式的语义。对于大多数高级语言,已经有类似于foreach,map,for in,for of等等函数式的隐含迭代器的语法。
一、编程语言中的循环体不设计成函数调用的原因
for就是更加倾向于函数式范式的语义。对于大多数高级语言,已经有类似于foreach,map,for in,for of等等函数式的隐含迭代器的语法。只有在c/c++这种类似的过程式的编程范式中,for更显式的代表for-loop,实际上,对于c语言系统中,这种for-loop语法并不自然,远远没有while-loop来的自然,并且也不是必须,可以说没有for循环的c语言丝毫不影响其表达能力。所以真相是,for-loop在c语言的地位是为了实现类似函数式for-iterator语法中的一种近似;我们考察在c语言中的一个典型的for-loop结构:int i;
for(i = 0; i < n; i++)
{
do_something(i);
/*some implement here*/
}由于for-iterator的语义在结构化的编程语言首先选用循环来实现(递归也可以等价),而loop必须依赖于起始状态,结束条件,为了使迭代的处理可以放在同一个代码块里(便于封装),因此状态改变也实现在每次循环之后。我们稍微封装一下:void for_each(int array[],int count,void (*handle)(int array[],int i))
{
int i = 0;
for(i = 0; i < n; i++)
{
handle(array,i);
}
}
int a[]={1,2,3,4,5,6,7};
void print(int array[],int index)
{
printf(“%d\n”,array[index]);
}
for_each(a,sizeof(a)/sizeof(a[0]),print);可以看出for-loop在c语言的实现,依赖外部状态变化,也就是副作用;副作用必须封装起来才能尽可能避免对系统的其他方面造成影响,于是for-loop用了一个语句分别表达了,初始化,结束条件,和迭代这三个东西—-这使得for-loop在c语言的实现非常不自然。事实上,for在c语言中往往也因为其奇怪的语法定义,用于实现非迭代式的很多循环功能
延伸阅读:
二、编程语言选用原则
综合思考软件运行过程中所处的硬件环境
如果在硬件环境中。更新效率相对偏高,一旦硬件环境出现一定转变,将会使计算机编程预算无法快速地和硬件环境相迎合。使得程序编程带来一定影响。所以,程序人员在程序编程的过程中,需要对软件调整内容加以综合思考。并且注重适当地减少软件调整难度。
全面思考平台支撑性
在开展程序编程工作的过程中,应该思考应用平台给编程语言带来的影响,结合编程语言自身特性对应用平台实施科学调整,从而实现工作水平的提升,将编程语言自身作用充分发挥。
思考程序编程实际问题
在进行程序编程的过程中,综合思考上述两个问题时。还要对编程实际情况进行全面思考。所以,在进行计算机编程语言选择的过程中,要求编程人员对编程语言特性有所了解。编程人员在对特殊性软件开发过程中。应该选用较为专业的计算机编程语言.专业性编程语言能够有效提升软件开发的规范性。