聊聊 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

目录
相关文章
|
4月前
|
算法 程序员 编译器
C++与C语言的差异:编程语言之间的奥秘探索
C++与C语言的差异:编程语言之间的奥秘探索
72 0
|
4月前
|
程序员
什么是 ABAP 编程语言里的 Exception 断点
什么是 ABAP 编程语言里的 Exception 断点
|
12月前
|
Shell Linux 应用服务中间件
ABAP 面试题:如何使用 ABAP 编程语言的 System CALL 接口,直接执行 ABAP 服务器所在操作系统的 shell 命令?
ABAP 面试题:如何使用 ABAP 编程语言的 System CALL 接口,直接执行 ABAP 服务器所在操作系统的 shell 命令?
WK
|
12天前
|
人工智能 算法 C语言
为什么C语言不是人工智能领域的首选编程语言?
尽管多种编程语言在人工智能领域均有应用,Python却因其独特优势成为了首选。Python的简洁语法提高了开发效率与易用性;其庞大的生态系统,尤其是丰富的AI库和框架如TensorFlow、PyTorch等,简化了算法实现过程;Python适用于快速原型设计与实验,加速项目迭代;良好的跨平台兼容性减少了配置负担;庞大的社区支持与丰富的文档资源便于学习和技术交流。尽管如此,C语言在性能等方面仍具优势,在特定场景下不可或缺。
WK
152 60
|
4月前
|
程序员
开发语言漫谈-ABAP
ABAP是SAP公司专门用于SAP软件环境的专门语言
|
4月前
|
数据库 开发者
什么是 ABAP 编程语言里的 sy-subrc
什么是 ABAP 编程语言里的 sy-subrc
|
4月前
|
C语言 iOS开发 MacOS
Objective-C是一种面向对象的编程语言,它扩展了C语言,添加了面向对象编程的特性
【5月更文挑战第9天】Objective-C是苹果公司的面向对象编程语言,用于iOS和macOS应用开发。它扩展了C语言,包含类定义(接口和实现)、对象创建、消息传递、属性、协议、块和类别等语法特性。例如,类通过`@interface`和`@implementation`定义,对象用`alloc`和`init`创建,方法通过消息传递调用。属性简化变量声明,协议定义可选方法集合,块支持代码块作为参数,类别用于扩展已有类。错误处理常使用NSError对象。要深入了解,建议查阅相关教程和文档。
44 0
|
4月前
|
Java Unix C语言
在我掉入计算机的大坑并深陷其中时,一门名为“C语言”的编程语言让我沉迷
在我掉入计算机的大坑并深陷其中时,一门名为“C语言”的编程语言让我沉迷
|
4月前
|
大数据 数据处理 云计算
道家学派创始人老子,对 SAP ABAP 这门编程语言的客观评价
道家学派创始人老子,对 SAP ABAP 这门编程语言的客观评价
|
12月前
|
Shell Linux 应用服务中间件
使用 ABAP 编程语言的 System CALL 接口,直接执行 ABAP 服务器所在操作系统的 shell 命令
使用 ABAP 编程语言的 System CALL 接口,直接执行 ABAP 服务器所在操作系统的 shell 命令
下一篇
DDNS