A Dev Environment for the Returning Geek? 156
InsurgentGeek asks: "I'm about 25 years into my career in technology. Over that time, I've done the standard progression from developer to architect to team leader to program leader to business unit leader. While I've stayed up to date on general technology trends (perhaps more than about 95% of my peer group) - I have started to really miss hands on coding - something I haven't done for almost 20 years. It's not for my job, and I don't plan to make any money at it - but I'd like to get back to coding on at least a recreational basis. Here's the rub: what are the right tools?"
"'Back in the day...' you had about 2-3 choices of languages and perhaps the same number of OS's. There were not frameworks, API's, development environments, etc. I'd like to pick a toolkit and learn it. My goals are pretty simple: I want to write applications that have a great look & feel that will primarily be pulling information from the web (think weather & news), play with that information and present it in interesting ways. I'd like those applications to be usable on the Linux and perhaps Mac OS X platforms. I'm not a complete non-techie. I use Linux at home, have set up all the toys like Squid and BIND - but this is just administration. I need to get back into the guts of the machine. If you were me where would you start? What language(s) would you want to become conversant in? What do I have to worry about beyond the choice of the language itself? What frameworks? What other tools?"
Plain and simple (Score:2, Interesting)
I have found NO free development tools for the Windows platform that are easy to use and as well thought out as the Visual Studio product line.
For Mac development, the free XCode tools are good, however I would look into CodeWarrior because ObjectiveC, in my opinion, is an antiquated and bastardized attempt at object orientated programming, CodeWarrior offers C++ access to OSX programming API's.
I can't suggest anything for Linux, except that CodeWarrior also makes a Linux IDE. I don't recommend developing software using cheap command line text editors or gcc compilers, unless you love being counter productive and frustrated.
PIC Microcontrollers (Score:2, Interesting)
www.microchip.com
www.piclist.com
gus
Some ideas (Score:5, Interesting)
Speaking as a GeezerGeek(tm), here are some of the technologies I have found that are something more than The Next Great Thing ver 31.4.
1. Python. It took me a while to get past the indentation-as-block-structure thing (I still think it was a mistake), but this is a language that tremendous expressive power. If I were still teaching, this is the language I would start my students with, knowing that they could go anywhere they want with it.
2. If you are doing any sort of web work, you will probably have to do a little (a lot?) PHP. Fortunately, v. 5 has fixed some of the nastier aspects of the language, although there appears to be no way to undo some truly horrible naming convention mistakes from its early days.
3. AJAX. It's worth a look if you want to stay within the browser's window. And that means you should get good Javascript/CSS/XML/HTML books.
4. Firefox-as-UI-platform. This is related to the above. I am just beginning to get into this and it looks very promising. Other people know far more than I do. The GreaseMonkey extension is great fun to play with.
5. If you are picking up a DBMS, the obvious choices are MySQL and Postgres. If I were just starting, I think I would go with Postgres, if only for OSS purity reasons. OTOH, I have had no problems with MySQL for the relatively low-level situations I have used it and it is generally more available as part of commercial hosting packages.
"Back in the day" I taught programming, so here are a few recommendations for your first few projects.
A. First, pick something fun and relatively simple. I have found that a great way to get into a new language/platform environment is to implement a simple game (eg. hangman, snake, mastermind). The rules are very straightforward, yet they will force you to at least dip your mental toe into logic flow, class structure, I/O and UI, file storage (for high scores), etc. Most of them can be implemented in a few hours and you get that immediate feedback of success. If you are feeling your oats, you might try things like using Python's generators as nanothreads for animation sprites. See the Lightweight Games Toolkit at http://lgt.berlios.de/ [berlios.de] for some ideas. (Obviously, this should *not* be for your first project!
B. Pick an area of application that you are already a domain expert in. This way you can focus on the "how", instead of the "what" or the "why".
C. Find a good OSS project and implement a few new features. For example, if you are interested in photography, you might grab Gallery 2 from gallery.menalto.com and try adding a feature to an existing layout module, or try creating a new layout, using an existing one as a template.
D. Find an interesting-but-broken OSS project and dive into the code. Maybe you can breathe new life into a moribund project.
Re:Plain and simple (Score:3, Interesting)
Perl and Java, also. I'd probably recommend them in that order.
They all have fairly comprehensive reference material and some good tutorials on the web.
My favorite development environment is still emacs with the vi key bindings, but IBM's Eclipse is also very good if you're doing Java, and you have a fast enough machine to run it.
In fact, trying Java out is much easier with Eclipse, as it fills in a lot of the code for you, and lets you know immediately when you're making a mistake. I've found it very helpful while learning Java, but later on the usefulness of that diminishes and I want my good text editor back.
Finally, I love C and gtk+ for unix apps. If you're interested in the "guts" of the machine, you really can't beat that combo, and it's very powerful.
Depends on what you're writing (Score:2, Interesting)
Re:Depends on what you want to do (Score:4, Interesting)
It's also very easy to write C extensions for Python if you ever run into a situation where you need to access something that's not available (unlikely) or squeeze out some more speed.
For gui building, wxglade is quite nice as a visual builder.
As far as a development environment, I strongly recommend going with an unbundled editor like vim (with the Cream bindings if you don't like vi modal editing and want keybindings like a normal windows app) or emacs. That way you can stick with it with every language you use, and it's easy to integrate it with other tools. They're both liable to be installed if you wind up logged in on foreign machines, and both have all the whizz-bang features that IDE users somehow think aren't available in real programmer's editors (probably because they associate "editor" with "Notepad"). They're free and widely supported.
People always harp on the unique features of emacs and vim, so maybe people forget that they do the standard stuff as well:
context-sensitive help (if I type "cmp(" then the status line shows the help text for the cmp function)
All of it in vim, though emacs is an equally reasonable choice. Just because they're old doesn't mean they don't have great features.
Eclipse RCP (Score:3, Interesting)
Re:Plain and simple (Score:5, Interesting)
Re:Plain and simple (Score:2, Interesting)
and yes, it's open source.
Will you like it? *shrugs* for a 5 (or less) minute download on my dsl line, it was worth trying out. Especially without restricting any distribution of your creations.
Re:Plain and simple (Score:3, Interesting)
With the move to Intel processors you're pretty much left with the XCode tools, a long with gcc, etc.
Not a bad thing in my mind. While I have not done much development with it, inspite of my intent every few months to give it a go I have found XCode to be a decent tool and Objective C to be very interesting.
When I had the time, years ago, I spent a lot of time trying to learn C++ and it made no sense. (since then they have created STL to solve my major issues with it.) It felt like everything was just an extension using pointers (not true I know, but thats what it felt like). Objective-C makes sense.
Even when I fight with the syntax, I generally realize it's me with the problem (too procedurally centric), and not the syntax of the language. It seems to me it's what C++ should have been.
For anyone else reading this:
While not mentioned by the original poster, but mentioned by a couple of people anyway, if you're into developing under Windows get the Visual Studio Express a look. I downloaded and installed Visual Studio Express C#,a long with the free SQL Server edition. I was able to very quickly put together a program which can add and created records and haven't even read the documentation yet.
(Actually the database application I am working on will be far more complicated, but what I am working for learning and testing with now is 3 tables to support a many to many relationship and was pleasantly surprised at how much the tools handled automatically. I expect I may hit a wall and have to drop most, or all of their automatic code generation.)
I'd do this project in ObjectiveC in XCode, but it's not for me when I'm done.
you must be kidding (Score:3, Interesting)
I don't actually like Objective-C or Xcode, but there is one thing where they are clearly superior to C++: Objective-C is far closer to what object oriented programming is about than C++. As Alan Kay wrote: