4 ms·
COBOL was unstructured. Not like (say) C or Pascal. Modern languages are structured. Older languages like COBOL or BASIC, being unstructured, lead to what used
by simonblack 7y ago
COBOL was unstructured. Not like (say) C or Pascal.
Modern languages are structured. Older languages like COBOL or BASIC, being unstructured, lead to what used to be called 'spaghetti code'.
https://en.wikipedia.org/wiki/Spaghetti_code https://en.wikipedia.org/wiki/Spaghetti_code
Unstructured code was deprecated in the 70s and 80s after the famous 'GOTO considered harmful' paper by Dijkstra.
https://homepages.cwi.nl/~storm/teaching/reader/Dijkstra68.pdf https://homepages.cwi.nl/~storm/teaching/reader/Dijkstra68.p...
COBOL's other 'drawback' was its verbose code. I use 'drawback' in quotes because I always found that its verbose nature meant you could pick up a COBOL program that you hadn't looked at for six months and immediately know what was going on.
example:
ADD WORK-HOURS TO OVERTIME-HOURS GIVING TOTAL-WEEK-HOURS.
rather than
z = a + b;
Although, because of my COBOL experiences, I tend to do something like this:
total_hours = work_hours + overtime_hours;
which is more wordy than normal C but more terse than COBOL.
- _bxg1 7y agoC has goto, as does C#. Using it is frowned upon, but it's there. I'm not familiar with the term "unstructured" in this context; does COBOL not have subroutines or something? And I'm sure COBOL's verbosity can't hold a candle to enterprise Java. I'm still not seeing a single big factor that sets it apart as unusable. All languages have flaws.
- simonblack 7y agoNon-structured programming relies on GOTOs. While some unstructured languages (e.g. BASIC, COBOL) do have subroutines, in general the program-flow goes all over the place. Structured languages rely more on 'if-then-else', 'do-while' or 'case' types of flow controls, where there is a constricted number of flows available. Coming from BASIC as my first-learned programming language, it took me a lot of effort to re-arrange my programs to eliminate all GOTOs. If your code does not need to use a GOTO, it's flow is structured, and you have learned subconsciously (or you were taught) how to write structured programs rather than unstructured programs. I once saw a diagram that showed how the program-flow formed nested loops in the code. The idea was that the program-flow should be written so one loop does not cross over another flow-line loop. The cartoon here ( https://encyclopedia2.thefreedictionary.com/Spaghetti+programming https://encyclopedia2.thefreedictionary.com/Spaghetti+progra... ) shows the crossing of flow-lines.