Become a fan of Slashdot on Facebook

 



Forgot your password?
typodupeerror
×
Programming Technology

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?"
This discussion has been archived. No new comments can be posted.

A Dev Environment for the Returning Geek?

Comments Filter:
  • Plain and simple (Score:2, Interesting)

    by TheSkepticalOptimist ( 898384 ) on Tuesday December 20, 2005 @01:04PM (#14299493)
    For Windows development, Visual Studio is the only way to go, and MS now has a series of Express Editions that offer Free C++, Visual Basic, or C# development tools. Note that Express Editions do not allow you to sell or distribute your software, but as a hobbyist, they are great tools for getting back into software development without spending a dime.

    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)

    by gus goose ( 306978 ) on Tuesday December 20, 2005 @01:15PM (#14299591) Journal
    In something of the same spot myself. I have found great satisfaction programming PIC Microcontrollers. Recently I decided to move from assembler to C, and that is quite fun too. It's amazing what you can put together when you try.

    www.microchip.com
    www.piclist.com

    gus
  • Some ideas (Score:5, Interesting)

    by hedronist ( 233240 ) * on Tuesday December 20, 2005 @01:32PM (#14299723)
    You don't really say what type of problems you want to work on and that can make a big difference in what environment you choose. Kernel hacking leads in one direction, and DB-driven websites goes in a completey different direction.

    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)

    by Bluesman ( 104513 ) on Tuesday December 20, 2005 @01:39PM (#14299785) Homepage
    Python has a lot of modules that would really help you do what you want.

    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.

  • by andy753421 ( 850820 ) on Tuesday December 20, 2005 @02:45PM (#14300714) Homepage
    Personally I would like to know two languages really well. To me it seems like there's two types of programs that I would write, big programs and small programs. For the big ones I would want to use common mature language like C/C++ (or Java if you prefer) that way the program will run faster and pretty much everyone can run C executable or Java bytecode. Then for the smaller ones I would like to know some sort of 'scripting' language such as Perl/Python/Ruby/php/etc where I can quickly write things down and have not have to worry about the troubles of datatypes, compilations, and other such hairy problems I run into when writing in other languages. You may also want to consider what you will be doing most. For example php is pretty much designed for use on web pages. I don't how how true it but judging from programs I've seen python seems to be good for large projects if you still want to use a scripting language, and I don't think I've ever seen perl used for anything that included more than a few files. There's also portability to consider, C/C++ may be nice but it is still harder to make cross-platform than something like Java or any of the scripting languages. If you write code in Visual Studio you may run into problems using it on anything other than Windows (although there's Mono, most users don't have it installed). The same goes for Java if your uses are among the 'faithful' and refuse to use the sun java implementations. As for GUI toolkits most of them have bindings in whatever language you choose, and for choosing a toolkit it's really up to you. As far as I'm concerned they all do the same thing so it's just a matter of which programing style you like best. Again you may want to consider what your users will already have installed. For IDE's i think it mostly depends on what language your using. I prefer a text editor for a lot of things, however Eclipse is great for Java and there's some that tailor to the likes Qt and GTK such as Kdevelop and Glade, however I have never used any of them. (oh, and if you're really hardcore you could just skip out those overrated editors all together and just use '# cat - >')
  • by pthisis ( 27352 ) on Tuesday December 20, 2005 @02:58PM (#14300924) Homepage Journal
    Python + wxpython is a great choice. Python is a full-fledged language, not a scripting language (although it can be used for scripting). It scales well from rapid development/one-offs to large multi-site dev team projects (our current project is about 300,000 lines of code).

    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:
    • Syntax highlighting/indentationn
    • Code compilation/validation on the fly (syntax-error checking, so if I'm coding python and type "if a=1:" it'll know that I needed an == there and immediately highlight the syntax error)
      context-sensitive help (if I type "cmp(" then the status line shows the help text for the cmp function)
    • intellisense-style completions
    • class browsers (I have menus showing all the parent/child classes of the current class and all it's methods, or can jump to a top-level class listing)
    • code browsing (I can follow function/method calls down a stack and pop back where I came from, and get a cscope-style listing of all the places that call a particular function/class)
    • refactoring tools (I can easily rename classes/methods/etc throughout the project)
    • Source control integration (including side-by-side diffs between 2 versions of a file with similar portions elided and differences highlighted).
    • Outlining/folding (so I can go to a file, hit F6 to see only the class/method definitions, find what I'm looking for, and hit F6 to expand out to everything--it's a lot more than that, but that's the simplest use case if you haven't used folding before).


    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)

    by curious.corn ( 167387 ) on Tuesday December 20, 2005 @03:03PM (#14301001)
    You might be interested in the Eclipse RCP [eclipse.org] developing environment. It's Java based so it will run just about anywhere, it's heavily OO design patterned so there's quite a bit of API to chew but it has a nice GUI editor. I'd give it a bite...
  • Re:Plain and simple (Score:5, Interesting)

    by OmniVector ( 569062 ) <see my homepage> on Tuesday December 20, 2005 @03:47PM (#14301687) Homepage
    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 tell someone's never done modern development for Mac OS X. At all. First off, obj-c is a MUCH better OOP environment than C++. Check out my tutorial [otierney.net] for a whole host of good reasons why. Categories, posing, dynamic method forwarding, delegates instead of subclassing, no confusing static AND dynamic allocation, no multiple inheritance, NO TEMPLATES, amongst many other things that C++ just plain sucks because of. Also, CodeWarrior is a horrible (and expensive) dev environment compared to the free Xcode environment.
  • Re:Plain and simple (Score:2, Interesting)

    by nhstar ( 452291 ) on Tuesday December 20, 2005 @08:24PM (#14304883)
    I'd argue against the "no free" stuff for windows. I've been tinkering (sadly, not prolevel) with #develop for a while now. Since all of the .Net framework is available to any windows install, it's at least as up to the task as VS.Net is... and the plugin array makes it almost as flexible as using Eclipse. But .Net on windows right out of the... uh... installer. Plus, the guys who put it together thought plenty ahead and hooked their help system directly into MSDN for up-to-date info.

    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)

    by topham ( 32406 ) on Wednesday December 21, 2005 @12:31AM (#14306423) Homepage
    Never mind CodeWarrior is deprecated for Mac OS X development.

    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)

    by penguin-collective ( 932038 ) on Wednesday December 21, 2005 @12:34PM (#14309784)
    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 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:
    "I invented the term Object-Oriented, and I can tell you I did not have C++ in mind."

You knew the job was dangerous when you took it, Fred. -- Superchicken

Working...