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

DonationCoder.com Software > Coding Snacks

What language is the best for a new programmer to start with?

<< < (6/11) > >>

app103:
I am not an expert coder...but I am an expert at being a beginner, so maybe that qualifies me a bit more to give my opinions than being an expert coder would, plus I have worked with a lot of beginners on the self-learning path.  :D

My best suggestion is to find free tools for each of the major languages that he is considering, and go through them and try them all one at a time. Go find a good public library with some recent books and borrow them, one language and one or two books at a time.

If he finds a good book that he can grasp and keeps him motivated till the time he has to return it, he should buy it.

Don't run out and buy a book and think it's going to be good. I made that mistake too many times where I looked through the book at the store and thought it would be good, only to buy it and get more than halfway through it at home and still not be able to write a single line of code. Don't make a money investment in a language till you are sure you are going to stick with it.

One of the things that will keep him motivated is projects. They have to be fun or useful because if they are boring or useless, he is going to want to jump ahead and get to the 'good stuff' and that's where he will get in trouble. He should always be asking himself with each new thing he learns 'how can I use this' and come up with his own creative ways to use the skills he is learning by creating his own projects, using everything he has learned thus far. This can help relieve some of the desire to jump ahead of yourself and attempt to run before you can crawl.

If he finds himself being impatient and the desire to jump ahead is just a bit too much, I suggest Delphi. He can jump in and make his 'hello world' notepad in less than an hour.

The reason why I chose Delphi was because it was the first language that made sense to me, clicked in my head, and I actually was able to get somewhere with. I tried Java, C, C++, JS, Leopard, Ibasic, and god only knows what else. Then I tried out Delphi...got stuck at one point, tried VB 6, hated it, got over whatever fog was going on in my head and ran back to Delphi. This is where I plan on staying for awhile, till I feel confident & competent enough to move on.

As far as where to go in the future, after Delphi, one can begin the crossover to C++ with C++ Builder, translating your Delphi code and seeing where the differences are with how things are done. Then after that, in whatever direction with C++ you would want to go, getting in even deeper into the language and moving away from a Borland IDE and the VCL.

Delphi is also a good starting point if you would like to learn C# later on, too. There are a great deal of similarities between the two. (and C# coders shouldn't forget or count out Mono for making .net cross-platform) There is even a Delphi.net to help make the transition to .net coding without learning a new language first.

It is also supposed to be much easier to go from Delphi to VB.net, than VB 6 to VB.net.

As far as Delphi being cross-platform, it is possible to write stuff in Delphi (or better yet, object pascal, which is essentially the same thing) and compile it with FreePascal to run native on Linux, FreeBSD, Mac OS X/Darwin, Mac OS classic, DOS, Win32, Win64, WinCE, OS/2, Netware (libc and classic) and MorphOS. You really have to know what you are doing though and it has to be written with the intention of doing this. Not likely if you wrote it with windows in mind, using win32api, that you will be able to compile it to run on something else. But if you wrote it to be cross-platform, you could.

I wouldn't touch VB 6 for the reasons Veign mentioned, but I wouldn't count out VB.net.

