A Dev Environment for the Returning Geek?
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?"
And am currently enjoying Ruby.
Good judgement comes from experience, and experience comes from bad judgement.
- W. Wriston, former Citibank CEO
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.
fast as fast can be. you'll never catch me.
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.
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.
I haven't thought of anything clever to put here, but then again most of you haven't either.
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 ..
Windows is like decaf - it tastes like the real thing, but it won't get you through the day.
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.
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...
The World Wide Web is dying. Soon, we shall have only the Internet.
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 combined with some gui toolkit such as wxpython or pygtk.
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.
Go to Borland download page 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!
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/
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/
+++ UGUCAUCGUAUUUCU
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.
*sigh* back to work...
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
.. if only.
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.
Reality is nothing but a collective hunch.
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.
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/
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
Google Desktop API
"You cannot find out which view is the right one by science in the ordinary sense." - C.S. Lewis on Intelligent Design
Go out and get yourself a copy of Processing. 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.
The middle mind speaks!
I recommend using vi or emacs (I use both), gcc, and C with C++ added only when it makes you write less code.
.NET just to get the right header files for that.
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
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/ 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.
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.
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
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.
Don't thank God, thank a doctor!
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 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.
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.
I think I think, therefore I think I am.
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/ http://www.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
http://www.netbsd.org/Gnats/
- Hubert
Practical Development Environments http://www.oreilly.com/catalog/practicalde. 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).
~Matt
(Disclaimer: I wrote it)
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.
JsD
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.
If you are a bit more adventurous and do not care about hosting availability, consider Ruby on Rails.
2bits.com, Inc: Drupal, WordPress, and LAMP performance tuning.
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.
Ratboy.
Just another "Cubible(sic) Joe" 2 17 3061
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.
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.
Don't blame me, I get all my opinions from my Ouija board.
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...
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.
HTH
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 - >')
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. 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
See http://wyoguide.sf.net/papers/Cross-platform.html
I use .net (windows & visual studio 2003) at work. It does the job, but is inelegant.
.net or linux.
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
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)
You might be interested in the Eclipse RCP 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...
Mi domando chi à il mandante di tutte le cazzate che faccio - Altan
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. Or, for other protocols than HTTP, look into Jakarta Commons Net. If you want to invoke web-services calls, you might find Apache Axis 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. If you use Eclipse and the Rich Client Platform 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.
// TODO: Insert Cool Sig
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
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
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.
If you reread my post above, you will clearly see that I called him a troll in disguise, i.e. a non-obvious troll.
Windows is like decaf - it tastes like the real thing, but it won't get you through the day.
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. Powerful GUI it is... Powerful GUI
"Times have not become more violent. They have just become more televised."
-Marilyn Manson
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.
I think I think, therefore I think I am.
Welcome back Bill!
A bad analogy is like a leaky screwdriver.
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.
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.
Farewell! It's been a fine buncha years!
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.
perception is reality
java + thinlet.sf.net is an awesome dev environment + totally cross platform. use pico or nano as editor of choice.
"what are the right tools?"
a shell, a compiler and vim.
I don't feel like it...
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. Everything else is just the same old same old.
I have started to really miss hands on coding - something I haven't done for almost 20 years.
;-)
Fire up a console under Linux, use vi and cc, and you'll feel right at home as if 20 years had not passed.
Eventually, you'll want to move to Eclipse, but you can start off with BlueJ, which will help you learn the basics before you try anything more advanced.
These are great languages, truly beautiful in a really deep conceptual manner. They are also very flexible. You are beyond the OMG I can create a dialog box like a real program stage, and LISP really lets you do tricks very easily. I wrote a genetic algorithm evolver in LISP -- something I couldn't have come close to doing in C without a huge amount of ugly hack.
The community surrounding LISP is very, very smart, and helpful as well. You won't be drowning in crap as you would if you wanted to get involved in the Perl community (great language, but it's a metropolis now.)
Good luck, and congrats on wanting to get your hands dirty again. By the way, if you do pick up LISP, it will make you a better programmer; I speak from experience. I'll stop evangelizing now, but Graham has his own website where he does it for me. Best quote:
Protect your liberties. Donate to the ACLU
Personally, I changed over to web development about 10 years ago. I use PHP and MySQL for just about everything. With my background, neither was difficult to pick up, although living in a client/server world takes a little getting used to. I still use vi on a regular basis, and grep is still a better tool than any search functionality you'll find in any IDE because you can transform your results by using pipes. I while I like a GUI for reading Slashdot and news, I still get tons of work done from the command line.
If you don't want crime to pay, let the government run it.
You can use every script language like Perl/Ruby/Python there, without thinking about using / and \
You can download all open source software and be able to do the following standart build process:
You can use the powerful bash shell and use emacs, vi etc.
You can have Apache web server and Postgresql database server there.
And best of all, you can hide all your experiments under c:\cygwin directory.
When targeting the linux and MacOSX platforms I believe the ideal framewrok will be Qt4 (http://www.trolltech.com./
This framework supprts everything you will ever need, right from GUI classes to network and database classes.
And everything through the lovely language C++
The thing is, you use the qmake tool to create your project and then it simply compiles and runs on both OSs (and windows for that matter).
The Qt4 framework has been released under the GPL, with an alternative license which makes it possible to redistribute closedsource (this latter costs money of cause).
Editor: Hmm.. I personally use emacs and an xterm, QDesigner (included with the framework) for the click and draw GUI design.
Ignore all the script functional language fanboys. The ONLY languages
you can write EVERYTHING in on ALMOST EVERY platform is C (and also C++).
It goes all the way from the OS itself through device drivers, database
engines, games, GUIs , you name it.
If you don't know C learn that first as it'll give you a good grounding
in low level techniques then learn C++ to get a reasonable grasp of
OO & generics. (Cue ivory tower academic rant on how C++ isn't true OO...)
Try Lazarus, http://lazarus.freepascal.org/
Greetings,
***Which part*** of
"I'd like those applications to be usable on the Linux and perhaps Mac OS X platforms."
did you not understand ?
You have 25 yrs of tech experience, You have been following the trends, And you're saying you need help selecting development tools??
"Do or do not. There is no try."
Apparently, all of it. :-)
My apologies. I not only did not RTFA, I didn't even completely RTFSummary.
I guess I should refrain from commenting when I'm just quickly glancing between Slashdot and my IDE at work.
"You cannot find out which view is the right one by science in the ordinary sense." - C.S. Lewis on Intelligent Design
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:
If you already have some idea of perl and want wonderful MVC web framework goodness, take a look at http://catalyst.perl.org/ which is being touted by many as "perl's answer to Ruby on Rails".
"I guess I should refrain from commenting when I'm just quickly glancing between Slashdot and my IDE at work."*
I wouldn't worry about it. Apparently the "cocoa" people haven't got the message either. Maybe ZvivLord is running a bit behind?
*You can use VS 2005 to create cross-platform apps. You simply have to pay attention when writing your code (in C/C++ naturally).
I just recently had to do some coursework for a java-centric CS course, and the instructor insisted on using that BlueJ program. I used it once, and promptly threw it away and went back to using my SlickEdit. BlueJ does everything a IDE shouldn't, and nothing a source editor should.
I can't recommend a language, as this is purely personal choice for most people; but for IDEs, SlickEdit is worth its weight in platinum, and Eclipse is good (I hear) if you're looking for a free solution.
My first advice would, actually, be to get a Linux live CD and try it out; there's most likely going to be all kinds of compilers on the CD already (C/C++, Python, Ruby, Java, etc etc). Just install linux, you'll have everything you need.
High school/Jr. High First year in college Senior year in college New professional Seasoned pro (garbled to bypass lameness filter) Manager
Don't ask questions like this on /. ! By now you've had recommendations for about every programming language ever written
...is to just pick up a Sun Ultra 20. It comes with the latest development tools for Java (including an app server), C, C++ and FORTRAN, and is a peppy box to boot. You also get three years of support for the included tools, and it'll run Solaris 10, Linux and Windows. It's also reasonably priced, all things considered.
Just junk food for thought...
I'm a pretty senior architect, so to some degree I get to play at what you want to do. Here's are some things that I think would be useful to get familiar with.
1) Whatever you do, do some TDD. Test Driven Development is more of a mind-shift than any particular technolgy you're likely to be exposed to. Make sure you have a unit-test (class level) test framework going for whatever you do.
Issue: How much more qualtiy, at what cost, are your developers likely to get practicing TDD? (My answer? Lots, but see what you think.)
2) Pick something Eclipse-based. vi? emacs? Gimme a break. Whether it's Java or C++ (CDT plug-in) or Ruby or Python, use Eclipse. It's the emacs for the new era.
Issue: How much do state of the art tools affect developer productivity? (My answer? It's huge.)
3) Do something web-based that requires running in an app-server. Tomcat / MS$ / J2EE / Rails (sort of).
Issue: Abstracting object lifetime / persistence / what have you buys you what? (My answer? Way less than you might think.)
You likely won't be able to get a feel for all three issues unless you do Ruby on Rails under Eclipse, which I haven't done - and so hesitate to recommend. But it might make sense. But if you pick something close to the three things raised above you're going to be exposed to things that will cause you to think about what drives developer productivity, which is what I take it you're interested in.
I'm a professional cat herder looking for a subtle way to start a religious war on /. about languages and OSs. Call it a hobby of mine. Any suggestions on techniques that might get this past the /. editors? Thanks.
What are you doing now, you lazy drunken obscene unsayable son of an unnameable gipsy obscenity?