聊聊 C 语言和 ABAP 这两门编程语言的关系(一)

简介: TIOBE 2022年3月的编程语言排行榜显示:https://www.tiobe.com/tiobe-index/C 语言和 C++ 分别名列第二和第四位:

TIOBE 2022年3月的编程语言排行榜显示:

https://www.tiobe.com/tiobe-index/

C 语言和 C++ 分别名列第二和第四位:

20.png

而 ABAP 编程语言名列第 42 位:

21.png

为什么这篇文章要把 C 语言和 ABAP 放在一起讲,而不是别的编程语言比如 Java 和ABAP 呢?因为 ABAP 语言底层是基于 C/C++ 实现的,包括其关键字(比如最简单的关键字 WRITE 的 C++ 实现有 2 千多行)和虚拟机(ABAP Runtime).


SAP 内部的一群计算机科学家们发明了 ABAP 这门在企业管理软件影响极其深远的编程语言,由它实现的各种 SAP 应用帮助了全球超过 180 个国家和地区的客户们更好地运行其业务。


通过 Google 我们能搜索到一些关于这些 SAP 计算机科学家们的介绍,比如这个链接

image.png

比如像下图这种用 kernel module 修饰的 sc_km_check_feature_2, 以及每一个 ABAP 关键字,其 C 语言的实现代码在 SAP 内部的 Netweaver 系统可以查看到,但是在客户系统上,则是以二进制目标文件的形式存储,无法查看源代码。

image.png

本文的目的是希望通过 C 语言和 ABAP 编译过程的一些介绍,加深 ABAP 开发人员们对这门语言的理解。

用 C 语言写个 Hello World 程序,另存为 study.c:

image.png

用命令行 gcc ./study.c --verbose 进行编译,参数 verbose 可供我们查看编译明细。上述命令行在我的 Ubuntu 系统上产生一串长长的输出:

image.png

image.png


我们可以一步步分析。首先用参数 -E 查看预处理生成的目标文件 study.i:

gcc -E study.c -o study.i

可以看到源代码文件只有 78 字节,编译预处理后生成的输出文件有 17116 字节。

image.png

为什么膨胀了这么多?原因是因为我源代码文件的第一行,#include 被预处理器替换成了 stdio.h 的实际内容,而 stdio.h 里如果又存在 #include 其他文件的声明,这个替换过程会递归执行。因此直到 study.i 的末尾部分,我们才能看到在 study.c 里书写的源代码部分。

image.png

源代码文件 study.c 里的第一行语句 #include, 请大家记住,后面讲 ABAP还会提到。

用命令行 gcc -S 可以查看 study.c 编译后生成的汇编代码:

23.png

目录
相关文章
|
6月前
|
算法 程序员 编译器
C++与C语言的差异:编程语言之间的奥秘探索
C++与C语言的差异:编程语言之间的奥秘探索
93 0
|
2月前
|
Unix 编译器 Shell
[oeasy]python0033_先有操作系统还是先有编程语言_c语言是怎么来的
本文回顾了计算机语言与操作系统的起源,探讨了早期 Unix 操作系统及其与 C 语言的相互促进发展。Unix 最初用汇编语言编写,运行在 PDP-7 上,后来 Thompson 和 Ritchie 开发了 C 语言及编译器,使 Unix 重写并成功编译。1974 年 Ritchie 发表论文,Unix 开始被学术界关注,并逐渐普及。伯克利分校也在此过程中发挥了重要作用,推动了 Unix 和 C 语言的广泛传播。
60 9
[oeasy]python0033_先有操作系统还是先有编程语言_c语言是怎么来的
WK
|
3月前
|
人工智能 算法 C语言
为什么C语言不是人工智能领域的首选编程语言?
尽管多种编程语言在人工智能领域均有应用,Python却因其独特优势成为了首选。Python的简洁语法提高了开发效率与易用性;其庞大的生态系统,尤其是丰富的AI库和框架如TensorFlow、PyTorch等,简化了算法实现过程;Python适用于快速原型设计与实验,加速项目迭代;良好的跨平台兼容性减少了配置负担;庞大的社区支持与丰富的文档资源便于学习和技术交流。尽管如此,C语言在性能等方面仍具优势,在特定场景下不可或缺。
WK
187 60
|
6月前
|
程序员
开发语言漫谈-ABAP
ABAP是SAP公司专门用于SAP软件环境的专门语言
|
6月前
|
C语言 iOS开发 MacOS
Objective-C是一种面向对象的编程语言,它扩展了C语言,添加了面向对象编程的特性
【5月更文挑战第9天】Objective-C是苹果公司的面向对象编程语言,用于iOS和macOS应用开发。它扩展了C语言,包含类定义(接口和实现)、对象创建、消息传递、属性、协议、块和类别等语法特性。例如,类通过`@interface`和`@implementation`定义,对象用`alloc`和`init`创建,方法通过消息传递调用。属性简化变量声明,协议定义可选方法集合,块支持代码块作为参数,类别用于扩展已有类。错误处理常使用NSError对象。要深入了解,建议查阅相关教程和文档。
56 0
|
6月前
|
Java Unix C语言
在我掉入计算机的大坑并深陷其中时,一门名为“C语言”的编程语言让我沉迷
在我掉入计算机的大坑并深陷其中时,一门名为“C语言”的编程语言让我沉迷
|
存储 Java BI
聊聊 C 语言和 ABAP 这两门编程语言的关系(二)
TIOBE 2022年3月的编程语言排行榜显示: https://www.tiobe.com/tiobe-index/ C 语言和 C++ 分别名列第二和第四位:
150 0
聊聊 C 语言和 ABAP 这两门编程语言的关系(二)
|
机器学习/深度学习 人工智能 Java
2020 年度编程语言排行榜出炉!C 语言称霸,Java 遭遇滑铁卢…….
最近,TIOBE 发布了过去一年的编程语言排行榜:
232 0
2020 年度编程语言排行榜出炉!C 语言称霸,Java 遭遇滑铁卢…….
|
安全 C语言 Java
2020年5月编程语言排行榜:等了5年,C语言终于打败Java,荣登第一!
云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 2G延伸了人类的耳朵,让你随时随地都能听到来自世界任何地方的讲话。 3G/4G延伸了人类的眼睛,让你随时随地都能看到全世界。
2020年5月编程语言排行榜:等了5年,C语言终于打败Java,荣登第一!
下一篇
无影云桌面