Teaching programming – part 1: how I learned
Posted in Campfire Stories, The Art of Programming on May 14th, 2009A young person asked me recently: “Could you teach me how to write programs?”
Could I ever! I don’t know. Could I??
I’m old. I’m not so sure I’m a good example. The generations of my programming learning:
1. 1970′s — Poking around using BASIC on pre-PC microcomputers.
2. 1980′s — Writing a fair bit of software on my Timex ZX-18 using their BASIC.
3. 1980′s — Fortran 77 on PC and SunOS.
4. 1980′s — Writing a fair bit of software on PCs running DOS with Turbo Pascal.
5. late 1980′s — FTP, lots of ftp. Starting to use email. Writing Fortran apps on mini computers and using my PC as a VT-100 terminal with Kermit and a 1200 baud modem. Learned vi. Turbo C 1.0 (pre-ANSI standard).
6. 1990′s — Lots of Fortran 90 written under HP-UX and VMS. Starting to use C to interface with hardware.
7. 1990′s — CDROM based “Multimedia” projects. Silly aquarium games. Very painful under Windows 3.11.
8. 1990′s — WWW, the internet, HTML, cgi-bin scripts in Perl. Spending lots of time configuring web servers.
9. late 1990′s — The dot-com boom. All web, all the time. Microsoft ASP (classic: VBScript). Learned COM, ATL to enhance big MS technology web servers.
10. 2000′s — Big non-Microsoft web technologies. Linux, Java, Tomcat, other application servers.
11. 2000′s — Post dot-com: back to Microsoft with .NET! Love it. Back to client applications.
12. 2000′s — back to the web: ASP.NET. Love it.
13. 2000′s — set your way back machine: A huge project pulls me back to ATL/MFC/C++. Coding like it’s 1990 (Vista systems).
14. 2000′s — Computer game technology: classic C++, wicked algorithms, cool deep technology stacks like rendering pipelines, AI, terrain.
Looking back, what have I learned? A lot and especially that not all learning pain is gain.
I have growing respect for technologies that have evolved and stand the test of time. Looking down the list the Internet, client applications, and web-connected applications ebb and flow but feel like they will be around for awhile.
C++ is awesome. C#/.NET is way up there too. C# feels like C++ but someone has been in and tidied everything up. HTML has got to be one of the most ubiquitous formats on the planet.