ABAP很厉害是怎么一种体验?

知乎上偶然看到这个问题,觉得很有意思,我也来回答一发。

1240

我本科和研究生学的是计算机专业,做项目用C/C++,研究生三年项目的代码量大概在三到四万行左右。2007年大学毕业加入SAP成都研究院一直工作到现在,工作中用的最熟练的编程语言是ABAP,Java和JavaScript。当然做SAP Cloud application Studio这个工具开发时,也用过一段时间的C#。做一个SAP内部的大数据项目也用过一阵子Scala,Python和Go语言在做Hyperledge Fabric on SAP Cloud Platform时也学了一些皮毛。

我没有把自己定位成“ABAP开发人员”或是“Java开发人员”,而是“SAP应用开发人员”。也就是说组织给我分配一个开发任务,我自己就得去琢磨,选择合适的编程语言来完成。

1240

ABAP,Java和JavaScript这三门我工作中用的最多的编程语言,在我眼中没有优劣之分,就是不同的编程工具,有各自的适用场合,如此而已。

我曾经写过一篇文章:Jerry的ABAP, Java和JavaScript乱炖

百度即可找到,里面包含了我对这三门语言一些特性的横向比较。

文章链接:https://www.cnblogs.com/sap-jerry/p/8215394.html

1240

回到ABAP语言本身,我认识SAP总部Walldorf很多资深的ABAP应用开发人员,当然也包括ABAP编程语言本身的开发人员,即用C语言开发ABAP虚拟机和运行时的那些同事,称呼他们为计算机科学家更合适。我想任何资深的ABAP应用开发人员,在他们面前也没有资格说自己“ABAP如何如何厉害”,因为这些计算机科学家们才是ABAP世界的创世主和维护者。
1240

C和ABAP的关系,可以参考我这篇文章:聊聊C语言和ABAP

文章链接:https://www.jianshu.com/p/a99f873feb59

1240

至于一些网络上老生常谈的问题,诸如:

做ABAP开发有前/钱途吗?为什么ABAP开发的收入比Java开发高/低?

我已经在一些文章里表明了我的个人意见:

1240

上图文章的链接:
https://blogs.sap.com/2017/01/19/what-should-an-abaper-continue-to-learn-as-an-application-developer/

中文版:ABAP开发人员未来应该学些什么
文章链接:https://www.jianshu.com/p/b748bb5dc5b9

1240

我写过的其他一些关于ABAP的文章:

Jerry 2017年的五一小长假:8种经典排序算法的ABAP实现:https://www.jianshu.com/p/cebb2df016d1

Jerry的ABAP原创技术文章合集:https://www.jianshu.com/p/020df7734dd8

300行ABAP代码实现一个最简单的区块链原型:https://www.jianshu.com/p/8448cd5b4b5b

ABAP vs Java, 蛙泳 vs 自由泳:https://www.jianshu.com/p/4a058bf85451

动手使用ABAP Channel开发一些小工具,提升日常工作效率:https://www.jianshu.com/p/1cbea3b0f40b

我用ABAP做过的那些无聊的事情:https://www.jianshu.com/p/688f7f9ecae3

使用Visual Studio Code编写和激活ABAP代码 (上):https://www.jianshu.com/p/0db22ec66a28

你的ABAP程序给佛祖开过光么?来试试Jerry这个小技巧:https://www.jianshu.com/p/97c9e7a060bc

关注Jerry的公众号“汪子熙”,轻松获得所有SAP文章:

1240

1240

要获取更多Jerry的原创文章,请关注公众号"汪子熙":
1240

转载于:https://www.cnblogs.com/sap-jerry/p/10700134.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/462868.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vector内存扩容

vector底层实现的机制是一个动态数组,当其占用的内存不足时,就会自动分配时原来内存大小2倍的空间,并将原来内存中的数据拷贝到新开辟的内存中。vector扩容时,并不是在原有内存的基础上再分配一块内存,而是在其他的地方…

C语言:为什么用fprintf(stderr,Error);比printf(Error);更好?

C语言:为什么用fprintf(stderr,"Error");比printf("Error");更好?_百度知道C语言:为什么用fprintf(stderr,"Error");比printf("Error");更好?2009-05-27 17:03 提问者: Wave_Dan |浏览次数:2855次请问:当文件…

w3m 使用总结

安装 sudo apt install w3m终端 w3m www.baidu.com 即可打开w3m是个开放源代码的命令行下面的网页浏览器。一般的linux系统都会自带这个工具,可以通过它在命令行下面浏览网页。本文介绍这个工具的使用方法。 [功能] w3m是个开放源代码的命令行下面的网页浏览器。 它…

set_error_handler自定义错误处理

刚看到了App.class.php,里面有个自定义错误的函数appError 刚还在怀疑。咋这么多参数,虽然看起来都是有用的,不过有些头晕。 继续往下看,看到了init()里的第一句话set_error_handler(array(&$this,”appError”)); 于是好好搜…

