@Full_marx Learning assembly is not hard. Writing it isn't hard either. Reading - is where it all falls apart.
You eagerly learn it, you proudly write the largest program that can fit in your head with it, and the next day you can't read what you wrote. You walk away with some key insights on fundamentals of programming and usefulness of higher level languages, without even realising it.
I’m thinking I’ll follow the following sequence in my journey into low level system.
—Assembly (learn for fundamentals, not for production)
—C (learn for a higher level understanding, not for production)
—Rust (learn it, and build with it)
Do you see any issues I might run into?
This way if I feel I wanna switch I can just switch to C++ when I reach the rust stage.
@togs That was an excellent post, well done.
Assembly programming is hardware specific, and therefore much more detailed, and time consuming, specially if you have to support different system configurations.
I remember enjoying the elegance and speed of some programs I used very frequently in earlier, command line intensive days. Some were at least partially written in Assembler, at least the most critical parts, and it showed a competent and knowledgeable developer behind it. Kudos to them.
I have been out of doing programming for a long time, my first language was Fortran, in first year Engineering, and I really enjoyed the new experience of having access to a computer and learning about it. These were the days of Mainframes, my first system was a Burroughs 5500 I believe. One of those that seemed a Cathedral of Computing, with a huge room, tons of air conditioning, and a priesthood to keep things running.
We noobies approached with reverent respect, handed in our jobs for processing, and waited to see the result.
Analog days in that sense - my assignment was written in pencil and paper, I had to understand and believe each step was correct and would result on what I needed at the end.
I would write the code line by line on paper, parse and interpret it in my mind, and if it looked correct, then go on and prepare to take it in for processing.
We students did not have access to a terminal, but brought jobs in as decks of 80 column wide cards. I usually would prepare my own, finding an IBM punch machine in a quieter department (Physics usually).
Handed in the deck, and waited for the processing. You could tell things were looking good even there, by the way the card reader took your stack.
If it read smoothly, no pauses, it looked nice and might not have any errors. If it paused half way, you could expect an error message - in the output, a fan paper printout. Each printout contained at the bottom the cost in US dollars of that processing task, not that we paid for it.
What a difference time has wrought. :)
Forward about 30 years and I was standing and teaching a grade 11 programming class, we used QuickBasic which I thought was wonderful for learning logic, structure, flow, etc.
My students would always be baffled when I gave them a small task, and asked them to sit and write a few lines of code to make it happen. They found that very difficult! :smiley:
Usual type it in, and hit Run on the Qbasic compiler was what they wanted to do, but understanding the logic is much more important.
The concepts you learn, hopefully well, will go forward with you and to new languages which you will probably work with in the future.
I don't know how much you already learned or understand, but I would recommend a higher level language to learn the logic, structures, etc.
At one point in time, I used TurboPascal (early 90s), which was developed specifically for teaching and learning programming.
QBasic, Pascal, are too far back now, but maybe JavaScript, possibly?
sorry for the long post, but it's fun to reminesce. :smiley:
I remember how we used to always compare our programmes to our peers i nteh Math faculty 1st year course. We used Fortran, they used Algol, we all had the same assignments, our profs being from the Math department.
Sometimes one, or the other language "won", with a skinnier deck of cards showing less steps, tighter code. On the next assignment it might change, as each language had its strong points.
Fortran is Formula Translation, and was created specially for Science and Engineering. ALGOL was an acronym too, I am not sure of the wording.
At that time (mid 70s), COBOL was the most widepread language in business, having been created for that kind of task.
Funny fact related to what Doug mentioned -- when Unix was first created, it was from scratch, on paper, and the first program they wrote, the foundation for the whole system building -- was an Assembler, which was punched on paper tape, and read to input into the DEC PDP mini computer that they had got access to.
I love History in general, and Computing History is fascinating.
Read this last night, but was too sleepy and didn't want to post a half assed reply.
I have heard of these machines, mostly in videos and movies. And I'm also familiar with the punch card routine.
What a time, where you had to get in an actual physical line to have your turn at the machine.
An age where where computers had humans working inside them, like task managers.
A point in our time where renting a computer for a few hours was considered unprecedented access to technology.
I think it was in a lecture by Linus, where he said that after the Punchcard age, the number of women in programming steeply declined. Never understood why though.
But I must say, I would at least once would like the privilege to "hear" my code being processed. Must have been a great tactile experience.
---------------------------------
We live in age of instant gratification. I for one believe that this has hampered our ability to learn.
If you modify/condition somebody's dopamine circuits you are doing them in for life.You ruin their ability to sit patiently and learn.
The very internet the programmers created is affecting the patience people need to learn programming.
When people stop learning their minds lose all flexibility.
I don't game on my phone. But i look around me and everybody is crushing candy like their life depends on it. its unfathomable.
The amount of time humanity has collectively wasted is a testament that we don't appreciate what we had to do to get to this point in civilisation.
long post, take your time!