Have you ever written a computer program? Using which language?
- HTML
- Javascript
- Java
- Python
- C++
- C
- Other - which?
[It turned out the students had used a mixture of Scratch, App Inventor, and Processing. A few students had also used Python or Java.]
Have you ever invented a programming language? :-)
If
you have programmed, you know some of the problems with programming
languages. Have you ever thought about why programming isn't easier?
Would it help if you could just talk to your computer? Have you tried
speech recognition software? I have. It doesn't work very well yet. :-)
How do you think programmers will write software 10 years from now? Or 30? 50?
Do you know how programmers worked 30 years ago?
I do.
I was born in Holland in 1956. Things were different.
I
didn't know what a computer was until I was 18. However, I tinkered
with electronics. I built a digital clock. My dream was to build my
own calculator.
Then I went to university in Amsterdam to study mathematics and they had a computer
that was free for students to use! (Not unlimited though. We were
allowed to use something like one second of CPU time per day. :-)
I had to learn how to use punch cards. There were machines to create them that had a keyboard. The machines were as big as a desk
and made a terrible noise when you hit a key: a small hole was punched
in the card with a huge force and great precision. If you made a
mistake you had to start over.
I didn't get to see the actual computer for several more years. What we had in the basement of the math department
was just an end point for a network that ran across the city. There
were card readers and line printers and operators who controlled them.
But the actual computer was elsewhere.
It was a
huge, busy place, where programmers got together and discussed their
problems, and I loved to hang out there. In fact, I loved it so much I
nearly dropped out of university. But eventually I graduated.
Aside:
Punch cards weren't invented for computers; they were invented for
sorting census data and the like before WW2. [UPDATE: actually much earlier, though the IBM 80-column format
I used did originate in 1928.] There were large mechanical machines
for sorting stacks of cards. But punch cards are the reason that some
software still limits you (or just defaults) to 80 characters per line.
My first program was a kind of "hello world" program written in Algol-60.
That language was only popular in Europe, I believe. After another
student gave me a few hints I learned the rest of the language straight
from the official definition of the language, the "Revised Report on the Algorithmic Language Algol-60."
That was not an easy report to read! The language was a bit
cumbersome, but I didn't mind, I learned the basics of programming
anyway: variables, expressions, functions, input/output.
Then
a professor mentioned that there was a new programming language named
Pascal. There was a Pascal compiler on our mainframe so I decided to
learn it. I borrowed the book
on Pascal from the departmental library (there was only one book, and
only one copy, and I couldn't afford my own). After skimming it, I
decided that the only thing I really needed were the "railroad diagrams"
at the end of the book that summarized the language's syntax. I made
photocopies of those and returned the book to the library.
Aside:
Pascal really had only one new feature compared to Algol-60, pointers.
These baffled me for the longest time. Eventually I learned assembly
programming, which explained the memory model of a computer for the
first time. I realized that a pointer was just an address. Then I
finally understood them.
I guess this is how I
got interested in programming languages. I learned the other languages
of the day along the way: Fortran, Lisp, Basic, Cobol. With all this
knowledge of programming, I managed to get a plum part-time job at the
data center maintaining the mainframe's operating system. It was the
most coveted job among programmers. It gave me access to unlimited
computer time, the fastest terminals (still 80 x 24 though :-), and most
important, a stimulating environment where I got to learn from other
programmers. I also got access to a Unix system, learned C and shell
programming, and at some point we had an Apple II (mostly remembered for
hours of playing space invaders). I even got to implement a new (but
very crummy) programming language!
All this
time, programming was one of the most fun things in my life. I thought
of ideas for new programs to write all the time. But interestingly, I
wasn't very interested in using computers for practical stuff! Nor even
to solve mathematical puzzles (except that I invented a clever way of
programming Conway's Game of Life that came from my understanding of using logic gates to build a binary addition circuit).
What
I liked most though was write programs to make the life of programmers
better. One of my early creations was a text editor that was better
than the system's standard text editor (which wasn't very hard :-). I
also wrote an archive program that helped conserve disk space; it was so
popular and useful that the data center offered it to all its
customers. I liked sharing programs, and my own principles for sharing
were very similar to what later would become Open Source (except I
didn't care about licenses -- still don't :-).
As
a term project I wrote a static analyzer for Pascal programs with
another student. Looking back I think it was a horrible program, but our
professor thought it was brilliant and we both got an A+. That's where I
learned about parsers and such, and that you can do more with a parser
than write a compiler.
I combined pleasure with
a good cause when I helped out a small left-wing political party in
Holland automate their membership database. This was until then
maintained by hand as a collection of metal plates plates into which
letters were stamped using an antiquated machine not unlike a steam
hammer :-). In the end the project was not a great success, but my
contributions (including an emulation of Unix's venerable "ed"
editor program written in Cobol) piqued the attention of another
volunteer, whose day job was as computer science researcher at the
Mathematical Center. (Now CWI.)
This was Lambert Meertens. It so happened that he was designing his own programming language, named B (later ABC),
and when I graduated he offered me a job on his team of programmers who
were implementing an interpreter for the language (what we would now
call a virtual machine).
The rest I have written up earlier in my Python history blog.
Source:http://neopythonic.blogspot.com/2011/07/before-python.html
Source:http://neopythonic.blogspot.com/2011/07/before-python.html