How Can an Old-School Coder Regain His Chops?
DonLab writes "I was a proficient software engineer in the 1980s, writing hundreds of thousands of lines of ALGOL, FORTRAN, COBOL, and Pascal programs, as well as working in 370 and 8080 assembly language & pre-relational DBMS systems. My hands-on programming career ended when I became a freelance analyst and designer, ultimately retiring young in the early '90s. Now I'd like to reenter the field, but I'm finding that I know nothing about today's post-C languages, programming tools, and computing environments. I wouldn't know where to start learning C++, PHP, Java, HTML5, or PERL, much less how to choose one over the other for a particular application. Can I be the only pre-GUI software designer or hobbyist searching for a way to update his skills for Windows, iOS, or Android?"
Submitter - not trolling, but you should include C# in your list if you want to be relevant today.
Don't hate the players, hate the game.
I wouldn't discount languages like C just yet. They're still hugely important in the kernel world, for example.
As far as newer languages go, there are a lot of F/OSS projects that could use another hand. Have a look at the Bugzilla for various projects and grab the latest source from svn/git/mercurial/whatever. Your skills as a programmer should transfer over to a new language relatively easily, and you'll have done a good deed.
"Every vision is a joke until the first man accomplishes it; once realized, it becomes commonplace." -Robert H. Goddard
I have never read an introductory O'Reilly or "...for Dummies" book that was better than the multitude of online tutorials out there. Introductory books are, in my opinion, wastes of money.
No books necessary, just hit the net for more control over finding something that caters to your skill level. One dosen't have to go to Sourceforge to find snippets and application code.
Parent is definitively right.
This guy knows *COBOL* and he thinks for career reasons about new languages? As fas as i understood that COBOL coders are right now (or in a few years) worth their weight in gold; I hold a phd in physics, programmed in nearly all "post-c" languages, (and some non post-c languages) and i was thinking about learning COBOL to earn money.
I mean it could be that he got some offers by now.... (maybe posting to ./ was just a way of applying for a job?).
If you want to learn Objective-C, the iPhone Application Development course (Stanford) on iTunes U is extremely useful.
Hey, I'm 54, so I'm an older programmer.
One of the things that really started to happen in the 80's was the concept of event loops, and programming based on that. It's a big difference in how you do things, compared to what was done in the '70s and early '80s.
So, in addition to all those new-fangled pinko languages like Java, C++, C#, Perl, and all that other stuff, you've got to think event loop as well.
Personally, I'd find some simple projects to do that'll let you bit into both more modern styles, and languages. Get friendly with middle and high school math and science teachers, do some classroom demo programs for them. Lots of neat, small projects, a good way to warm up, and a chance to do something constructive at the same time.
Now, you kids get off the lawn.
You'll find getting back into the field, to program in high level languages with all of your previous experience outdated, to be very difficult. Companies will not want to pay you the salary your years of experience would warrant, and it would be like starting over.
Instead, the method back in that I've found for those of us who started in the "old days" is to go for embedded systems development. The embedded world uses 10+ year old technologies, so your experience with assembly language programming and writing software for systems with limited amounts of RAM and storage space is a big plus for embedded systems development. There are plenty of companies still creating software for processors that run at between 4 and 20 MHz with anywhere from 256 bytes of RAM on up to a handful of kilobytes of RAM. I've found this sort of development work is much more interesting, anyway, and people with old school knowledge are considered more valuable, rather than a dinosaur, for such work.
Depending on what platform your COBOL runs on, you can almost certainly find some way to wrap it in a Java stateless session bean. Turning that into web services is pretty easy these days -- most free IDEs have wizards that will do this for you for the free containers. If you're using IBM stack then WebSphere and Rational are a must.
Point being: Java and Java Enterprise Edition are also very useful here.
Finding God in a Dog
As a child of the personal computer revolution I too grew up with procedural programing sinclar basic, apple integer basic, Pascal and Fortran. although I've worked with Java, C+, Obj C Visualbasic and real basic I've allways felt a little uncomfortable because I never had any formal training in any of them. The Stanford CS classes on iTunes U have really helped me fill in the missing pieces. 80% was review for me but the last 20% helped make the first 80% make more sense. Don't be afraid to start right back at the beginning it will really help.
The first thing you should know about Windows programs (and most if not all GUI programming) is that the programs generally run in a loop (even if your programming language of choice hides this from you) and act upon receipt of "messages" from the OS. You have to program, among other things, what happens when you receive the message that says "the user pressed this button you've made" or "the timer you've set up has ticked" or "the user pressed the close window button", etc... Understanding this basic model will help you no matter which language you choose.