ProgrammingThis forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
View Poll Results: What was your first programming language?
The first programming language I learned was a variety of FORTRAN called WATFIV. Early in the course we had to learn to run the card-punch machines.
It was suggested, but not required, that one may wish to number the cards so that if the 'deck' was ever dropped, then it would not be difficult to put the cards back in order. Also, it was suggested that the numbering for the first deck of cards for one's program be: 10, 20, 30, 40, 50, and so on. The gaps between the initial card numbers were so that if one needed to modify the program, one could re-punch/renumber relatively few cards around where the new cards were to be inserted (while reducing the gap-size), instead of re-punching every card after the insertion in order to fix the card numbering.
The final 'exam' for the course was to write a program to do a specified task. Back then, it was considered important to not use lots of memory and/or processor cycles --- so, if the student's program used more RAM or more processor cycles than the professor's solution, then a penalty was to be calculated and deducted from the grade. I still remember that I got 105 on the final exam, because my program used less memory and fewer cycles than the professor's solution, and also gave the proper output. :-)
It was suggested, but not required, that one may wish to number the cards so that if the 'deck' was ever dropped, then it would not be difficult to put the cards back in order. Also, it was suggested that the numbering for the first deck of cards for one's program be: 10, 20, 30, 40, 50, and so on. The gaps between the initial card numbers were so that if one needed to modify the program, one could re-punch/renumber relatively few cards around where the new cards were to be inserted (while reducing the gap-size), instead of re-punching every card after the insertion in order to fix the card numbering.
Same thing held true for the IBM 1401 system that was one of my earlier machines. Not just "dropped" but even jammed and mangled inside the computer. When this happened, we had to put off the machine, manually pull out the mangled card hoping that you don't damage the sensor brush (960 per head), rekey the card contents (hope that there's no mistake) and feed it in again. Mind you, it's not just programmes but data as well.
Almost 60 years ago I learned to program in 4-address machine code on a LGP-30 computer. It had a rotating magnetic drum with 4K locations. We put the instructions in non-sequential locations to take into account the rotational latency of the drum and the execution time of the instruction. :-) The article in Wikipedia (https://en.wikipedia.org/wiki/LGP-30) describes the machine. However my memory doesn't include the ACT-III language described in the article. Age may have distorted what I recall. :-)
Regardless, I thought Fortran II was a vast improvement when it came out. Since that time I have programmed in many, many languages on machines ranging from IBM, CDC, Burroughs, and DEC to my current home-built Ryzen dual boot Windows and Linux machine. My favorite languages are Smalltalk (on a "real" Smalltalk machine) and Scheme -> Common Lisp. But for practical reasons, most of my code now is in Python.
That is absolutely amazing! I never heard of things like that before. It reminds me a bit of Babbage's Analytical Engine which, if it had been built, would probably have been the world's first computer.
Another parallel which comes to mind is a modern spreadsheet program like calc.
It was suggested, but not required, that one may wish to number the cards so that if the 'deck' was ever dropped, then it would not be difficult to put the cards back in order. Also, it was suggested that the numbering for the first deck of cards for one's program be: 10, 20, 30, 40, 50, and so on. The gaps between the initial card numbers were so that if one needed to modify the program, one could re-punch/renumber relatively few cards around where the new cards were to be inserted (while reducing the gap-size), instead of re-punching every card after the insertion in order to fix the card numbering.
I remember now this card numbering, in the last few columns of the cards. Columns 1-5 were for the labels, and column 6 (if used) marked that the line content was appended to the previous card content.
All this for the program code. Data cards were another story, as well as control cards
I remember now this card numbering, in the last few columns of the cards. Columns 1-5 were for the labels, and column 6 (if used) marked that the line content was appended to the previous card content.
That was a Fortran rule. Fortran IV if I remember correctly.
Oh! I forgot about that! IBM PCAM (Punch Card Accounting Machine). 1966-67 I was a keypunch operator, but did get to do a little of that programming...qualified me to be an “operator” in a PCAM shop a couple years later.
I was at an Air National Guard unit (Wyoming) The operator job was at Commercial Business Services (CBSj in Long Beach, CA...school daytime, work swing shift.. Saying “l work at CBS” was fun at parties, but never really got me anywhere...
I was able to say later that I learned logic on a punch board...
That was a Fortran rule. Fortran IV if I remember correctly.
That's true. It was the fortran format. I learned it by reading some computer books of my father's (he was architect, he did his studies in the 50s but he went back to university in the 70s for further studies, and then he took a computer course too). Of course, I didn't have access to any computer at the time. A few years later, as an engineering student, I took my first computer class, fortran IV too, and that early knowledge helped me to progress faster than other students in class. It seems that fortran IV remained in use for many years in engineering calculations, because there were many big programs already tested and running. I never used fortran myself since mid 90s, and I think actual versions are very different than those old versions.
A long time ago in a galaxy far, far away, I was employed by a large (but fading) technology company. I learned to use (and love) a mainframe language called CMS Pipelines which had a wonderful feature called 407 Emulation.
Great thread Jeremy!
It has flushed a lot of lurkers, who obviously have a long history.
Unsurprisingly, my beginning was with BASIC on IBM and Apple IIe clones more or less in conjunction with assembly. Back then, writing your own assembler routines was encouraged.
That is absolutely amazing! I never heard of things like that before. It reminds me a bit of Babbage's Analytical Engine which, if it had been built, would probably have been the world's first computer.
Better late than never, I suppose!
The first complete Babbage Engine was completed in London in 2002, 153 years after it was designed. Difference Engine No. 2, built faithfully to the original drawings, consists of 8,000 parts, weighs five tons, and measures 11 feet long...
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.