ATTENTION: You are viewing a page formatted for mobile devices; to view the full web page, click HERE.

Other Software > Developer's Corner

Seeking your insightful advice...Where to start?

(1/3) > >>

cnewtonne:
Dear Mouser,
I have been reviewing and testing software for years now. I'm also a system administrator who's pretty savvy with fews programming/scripting languages such as Perl, VBS, SQL, and Unix shells. I'm at a point now where I want to get into the desktop development area. I spent a lot of time researching the different tools and technologies out there and I truly need the insights of someone like you to help guide me through.

Prinicipally, the first choice I have to make is what language/IDE to use. I know this is a question that can stir up a lot of political controversy which I really care the less about. My objective is to learn a platform that will eventually pays off the most in terms of features, scope, and abilities.

I would like to ask you to touch up on these inquires with your very valuable advice please...

- Looks like using the C++ language is the first choice for professional development. However, how about C# and the whole .NET plaforms (politics aside, of course).

- Writing a feature-full program certainly requires multi-faceted knowledge. There is the language itself, windows programming API, messaging , ... and finally Windows forms , and my be some servers side GUI tools such AJAX. Can you suggest some reference sites or books where you can put this knowledge together as you develop applications?

I spent few hours yesterday reading about donation coder and the whole concept behind donation-ware. I can not tell you how much impressed I was with your abilities and above all your insights into the different subjects and issues. I'm sure whatever your comments are on my inquires, will be priceless indeed as I can never find them in books or web pages.

Thank you in advance for your time and dedication.

mouser:
there are quite a few programmers on this site - some better than me, some worse.  and your questions are very general, so im going to move this to Developers Corner area where everyone can chime in with their advice :)

mouser:
first things first:
I'm at a point now where I want to get into the desktop development area.
--- End quote ---

While i'm not a huge fan of all the web-based applications, you should keep in mind that the current trends seems to be more and more torwards web-based applications, so you need to consider this strongly.  Of course the idea here is to build web-based software that you can also run on your desktop, but it does require a different mindset.

You've got a couple of questions you need to ask yourself which drastically alter your subsequent decisions.  The most important question I think is this one:

"Do i want to learn serious programming skills mostly for the pleasure of learning it - or to make money?"

If it's mostly for fun, then you've got a whole different world that opens up to you and your decisions won't be so critical.  If it's to make money selling software or getting a job as a programmer, then you have to be much more careful about your decisions.

I am a 20+ year c++ programmer.. I consider it my native language and I have much love for it.  However I get mad at it and I view it as something that should die eventually and be replaced with a better thing.  I'm still looking for that better thing and haven't quite found it yet, but I would caution people against embracing c++ as their main language.

I find a lot to like in C# from a programming language appreciation perspective.  I'm a little concerned by microsoft's ownership of it and the .net runtime slow startup stuff bothers me but from a language perspective i like it.  I'd like to see it get a little bit better cross-platform support (see monow) before i embraced it, but i don't rule out doing more C# coding at some point.  Right now i'm still undecided about whether something better will come along and so i've resisted.

The web-centric languages like Ruby On Railsw are all the rage these days, and if you want to get involved in big web applications that might be the way to go.  Things like AJAX and javascript and stuff are making some great web page functionality, but the truth is that it all feels to me like "hacks" and ive dont enough cursing with regard to cross-platform and cross-browser incompatibilities to want to work on such stuff.

As for books - there are tons online.  App103 maintains a page she can point you too soon I'm sure.  I'm actually a huge fan of the approach of finding a book that "speaks to you" and embracing that.  I might just recommending going to a book store and see what strikes my fancy and go for that language.  It's been my experience that most people fail to learn programming well because they lose motivation - so if you focus on motivating yourself with the right book and challenge that's 90% of the game.

You'll find in this section of the forum a "self-teaching" programming school as well where you can get assignments for langauges and try them once you pick something.

Another question you have to ask yourself is if you want to develop Windows-only stuff or if you want your programs to run on Mac, Linux, etc.  That affects what you choose.  I'm also a big booster for Object Oriented development, so if you are interested in the art of programming, i think that's a very important issue that will shape how you think about problems.




2stepsback:
Hi cnewtonne,

NOTE: In the next post to this one, I'll post either a list of links to good programming sites for each language or a site that has such lists. No time at the moment.

