Home | Blog | Software | Reviews and Features | Forum | Help | Donate | About us
topbanner_forum
  *

avatar image

Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
  • December 04, 2016, 10:18:51 AM
  • Proudly celebrating 10 years online.
  • Donate now to become a lifetime supporting member of the site and get a non-expiring license key for all of our programs.
  • donate

Author Topic: Seeking your insightful advice...Where to start?  (Read 6565 times)

cnewtonne

  • Honorary Member
  • Joined in 2006
  • **
  • default avatar
  • Posts: 117
    • View Profile
    • Donate to Member
Seeking your insightful advice...Where to start?
« on: February 11, 2007, 09:37:28 PM »
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

  • First Author
  • Administrator
  • Joined in 2005
  • *****
  • Posts: 36,406
    • View Profile
    • Mouser's Software Zone on DonationCoder.com
    • Read more about this member.
    • Donate to Member
Re: Seeking your insightful advice...Where to start?
« Reply #1 on: February 11, 2007, 09:39:20 PM »
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 Author
  • Administrator
  • Joined in 2005
  • *****
  • Posts: 36,406
    • View Profile
    • Mouser's Software Zone on DonationCoder.com
    • Read more about this member.
    • Donate to Member
Re: Seeking your insightful advice...Where to start?
« Reply #2 on: February 11, 2007, 09:56:25 PM »
first things first:
Quote
I'm at a point now where I want to get into the desktop development area.

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

  • Supporting Member
  • Joined in 2007
  • **
  • default avatar
  • Posts: 110
    • View Profile
    • My "2stepsback" blog - Updated!
    • Read more about this member.
    • Donate to Member
Re: Seeking your insightful advice...Where to start?
« Reply #3 on: February 24, 2007, 11:23:10 PM »
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.
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.
Quote
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?"
I second that.
Quote
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.  
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.
Quote
App103 maintains a page she can point you too soon I'm sure.  
(mouser: Link needed)
Quote
I'm actually a huge fan of the approach of finding a book that "speaks to you" and embracing that.

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.

Quote
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.
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
An apple a day keeps the doctor away. A good deed a day keeps the Devil away.
See http://www.codinghor...archives/000735.html
------------
<a href="http://www.w3schools.com/">W3Schools</a> - A collection of free HTML, CSS, JavaScript, DHTML, XML, XHTML, WAP, ASP, SQL tutorials with lots of working examples and source code.
« Last Edit: October 27, 2014, 04:56:01 PM by mouser »

Crush

  • Member
  • Joined in 2006
  • **
  • Posts: 399
  • Hello dude!
    • View Profile
    • Read more about this member.
    • Donate to Member
Re: Seeking your insightful advice...Where to start?
« Reply #4 on: February 25, 2007, 04:19:03 AM »
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....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.digitalma...om/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.o...om/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.alio...idigits&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.
« Last Edit: February 25, 2007, 04:22:33 AM by Crush »

app103

  • That scary taskbar girl
  • Global Moderator
  • Joined in 2006
  • *****
  • Posts: 5,666
    • View Profile
    • App's Apps
    • Read more about this member.
    • Donate to Member
Re: Seeking your insightful advice...Where to start?
« Reply #5 on: February 25, 2007, 04:04:42 PM »
Quote
App103 maintains a page she can point you too soon I'm sure.

I have been collecting links to legal freely available ebooks in many different programming languages for about 2 years. I currently have over 300 books listed on my site.

They are for all different skill levels. Many are advanced, but there are some beginner books as well.

http://www.programmingebooks.tk

Renegade

  • Charter Member
  • Joined in 2005
  • ***
  • Posts: 13,220
  • Tell me something you don't know...
    • View Profile
    • Renegade Minds
    • Donate to Member
