What was your first programming language?
Few days ago OpenSource.com magazine asked contributors to share our personal stories about how we got into programming. Many entertaining and fascinating responses were submitted. In the article below I’m sharing my own story.
One can notice intriguing patterns in the submitted stories. The 70s generation was nostalgic about Fortran, punch cards and dialing into shared mainframes. 80s kids (where I belong) shared stories of C, BASIC or Pascal and their beloved Atari and Commodore computers. Surprisingly few stories from the 90s arrived. Almost like there’s a generation gap. Maybe teenagers were terrified by C++, MFC, CORBA, DCOM and dreaded Hungarian notation, which was the order of the day? They surely all became investment bankers and haunt us today. Pity but then, there’s no way one could develop any affection towards those bland PCs of 90s ;-)
Finally, there’s strange silence from the youngest generation. Looks like young Raspberry PI adepts haven’t discovered OpenSource website yet?
I’m curious about your own road to programming. Feel free to share your own story!
Your first programming language?
My first programming language was Microsoft BASIC. I learned it on a mighty MSX SpectraVideo 738 home PC. MSX was innovative home computer architecture based on Z80 CPU. Developed in 80s by Microsoft, it was produced by Sony, Philips, Pioneer, Sharp, Yamaha and many other vendors. My home country Poland, then under communist rule, was cut off from modern IT technology by economical sanctions. Business as usual, we’d say today. But winds of change came during late 80s and at last computers made it to my school.
Did you get paid for it?
I was a student at the time, so I weren’t paid. As a matter of fact, I got so fascinated with programming that I would be willing to pay myself for the pleasure ;-) Thankfully, all schools and universities were totally free at that time. Imagine, you would start your IT career with zero debt!
Did you choose it, and why?
Well… Fate chose it, I had nothing to say here ;-) Me becoming a programmer was a practical joke by some supernatural creatures.
It started during early high-school years, in 1988 in Poland. I’ve been growing long hair, playing guitar, listening to Black Sabbath and hoping to have a rock band one day. All the while avoiding computers like a Black Death plague.
Then came doomsday. A day of hazing rituals at a school dorm where I was living. Those familiar with dorms know that this humiliating experience must be avoided by all means. But I had nowhere to go, removed 350 km from home. I was waiting resigned in my room, when suddenly rescue arrived in a shape of Mr Briefcase.
Briefcase was another student and also a computer nerd with reputation. Already at this young age he looked like one of Dilbert characters. Only we didn’t yet know Dilbert, as Iron Curtain has only just begun to break. But imagine a typical corporate software engineer. Half-bald, white shirt hiding a round belly, tie, pale face, all completed by a proper corporate briefcase which he carried everywhere he went.
Briefcase entered the room, asked how are you, heard my story because Polish will tell you how they are if you ask. Then he said: “Hey, I’m going to the computer lab. You can join me, there’s no one there today except me”. I jumped excited: “The entire evening?" Our man answered: “Sure thing. I’ll be busy but you can play games and stuff”. Hell why not, I said, as I’d go even to hell on that particular day.
We’ve soon entered the lab. It felt to me like Star Wars battleship command center. The following hardware was available:
- One beautiful IBM PC clone, Spectravideo SVI-838 xPress-16 with an amazing clickety keyboard. No modern mechanical keyboard was yet able to replicate that sensual experience. Unfortunately, it was totally off-limits for noobs like me. Notice that word noob was already in wide circulation.
- ZX Spectrums. I didn’t like these, since they looked like toys with their rubbery keyboards.
- Futuristic MSX SVI-738 computers with colour screens and Seikosha dot-matrix printers.
The choice was made.
How did it work out?
I played for a while but got bored very quickly. I asked Briefcase, a man of few words:
- So what is it that you're doing? - Programming. - How do you do that? - Here.
and he threw a manual at me.
I run through
print "hello world!" examples. Then I stumbled on chapter about computer graphics. Turned out that our MSX had amazing graphic capabilities. After an hour of struggles with English which was still Chinese to me, there it was: my first working computer program, written with BASIC.
What did it do? It mocked one revolutionary whose statues were being brought down in these turbulent days all over my homeland.
It drew a banner saying “LENIN” all across the screen.
I was thrilled, flabbergasted and completely hooked. I felt like being in love for the first time. I could command this creature to do things. Beautiful things. Utterly stupid things. Boring things. And it would do them all, without hesitation, line after line, only sometimes responding with
It was pure evil magic! The very next day I signed up for the computer lab.
In the following months I had a lot of fun with computer graphics. Those machines were amazingly efficient in educating young people in computing. Programming language interpreter was the only way to interact with it. It booted, and you had to enter commands to do anything useful. Those more curious of us would inevitably ask - are there more commands? In the end, you got sucked into programming without even knowing it. The entry threshold was so low!
For example, to draw a circle on the screen, all I had to do was:
- Boot the computer and wait few seconds, not the usual two minutes of nowadays
10 CIRCLE 100,100,50and press ENTER. Yes, we had to number the lines ourselves.
runand press ENTER
Just see it for yourself.
Try achieving that with contemporary machine and OS. Even before writing a single line of code (and you will need many), you have to know and decide on many many things, such as:
- Choice of development platform - web, desktop, or maybe hybrid?
- Choice of programming language, as none pops in your face on computer boot
- Choice of programming framework to use to draw that circle - QT? WPF? HTML5 Canvas? OpenGL? WTH?
- Install and configure gigabytes of stuff
- Pray to Ancient Ones for help in understanding all of this
There’s no way contemporary kid would write a program drawing “LENIN” banner on the screen within one hour, while having absolutely zero knowledge of computers on entering the computer lab. It’s all just crazy complicated today. I truly admire young people taking upon programming. We oldtimers had it so easy, while we keep bragging how good our skills are. Hell, we had 30 years to learn them slowly!
What also keeps me amazed, is how little resources were needed to run this all. The computer had 64kB of memory. The usual on 8-bit machines. To give you a sense of scale - a single high-resolution desktop icon on my
PopOSLinux box can be bigger than that.
Yet within this tiny memory it could run operating system and academic-grade compiler. It could run graphic programs with flawless sprite animation and collision detection. It would play percussion tracks through programmable noise generator. Now you understand why Bill Gates truly believed that asking for more than 640kB is just insane ;-)
Now, try writing a program which beeps a plain C note on your current workstation. I wouldn’t even know where to begin, without going to StackOverflow. I guess I need DirectX? There I could do it with a single command, right after booting the machine!
What happened next?
My MSX had a 3.5” floppy drive - an amazing thing these days. One day we’ve received floppies with CPM 2.2 operating system and Turbo Pascal 3.0 compiler. This is how I tasted my first real programming language, while avoiding further exposure to supposedly brain-damaging BASIC.
Turbo Pascal was beautiful like katana sword. Expressive, succint, safe and structured. There’s anecdotal theory why programmers from Central and Eastern Europe have such highly valued skills. In western countries C and C++ were the order of the day, with all their quirks and idiosyncrasies. Over here we usually started with Pascal. It was the programming language of choice in schools and universities. Differences between these two are substantial. They must have wired our young minds in a substantially different way.
Pascal was much more disciplined than C. Contrary to popular rumours, it was as “close to the metal” as it gets. For example, MacOS was originally written with Pascal. Pascal too has pointers, direct memory operations and even
asm ... end block for assembly code injection. Yet pointers aren’t thrown in everywhere like in C, whether you like it or not. And the worst plague of modern software, namely buffer overflow attacks via null-terminated strings, is non-existent. String in Pascal is too an array of characters. Only the first entry contains explicit string length. Simple! It had proper module system (remember, it’s 80s!), precompiled libraries, strict type control and blazing fast compiler on top of that. You can download it even today, the whole 60kB of it. Pure wonder!
Turbo Pascal had shaped the way I think while programming. Later versions came with OOP and prepared me for complex software architectures and programming on Windows with Borland Delphi. I touched C and C++ only when I had no other choice.
Decades later I have realized that all my career I have unconsciously followed in the footsteps of Anders Hejlsberg. He and his team were creators of highly succesful line of Turbo compilers at Borland. Then they’ve created Delphi which was relief for Windows programmers struggling with Visual Basic, WFC, MFC, Charles Petzold books and Hungarian notation ;-) After Borland, he followed to Microsoft and created .NET and C#, which I happily jumped into. Finally he created TypeScript, which became the backbone of modern enterprise web development. With this spiritual guidance I somehow managed to avoid C++ an Java for most of my career, for which I’m eternally grateful ;-)
Yet, I greatly miss the simplicity of these early days. I’m sad to see how entry into wonderful world of programming has become so difficult for young people. Things like Raspberry Pi revolution couldn’t come too soon, and I’m hoping that one day programming will become as easy to begin, as it once was.
Author Tomasz Waraksa
© Tomasz Waraksa, letsdebug.it
This article is not promoting any of the described products, services or vendors. We don't have any commercial interest nor associations with them. We're not trying to suggest that these products or services are best for you, nor promising that your experience will be the same.
In no event will we be liable for any loss or damage including without limitation, indirect or consequential loss or damage, or any loss or damage whatsoever arising from loss of data or profits arising out of, or in connection with, the use of this website and any information presented on it.
Through this website you are able to link to other websites which are not under our control. We have no control over the nature, content and availability of those sites. The inclusion of any links does not necessarily imply a recommendation or endorse the views expressed within them.
Permission is hereby granted, free of charge, to any person obtaining a copy of software published on this website and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions, unless stated explicitly otherwise:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
The software is provided “as is”, without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the software.