While I'm not a huge fan of all the web-based applications, you should keep in mind that the current trends seems to be more and more torwards web-based applications, so you need to consider this strongly.  Of course the idea here is to build web-based software that you can also run on your desktop, but it does require a different mindset.-mouser (February 11, 2007, 09:56 PM)
--- End quote ---
That is true and that makes your program "cross-platform". But there is great merit in making a desktop program - it is much more complex to make a LAMP/WAMP installer and then add your application to it and then get it up and running. Additionally, the user cannot fix it by uninstalling and reinstalling if another person has used the same method to make a portable desktop application and this user has installed that one as well on his machine. Conflicts with multiple Apache installs are a common thing, often resulting in both not working. Obviously your end user is not capable of installing and maintaining the very basic things about a webserver. so, desktop software will not go anywhere. And if you plan to make a living out of programming in any way, you should know desktop programing.
The most important question I think is this one:
"Do i want to learn programming skills mostly for the pleasure of learning it - or to make money?"
--- End quote ---
I second that.
I'd like to see it get a little bit better cross-platform support (see monow) before i embraced it, but i don't rule out doing more C# coding at some point.  
--- End quote ---
Generally, the world goes where Microsoft wants it to go. That, to me, is called .Net v3. But Microsoft has also pulled in Novell and has never ever objected to Mono, inspite of the fact that it was a direct competitor to .Net. Now the cat is out of the bag, Microsoft wanted to forge a partnership with Novell all the way, so Mono was a smart trick they played on Linux. Which for us, means that Microsoft also plans to reach Linux users through Mono via the Novell proxy. So Mono *is* the future for some audiences.
App103 maintains a page she can point you too soon I'm sure.  
--- End quote ---
(mouser: Link needed)
I'm actually a huge fan of the approach of finding a book that "speaks to you" and embracing that.
--- End quote ---

If you were thinking of learning Java, this is exactly what the "Head First" series achieves. Do have a look at it Amazon. The books are "cool" and "hip". They have a lot of fine technical info as well, but are written in a *very* informal style. (I personally find it distracting :( ). YMMV.
Then there is the "The Missing Manual" series which is quite nice as well, but I'm not sure they deal with any desktop languages, do have a look, though.

The good thing about Java is that in the Java world, software, documentation, IDEs, other tools, information, users, helpful people, IRC, google groups / usenet, forums all are freely available in truckloads mountainloads!

The bad thing about Java is that it is perceived negatively, it does not look sleek/sexy, it needs 512MB RAM (may sound like a constraint, but it is an advantage, when you consider that Microsoft's new big thing Vista, "just needs a minor hardware upgrade to 1GB of RAM". Java was supposed to be slow. Damn slow. But with M$ and Vista, a "minor upgrade of 1-2GB of RAM for normal operation" of the Wow is "perfectly fine" considering that the hardware industry "follows Moore's Law" >:( .

It used to be said that Java is (C++)--
That is, Java is C++ minus its bad things
C# is (Java++)--
That is, Java with some cool features added and uncool features removed.
So, C# is the best, IMO.

What about the huge Java resource-base? Well, C# has developed an equally impressive one rather quickly due to the web's recent exponential growth.
See codeproject and codeplex.

Another question you have to ask yourself is if you want to develop Windows-only stuff or if you want your programs to run on Mac, Linux, etc.
--- End quote ---
If you want Linux interoperability also (ie. just a one button compile to have your C# code run on Linux), use Mono/C#

So, in short, either Mono/C# or .Net / C# should be your choice.

There are *hundreds* of sites and thousands of blogs, let alone blog posts, about good programming style, methods and practices. (Even I have written a blogpost!!!)
You should read a few, at least the good ones.
But, that's an overwhelmingly huge resource database. How do you deal with all those?

Use the following set of well-tested tools:

1. http://delicious.com (NOT digg - which is a *social* bookmarking site - more opinion, less links)
Yoono, if you are comfortable with sharing your bookmarks - NOTE WELL - that makes your web surfing a PUBLICLY READABLE entity - as public as it can get - so you can't go looking for "britney spears pics" and bookmark that, if your surroundings don't allow you that (eg. office)

2. A feed aggregator. The popular one is Google Reader, but you may choose others if you fear google already knows enough about you. If you use a desktop RSS program, like I do, subscribe to ANY and EVERY feed on programming sites. Let me say it this way:
Law of information relevance and extreme interlinking on the WWW aka "2stepsback's Law"(just joking :) ): "Every news feed related to programming is directly or indirectly related to your current programming language and platform."
So, subscribe to every feed. Since feeds are meant to be one-line introductions about the topic of the article, generally sifting through the feed list gives you an idea of what you want to open and what not to. That is the only way you don't have to spend hours without tangible results on your specific project or task at hand :) Spoiler(which is what I generally do and then sit cursing myself at the end of the day  ;) )

3. Usenet either via subscription to a news server or freely via freenode/etc, OR, freely via google groups - very very highly recommended - again, your every word is public record and permanent. NOTE.

4. Forums at the most popular sites.

5. mailing lists

6. IRC

That's a lot of side work to learn a programming language, is it not? Yes.
That's why we're here  8)  8)

