Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

A Dev Environment for the Returning Geek?

Cliff posted more than 8 years ago | from the welcome-back dept.

Programming 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?"

cancel ×
This is a preview of your comment

No Comment Title Entered

Anonymous Coward 1 minute ago

No Comment Entered


I am in a similar situation (3, Insightful)

marcus (1916) | more than 8 years ago | (#14299399)

And am currently enjoying Ruby.

Re:I am in a similar situation (2, Informative)

Tooky (15656) | more than 8 years ago | (#14299655)

Download a smalltalk

http://smalltalk.cincom.com/ [cincom.com] - VisualWorks is free for non-commercial use.

Re:I am in a similar situation (1)

Tooky (15656) | more than 8 years ago | (#14299680)

I also forgot to mention that VisualWorks has installers for Windows/MacOs/Linux amongst others, so you don't need to worry about the whole platform thing, just use it on your current system.

Indeed (0, Offtopic)

SilverspurG (844751) | more than 8 years ago | (#14299401)

Programming is like anything else. It's like exercise. It demands time.

If you lack the extra time to spend with it then you're better off picking up the newest and hottest environments like Java and Enlightenment. There will be more people starting around the same place that you are and will provide a group of knowledge to answer questions and exchange ideas.

If you have the extra time then pick up fundamentals. Use Debian. Install from a five year old release and upgrade it manually while focusing your attention on the parts of the OS which your desired application will interact with. Maybe you can already do this. Read their documentation. Learn how they work. Learn a fundamental language and learn how to use it for the toolkits which you want to use.

It's a tough task. Getting back into programming after 20 years of no hands-on work will seem like a chore at first. With enough time it can become a routine. With more time it can become a hobby. WIth more time it can become a desire. With more time it can become a pursuit. With the right social connections it can become a venture. Notice the significant dependence on time. Not an hour here and there but good 6 hour daily blocks of time. Don't expect to do much cooking.

I'm trying the same thing. I wrote a system installer in BASH that went through the normal stages of development and evolved for five years part time. Now I'm beginning to practice C. I'd like to rewrite my system installer in C. This will allow me to learn the APIs and protocols for system devices. The tough part has been that my employment has been in research science (chemistry) and highly computer unrelated. Shifting the brain to programming takes time away from actual programming.

Re:Indeed (1, Insightful)

Anonymous Coward | more than 8 years ago | (#14299511)

The only comments worth reading in this thread are from the low-ID 30 & 40-somethings in the slashdot crowd. "Install Debian"? The guy wants to program, not install a whole OS to do it.

I'd recommend playing with python and/or ruby. Works on almost everything and are a lot of fun.

Re:Indeed (0)

Anonymous Coward | more than 8 years ago | (#14300601)

holy craptastic mods on crack batman!

Re:Indeed (1)

Ignominious Cow Herd (540061) | more than 8 years ago | (#14302946)

If you lack the extra time to spend with it then you're better off picking up the newest and hottest environments like Java and Enlightenment.

Surely, you meant Eclipse, right?

Re:Indeed (1)

SilverspurG (844751) | more than 8 years ago | (#14305117)

No. I meant a GUI design framework. I'd much rather code an app to work well with Enlightenment over GNOME or KDE.

Get a Mac (5, Insightful)

DrTime (838124) | more than 8 years ago | (#14299434)

Get a Macintosh, they come with all the Developer Tools you need. XCode is an outstanding and powerful shell around the Gnu tools. The Mac OS X environment is feature rich with forward looking tools. The Macintosh world is not crowded like the PC world, so if you find a great idea, it might get noticed. At least take a look at it.

Re:Get a Mac (3, Insightful)

Bastian (66383) | more than 8 years ago | (#14300567)

So true. Also, clueful Mac users who might appreciate some crazy idea you got aren't afraid to download stuff they've never heard of before just to try it out, because there just isn't much spyware on a Mac. Same goes for Linux, of course.

Even if Windows shareware/freeware developers succeed in rising above the unholy din of the Windows software scene, they are going to have a lot harder time getting me to try their stuff because I get fsckin' paranoid when I'm sitting in front of a Windows computer.

Re:Get a Mac (0)

Anonymous Coward | more than 8 years ago | (#14301962)

I'm in the same boat as the poster.. but I did this. Got myself an iBook and the latest XCode. So far, I'm completely overwhelmed by the amount of documentation that exists for Cocoa. I have in mind the kind of app I'd like to code (I've been doing webwork for the last decade and am interested in GUIs again).. and it's suitably graphical.

Any tips on how to actually get one's head around all the material required to get over the hump would be nice. So far I've been wading through the XCODE Getting Started PDF, but it doesn't exactly have me coding yet.

Plain and simple (2, Interesting)

TheSkepticalOptimist (898384) | more than 8 years ago | (#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.

PARENT IS A TROLL (Re:Plain and simple) (-1, Troll)

dorkygeek (898295) | more than 8 years ago | (#14299533)

Sorry, but who modded this Interesting?? It's a TROLL in disguise, just have a look at the last sentence of his post!

Why? (2, Insightful)

Anonymous Brave Guy (457657) | more than 8 years ago | (#14299766)

Sorry, but since when is expressing an honest opinion a troll? I know a lot of people who would agree that relying on CLI voodoo really is needlessly inefficient for many programming tasks. Use the right tool for the job, or write the right tool first if it doesn't exist yet and then use it.

Sure, you can design dialog boxes by writing scripts in an editor, but why bother when you can use an interactive GUI to do it in 1/10th the time? Sure, you can write, debug and test your Perl CGI script using nothing but the command line tool and a live web server that's firewalled off the outside world, but why bother if you've got a test environment that's designed to simulate CGI requests from a web page and has testing tools to make that easy?

Personally, I don't think anything has yet beaten a sufficient powerful text editor for doing web work (HTML, CSS, that sort of thing). All the web design applications I've encountered are just too limiting and under-powered. For programming anything from a moderately long script to a full-scale application, though, I concur with the grandparent post: there are plenty of tools to make common programming tasks easier. Someone like the submitter will probably have plenty to learn at first, without trying to do it with one hand behind his back and spoiling the enjoyment by learning to write pages of boilerplate rather than using the right tool for the job.

Re:Why? (1, Insightful)

dorkygeek (898295) | more than 8 years ago | (#14300740)

No, he just stated that command line tools and gcc are crap, witjout even mentioning the slightest reason!

So, if I may ask, since when exactly is Emacs considered crap? Since when is gcc not up to the task?

Better have some answers before calling ME a troll!

Re:Why? (1)

Anonymous Brave Guy (457657) | more than 8 years ago | (#14301725)

So, if I may ask, since when exactly is Emacs considered crap?

That depends on whether you find entering text is always the most efficient way of writing all your code. For many jobs, it clearly isn't.

Since when is gcc not up to the task?

That depends on, amongst other things, how much you value the performance of your output code, and how much you need to use a widely portable compiler. For example, if you're writing for Wintel, the Visual Studio suite has blown away anything the GNU tools had to offer in terms of development environment, usefulness of debugging tools, quality of generated code, and various other rather important metrics. (This isn't to say it will necessarily continue to do so, nor that using GNU tools doesn't have advantages in other areas.)

Re:Why? (1)

dorkygeek (898295) | more than 8 years ago | (#14302121)

That depends on, amongst other things, how much you value the performance of your output code, and how much you need to use a widely portable compiler.

If you look at the original question of that guy, he says "I'd like those applications to be usable on the Linux and perhaps Mac OS X platforms." Looks to me as he does neither mentions Windows nor performance, but Unix and cross-architecture portability. Despite, TheSkepticalOptimist goes on to advertise MS stuff like it would be his last day.

For example, if you're writing for Wintel, the Visual Studio suite has blown away anything the GNU tools had to offer in terms of development environment, usefulness of debugging tools, quality of generated code, and various other rather important metrics.

Funny you mention that. AFAICT, Intel's compilers are still better than the MS ones.

Re:Why? (1)

Anonymous Brave Guy (457657) | more than 8 years ago | (#14304703)

If you look at the original question of that guy, he says "I'd like those applications to be usable on the Linux and perhaps Mac OS X platforms." Looks to me as he does neither mentions Windows nor performance, but Unix and cross-architecture portability.

Sure, and in other posts that's what I've addressed. In this subthread, however, the claim was that command line tools could be counter-productive and frustrating (not "crap", despite what you attributed to the OP). Your particular question was when gcc wasn't up to the job, and I gave you some examples where it isn't.

AFAICT, Intel's compilers are still better than the MS ones.

Yes, they produce better code, at least on Intel boxes. However, their development suite as a whole sucks; we recently trialled several profilers at work, and Intel's VTune stuff was so convoluted, hard to install and hard to get even plausible results out of that we rejected it by the end of the first day of evaluation.

Re:Why? (2)

SilverspurG (844751) | more than 8 years ago | (#14300760)

Sure, you can design dialog boxes by writing scripts in an editor, but why bother when you can use an interactive GUI to do it in 1/10th the time?
To gain thorough familiarity with the underlying principles of the system and assist the developers of the drag-and-drop programming interface in improving their product.

Programming a large application is as large and complicated a task as building a house. If you use a drag-and-drop point-and-click system it will be larger, there will be more cruft, there may be more logical problems in the code, some important features may be left out if they're not made readily available in the interface, and the programmer learns very little about the underlying system. Programming with a text editor will take forever but, if done properly, will be practically perfect. Assess the field and evaluate your goal properly before choosing. It's likely the correct decision will involve a combination of both techniques.

The GP's post was mostly good. Ascribing all text programming to a masochistic addiction to counter productivity and frustration is the troll. It demonstrates a complete lack of anything but the shallowest level of understanding of the art form.

Re:Why? (1)

Anonymous Brave Guy (457657) | more than 8 years ago | (#14301614)

I suspect we agree on much more than we disagree on here, but perhaps I'm not making my point clearly enough.

I'm not saying that people should program without knowing what the underlying model is, or what the code generated by their whizzy GUI designer does. On the contrary, I think these are valuable things that will serve any programmer well eventually. What I am saying is that just because it's helpful in the long run to understand these things, you don't have to learn all the little details first. Remember we're talking about someone getting back into programming after a pretty long gap here. There will be plenty of time to understand the deep issues later, but first you have to have some context and get into the subject a little, at least IMHO and IME as someone who's taught several skills at several levels to different kinds of people.

Also, you don't have to do everything the hard way all the time in order to understand it. Would you calculate the ratio of two large integers by long division? I wouldn't, I'd use a calculator of some sort. Does that mean I don't understand long division, or that I couldn't do it if I had to? No. It just means that I find it more productive and less error-prone to get a machine to do it for me.

Finally, on the issue of CLIs vs. GUIs, I think your implicit assumptions are a little unfair. In neither of the examples I gave will a half-decent GUI generator produce worse code than hand-coded, or obscure the real meaning behind pages of macro-driven baloney. Programming with a text editor that helps correct mistakes on-the-fly will make you a lot nearer to practically perfect than programming with a text editor that doesn't, and if it comes with more natural, more powerful tools for generating some of the code to boot, it will do it much faster, too. Do you really think it's still necessary to hand-code a makefile in today's programming world? I can't remember the last time I needed to do it, or even to worry about it, other than when porting to inferior development platforms that don't have tools to do it all for me with a couple of quick instructions. (Typically, one of my first actions on such platforms is to port/write suitable tools that do do this.)

At the end of the day, I think programming is difficult enough with good tools and good languages. One developer's world just isn't big enough to fit in all the cruft as well, and life's too short to waste it on inefficient tools just because. Learning anything more fundamental/lower level is usually useful only as a route to greater understanding, and even then it's only as useful as the greater understanding it brings.

Re:PARENT IS A TROLL (Re:Plain and simple) (0, Flamebait)

Doc Squidly (720087) | more than 8 years ago | (#14299872)

It seemed like he was just expressing his opinion and stating what his experiences were.

A troll would have been: dood, 0p3n$0urc3 7001$ $uck! w!nd0w$ d3v310pm3n7 ru13$! W00t!

Just because someone says something that you don't like doesn't make them a troll [wikipedia.org].

Re:PARENT IS A TROLL (Re:Plain and simple) (1)

dorkygeek (898295) | more than 8 years ago | (#14302240)

If you read the complete Wikipedia article you linked to you will realise that trolling does not always consist of typing unproven accusations in 133t sp34k.

If you reread my post above, you will clearly see that I called him a troll in disguise, i.e. a non-obvious troll.

Re:PARENT IS A TROLL (Re:Plain and simple) (1)

Doc Squidly (720087) | more than 8 years ago | (#14302545)

Yes, I did read the article (which doesn't define someone who simply states their opinion as a troll) and I don't think he was trying to a troll in disguise. I'm sure there is something (software/hardware) that you've had a bad time using and would recommend other to avoid. Would that make you a troll?

And, If you reread my post above, you could tell that the l33t was, in part, humor and not meant to imply that tolls only used l33t sp34k but to illustrate that to be a troll it would have to have been an inflammatory statement, meant to piss-off other people.

Re:Plain and simple (1)

grub (11606) | more than 8 years ago | (#14299546)

There are oodles of nice text editors for *nix. I use nedit all the time, it's relatively small, has customizable context highlighting (for example, I created a template for working with Cisco PIX configurations).

The guy just wants to get back into programming. Suggesting he install a new OS or buy stuff off the hop is silly.

Re:Plain and simple (2, Insightful)

voxel (70407) | more than 8 years ago | (#14299560)

Funny, I was thinking ObjC is nice and C++ "is an antiquated and bastardized attempt at object orientated programming".

Re:Plain and simple (1)

X (1235) | more than 8 years ago | (#14300901)

Funny, I was thinking ObjC is nice and C++ "is an antiquated and bastardized attempt at object orientated programming".

That's about as accurate and insightful as his comments on Objective-C. ;-) +1 Insightful? Please!

Re:Plain and simple (5, Informative)

misfit13b (572861) | more than 8 years ago | (#14299569)

Note that Express Editions do not allow you to sell or distribute your software...

That's not what I'm reading in the FAQ [microsoft.com], question 4.

Can I use Express Editions for commercial use?

Yes, there are no licensing restrictions for applications built using the Express Editions.

Re:Plain and simple (2, Interesting)

Bluesman (104513) | more than 8 years ago | (#14299785)

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.

Re:Plain and simple (2, Insightful)

GiMP (10923) | more than 8 years ago | (#14299675)

The vi editor is an essential tool, imho. This is a "cheap command line text editor" as you call it. Personally, I simply can't imagine working without it.

However, you're right in the idea that IDEs *do* offer something that the commandline doesn't. This is why, if I am to use an IDE, I use Eclipse with the ViPlugin.

Codewarrior is dead (2, Insightful)

wandazulu (265281) | more than 8 years ago | (#14300241)

Metrowerks (sorry, Freescale) already announced that there will be no more OS X version of Codewarrior (nor Windows...they're going for the embedded market now).

Dunno about their Linux IDE, but I wouldn't be surprised if that gets shut down too.

Re:Plain and simple (4, Informative)

cursion (257184) | more than 8 years ago | (#14300248)

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.

As nice as it is, you might want to avoid CodeWarrior on Mac - arent they killing this product with the move to Intel?

XCode would be the way to go on a Mac - it handles different languages.

Re:Plain and simple (4, Interesting)

OmniVector (569062) | more than 8 years ago | (#14301687)

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 (1)

Spy der Mann (805235) | more than 8 years ago | (#14304634)

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.

What about Codeblocks [codeblocks.org]? It's still in beta, but IMHO it's much better than Dev-C++, and it's GPL.

Re:Plain and simple (2, Interesting)

nhstar (452291) | more than 8 years ago | (#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.

Just great!! (2, Funny)

TheMegalomaniac (910761) | more than 8 years ago | (#14299494)

Like we don't have enough competition from outsourcing ... now management's starting to get into it ..just great .. I'll trade you my programming cubby hole for the business unit leader oak desk ..

Cross-platform UIs (1)

dorkygeek (898295) | more than 8 years ago | (#14299501)

If you are interested in cross-platform UIs, you might have a look at XUL [mozilla.org] and XULRunner [mozilla.org]. You can drive them using at least C/C++, Java, Python, Ruby or Perl.

Re:Cross-platform UIs (1)

Randolpho (628485) | more than 8 years ago | (#14302101)

XUL is tied too closely to HTML/CSS. Go XAML instead! :D

Re:Cross-platform UIs (1)

dorkygeek (898295) | more than 8 years ago | (#14302310)

Wow, could you please explain me how XUL is tied to HTML? And second, can you tell me how XAML is cross-platform?? XAML is a proprietary MS technology, and they showed no intent to make it available for other platforms.

Re:Cross-platform UIs (0)

Anonymous Coward | more than 8 years ago | (#14304589)

Or take a look at Banteng [bantengproject.org] a visual javascript engine for Window, Linux, and Mac OS X that uses SWT as the widget set and doesn't depend on Java.

A no-brainer (0)

Anonymous Coward | more than 8 years ago | (#14299505)

You want Qt, either in C++ or through bindings to something else. That wouldn't be the answer for everyone, but it's precisely what you're looking for.

I'd say... Java (2, Insightful)

FooAtWFU (699187) | more than 8 years ago | (#14299536)

Look into Java. Really. It'll run on *nix, Mac and Doze, and a good toolkit framework like SWT is plenty shiny. Yes, you'll suffer from slightly lengthy load times and memory usage and all that stuff. But there are plenty of Java IDEs, especially Eclipse and various Eclipse-based toys.

Other than Java, most of the really cross-platform *nix/Doze/Mac stuff I've really seen has been GTK-based: X-Chat, Gaim, and such. This would be mostly C/C++ work, but I'm not particularly up-to-date on compiling this sort of stuff for Windows. The other thing to consider is whether you can stuff everything into a web-based application. You can do a lot these days, especially with the JavaScript DOM- look at Gmail, Google Maps, and such. This is nearly the ultimate cross-platform solution, but might be tricky to pick up if you're not familiar with HTML and CSS and JavaScript at least a little already. It also suffers from the usual limitations associated with web apps. You might look into Flash for applications as well if you're going for pure shininess- though it generally has similar limitations and all the drawbacks associated with Flash itself, especially with the usual Flash environment costing an arm and a leg...

Re:I'd say... Java (-1, Troll)

mtigges (24764) | more than 8 years ago | (#14299731)

Java sucks big ass sweaty donkey balls. I've finally been forced to use it when we started competing for a big military contract, and I can unequivocally say, shedding all preconceived biases aside that I was right. Java is slow, has idiotic limitations, the garbage collection is a PITA, ... If all you want to do is some simple little gui's or whatever, fine. You want to do any real work, stay away, far away.

Re:I'd say... Java (1)

MaggieL (10193) | more than 8 years ago | (#14299865)

Java sucks big ass sweaty donkey balls. I've finally been forced to use it...

Which is what we usually hear from people who must be forced to use it. Use of diction like "shedding all preconcieved biases aside" is somewhat indicative... :-)

Re:I'd say... Java (1)

MaggieL (10193) | more than 8 years ago | (#14299745)

Sad to hear an obvious Browncoat say SWT is "shiny".

It is no such thing.

SWT is a non-solution to a non-problem. If you can't figure out how to use Swing properly, you won't be any better off with SWT, which a non-platform-portable portation of an old Smalltalk API.

Eclipse is almost mostly harmless if you're only coding Java as a hobby. It is rather resource-intensive. But if your involvement is that casual, consider jEdit [jedit.org]: small, lightweight, very functional, with plug-ins available for most common tasks. And free.

On a happier note, the Serenity DVD came out today. Talk about shiny....;-)

Re:I'd say... Java (3, Insightful)

phill7 (927623) | more than 8 years ago | (#14300747)

I agree. I'm a C++ programmer and learned very fast to code in the Java language. Compared to the aging and incomplete C++ standard libraries, I found the Java standard libraries very complete and well integrated, which allowed me to devellop any kind of GUI and communication applications rather fast and without having to constantly seek for some extra libraries.

I also loved to use the great developper free tools available for that language, mainly NetBeans and Eclipse. Their code auto-complete and integrated help system features helped me to learn way faster the language and its available tools, and the Swing interface builder of NetBeans is really improving the speed of development of GUI interfaces (I didn't experiment Eclipse interface builder yet), once mastered of course, wich might require some extra time at the beginning. And all this for free!!!

Eclipse seems to become the standard, but NetBeans is really nice and does worth some attention too.

Re:I'd say... Java (1)

jZnat (793348) | more than 8 years ago | (#14303074)

Don't forget about the enforcement of thread-safety and Unicode strings. Quite useful if you ask me.

Re:I'd say... Java (0)

Anonymous Coward | more than 8 years ago | (#14303526)

Yup, Java.

The darkside is that it's more formal than a scripting language like Ruby or Python.

The brightside is that it pretty much Just Works.

Get the JDK from Sun, and NetBeans, and you have pretty much Everything(tm), from Swing to Webapps to SmartPhones.

NetBeans is painless to setup, and you'll be coding in a heart beat.

This is important simply because Java has evolved far beyond being a mere language, but in to it's own little ecosystem. It is easy to be OVERWHELMED by the options in Java, all of the articles on "Doing the right thing, the right way, using xyz framework", and all of that. It can be bewildering to choose when you're just starting.

But NetBeans has everything you need to code with as well as everything you need to run server based apps, and it comes all snug as a bug in a rug type install. Click "Next" enough times and it's all there without having to understand it all.

This lets you start (re)learning quickly. No need to set up Ant, Tomcat, Eclipse Plugins, shared libraries, classpaths, etc. You can focus just on Java and learn the rest as it inevitably rears its ugly head. Certainly you'll want to understand all of this long term, but it's a drag when you HAVE to just get short term results. Here you don't have to.

Visual Studio gives a similar "out of box" experience, but you can't do crossplatform using it.

Re:I'd say... Java (1)

Monkelectric (546685) | more than 8 years ago | (#14304400)

I like the structure, uniformity, and well thought out nature of JAVA but I find the language on the whole to be unexpressive. I think the ideal language would be something with the expressiveness of Python but the well laid out standard library and interfaces of Java. (yes i'm aware of jython)

Depends on what you want to do (4, Informative)

joib (70841) | more than 8 years ago | (#14299548)

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.

In that case I'd recommend something like python [python.org] combined with some gui toolkit such as wxpython [wxpython.org] or pygtk [pygtk.org].

...into the guts of the machine

Since you're on some unix-like system, you could do worse than plain C and a few books (C:ARM5 by Harbison & Steel and Advanced Programming in the Unix environment by Stevens spring to mind). Some asm knowledge might be useful too.

As for tools, frameworks etc. there is of course an unending list of those. For an IDE, a like emacs code browser [sourceforge.net].

Aren't those contradictory? (1)

SanityInAnarchy (655584) | more than 8 years ago | (#14299769)

Look at the difference between scripting languages (perl/python/ruby) and straight C.

If you want to force yourself into the guts of the system, do some kernel hacking, do a Gentoo install from scratch (which doesn't have an install program; you must learn your shell and your rescue utilities...)

Learn things like Assembly, learn a bit about how compilers work so that you know what code is efficient and why.

The tools I've learned and have served me well are probably the same ones you used 20 years ago: vim and gcc. Replace "gcc" with any other commandline compiler/interpreter.

But then, if you want something that has a great look & feel, that pulls information from the web and plays with it, you don't want any of that. You could even do something in Javascript to do that; my personal preference would be perl... But depending on how "pretty" you want this, you may require a completely different set of tools than "vim, Firefox, and Javascript" or "vim and perl" or "vim and python". You'll probably need something more like Eclipse, or some other cross-platform IDE, something that lets you lay things out visually, which does most of the grunt work for you...

You'll probably also need something I really, really need to learn by now -- a debugger.

Re:Depends on what you want to do (3, Interesting)

pthisis (27352) | more than 8 years ago | (#14300924)

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.

Delphi (2, Informative)

SAN1701 (537455) | more than 8 years ago | (#14299570)

Go to Borland download page [borland.com] and get the free Delphi Personal. I work with many languages (C#, Objective-C, 4D, sometimes Java), but Delphi is the most productive and fun to use, by a wide margin. As a plus, you can generate apps for both win32 and the .NET framework, with the same language.

Have fun in your return to coding!

Re:Delphi (1)

MagicM (85041) | more than 8 years ago | (#14303757)

You can't actually download Delphi Personal from that page. It has "Keys Only (If you have a CD)" and states: "Please note that Delphi 2005 Personal is only distributed through select publications, and is not available for download."

Anyone know where to get Delphi Personal (legitimately)?

Snag yourself a copy of Eclipse and Tomcat.... (1, Informative)

(H)elix1 (231155) | more than 8 years ago | (#14299580)

Its primary focus is Java, but you can use it for multiple languages. If you were to spend time with an IDE (and some would say that in itself is evil) Eclipse is the one I would pick.

http://eclipse.org/downloads/ [eclipse.org]

Going further, I'd probably say you want to putter around with web applications. (Tons of people out there doing PHP, etc, but I would stay on the Java side of the fence) Building web apps, you can start with the spaghetti pages filled with scripts, start encapsulating code, pick up on a MVC framework, DB access, or deployment frameworks. I'd shy away from doing client applications. Again, from the Java camp, I'd snag a copy of Tomcat for my local playground. Anything you do inside the JSP/Servlet container is more or less applicable to BEA or IBM's application server. Nice debugging tools that let Eclipse and Tomcat play together.

http://tomcat.apache.org/ [apache.org]

Re:Snag yourself a copy of Eclipse and Tomcat.... (1)

slamb (119285) | more than 8 years ago | (#14299886)

Going further, I'd probably say you want to putter around with web applications

I'd say so, too.

(Tons of people out there doing PHP, etc, but I would stay on the Java side of the fence)

Dude, are you trying to crush his spirit? PHP has a poor community and lots of sloppy code. But Java's not great, either - it has a lot of massively overengineered frameworks that require a lot of "XML push-ups". It's not a bad language, but I haven't seen a combination of it and any web framework that I enjoy using.

I'd recommend Python (a refreshingly clean language) with Django [djangoproject.com] or Ruby-on-Rails [rubyonrails.org]. Both very trendy, but more importantly, fun to code in.

I'd also steer away from Eclipse unless you're using Java. As the parent said, there is some support for other languages, but they haven't gotten the same attention, and more dynamic languages are harder to do tricky IDE things with anyway. Eclipse makes a mediocre text editor; they don't even have a hotkey for joining two adjacent lines together. ('J' in vim.) What makes it great is what it can do with its understanding of your code. For example, hitting F3 (show definition) while the cursor's on "foo.toString()" will examine the type of "foo" to decide which of the many "toString()" definitions to open up. That's impossible to do generally in Python due to its duck typing.

Re:Snag yourself a copy of Eclipse and Tomcat.... (0)

Anonymous Coward | more than 8 years ago | (#14304409)

Eclipse makes a mediocre text editor; they don't even have a hotkey for joining two adjacent lines together. ('J' in vim.)

How is pressing "end" "delete" that much more difficult than a single keystroke? The keys are right next to each other, and if you have fat fingers you can probably get them both in a single motion.

Python is a good place to start (3, Insightful)

Dan Ost (415913) | more than 8 years ago | (#14299583)

Take a look at learning python. It's easy to learn, fast to develop in, and remarkably flexible and powerful. It comes with it's own IDE (idle), but there are lots of IDE's that support it out there (I use VIM with color coding since most IDE's give me the creeps).

Give yourself half an hour and walk through the tutorial at www.python.org.

I still do most of my work in C/C++, but Python is my language of choice for new projects that don't already have lots of legacy code.

PIC Microcontrollers (1, Interesting)

gus goose (306978) | more than 8 years ago | (#14299591)

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.



Re:PIC Microcontrollers (1)

tigersha (151319) | more than 8 years ago | (#14302506)

Can you recommend a simple starter board? I would like to play a bit with hardware and such and I programmed ASM a lot on the 6502 (Apple II, yeaaaaars ago) and a bit od x86. So what would be a goof beginners board?

Re:PIC Microcontrollers (1)

gus goose (306978) | more than 8 years ago | (#14304894)

Well, I am still mostly a beginner myself.

What I have:
"breadboard" for playing with circuits.
I found DIY Kit 128 at a local electronics store. The website is at http://www.kitsrus.com/upuc.html [kitsrus.com]
The Kit128 is undergoing some support problems right now in that the primary software developer died, and there is a new crowd taking over. It still works really well, but the newer chips will be a few weeks away from being supported. See discussions at: http://www.websitetoolbox.com/tool/post/diykit/vpo st?id=760548&trail=30 [websitetoolbox.com]

If I were starting over I would consider one of the EasyPROG, ICD2, Wisp628, or the KIT128/149/150/182 and I believe the 185 (in no particular order). It looks like the Kit128 and it's siblings still have a lot of life in them yet. There are other programmers, and everyone has a different opinion as to whether you should build your first programmer, or buy it. I got the 128 as a kit, and was happy.

After that, everything you need is available for free from Microchip itself. The IDE is good, ASM is fun, there is even a free "student edition" C Compiler, and you can get free samples of the actual chips themselves.

Be sure to visit the microchip forums, piclist.com, and http://www.voti.nl/pic/index.html [www.voti.nl]

enjoy. I do.


Python is quite neat (1)

chroot_james (833654) | more than 8 years ago | (#14299611)

It's not a new language, but I picked it up over the weekend and really like it. It can make all the annoying stuff trivially easy and it never feels like a hack. Worth a shot anyway and the tutorial won't take very long to go through to see if you like it. I also use emacs for editing. In terms of IDE's, I think Eclipse is about as good an IDE as I've ever seen, but I do go back and forth between Eclipse and Emacs.

Simple (0)

Anonymous Coward | more than 8 years ago | (#14299618)

If you still have your balls and haven't turned sissy, then the only choice is vi in an xterm. If you've grown soft over the years and need your Mommy^W IDE then I would recommend going back to Windoze.

Re:Simple (3, Insightful)

MaggieL (10193) | more than 8 years ago | (#14299933)

If you still have your balls and haven't turned sissy, then the only choice is vi in an xterm...

I'm sure the ultimate authority on cojones is to be found posting as a AC on Slashdot. :-)

There's just so many out there who seem to be using balls for what brains are meant to do...

Free tools and resources Amazon, Google, Windows (1)

microTodd (240390) | more than 8 years ago | (#14299621)

Check out the Coding4Fun site. You can get free downloads of lightweight versions of many of MS's development tools, plus lots of ideas, resources, message boards, etc.

http://msdn.microsoft.com/coding4fun/ [microsoft.com]

Me personally, I like playing with things like Amazon.com's API or Google's various tool APIs and building my own hacks.

Amazon's AWS/Alexa [amazon.com]

Google Desktop API [google.com]

Processing (1)

Laplace (143876) | more than 8 years ago | (#14299642)

Go out and get yourself a copy of Processing [processing.org]. It's an easy to use subset of Java that includes a simple IDE and one button application and applet export. It's very simple to learn, but can also use any Java code that you might want to write to extend it. Java in general is a bad language for casual hacking because it takes so much effort to figure out what's happening with Java's libraries. Processing takes a lot of that complication away and lets you focus on writing code that makes pretty pictures.

Make Useful Stuff (0)

Anonymous Coward | more than 8 years ago | (#14299713)

I recommend using vi or emacs (I use both), gcc, and C with C++ added only when it makes you write less code.

For your web downloading needs, use the curl library.

For you interface, it greatly depends. You can pick something like gtk or wxWindows that is available on your desired platforms, but please realize that if you are a picky "interface geek" you will never be satisfied. Most projects that fail don't fail because they lack an interface, they fail because people spent all their time piddling around with the interface and never wrote the code. So, I advise that for starters you use the web as your interface, and use Thomas Boutelle's cgic library to interface with your code.

This will give you a development environment that can produce code for almost any platform out there -- the windows smartphone cell phones are the only ones that come to mind that you couldn't, I thing you need to buy Visual Studio .NET just to get the right header files for that.

Some ideas (4, Interesting)

hedronist (233240) | more than 8 years ago | (#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:Some ideas (1)

OmniVector (569062) | more than 8 years ago | (#14301603)

I'd agree with most of the things he said, except substitute ruby for python. It's all the great things about that language without the forced indentation, and then some. Ruby on rails is all the rage these days and there's a good reason.

Re:Some ideas (2, Informative)

teknico (217206) | more than 8 years ago | (#14303710)

> 1. Python. It took me a while to get past the indentation-as-block-structure
> thing (I still think it was a mistake)

Your comment got to 5, so somebody's got to say it. Significative indentation is nothing less than a stroke of genius. You indent your code anyway, right? So why is everybody forced to keep track of *two* kinds of block delimiters at the same time? Get rid of the stinkin' parentheses, and be done with it!

The rest of #1 is spot on, however.

> 2. If you are doing any sort of web work, you will probably have to do a
> little (a lot?) PHP.

Why on earth should he *have* to use such an inferior language? Python has lots of fine tools for web work. I advise using Twisted (http://twistedmatrix.com/ [twistedmatrix.com]). Its asynchronous event-based concurrency model may look peculiar at first, but being able to avoid the evil preemptive multithreading is priceless. And there's *lots* of Internet protocols in there for the taking!

> 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.

Javascript can get messy: AJAX needs all the hiding it can get. Nevow (http://divmod.org/trac/wiki/DivmodNevow [divmod.org]) has great support for it in the Athena package, based on Mochikit. See the other Divmod tools, there's great stuff in there.

> 5. If you are picking up a DBMS, the obvious choices are MySQL and Postgres.

Do yourself a favor and use PostgreSQL, or SQLite. MySQL has a dubios history, and is often used together with PHP, which is similarly quirky.

It bears repeating: you wanna have fun, and at the same time learn a powerful language? Use Python, there's nothing quite like it around. I've been working with it for six years now, and it's been fun almost every day. :-)

Mono is cool as well (1)

MrRobahtsu (8620) | more than 8 years ago | (#14299819)

If I were to get back into GUI programming, I think I would go with Mono and gtk#. And Emacs. But some people actually like monodevelop, eclipse, etc.

Ruby, Python, Perl, Cocoa (1)

ZZamboni (30487) | more than 8 years ago | (#14299822)

Ruby on Rails looks very nice for web application development (and they just released 1.0, with educational videos and everything), and Ruby itself looks like an interesting language by itself (I have not programmed in it).

I'm a long-time Perl hacker, and it's great for doing "fun" programming, since it lets you do things the way you want it, without imposing many rules. Lately I've been learning Python, and it's also very nice - much more structured, and with an incredibly complete standard library.

You mention you want cross-platform, but if you have a Mac, do take a look at Cocoa development. It's an incredibly nice environment in which to develop, and the tools are superb.

Enough Cocoa praises (1)

hsoft (742011) | more than 8 years ago | (#14304308)

Arg, I can't read these Cocoa praises anymore. When I bought my mac mini a couple of months ago, I couldn't wait to finally try to develop on that famous Cocoa platform. But it is far from perfect. There are quite obscure hacks in it. Have you ever tried to do Drag and Drop with an NSBrowser? If you want to do so, you have to make a big, ugly workaround because NSBrowser eats the mouseDragged: event. You have to manually determine if a mouseDragged event occurs in mouseDown. This is really ugly.

That is the worse example I have, but there are a couple of others like this. BTW, do anyone know how to show a particular page of a help file? NSApplication has showHelp: (which just open the help file at the main page), but nothing else. After googling a bit, I think that the ONLY way to show a specific page in a help file is to use the Carbon API. Isn't that ugly enough for you?

Cocoa is nice, but not THAT nice. So as long as you don't stray from that little path Apple gives you, you shouldn't have problems with Cocoa, but as soon as you want to do something just a little special, BAM, you have to make some pretty ugly hacks.

Join an Open Source project (1)

hubertf (124995) | more than 8 years ago | (#14299912)

The problem sounds vaguely familiar - often I want to try new things (programming languages, tools, ...), but lack the right project to start going.

Maybe have a look at some open source projects (http://www.freshmeat.net/ [freshmeat.net] http://www.advogato.org/ [advogato.org] etc. have some lists), look at the code and read it, read the mailing lists to get into the development process, start making changes for things, try getting review of them, submit code and maybe also documentation (actually, documenting things that you find undocumented and that you understand may be a good first step before going to coding), etc.

For some ideas from an operating systems project, see:

http://www.netbsd.org/contrib/projects.html [netbsd.org]
http://www.netbsd.org/Gnats/ [netbsd.org]

  - Hubert

Take a look at the O'Reilly book (2, Informative)

Matt_Doar (866118) | more than 8 years ago | (#14299947)

Practical Development Environments http://www.oreilly.com/catalog/practicalde [oreilly.com]. This covers all manner of tools: version control, build tools, testing environments, bug tracking, documentation and release. Each chapter talks about general ideas, and then looks at specific tools (some open, some closed).


(Disclaimer: I wrote it)

PyObj-C or GNUStep (1)

JPyObjC Dude (772176) | more than 8 years ago | (#14300003)

OSX is the best place to hack these days because they support full array of cross language development. Objective-C has alot of promise becuase of its ability to leverage C and C++ libraries very easily. It also bridges well to Ruby and Python.

By using Python and/or Ruby as your prototype layer, you can migrate stabalised code to Objective-C and even further optimize locked down frameworks to C or C++. All within the same application.

Cross-Lanugage applications is where the future of large application development is.


Have you considered web based? (1)

kbahey (102895) | more than 8 years ago | (#14300201)

Instead of developing stuff for the desktop, where you have to chose if it runs on Windows, Mac OS/X or Linux, why not tinker with something web based?

Start with LAMP (Linux Apache MySQL PHP) because it is available everywhere on virtually all hosts, or go a little bit further with a framework such as Drupal [drupal.org].

If you are a bit more adventurous and do not care about hosting availability, consider Ruby on Rails.

A Coder? (1)

ratboy666 (104074) | more than 8 years ago | (#14300203)

So you "coded" for 5 years, and then went "techie-upstream" for 20...

In a nutshell, you need to code for another 10 years. It takes around 15 years to build reasonable proficiency and skill.

Back to the "salt mines" for you.

1 - 20 year ago, C just started gaining commercial acceptance. Work on your C skills for a couple for years. Study old Unix source. If you can look at this code, and tell what is wrong, you are well on your way (and, yes, I know it is K&R):
f(c) char c; { char *s = f2(s); }

2 - Learn Scheme. Make use of the online MIT resources. Maybe move to Common Lisp.

3 - Begin study of ANOTHER of the current crop of interpretive or "immediate" programming systems - Perl, Python, Ruby. Don't let the Scheme go, though.

4 - Tackle Smalltalk - its one of the (or the most) productive systems out there. Squeak would do.

5 - UML, XML, and the current crop of buzz.

This would give you a fair grounding. Time? 2 or 3 years C, 3 years Smalltalk, 2 years Scheme. That would get you "up to speed" as a proficient programmer in about 8 years.


um... (1)

Run4yourlives (716310) | more than 8 years ago | (#14301982)

but I'd like to get back to coding on at least a recreational basis.

Seriously, 15 years? Give us a break you pretentious goof. The guy/gal just wants to get a little fun out of coding, not become a hermit.

We're not all a bunch of losers without any friends.

Re:A Coder? (0, Flamebait)

tengwar (600847) | more than 8 years ago | (#14304414)

Twaddle. Perhaps it took you 15 years to become competent, but for most people if they get there at all, they do in a few years. Personally I think you're just being a pretentious plonker.

Tremendous progress in development tools (4, Funny)

Raskolnk (26414) | more than 8 years ago | (#14300286)

There have been major developments in programming environments over the years. The most significant of these are as follows: vi has been improved, emacs has syntax highlighting, and the Bourne shell has been born again.

A lot of people went on some tangent about these IDE thingies. Don't worry about that, it proved to be totally useless in the end.

Widget Engines? (2, Informative)

slthytove (771782) | more than 8 years ago | (#14300608)

Although these haven't really taken off on Linux yet, there are several "widget engines" (for lack of a better, encapsulating term) that have become quite popular over the past couple years. You mentioned a desire to do small, web-fetching things - that's what many Widgets end up being. On top of that, the logic is usually handled with readable scripting languages, there's usually no compilation required, and it's very easy to get nice-looking graphics up alongside the code.

I've recently started doing most of my personal development in the Yahoo! Widget Engine (formerly known as Konfabulator), which is available on both Windows and Mac. Here are a few of the Widget environments that I'm aware of...

  • Yahoo! Widget Engine [yahoo.com] (Win + Mac) - JavaScript-based logic
  • SuperKaramba [sourceforge.net] (Linux KDE) - Python-based
  • gDesklets [gdesklets.org] (Linux Gnome) - Python-based
  • Kapsules [kwidgets.com] (Win) - Any Windows scripting language-based, including JScript, VBScript, JScript.NET, VB.NET, Perl, PHP, Python and Ruby
  • Dashboard [apple.com] (Mac) - HTML/JavaScript-based

IDE (1)

SavvyPlayer (774432) | more than 8 years ago | (#14300688)

If you plan to focus on c/c++ development, using either the QT/KDE or GTK+/GNOME gui frameworks, I highly recommend KDevelop. If you will be working with XML/XSLT or HTML/CSS, Quanta+ is an excellent companion tool. Together these tools are more powerful than anything freely available under Windows (including the free-as-in-beer visual studio express editions) or MacOS, with the notable exceptions being a fully equipped emacs or eclipse environment.

If you plan to focus on Java, eclipse is really the place to start. To get the most out of eclipse however you'll need to install at least a dozen or so plugins, of which there are literally hundreds of powerful plugins to choose from. On the non-free side, you'll want to evaluate IDEA.

If you plan to focus on scripting with Ruby (consider exploring the Rails framework as well), Python, or Perl/CPAN, KDevelop will do nicely. On the non-free side, there is the excellent Komodo IDE.

If you plan to focus on ECMA-CLI development (using any combination of CLI language implementations including C#, Nemerle, Java, Python, etc.) Mono provides a rich set of framework APIs (with its default UI framework based on GTK+), however this list is not nearly as extensive as those available under Java. Using p/invoke it's quite simple to invoke any of the platform-specific libraries that you would normally use in a c/c++ context as well. The MonoDevelop IDE is really the place to start here, however progress is being made to buid mono-specific plugins for emacs, eclipse and Anjuta (IIRC).

Other standard utilities you'll want to have in your toolchest include gcc, g++, gdb, ddd, GIMP (there will come a time when you need to create or modify a bitmap), kompare, subversion, cvs, ltrace, strace, lsof, iostat, oprofile, vmstat, sar, mcheck and valgrind come to mind first.

If you will be doing OSS development on any of the major projects, a good IRC tool is also highly recommended.


Depends on what you're writing (2, Interesting)

andy753421 (850820) | more than 8 years ago | (#14300714)

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 - >')

wyoGuide, cross-platform development for the Geek (1)

wysiwia (932559) | more than 8 years ago | (#14300758)

These days a geek probably will develop cross-platform since a geek don't want to be limited by platform considerations. And if you want to create a decent application with all the usual features a top application has, there is IMO just one solution and that is wyoGuide [sf.net]. wyoGuide allows you not only to create cross-platform applications but also build good and full featured application and with the demo sample code you get this application coded really fast. Any application written using the sample code will just run right from the start.

If you have time I invite to try it out and hopefully return an experience report for others to see how easy it was.

O. Wyss

Go open, but mainly GO (1)

robix_mevdev (220397) | more than 8 years ago | (#14300799)

I use .net (windows & visual studio 2003) at work. It does the job, but is inelegant.

I use cocoa at home. It is wonderful. It makes me want to learn more of the api's within mac os x.

I recommend using SDL (for graphics and sound). It is fabulous, and multiplatform. I could write an app and then easily port it to .net or linux.

THE KICKER: I don't change my ideas and ideals when I switch platforms. Everything is still there, and I'm the better for it. UI guidelines are great (get Apple's PDF). The platform is ananthema to the fact of why. I've been using my pc laptop at home to program my Game Boy Advance. It is great, and I'm learning so much. It is broadening my skills and that is transferring to everything else.

so my advice. JUST GO FOR IT WITH WHATEVER YOU HAVE. Make decisions later.

oh, and plan to throw the first one away. I always do. (idea from mythical man month)

Eclipse RCP (2, Interesting)

curious.corn (167387) | more than 8 years ago | (#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...

Java + Eclipse (1)

psykocrime (61037) | more than 8 years ago | (#14301109)

If it were me, I'd go with Java and use the Eclipse IDE. Java is fairly easy to learn, fairly powerful and has large, useful standard class library and has a wealth of additional libraries (many F/OSS) available. If you're interested in grabbing stuff off the 'net, look into Jakarta Commons HttpClient [apache.org]. Or, for other protocols than HTTP, look into Jakarta Commons Net [apache.org]. If you want to invoke web-services calls, you might find Apache Axis [apache.org] useful.

As far as look and feel, Swing has come a long way as a GUI toolkit, but a lot of people like Eclipse's SWT [eclipse.org]. If you use Eclipse and the Rich Client Platform [eclipse.org] as a base for your applications, you get a lot of functionality "for free." It's probably worth your time to give it a look see at least.

If you don't like any of that, just use GNUStep and Objective-C.

How about Adobe Flex? (1)

mad.frog (525085) | more than 8 years ago | (#14301301)

I'll probably be flamed for suggesting a non-free, Flash-oriented solution on Slashdot, but...

Check out Macromedia Flex 2 (errr, I guess now it's "Adobe Flex 2"), currently available as a free alpha release [macromedia.com]

It's based around the (free) Eclipse IDE, and satisfies your requirements:

-- great look & feel
-- well-suited to pulling info from the web (think weather & news)
-- usable on the Linux and perhaps Mac OS X platforms as well as Windows (basically, anywhere Flash Player runs)
-- standards-based to some extent, believe it or not: ActionScript 3 is essentially identical to EcmaScript 4

Too bad you need cross-platform. (1)

Randolpho (628485) | more than 8 years ago | (#14302246)

Because the next big thing, which you could learn while it's still cutting edge technology and known by only a select few, is Windows Vista and the Windows Presentation Framework. <Yoda> Powerful GUI it is... Powerful GUI</Yoda>

An underdog (1)

edesio (93726) | more than 8 years ago | (#14303059)

Why not TCL (Tool Command Language)?

It is a really simple language, quite powerful, cross platform (runs in Unix, Windows, Mac OS) and with a very supportive community (<URL:http://wiki.tcl.tk/>).

It has a nice toolkit for graphical interfaces "Tk" (many times copied with interfaces to perl, python, etc.).

All you need is a simple text editor. Since it is an interpreted language, you have a short edit-compile-debug cycle.

I'd say Java 1.5 + NetBeans. (1)

crazyphilman (609923) | more than 8 years ago | (#14303963)

It's one-stop shopping. Just download the current edition of the JDK and it comes with NetBeans -- all for free. It's available for every platform and it supports full object-oriented programming and most modern tools, everything from aspects to unit testing.

With Java, you can go in any direction you want. Want to play around with algorithms? There are good Java algorithm texts around, and you can have a blast. Want to write up a GUI? You can do that too. Want to do networking software? Java offers great networking support.

I really don't think you can go wrong here. In a few years, Apache is even going to offer a full open-source standard edition of Java (they're working on it right now).

Give it a try. :)

Java + Thinlet. (0)

Anonymous Coward | more than 8 years ago | (#14304364)

java + thinlet.sf.net is an awesome dev environment + totally cross platform. use pico or nano as editor of choice.

You want something for fun? (1)

Darius Jedburgh (920018) | more than 8 years ago | (#14305341)

A little different from what you're used to? You've been programming for years so you'd like something that gives you a different perspective on old problems? But you don't want to go out on a limb - you'd like to use tools that are well documented and well supported with a large user base. The answer is simple: Haskell [haskell.org]. Everything else is just the same old same old.
Load More Comments
Slashdot Account

Need an Account?

Forgot your password?

Don't worry, we never post anything without your permission.

Submission Text Formatting Tips

We support a small subset of HTML, namely these tags:

  • b
  • i
  • p
  • br
  • a
  • ol
  • ul
  • li
  • dl
  • dt
  • dd
  • em
  • strong
  • tt
  • blockquote
  • div
  • quote
  • ecode

"ecode" can be used for code snippets, for example:

<ecode>    while(1) { do_something(); } </ecode>
Sign up for Slashdot Newsletters
Create a Slashdot Account