News for hackers. Stuff that matters.
Re:It’s COBOL all the way down by pkaye on Tuesday May 01, 2018 @02:38AM (#16964984)
> COBOL has no stack...

So no function calls?

Re:It’s COBOL all the way down by kbp on Tuesday May 01, 2018 @03:25AM (#16965169)
> So no function calls?

No recursive ones. If you forbid (direct or indirect) recursion, then a function's local variables can all be static rather than stack-allocated. Similarly, each function could have a hidden, static "return address" variable (since all parameters are static, it's really just a hidden parameter) that is set behind the scenes when a procedure is invoked and jumped to when it exits.

edit: I was just guessing how you'd do return addresses, but it looks like that is how they used to work. From Wikipedia: "Machines before the mid 1960s—such as the UNIVAC I, the PDP-1, and the IBM 1130—typically use a calling convention which saved the instruction counter in the first memory location of the called subroutine. This allows arbitrarily deep levels of subroutine nesting, but does not support recursive subroutines."

Ancient Fortran also didn't support recursive procedures, and they were only sneaked into Algol 60: https://vanemden.wordpress.com/2014/06/18/how-recursion-got-...

Re:It’s COBOL all the way down by nafey on Tuesday May 01, 2018 @02:47AM (#16965024)
Although I am not familiar with COBOL I am assuming this means you have to indicate where the control returns to after a function ends
Re:It’s COBOL all the way down by jrq on Tuesday May 01, 2018 @05:53AM (#16965698)
So that's kind of like a coroutine. Taking recursion away seems like an unnecessary limitation, considering how much power main frames have. Resource efficiency is great and all, and certainly there's a benefit to not hammering the stack as often, but that takes away an entire category of definitions you can't express, right?

Maybe someone who writes cobol could chime in on this.

Re:It’s COBOL all the way down by kbp on Tuesday May 01, 2018 @11:21AM (#16967769)
> Taking recursion away seems like an unnecessary limitation

Modern Cobol doesn't seem to have this limitation, eg http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/handhel.... When Cobol originally appeared, call stacks weren't standard, Lisp didn't exist yet, and neither Fortran nor Algol supported recursive functions; it made sense at the time.

Re:It’s COBOL all the way down by jrq on Tuesday May 01, 2018 @12:18PM (#16968428)
Ohhhhhh, of course!

Gosh, thanks. I sometimes hold historical technology to unfair standards because I'm not thinking about the continuity of it all.

Crazy to think twenty-somethings are out there hacking COBOL!

Re:It’s COBOL all the way down by Koshkin on Tuesday May 01, 2018 @09:25AM (#16966824)
> how much power

Do not forget that when COBOL was created mainframes were less powerful than today's microcontrollers.

Re:It’s COBOL all the way down by blattimwind on Tuesday May 01, 2018 @08:22AM (#16966390)
Recursive and iterative functions have the same computational power.
Re:It’s COBOL all the way down by adrianN on Tuesday May 01, 2018 @08:51AM (#16966570)
And every computable function can be expressed in Brainfuck. That doesn't mean that some algorithms are a lot more elegantly expressed when your language supports recursion.
Re:It’s COBOL all the way down by joshuaduffy on Tuesday May 01, 2018 @08:20AM (#16966375)
Correct. They are called subroutines in COBOL.