Traditionally, M$ Windows ppl (like me) have learnt programming GUI applications in VB6.0, which is now replaced by VisualBasic.Net Express *freely* available from Microsoft(!!)
That's one. Second, SharpDevelop from icsharpcode.net is equally good, if not better. Which is also what I use to earn my daily bread considering that Microsoft is known to change licenses when they feel that they are not making enough money out of people using their free software legally - they change the license or subtly still, they stop supporting it, or still subtly still, they introduce a better low-priced or heavily-marketed version that makes everyone stop supporting the earlier thing. That's really the point where it begins to trouble. No such for Sharpdevelop. You can always stop using Sharpdevelop without losing a penny and painlessly one-click migrate all your code to Visual Studio (whatever version) when you decide to purchase M$ products.

If you prefer Pascal or C#, go to turboexplorer.com, where they say, "the Turbos are back!" - and they are, really. Eclipse has forced everyone to give out free versions of their products. So, the Turbo Explorer Series is fully free even for commercial development. IMO, that's next best for learning C#, after M$ VS Express, and the only choice for Delphi.

Then there are Smalltalk, Eiffel, etc, but they are not mainstream and are not worth spending time on. If you want a cheap, supported version of Visual Basic-compatible compiler, then RealBasic is best ($100). Code is >95% VB-compatible. For free hobbyist use, there is LibertyBasic. OBasic, X-basic are totally different and NOT like VB, so stay clear.

Then, there are Boo and Nemerle, but they are far from extreme and they aren't supported by a big group.

Ah yes, how could I forget Python!
Python is cool, hip, great, awesome, whatever else, and is recommended as a good first language by a person no less than Eric Raymond. IIRC, there is PyWin for Windows GUI development, has PyClipse, an Eclipse Plugin. I think there should be not less than 10 (T E N) IDEs (not smart-editors, but GUI designer-enabled *IDE*s for GUI python development) go to Python@wikipedia.


More later,
~2stepsback

Crush:
Hi,

I prefer C++ and think you have the widest grade of development in every direction. Object orientation is nowadays standard and most languages should support the most important paradigms. Speed and flexibility has ever been the main thing I was looking for. And till now I insisted in using C++ (before that only Assembler could serve the right velocity). Mastering C++, other languages that are looking C++-like in syntax and have in most cases less complex features could be learned in a few days if needed - but till now there was no need for it (only Fortran in a conversion-project).

During the crazy appearance of all languages there´s one I noticed especially: The D programming language: http://en.wikipedia.org/wiki/D_programming_language. It´s overloaded with everything I expect in a language of the next century and the speed & syntax is impressive. If it comes up to the coding-scene in the future I could imagine to flip over to D.

Due to problems with lawyers (as I think) the comparison-table of D with C, C#, C++, Java has been reduced to D itself: http://www.digitalmars.com/d/comparison.html
... it´s very informative looking at the main differences of the languages - but for what do we have the timemachine  :D : http://web.archive.org/web/20060601042315/http://www.digitalmars.com/d/comparison.html

For speed-comparisons of nearly all existing languages - that could be helpful for your decision - you can take a look here: http://shootout.alioth.debian.org/sandbox/benchmark.php?test=pidigits&lang=all

If you ask a few coders that have specialized in different languages, you´ll hear the same everytime: My language has all I need!
And that´s the point of decision: If the language serves your goals in the way you expect it - it´s right! But only - if you can accept and afford the development and debugging tools existing for it.

Navigation

[0] Message Index

[#] Next page

Go to full version