I noticed the iron ring on your pinkie -- Canadian engineer?
235 karma · joined June 5, 2011
I noticed the iron ring on your pinkie -- Canadian engineer?
For the next 15 years, I was an APL programmer, and later a Q/K developer. It would have been a hoot to use K was back in the 70s to analyze the collected data!
What a fun project! Bravo
I then moved to C++ and was gobsmacked the the precedence rules and was forced to use parentheses to get things right. I have seen hundreds of bugs produced by programmers that tried to be clever and avoid parens relying on their faulty memory of the precedence priorities.
Just look at the C++ Operator Precedence table listed at the following URL. It's wild!
https://en.cppreference.com/w/cpp/language/operator_preceden...
I'd like to add that one should catch oneself when falling into the "Perfect is the enemy of good" trap. As engineers, we would like things to be perfect, but sometimes at the peril of late delivery, little feedback, and development of features not required.
I wrote the solution in APL in about an hour and it only had 3 lines of code. The rest of the class spent days on their terminals and keypunches trying to solve it. Most solutions took hundreds of lines of code.
I got a D from my professor. I questioned why and was told that it was unreadable, and that the solution was inefficient. This annoyed me because he didn't know APL, and I figured that since I solved the problem in one hour, while the rest took days, it was very efficient.
I protested the result with the department head (who liked APL) and ended up getting an A+. As you can imagine, all the rest of my assignments, written in a variety of languages, were graded by that AI prof with significant prejudice.
I passed nonetheless. I loved APL and ended up working for one of the major APL providers as my first job out of school.
Also, ⎕IO can be set as a local variable of a function to limit the scope of the indexing origin, which made it convenient to simplify the code to implement certain algorithms.
We would iterate from the keypunch room, to the 360/20's card reader, and wait for the mainframe to process our code and transmit the code output to the local printer, for review at tables large enough to page through fan-fold paper, to check and mark-up the code. Back then, we didn't need watches to remind us to stand up and walk around every 30 minutes -- the coding workflow forced us to!
Reading the Principles of Operations for the 360/20, the processor was supported half-word (16 bit), and had no floating point, but support packed decimal numbers. Our machine had 16K.
It was great to see the article -- made me reminisce about the days of me carrying boxes of punch cards and inches of output back and forth to my residence.