Today is Programmer’s Day. 13 years ago I wrote a post “Am I
programmer” where I defined myself more as
Developer than Programmer.
Wikipedia definition of “Programmer” says:
A computer programmer, sometimes called a software developer, a programmer or
more recently a coder (especially in more informal contexts), is a person who
creates computer software. The term computer programmer can refer to a
specialist in one area of computers or to a generalist who writes code for
many kinds of software.
I still do not write software used directly by users — I usually build someone
else’s software. But I used to do write programs and sometimes like to do
something. In some programming language and I had a chance to use many of them.
BASIC
Probably most of people born in 70s started their experience with programming
using BASIC on 8bit computers. If you were out of luck you could end with
Commodore 64 and it’s “PET BASIC” without any way to make use of audio/video
capabilities of computer.
I used Atari 65XE. First original Atari BASIC, then moved to Turbo BASIC XL (was
faster and better). I wrote several programs in my teenager years. Enhanced some
of them with short routines written in 6502 assembler.
Once moved to Amiga and then PC I had two times when BASIC knowledge helped.
During studies one of teachers knew only GW-BASIC so we had to write programs
using it. Other time was some kind of BASIC on PIC 16F84 microcontroller.
Oh, and I wrote my first 8k intro in something
resembling BASIC.
Assembler
Going lower in programming stack… During Atari years I learnt a bit of MOS
6502 assembly. Once moved to Amiga had quick lesson of m68k programming. Used it
to understand how “Happy New Year! 96” virus was working. Then wrote simple tool
(using High Speed Pascal compiler) to kill it in all infected binaries. Some
months later I got antivirus software which did it properly.
During studies we had lot of Zilog Z80 assembly. Mostly on some old controllers
from some unnamed milk company (20 keys, 8 places of 7-segment display, ADC/DAC
etc.). But, as I know how to drawing block diagrams, I always had beer from
other students ;D One day someone brought something weird instead of Z80 code.
Turned out it was 16-bit x86 code. Took me a few minutes of reading (it was
simple program).
Then came first real MCU: PIC 16F84. First we programmed it in BASIC (it was
weird), then C and finally assembly. Small amount of instructions, simple names
— was fun to program.
I never learnt x86-64 or ARM assembly. There was no need.
LOGO
Oh, LOGO… And turtle drawings. On Atari you could have 4 (or 5) turtles
drawing at same time.
I even tried to write some simple game in LOGO. But need of calling garbage
collecting too often made it worthless.
It is also first language where I wrote code for someone on piece of paper. And
it worked.
C/C++
Some people would split them into two, but not me. I learnt them in a way that
I wrote some of my programs in pure C, some in some form of C++ etc. Depends on needs.
During studies some programs were first written in pure C on my Amiga. Then I
used someone’s PC to add Windows UI to it (Borland C Builder mostly). My
master thesis was kind of terrible C and I am not proud of it.
My probably most complicated application is my module
player. I never released it despite
spending about 13 years on it (from time to time). Used it to learn Qt
programming a bit.
Pascal
I learnt Turbo Pascal in a school. A bit. Never wrote anything complex in this
language. Used it few times on Amiga.
One lab during studies involved Pascal programming. I wrote code, someone
reviewed it and we run it. Robot which we were supposed to control went crazy
and demolished room a bit. After simple fix we repeated and all went as supposed.
During last year I played a bit with Mad-Pascal for Atari XL/XE (cross compiler
runs on Windows or Linux). Maybe there will be something from it one day.
AmigaE
During my Amiga years I wanted to have some way of programming. No one from my
friends had any C compiler, Pascal was not popular so I went with AmigaE.
It was strange language. Kind of Pascal, kind of C. Allowed to mix assembly with
AmigaE in one file.
But compiler was fast and worked on 1MB machine (I had hard drive). All includes
(called ‘modules’) were pre-compiled so building application was quick.
I used it to write several applications. Released one of them in shareware
model — full copy costed 5 USD (or 5 PLN for Poland). At the end of
development I had about 100 users. It paid for some of my Amiga hardware.
PHP
After studies, when I had fresh Masters in Automation and Robotics, I had to
decide which way to go. Turned out that my SQL knowledge from work done during
previous years can be used. Just had to learn PHP.
After 2 weeks of learning language I was at test period in one portal. And
became ‘main programmer’ there. Not because I knew PHP better then the other
guy. I was good at organizing work, sorting out project into steps etc. And
being GNU/Linux user I had some knowledge useful to be ‘second after admin’.
I worked in few companies writing PHP code. For several customers. And after
about 6 years I dropped it and went into Embedded Linux territory.
Nowadays I officially lack any knowledge of PHP language.
Python
Another “P” language… I started using Python in 2004. Right after I found
OpenEmbedded as most of it’s code was (still is) Python.
So for 17 years I am repeating that “one day I will learn Python properly” :D
This is my favourite programming language. Used it in OpenEmbedded, OpenStack,
this blog and countless projects. Nowadays if I have to write some script then
most of time it is in Python.
Minimal version I target is still 3.6 as this is what RHEL 8 uses.
Shell
Scripts. When not in Python then in shell. Most of time I use Bash. It works, I
do not use most of it’s features.
I can write scripts in plain POSIX shell. Not of fan but can. Some lessons
learnt from years of working in embedded Linux area.
Perl
When “P” languages are mentioned, Perl has to be present. Never learnt it. Had
to maintain some scripts in Perl in past. I even managed to make some
improvements to them but no idea was it in proper way. It worked.
Forth
Reverse Polish Notation is crazy. It feels like source code written by master
Yoda. I got Forth in Atari times and tried to write something. Probably never
went behind ‘hello world’ ;D
Java
Never learnt. In past I found farm bot code for Ingress game. In Java. Took the
code, expanded it, added several improvements. It worked fine. But became harder
and harder to expand.
So I rewrote it in Python 3 and forgot about Java.
Javascript
Just no. Like PHP.
Other ones
During years of building and porting software I had a chance to write something
in several less popular languages. Erlang, Haskell, Rake, Ruby etc.
Most of time it was something just a bit more complex than ‘hello world’ — to
check does compiler/interpreter work.