# I want to learn...



## ArmaTheGreek (Aug 5, 2009)

hey guys

I want to learn on how to program

do you have any suggestions on what language I need to learn for me to be able to progam?

I'm just a starter and I don't have any backgrounds in programming. 

Please suggest a language that I can learn and it's advantage.

thanks much!


----------



## mistavista (Aug 8, 2009)

JAVA - Free, lots of online resources, marketable
VB/C#.NET - Free (for a beginner), lots of online resources, very marketable


----------



## jamiemac2005 (Jul 5, 2007)

I'd say Java is a nice way to go. It is free, it is easy to learn and has so many implementations. Many OSes have JREs so Java is cross-platform-compatible. As for .Net languages, they can be free when you move on aswell using #Develop (Sharp Develop, google it).

Definately suggest Java though.

You could also try C++, the benefits are that it's a powerful language, C is closer to the processor than C++ so C is also adviseable.


----------



## TieFighter (Jul 15, 2009)

If you're good at looking at city maps and envisioning where to go on the streets and associating points on the map with landmarks you've seen in the city - then I suggest going with an object oriented language like Java. If you want raw functionallity and want to work hard for good looking graphics for your user to see after you get it functioning first then try C++ or C.

First - install either Java or djgpp (A compiled version of GNU's GCC for Windows) - if you have a Mac or Unix machine then you already have GCC on it and don't need to download the language.

For beginning java I recommend BlueJ or Eclipse for an IDE.
For C I recommend either Eclipse or Visual C# Express or Visual C++ Express

Yes, all of this software is free.


----------



## Engineer Babar (Jul 17, 2009)

I would advice you to please go for C++. If you will be able to learn C++, then it will be easier for you to learn other languages. You can do a course in C++.


----------



## ArmaTheGreek (Aug 5, 2009)

Thanks guys for the suggestions.

By the way, I'd like to ask if I'm gonna start C++ for example, do I still need to learn C# or can I go straight to C++?


----------



## jamiemac2005 (Jul 5, 2007)

Go straight to C++, learn from somewhere like http://www.cprogramming.com ... The tutorials there will teach you C++ from scratch.


----------



## ArmaTheGreek (Aug 5, 2009)

Thanks for the link!

By the way, another question. What's with VB.net vs C++? aside from being marketable. 

Most people I know uses VB.net and JAVA, but you guys suggest C++... what's the advantage and disadvantages between the two?


----------



## shuuhen (Sep 4, 2004)

*C* - Many languages borrow syntax from C. Used for operating systems, embedded systems and sometimes common applications/games. One of the better languages to know when learning computer organization (relatively easy to see how C code translates to assembly). You can mix assembly in when you have good reason (although that's not very common).

*C++* - Object-oriented. Mostly a superset of C, so a large amount of C code runs fine as C++ code (a few quirks do exist). Many features that make programming easier than it would be in C with a minimal performance hit. Used for tons of programs. Great for GUI programming.

*Ruby (or Python or Perl)* - Good for quick programs/scripts and experimentation with concepts. Programs written in these languages will not be as fast as a well-written C/C++ program would be, but these languages will shine when you need something written fast and runtime is not much of a concern. Things like Ruby Quiz and Perl Quiz allow you to practice programming and see other example solutions (not always ones following good programming practices - but they can be interesting).

All of the languages I mentioned above can be used to write programs for pretty much any modern desktop operating system. All the languages I mentioned also have open source implementations that work quite well. C and C++ are very well established. I generally recommend learning one of these languages from a good book and/or course if it's your first language.


VB.NET and any other .NET language (like C#) can somewhat run on multiple operating systems, but are fairly Windows-centric. In general, I recommend against using these languages.

Java _can_ run on several operating systems, but I find it aggravating on anything other than Mac OS X and Windows. Well-written C/C++ programs can be much more portable.


----------



## TieFighter (Jul 15, 2009)

There are tons of marketable languages to be honest. XML is a great one if you want to be a web designer, Java is also good for functional applets on sites, VB script is great for most popular browsers. Learn PL/SQL if you want to be able to query Oracle databases in the near future - though that's more of an information systems job than a computer science job. Learn MOCHA or COBALT if you want to get stuck in a niche job working on a legacy system (as long as it's up and running you'll be good...)
If you want to start with something fun to use that you'll get immediate results for go with VB, HTML, or something ultra high level for making mock-ups like Hypercard (if you're an old school mac fan) or Toolbook if you want something similar for windows.

Also - I started programming in ASM on my TI-86 calculator, just making games. If you get a TI 83 or higher you'll be able to make programs for it and the instruction book will tell you everything you need to know about the language. It's kind of like an all-in-one programmer's start-up kit (here's how to program and the thing to program).


----------



## ArmaTheGreek (Aug 5, 2009)

Thanks guys for the inputs.

This will really help me to start and going. I'll work on it right away.


----------



## shuuhen (Sep 4, 2004)

TieFighter said:


> VB script is great for most popular browsers.


I believe you mean JavaScript. Visual Basic would not be portable across operating systems unless there was an interpreter built into the web browser.


----------



## TieFighter (Jul 15, 2009)

I did specify *popular* IE: IE...

To not confuse anyone those stood for *I*n *E*xample: *I*nternet *E*xplorer


----------



## jamiemac2005 (Jul 5, 2007)

Haha, i've seen VBScript embedded in IE, it's not pretty. And i'd never suggest using it because it really is limited. Having a site say "Sorry you're using FF, we don't like FF users here at MicrosoftLand" is not pleasent and will lose you 20% of your audience (Depending on the range of your audience that is)...

I have a very negative view on VBScript in IE because the tills system where i work part-time is written around that sort of a set up and the thing is dire. Not just because of poor coding but because of the host-media. Long story, but i'd advise against it still.


----------



## storm5510 (Mar 26, 2009)

I feel C++ is sort of hard for a beginner. C# would be a better place to begin, in my opinion. You can download the express editions of all the .Net platforms from Microsoft.


----------



## Kathy Lee (Jul 20, 2009)

storm5510 said:


> I feel C++ is sort of hard for a beginner. C# would be a better place to begin, in my opinion. You can download the express editions of all the .Net platforms from Microsoft.


Totally agree! C++ might be hard for a beginner. Visual Basics is not that hard, and some commands are in common in the 2 languages.


----------



## jamiemac2005 (Jul 5, 2007)

Whilst i belive starting with .Net languages is an easier way to begin to learn to program, i also believe that the Core Concepts of .Net languages are too far from the ones in C++, Java, ASM, so-on.

If you wish to learn a multipurpose language, i think it's best to start with that language rather than some "beginner" language, i started windows programming with Pascal&Delphi 7... My tutor believed it an easy language to learn and grasp... I went from there to Java, the change was almost painful... If you really want to learn a language, start with that language.

Cheers,
Jamey


----------



## mistavista (Aug 8, 2009)

The main difference is the IDE, you get Visual Studio with the .NET languages and that is without a doubt the single greatest advantage .NET has. That's what makes it easier whether you use C# or VB.

C++ requires much more complexity than C#/VB which can take a long time for people to get used which is why Microsoft created their own languages. They saw the market needed decent alternatives that did not require years of practice to utilise and so they created VB, C# etc... yes I realise the history is much more complicated than that but, seriously, as an overview that's essentially it.

To the original poster - Certainly try C++ and see how you get on. If you can learn that quickly then you're a very good programmer. If not then try something easier like C#/VB (Express editions are free) - there is no shame in doing so and your only limitation in chosing a .NET language over C++ is that it is an interpreted language which makes it slightly slower the first time you run the application.


----------



## ahmorrow (May 5, 2009)

Here's a few compilers to start in Java: http://www.thefreecountry.com/programming/javaide.shtml

Here's one I love for C++: http://www.bloodshed.net/download.html

VB, just as any M$ invention was created for no other reason than to make money. Now that they've hooked us, they don't want to change the world. They want to keep it exactly the way it is.


----------



## ArmaTheGreek (Aug 5, 2009)

You guys are very helpful, thanks for the inputs and links. :grin:


----------



## storm5510 (Mar 26, 2009)

Kathy Lee said:


> Totally agree! C++ might be hard for a beginner. Visual Basics is not that hard, and some commands are in common in the 2 languages.


I have Visual Studio 2008 Express. The help documentation (MSDN) is excellent, with examples to follow. I was able to make the transition from Visual Basic 6 to VB 2008. I've also started on VC#.


----------



## ArmaTheGreek (Aug 5, 2009)

VB is not that hard because it is object oriented, is that right? 

Like click and drag the buttons and put some commands on it. Compared to C++ you need to code every button or visuals you'll be using in your software? Am I getting the difference of the two?


----------



## ahmorrow (May 5, 2009)

I really don't recommend going with Visual Basic if you intend to program much. It's a proprietary language and can only be used if compiled to an exe or with the needed dlls and all that. That and VB is a severely intelligent language. Easy to program in, but VERY limited in what it can do.

Whereas C++ is stupid, it's a bit harder to learn, but it will help you learn a lot more languages in the long run. Same goes for Java--though the code structure is a bit different. If you don't feel too comfortable with either you can try Javascript. It's platform independent although not all browsers support all features, it provides instant results and no additional programs to install and the documentation is fantastic with tutorials everywhere on the web.


----------



## ArmaTheGreek (Aug 5, 2009)

I got ya ahmorrow, thanks for the info. You guys are the best, very informative, appreciate it. :smile:


----------



## shuuhen (Sep 4, 2004)

ArmaTheGreek said:


> VB is not that hard because it is object oriented, is that right?


Difficulty has less to do with if the language is object-oriented, procedural, purely functional, etc. and more to do with how well you understand the language and what you're trying to do with it. Some languages also provide comfort features to make many tasks easier (although usually at a performance hit). I've had things that were hard to do in Ruby, which is the most object-oriented language I've used. There are many factors that can contribute to how easy programming can be

I avoid VB and other Microsoft languages (somewhat platform-dependent langauges in general), so I can't tell you how much easier VB would be.



ArmaTheGreek said:


> Like click and drag the buttons and put some commands on it. Compared to C++ you need to code every button or visuals you'll be using in your software? Am I getting the difference of the two?


The "visual" part of Microsoft's Visual C++ and Visual Basic is mostly a marketing gimmick. The Visual Studio IDEs come with visual GUI editors so you don't have to manually write code for certain parts of your GUI. You'll still need to do some code work for some of the dynamic behavior, but it handles a large amount of GUI code.

Other GUI toolkits, like Qt, have a graphical designer as well. A benefit of using the graphical designer (with Qt anyway - don't know if others have similar features) is you get certain internationalization benefits (the ability to translate your application to other human languages - including ones that read right to left). It is easier to get the base GUI designed in a graphical designer Apple includes Quartz Composer with the Mac OS X developer tools (which come with Mac OS X, just not installed by default).


----------



## ArmaTheGreek (Aug 5, 2009)

Thanks shuuhen. :smile:

I guess there's no difficult language but difficult user. :grin:


----------