vector查找、插入、删除时效率对比

vector底层实现的机制时动态数组,因此适用于查找比较频繁的场景。那么在vector的中push_back()一个元素时或者在尾部删除一个元素时,效率是不是就高? 结果:不是。无论在任何位置插入或者删除元素时,都会进行内存的分配…

jquery如何获取checkbox的值

jquery如何获取checkbox的值 一、总结 一句话总结:就是通过jquery获取哪些对应name的checkbox,然后找出:check(被选中的),然后通过jquery的each遍历获取这些的值即可 $(input[namecheckboxName]:checked).each遍历取值…

Linux文件查找命令find,xargs详述

Linux文件查找命令find,xargs详述 总结:zhy2111314来自:LinuxSir.Org整理:北南南北摘要: 本文是find 命令的详细说明,可贵的是针对参数举了很多的实例,大量的例证,让初学者更为容易理解&#xf…

WTL 学习博文地址

http://blog.chinaunix.net/u/884/showart_148905.html转载于:https://www.cnblogs.com/changping/archive/2010/11/09/1873078.html

git命令:修改已经commit的注释

在使用git命令时,有时commit后,突然想起来忘记修改commit的注释。修改commit的注释使用下面的命令: git commit --amend 本人也是最近2周才开始使用git,有些也理解不到位,在工作中实操之后记录下来,工作环…

当前读与快照读

概念 快照读 读取的是记录数据的可见版本(可能是过期的数据),不用加锁 当前读 读取的是记录数据的最新版本,并且当前读返回的记录都会加上锁,保证其他事务不会再并发的修改这条记录   概念说的比较虚,也不…

误删表数据,如何恢复过来

/* 真实案例:在执行语句的时候错误的把系统中的一个表的数据全部删除 在删除之前,我做过一次完整的数据库备份,再删除之后,我第一时 间做了尾日志备份 也就是说 我手上现在有一份最新的完整备份 和删除数据之后的尾 日…

git命令:将多个commit提交记录修改为1条

本人也是最近2周才开始使用git,有些也理解不到位,在工作中实操之后记录下来,工作环境linux ubuntu。 变基时有六个命令可用: pick pick只是意味着包括提交。重新进行命令时,重新安排pick命令的顺序会更改提交的顺序…

随手笔记

import turtleturtle.bgcolor("red")turtle.fillcolor("yellow")turtle.color(yellow)turtle.speed(10)#主星turtle.begin_fill()turtle.up()turtle.goto(-600,220) turtle.down()for i in range (5): turtle.forward(150)turtle.right(144)turtle.end_…

修改、读取txt文档

1、使用FileStream读写文件文件头:using System;using System.Collections.Generic;using System.Text;using System.IO;读文件核心代码:byte[] byData new byte[100];char[] charData new char[1000];try{FileStream sFile new FileStream("文件…

详解AST抽象语法树

浅谈 AST 先来看一下把一个简单的函数转换成AST之后的样子。 // 简单函数 function square(n) {return n * n; }// 转换后的AST {type: "FunctionDeclaration",id: {type: "Identifier",name: "square"},params: [{type: "Identifier&quo…

struct linger

TCP连接断开的时候调用close socket函数,已经讨论过有优雅的断开和强制断开,那么如何设置断开连接的方式呢? 是通过设置socket描述符一个linger结构体属性。 linger结构体数据结构如下: struct linger { int l_onoff; int l_linge…

Oracle PL/SQL匿名块(三)

转载: http://blog.163.com/lyq_163_2009/blog/static/134082696201071210464738/ //错误处理 declare v_temp number(4); begin select empno into v_temp from emp where deptno10; exception when too_many_rows then dbms_output.put_line(太多记录了...); wh…

rbac 权限分配, 基于formset实现,批量增加

这里需要两个知识点:  - formset  - 自动发现项目中的URL1. 什么是formset:  Django中 form组件 或 ModelForm组件,用于做一个表单的验证。 接收前端form表单中的数据,并进行验证。 并且还可以用于表单的渲染工作。 (就是直…

linux下unix timestamp 与 可视化时间/常规时间进行转换

unix timestamp 与 可视化时间/常规时间进行转换。 最近工作中需要根据可视化时间得到unix timestamp&#xff0c;完成工作之后记录下来了&#xff0c;防止下次遇到此问题时&#xff0c;又需要重新梳理&#xff0c;直接上代码了 &#xff1a; #include <iostream> #inc…

别让自己活的太累

人之所以会心累&#xff0c;就是常常徘徊在坚持和放弃之间&#xff0c;举棋不定。生活中总会有一些值得我们记忆的东西&#xff0c;也有一些必须要放弃的东西。放弃与坚持&#xff0c;是每个人面对人生问题的一种态度。勇于放弃是一种大气&#xff0c;敢于坚持何尝不是一种勇气…