Re: Seeking your insightful advice...Where to start?
« Reply #6 on: February 28, 2007, 10:59:27 AM »
How is it that nobody is endorsing Fortran? :( How sad! :(

OK - I haven't really programmed in Fortran in over 15 years, but it's the language for matH and still used quite a bit. I remember talking to a military programmer who did stuff with combat simulations (tactical, strategic, theatre), and everything was done in Fortran - which makes sense when you're doing a lot of calculations. There's even Fortran for .NET (VS 2003).

I tend towards C# as it's just easy for me. I've done a lot in VB.NET before and it's very very easy as well.

I'm not worried about MS dominating the planet - in fact I hope they do. MS is very friendly towards small developers and their tools are much easier to use than gcc (vomit).

For me programming is about productivity. I'm basically just a user at heart, and I am only interested in getting things done NOW (my ADHD prevents me from having any kind of attention span that requires me to wait). C# (or VB.NET for that matter) fit the bill for getting things done fast. Yes - I complain about things too, but I'd probably commit suicide if I were using Delphi (vomit again). Delphi has been abandoned, and has serious issues that will never be resolved now. Other languages might be more efficient in some aspects, but for just plain getting stuff done, it's pretty hard to beat C#.

But for certain kinds of development, other languages will be much better than C#. e.g. You can't beat a low level language when you do low level network programming, so you're better off with C there. For math you've got Fortran or MatLAB. For cross platform, you've got... Oh yeah - they all suck there! But Microsoft has the right idea with the CLI/CLS/CL something or other. :)

As for web based applications... Barf... They're all still infantile and the infrastructure for them is non-existant. You cannot do any kind of math or heavy iteration on a server. You need the power of a client. Nobody has anything that can do video or audio rendering in a web application. It's just stupid to try that at the moment. (The future may change this, but right now these things are way out of reach.)

C++, well, I think that it's pretty much the "jack-of-all-trades" language. It does darn near anything, but you run into the problem of it being slower to develop in.

D - Not sure - sounds interesting. The problem I see with a language like D is that it doesn't have wide adoption, so when you run into a problem, you have no community to fall back on.

The language war thing is really just silly. Whatever works is best. I just like the C# flavour.

Blah - Time for me to get to sleep. I've got coding to do in the morning! :)



Slow Down Music - Where I commit thought crimes...

Freedom is the right to be wrong, not the right to do wrong. - John Diefenbaker

iphigenie

  • Supporting Member
  • Joined in 2006
  • **
  • Posts: 1,169
    • View Profile
    • Donate to Member
Re: Seeking your insightful advice...Where to start?
« Reply #7 on: February 28, 2007, 11:09:16 AM »
Renegade if we were on usenet i'd think you're tip toeing the flame bait line ;) You're forgiven for mentioning fortran, as I have a background in physics, even though why anyone would suggest someone learn fortran today for a commercial carreer now is a puzzle to me ;). I know there's still cobol and fortran jobs out there but i think you learn those if you are in a field which uses them, not as a general IT practictioner...

Quote
You cannot do any kind of math or heavy iteration on a server

I'm sure you didn't really mean to say that, most heavy maths are done on dedicated servers not client workstations - whether it is computational physics or rendering 3D graphics.

As to web development, don't write it off like that... after all what differenciates web development from other kinds of development is simply the I/O via http and over open networks - apart from that it's not that different from any other client server system.  And just like every kind of development there are "script kiddies" and hugely mature systems out there, and some self taught script kiddies can code better than "software architects" with a degree in using diagramming software and IDEs...

But I don't think this topic was about mathematical development.

Nowadays there is a huge variety of platforms, languages, technologies and frameworks, and most are good, if not very good, as some things. None is good for everything. Although you can usually do a lot in any language you choose, there's usually a few other platforms around in which you can do it just as well. Anyone who says "X is crap, Y is great" probably doesn't know enough about X or Y to really be discussing the matter. There's not enough money to pay me to make me code in C/C++ if I ever have a choice, but I can still see that it's a great language, especially if you need the kind of low level hooks it gives you. I find it too much like micromanagement, and it makes it far too easy to get away with sloppy awful coding. (can you tell that my perspective comes from being the person who often has to come and rescue/analyse/re-engineer stuff?).

In spite of the MS bashers, C# is a good language. It does suffer from trying to be too many things to too many people, but how it is evolving is interesting. It does limit you to one platform though, for quite a while.

Anyway back to what i think was the main topic...

It depends if cnewtonne is asking about what IDE/platform to put on a cv to get jobs, or what language(s) to learn. I tend to think that any job ad that lists and IDE or framework as a key requirement was written by someone who doesn't understand the job in question...

If someone wants to learn a programming language and develpment practices, and has some experience like yours, I would probably recommend python as a good step. It's a nice and clean language, you can use it on the web or as a scripting language (i.e. start learning it in a context you are familiar with) but it has the toolkits to be used to create desktop applications. It's also in wide use in certain industries such as for example the gaming industry, so that's already one market you can go in. But it's a good language to learn things in, and learn them well. And Bruce Eckel's book thinking in python is probably still available as a pdf out there.

From python you can then jump on to another language, whether C++ or C# or even java, or whatever will be flavor of the month then... But for example .Net can be done in many languages.
« Last Edit: February 28, 2007, 11:36:03 AM by iphigenie »

Renegade

  • Charter Member
  • Joined in 2005
  • ***
  • Posts: 13,220
  • Tell me something you don't know...
    • View Profile
    • Renegade Minds
    • Donate to Member
Re: Seeking your insightful advice...Where to start?
« Reply #8 on: March 01, 2007, 09:15:11 PM »
Renegade if we were on usenet i'd think you're tip toeing the flame bait line ;) You're forgiven for mentioning fortran, as I have a background in physics, even though why anyone would suggest someone learn fortran today for a commercial carreer now is a puzzle to me ;). I know there's still cobol and fortran jobs out there but i think you learn those if you are in a field which uses them, not as a general IT practictioner...

