Its never too late. Software engineers are in high demand.
Programming is fucking hard, but also kind of awesome.
I find the act of transforming what logic I want into any particular language to be pretty easy…but thinking of the right approach to solve the problem is the hard part. I often spend a good chunk of my time writing pseducode or math to solve problems. Transferring that to code (java, r, python) is the relaxing part, where the challenge is to do it at least semi-elegantly and in a reusable way.
The first thing I did in basic was to have a loop count to 100 and watch the computer pause while it ran.
The first thing I did in pascal, my first compiled language, was bash my head into the wall because no matter how large I set the number, it came back instantly. The new machine was at least 50 times faster, just based on megahertz, but still - I didn’t think it could count that fast. I obsessed about this until I found an article on optimizing compilers.
The first thing I did in VB.net was to create a desktop calendar and clock app that ran in a small window. When double-clicked it opened to fullscreen, whereby you would see a very X rated background with extra pictures to cycle through.
Generally when learning each new language I start with something small (like a clock app), then keep adding to that first program to the point it become some crazy frankenstein mess.
Several iterations of “first”:
- Basic on my Amstrad
- PASCAL in my first CS class in college in 1992.
- First time I really learned a language for real, instead of just trying to learn it: C in 1999. Then C++ in 2000.
I remember in 5th grade a teacher brought in their vic-20, and set it up to count to 1000000, then left it running. I think it took a day or so to complete.
Rampant porno feature creep!
The best kind of feature creep.
Hmmm… I think the major ones are, in very rough order:
BASIC, starting on TRS-80 model 1, then VIC20, C64, Coleco Adam, C128, Apple II, PC, Visual Basic, etc…
C (lots and lots of C)
Pascal (a bit because “everyone” was talking about it)
C++ (starting early days pre-standards)
Microchip PIC Assembly (all variants, culminating in working on defining the ISA for PIC18, dsPIC and variants thereof)
ARM assembly (v6 and v7, particularly)
ARM64 assembly (this was a fun one, especially in the early stages)
Probably a few others in there somewhere that I’m not remembering. Tinkered with things like Eiffel, Ada, ML, Lisp, etc., but not enough to claim to have learned them. Not counting DSL stuff like awk, TableGen, Yacc, Lex, et. al… Assembly and C++ are still my primary languages depending on task.
Professional work has been mostly C family of languages, but there was an annoying amount of Visual Basic in there for a while.
I started on this thing called a CyberVision, I’m not really sure what the language was. I had to replace the datapad with a keyboard we made because programming on the little keypad was a PITA.
Then it was on to the great TRS-80 (Trash 80!) which had some kind of linear BASIC. Then BASIC (GoTo)! Then in college COBOL, SQL, Pascal, C, C++, etc. Then after college various object oriented languages. Then I became a tech lead and project manager for a while so not much professional coding but I fooled with Arduino and Python. Now I kinda love Python.
Though to me you reveal yourself as a simple code monkey if you say “I know so and so language”. To me a feel software engineer does much more design and process creation work, which is the real hard stuff. Then you pick whatever retarded, limited, broken programming language fits the task and use that. A real contract developer is like a real mercenary. A real mercenary doesn’t go on and on about his Sig or his H&K or get into discussions about 9mm vs .40. A real mercenary kills you with whatever gun he is issued or the best one for the task. Usually it’s whatever every one else is using around him… which is kinda what a real developer does.
Anyone else have this mentality?
Totally agreed. I like to say I’m an algorithmic thinker and problem solver, not really a programmer. Programming is the easy part (but mega frustrating to deal with syntax). Thinking of a way to do something original is really hard.
Edit: Man a lot people had the Trash 80! Who was a baller like me and had the memory expansion module on the back? I forget how much it added, probably like 4KB. Lol.
Here is the Cybervision. It used cassette tapes for storage. I remember three games on it. A sub game, a creepy as hell hangman game, and a Rumplestiltskin adventure game. It had one cool feature. The cassette tapes had both the data and sound recordings on the same tape. So while were playing a game it would have full voiceover and sound by fast forwarding and rewinding the tape to the sound parts. Of was like 15 years ahead of sound cards like the Sound Blaster.
I feel like the actual programming part is just “bean counting”. Reduce any code down enough, and it’s some stupidly easy to understand operation for the most part. There are a few rare bits where you have to come up with say…an EM algorithm to estimate parameter given a set of parameters on lots of data. The fun bit is figuring out exactly what your likelihood and gradient functions are. The rest is just…well, you’ve done this before, you build data structures in a memory efficient way and plug them into an optimizer. It can be sort of hard to do this the first time, but then you build an API to handle lots of similar problems and you’re good.
Most of my time/expertise is understanding the domain, not the programming. Aside from picking up lambdas over the last few weeks, I haven’t learned anything new on the programming side - but have learned a ton about domain specific stuff or algorithm performance limits.
Yeah, agreed. For instance I’m using Python only because the API for the animation software I’m using is written in it. But the design is a new kind of Bayesian engine (I think) I designed that could be programmed in almost any object oriented language. I can sit and think for hours days about a process flow and design, coding it just flies by,
I was having a sleepless night, and somewhere along the way I got those books in my head. So at around midnight, I reached for my phone and found this
Wow, I remember that exact one! So cool. Thanks for sharing!
EDIT: Hah, solved the first one by translating the BASIC code to a Python one-liner. And found out there’s a typo in the original message. ;)
EDIT 2: Wow, program 2 has busy waiting. I haven’t seen that in quite a while. ;)
LOGO, Big Trak then BASIC.
I took Basic, Fortran, Pascal, Adv. Pascal all at a community college in the early 80’s. Then, switched to Liberal Arts…what an idiot.