Python is a good language for a beginner. They teach it to kids in schools here. It is also possible to create GUI's for python apps. There are a number of frameworks available to do that. The only real problem with it is if he wants to share those apps. People will need to have python installed to run them, and this isn't something that comes with Windows (although it does come preinstalled (hidden) on some HP pc's).

Oh, one of the things not mentioned by anybody that is very important for a beginner that is self-learning, is having a mentor (or 2). Someone that knows what they are doing in the language you have decided to learn. Someone you can turn to when you get stuck and need a bit of help understanding. This person also has to be someone you can understand. Not everyone is cut out to be a mentor, even if they are an expert coder in their language. Some people have a style of explaining things that just confuse more than actually help. This is why there is a plethora of bad programming books in stores that were written by 'experts' that nobody can understand.

The availability of a good mentor in the language you have chosen can be an important factor in how far you will get with that language and whether you end up giving up or not. I almost gave up Delphi because of the lack of experienced Delphi programmers that could serve as a mentor for me. I had one, but she was unreachable for long stretches of time (I haven't heard from her in almost a year now). It wasn't till I started hanging out on IRC that I found more Delphi programmers. If I had been able to grasp C++ at all in the beginning, I would have had many more people that could have served as mentors. Without a real teacher to guide you along in learning your first language, you will need people to help you over the occasional hurdles, otherwise those hurdles can grow into very high solid brick walls.

If he wants to be a hobby programmer, anything he enjoys would be fine to learn. If he wants to make money, then he has to decide if he plans on working for a company or doing it on his own.

If he wants to work for a company, C# should be his target at this current point in time, and definitely database stuff, as that is where the big demand is.

If he plans on working for himself, I would suggest C++ Builder, Delphi, or C#. He won't need a whole team of programmers working with him, or a few years to turn out v1.0 of a fairly decent sized application.

What he really should be thinking about is where does he want to be, where is he going, what is his final goal. Then look for the best way to get there.

He might end up deciding AHK would be best for accomplishing his goals. His goal might be to be the next Skrommel. You never know.

Armando:
Wow. Thanks app, mouser, tinjaw...
Thanks app103 for so generously sharing your experience like that.

So I shall go check these books at the library (when I have more time)... And will probably start by checking the languages suggested in this thread. I might also check -- eventually : I'm not there yet! -- the mentoring thing, or course.

sgoel:
I suggest to start with the C for knowing the basic criteria of the language.It gives a path how to climb on the hill. Then you will try some more go with C++,Java. Both languages C++ and JAVA are essential blood of the programming. 8)
Are u perfect with programming language in C,C++,JAVA. :tellme:
More advanced uses the C#.NET with framework 2.0.This language enchances the knowledge to some different view.Also, Make self projects with all the language.When you face the problem u got a perfect solution and implement in the future.
  :Thmbsup:  8)   :Thmbsup:

f0dder:
IMHO it's a bad idea to start with C, there's simply so many ways to shoot yourself in the foot, and using the str* libc functions is the path to doomTM. If you really want to start with C, instead use C++ as as "super-C" - ie., still learn procedural programming, but using things like std::vector instead of malloc/free, and std::string instead of bloody char arrays. You can always go back and learn "pure C" if you need to.

Yes, C/C++ is my main language, but I doubt it's the smartest way to start. JAVA, on the other hand, is much more newbie-friendly (it's easy to get graphics, for instance, which gives many people a decent feeling of success), and it's structure is so similar to C++ (and C#) that it's pretty easy making the shift later on.

Python or JavaScript (in a suitable host) would be interesting languages for teaching as well. Or frameworks like Processing (java-based) - again, because it gives encouraging Success ExperiencesTM compared to boring console output and abstract crappy useless "Mammal, Dog->Dachshund, Cat->Siamese" class hierarchies.

dgrif:
I totally agree with app, definitely find a mentor.  I also agree with f0dder about c/cpp, too much room for error if you've never done any type of coding before.. plus if you want to go cross platform with it, unless you stay command line you'd have to learn something like Qt to have any decent type of user interface. 

I'd say start with either Java or Python.  Python is easy to learn, you can get dive into python for free to start learning, and it can be integrated with c and/or java too.  Getting started with python i'd suggest just sticking with Idle, which is included when you install it, or any plain text editor.  A decent free IDE once you start needing it could be spe.

Java is pretty easy to learn as well, as mentioned its similar to cpp/c# so it could pave the way to other things, and has at a couple really nice free IDEs, netbeans and eclipse.  I believe Netbeans has plugins for Python as well, and I think eclipse has plugins for everything under the sun.  seriously, I think it can even cook you dinner.  To start out on Java tho, I'd suggest jGrasp as an IDE.  It doesnt have all the extra crap you don't need when you first start learning, has a nice debugger, and a nice interface.  IMO eclipse isn't good for a beginner, too may options.

Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version