Among many other pearls, Alan Perlis is known for saying this one: A language
that doesn't affect the way you think about programming, is not worth knowing.
I was wondering about the languages I knew, know and will come to know and
realized that the languages that changed the way I thought and think about
programming are quite and eclectic bunch: Sinclair BASIC, HyperCard, Visual
Basic, SQL, and Python. In between those there are others that did not change my
thinking: C, Java, PHP, C#, Bash, and PowerShell. I have written working
programs in all the languages listed here, so to a degree I can claim working knowledge of all these languages at
some point in time. However, I will never claim real expertise in any of them.
Sinclair BASIC on the
ZX Spectrum 48K was my first
programming language. It was 1985 and I lived in São Paulo, Brasil at the
time. I was fresh out of an after-school computer course that taught people how
to program BASIC on a
TRS 80 III machine. I was eager
to go off on my own and try my new skill set. I successfully talked my parents
into buying a ZX Spectrum. I taught myself Sinclair BASIC and remember being
mesmerized by the color display and at the ease with which you could create
little games in the language. That experience sparked my passion for technology
if nothing else.
Some would argue that you cannot properly call
HyperCard a programming language, but
it sure felt like one to me at the time. The major paradigm shift I went through
as a consequence of direct exposure to HyperCard was this: You can actually create useful programs with this
thing. That was back in 1992 when I was working as an aid in the college
computer lab. I wrote a little HyperCard application to check people in and out
of the lab and show a report at the end of each day.
My first serious programming language was
Visual Basic 4.0. I was a
passionate classic VB advocate until its demise as VB.NET and I wrote VB code
professionally for quite a while. VB made me realize that
anyone can program
(and that's a good thing). The ease with which one can create an application
with VB was unprecedented in the computer industry.
Classic VB was the most popular programming language of
its time for a reason, and people want it back.
SQL (more specifically
MS SQL Server) was an eye
opener because of
the fundamental shift in thinking about data
that you have to go through in order to use it effectively. What I mean by that
is if you try to write SQL code in a procedural style you will shoot yourself in
the foot very quickly. As a matter of fact, you will blow your whole leg
off. With SQL, you have to think in sets. If you don't think in sets you will
write a bunch of crappy and slow SQL code.
About a year ago I started to teach myself Python and
I had an immediate A-Ha moment: This is sooo easy... programming is fun again!
My current work involves the support of hardware and software systems for a
large fortune 100 company. It's rare when a day goes by in which I have a
technical problem to which the solution cannot be trivially achieved in
Python. Python is the most expressive language I have used so far in my
career. Using Python constantly makes me think What was I doing writing all
that code before?
I also started to look into Lisp recently
and although I already know that it has affected the way I think about
programming in a profound way, I can't quite articulate what that is yet. But I
think this paradigm shift is a major one and will require its own entry.
As I stated above, I learned other languages (to various degrees of proficiency)
that did not impact my thinking that much. Were they worth learning? That's also
a topic for another post.
P.S. Thanks to Reginald Braithwaite for pointing out that HyperCard
scripting was indeed considered a programming language. However, I know some
people that, despite insurmountable evidence of the contrary, still think that
HyperCard was not programming.