Probably right - I've been known to start the occassional war, albeit inadvertently.

Quote
You cannot do any kind of math or heavy iteration on a server

I'm sure you didn't really mean to say that, most heavy maths are done on dedicated servers not client workstations - whether it is computational physics or rendering 3D graphics.

But those aren't "web apps". I meant in that context. Scientific applications are entirely a different breed of software - a breed where Fortran excels incidentally. :)

As to web development, don't write it off like that... after all what differenciates web development from other kinds of development is simply the I/O via http and over open networks - apart from that it's not that different from any other client server system.  And just like every kind of development there are "script kiddies" and hugely mature systems out there, and some self taught script kiddies can code better than "software architects" with a degree in using diagramming software and IDEs...

I just posted something about the web app thing over at JoS:

http://discuss.joelo...asp?joel.3.458711.11

We're still very far from having real applications that live up to expectations running over HTTP. I have yet to see something impressive enough that I would actually use. The new Yahoo Pipes application is nifty, but slow. It would be better running on the client with something other than JavaScript. JavaScript is just too darn slow.

Slow Down Music - Where I commit thought crimes...

Freedom is the right to be wrong, not the right to do wrong. - John Diefenbaker

iphigenie

  • Supporting Member
  • Joined in 2006
  • **
  • Posts: 1,169
    • View Profile
    • Donate to Member
Re: Seeking your insightful advice...Where to start?
« Reply #9 on: March 02, 2007, 05:28:29 AM »
back to cnewtonne - if you know perl pretty well, you might want to do your first desktop steps in perl. That lets you focusing on understanding gui application development, and the kind of event driven thinking etc. without having to learn a new language.

There are a few libraries you can use to create desktop applications writing your code in perl. The best known toolkits you can hook in from perl are Tk (look on cpan, and there are many tutorials) and wx (http://www.wxwidgets.org/) - both are multi platform and multi language so quite a bit of the knowledge you learn can be taken onwards to another language.

I'm sure there's more, but either of these would be a good place to start and do some experimenting, get some experience, tear your hair out thinking of all the stuff you have to think about that you didn't have to think about when doing network apps or CLI apps or web development (I remember doing that jump on OS/2 - I'd only ever written command line and computational physics code, and sudenly I got it in my head to buy Visual Age and learn GUI. Knowing about parallel processing didnt help much  :tellme: OS/2 had some nice APIs but it was still a change in thinking)

You can do pretty much everything in perl and one of those toolkits, it might not the sexiest, fastest app as a result but you'll learn loads. I'm a big fan of "write once, throw away, write again" especially when doing something you haven't done much before.

Then you might want to go to learn python, or C/C++ or C# depending on what kind of applications you want to design... or maybe perl6 will come out and who knows?  :-\
« Last Edit: March 02, 2007, 05:38:28 AM by iphigenie »

Renox

  • Honorary Member
  • Joined in 2006
  • **
  • Posts: 58
    • View Profile
    • Donate to Member
Re: Seeking your insightful advice...Where to start?
« Reply #10 on: March 02, 2007, 08:09:31 AM »
Though many pros and cons exist concerning the language of Visual C++, I still think it is a wonderful place for people to start and begin learning the tricks and code that make this language work... While I am not as experienced as others and younger in age, I found this language the easiest to comprehend for me. After I began learning the simple coding, I began to code different pieces of software that did various things just to see if I could perfect small apects of various things such as the bubble-sorts or string manipulations... I am a proud supporter of the VC++ language as well as Borland's IDE for app. development. There are many powerful tools you can find on the web for your own personal use and most of them are easy to use... I can't really say much about anything else, but I can say that I know programming takes the right mind-set no matter what language you use... and patience!