this post was submitted on 09 Sep 2023
969 points (97.3% liked)

Programmer Humor

32503 readers
465 users here now

Post funny things about programming here! (Or just rant about your favourite programming language.)

Rules:

founded 5 years ago
MODERATORS
 
you are viewing a single comment's thread
view the rest of the comments
[–] ccryx@discuss.tchncs.de 44 points 1 year ago (4 children)

Fuck character limits for names. Looking at you, ABAP.

[–] Luvon@beehaw.org 12 points 1 year ago (1 children)

Character limits and a stupid badly used Hungarian notation to waste limited characters to tell use what the ide already knows.

If you have a table, (that’s an array for sane programmers) name the variable as a plural and we will know it’s a table.

Don’t name two variables the same stupid abbreviation with different Hungarian notation characters stuck to the front

[–] skullgiver@popplesburger.hilciferous.nl 1 points 1 year ago* (last edited 11 months ago) (1 children)

[This comment has been deleted by an automated system]

[–] Luvon@beehaw.org 1 points 1 year ago

But that is a typing weakness of that language. I just prefer using languages where the compiler actually does know what the types are at all time and thus can inform me instead of me trying to make sure that types align correctly.

That is tedious work that has been proven to be a terrible idea to shift onto humans. Strong type systems make much more robust code.

Abap only has one collection type, and its tables. Contextually it’s not hard to read what a collection of things are and what a single thing is.

If I am looping through comments and do something with comment, it’s contextually clear what ma going on. The exact type can be easily checked for when it’s actually needed.

Naming a count of something the plural seems like a much less intuitive thing. Especially sense generally the count is gotten from the collection.

[–] andrew@lemmy.stuart.fun 12 points 1 year ago (1 children)

Are you not blind after staring at ABAP?

[–] QuazarOmega@lemy.lol 9 points 1 year ago (2 children)

Can you bleach my eyes with some really bad ABAP code? I've never seen ABAP and I want to feel scared

[–] _cnt0@feddit.de 7 points 1 year ago (2 children)

Let me introduce you to Cobol ...

Classic ASP for the win ...

[–] QuazarOmega@lemy.lol 2 points 1 year ago

No, pleeease grandpa, I don't wanna sweep the cobwebs off the server rack

[–] andrew@lemmy.stuart.fun 4 points 1 year ago (3 children)

I'm not gonna lie, I haven't seen ABAP in 10 years and was only briefly familiar with it. But I did what one does and asked GPT4 for some tax computation ABAP.

DATA: lv_income TYPE P DECIMALS 2 VALUE '50000',
      lv_tax_rate TYPE P DECIMALS 2,
      lv_tax_amount TYPE P DECIMALS 2.

* Select the appropriate tax rate from the tax table based on income
SELECT SINGLE TAX_RATE INTO lv_tax_rate 
FROM ZTAX_TABLE 
WHERE INCOME >= lv_income 
ORDER BY INCOME ASCENDING.

IF sy-subrc = 0.
  lv_tax_amount = lv_income * lv_tax_rate / 100.
  WRITE: / 'Income:', lv_income,
         / 'Tax Rate:', lv_tax_rate,
         / 'Tax Amount:', lv_tax_amount.
ELSE.
  WRITE: / 'No tax rate found for income', lv_income.
ENDIF.

Oh that looks awful. Maybe it’s just because I don’t know how to read it, but the fact that it is similar to SQL (definitely pronounced sequel at this time) messed with my head

[–] QuazarOmega@lemy.lol 3 points 1 year ago

Oh my, that's an abomination, I'm literally squinting my eyes to read it. That ENDIF tho, that's where I draw the line °~°

[–] Luvon@beehaw.org 1 points 1 year ago

This isn’t even like the worst of it. It’s an old enough language they still thought the compiler shouldn’t have to do more work.

So you have to declare all variables, types, and methods in the top section of the class, and the method implementation in its own section. That means while working on a method, the method signature is a long way away. And because abap developers are allergic to splitting up code into reasonable classes, that can be a couple thousand lines away.

Oh and all classes are in the global namespace. So all the classes you make must start with the letter z because SAP reserves any and all names that don’t start with z.

Oh and they didn’t feel like making library code to do a lot of basic stuff, oh no, they thought that 3000+ keywords was a much better system. Especially sense hovering over a keyword gives no documentation and discoverable is therefore pretty terrible.

Also they wanted everything to be sentenced like so keyword structures are often many special words in specific orders and hopefully you can write enough of it to get a prompt to fill in the rest.

[–] nottheengineer@feddit.de 6 points 1 year ago

Ah yes, gotta love /company/product_abc table names.

[–] Dirk@lemmy.ml 1 points 1 year ago

doSomeAwesomeStuffThatCanBeUsedInVariousEnvironmentsWithoutHavingToCareAboutTheReturnValue()