# Learning code, where should I start?



## gifi4 (Aug 3, 2011)

I plan on learning to code and well, I don't know where to start, is C# a good place to start or not?
Any tips? What language should I learn afterwards?


----------



## Waflix (Aug 3, 2011)

I started with VBScript. The basics are quite simple, and it helped me understanding how it works.
Then I learned Python. Just because a friend of mine recommended it.
After Python, I started learning C++.
I don't have experience with C#. 

I have also collected a few sites that helped me, and a few tutorials.

 W3schools - A site full of tutorials how to learn languages HTML, CSS, JavaScript, VBS, and many more.
 VBS Tutorial - The VBS Tutorial on W3schools.
 Python - The official site for the language Python.
 Python BG - The Python Beginners Guide. I used this as my tutorial for learning the language.
 C++ Tutorial - A good tutorial for learning C++.
 C# Tutorial - A site for learning C#. I haven't used it, so I don't know if it's useful.


----------



## Issac (Aug 3, 2011)

I wouldn't bother with VBScript actually... I'd jump straight on to C++.
Java is also a good place to start...


----------



## xist (Aug 3, 2011)

I bought this last month having no experience at all with programming. It's actually a really good resource and i *think* i'm doing ok working through all the examples, drills and exercises.

Having guides online is great, but nothing beats the ability to read 10 mins here and there when you don't have computer access.


----------



## Wabsta (Aug 3, 2011)

I wouldn't start with VBscript. It'll only get you unmotivated to code.
You should start, or right on with C++, but that can be hard. Or Java or C#. I have personally learned programming with Java.


----------



## Berthenk (Aug 3, 2011)

If you're interested in game development, I'd recommend C# with XNA. I use the book called Learning XNA 4.0, it's pretty easy to understand and there's source code available for every chapter, including sound, textures/sprites, etc.. This, however, only counts for the Windows, 360 and Windows Phone 7 platforms.


----------



## Wabsta (Aug 3, 2011)

Berthenk said:
			
		

> If you're interested in game development, I'd recommend C# with XNA. I use the book called Learning XNA 4.0, it's pretty easy to understand and there's source code available for every chapter, including sound, textures/sprites, etc.. This, however, only counts for the Windows, 360 and Windows Phone 7 platforms.


Is that book buyable in some dutch webshop by any chance? I've been looking to get into XNA. Also, how basic is it? Is it too, like, easy if you already know C# (pretty good), or do they just teach you XNA?


----------



## nutella (Aug 3, 2011)

The programming language you choose isn't all that important, though I personally started with Java.


----------



## gifi4 (Aug 3, 2011)

I'm thinking about Java atm, every damn guide I find supposes I already know how to program, but I'll still try... About to look into the links Waflix provided


----------



## Berthenk (Aug 4, 2011)

Wabsta said:
			
		

> Berthenk said:
> 
> 
> 
> ...


comcom has it, but I don't know if they're a reliable shop, and 27 bucks is a bit steep in my opinion. I "acquired" it by other means because I can't really be arsed to buy a book in a digital format.

Edit: it does teach some basic things but after a while it just assumes you know basic things like a construct; variables and such.


----------



## pistone (Aug 4, 2011)

im starting to code my self and my choice language is c
ist very spread and also is simpler than c++
if you want to code try first a good ide .....those help alot
my choice here is code blocks 
also some starting web page :
Page nr 1
Page nr 2
Page nr 3


edit:this one down..... isnt any good as @Mazor said but i will leave the link so anyone will not make the mistake to follow this tut 
	

	
	
		
		

		
			





Youtube c programming tutorial!


----------



## Rydian (Aug 4, 2011)

http://learnproglang.couch.it/


----------



## Mazor (Aug 4, 2011)

master00d said:
			
		

> and i saved the last page for last coz...............its a tutorial video in youtube !!! a great place to start
> 
> 
> 
> ...


As someone who knows C, I must say that tutorial was completely terrible and definitely an awful place to start. 

Not only does the guy use and promote the use of the terrible obsolete Dev-C++ IDE that has not been updated for 6 years, he doesn't even know it's an IDE and instead refers to it throughout the video as a compiler (Dev-C++ does not even have its own compiler, it uses MinGW). 

When talking about including the header file stdio.h, around half of what he says is messy and the other half wrong. When talking about printf included from stdio.h, he even admits he doesn't actually know what it stands for, making two wrong guesses. This would be bad for any function, but printf specifically stands for "print formatted" which indicates that the string it takes is a _format string_, which means that it can contain placeholders for arbitrary data of various types which is supplied as additional parameters after the format string parameter. The guy seems to be unaware of this concept as a result of not actually knowing anything about printf, and does not make any mention of it when he should have.

Also, he disregards the C90 standard by omitting return 0; at the end of main() which is generally considered bad practice.


To summarize, he pretty much made all mistakes he could have made. I would strongly advise against following this guy's videos. Read The C Programming Language instead.


----------



## Gh0sti (Aug 5, 2011)

java is also good to know taking a class on it, use bluej to help create files


----------



## waitaminute (Aug 6, 2011)

Waflix said:
			
		

> W3schools - A site full of tutorials how to learn languages HTML, CSS, JavaScript, VBS, and many more.


No, this site is useless, and will teach you the wrong things.

More info: http://w3fools.com/


----------



## amrboghdady (Aug 16, 2011)

Hmm, I wanted to become a web-developer, so I first started with Html
There were many free websites teaching it, so learning it was extremely simple

Then I started doing Css as well, no books or tutorials, I just looked at the different Css files used on other websites and started from there

Then I purchased a book covering Php & MySQL, which really helped me a lot

That was all about 5 years ago when I needed to raise some money. I was able to work as a freelancer for a few months and earned around $1500 until I got a real job


----------



## pistone (Aug 16, 2011)

Mazor said:
			
		

> master00d said:
> 
> 
> 
> ...



thnx .i will follow your recommendations ,so now only the other links remain .............


----------



## Snailface (Aug 16, 2011)

Mazor said:
			
		

> master00d said:
> 
> 
> 
> ...


Good Lord, where to start here? 
I'll take that youtube guys Hello World over this, at least you can see it after compile and run, lol.

Seriously, Master00d, just get a good (modern) C++ book. The one Xist recommends is a good choice. It was written by the creator of C++ in fact. 
	

	
	
		
		

		
		
	


	



http://www2.research.att.com/~bs/programming.html

Or if you don't want to be overwhelmed-- try C++ for dummies. I know dummie books can vary in quality, but this one isn't so bad. It's not too rough, not to easy -- just right. You can branch out to other books after that if you think it's too easy.


----------



## mrwienerdog (Aug 16, 2011)

Most people are split between java and C++.  Truth of the matter is, once you get used to object oriented programming, it doesn't much matter which you go with. The syntax is obviously varied, key words are different, but the actually fundamental concepts are what you need to wrap your head around.  Java is the choice of most programming schools for a first language, because memory allocation is taken care of for you, and you don't have to mess around with it at all. With C++, memory allocation is just one more angle you will be concerning yourself with, and it can be a bit overwhelming.  I started with java.

HTML is not really a *PURE* programming language (sorry, not trying to insult anyone -  I am in web applications development). It is extremely easy to understand and code.


----------



## Mazor (Aug 16, 2011)

Snailface said:
			
		

> It's funny that you chide the 6yr old Dev C++ IDE for being obsolete and then recommend a textbook that is 22 years old. Here is its "Hello World":
> 
> It's funny how you attempt to thwart my statement by comparing the age of a software IDE with that of a book. Would you say the same thing to someone who said that their old computer is obsolete and then went on to say that the wheel is a rad invention even today? Whether something is obsolete is definitely not determined by age alone and implying that some object would be obsolete because a newer unrelated object of some sort that is obsolete exists is completely ridiculous.
> 
> ...


Actually, while HTML can vaguely be called "code", it certainly cannot be called a programming language at all. It has nothing to do with one, it's a markup language.


----------



## mrwienerdog (Aug 16, 2011)

Just to be clear, I understand it is a markup language. You seem to be trying to show all of us your superiority with nailing me on semantics.  I simply wanted to say that it is easy to WRITE.  Pardon me for saying that it is extremely easy to code.  

Also, I tried to make sure all of my post was completely correct (grammar), so you wouldn't have to show us how great you are at spelling and writing as well.


----------



## Mazor (Aug 16, 2011)

mrwienerdog said:
			
		

> Just to be clear, I understand it is a markup language. You seem to be trying to show all of us your superiority with nailing me on semantics.  I simply wanted to say that it is easy to WRITE.  Pardon me for saying that it is extremely easy to code.
> 
> Also, I tried to make sure all of my post was completely correct (grammar), so you wouldn't have to show us how great you are at spelling and writing as well.


You stated that HTML is a programming language, which is false. I don't see how it would be unreasonable, or why it would be considered an attempt to "show superiority", to correct a false bit of information in a thread covering a directly related topic. 

I don't doubt your personal knowledge, in fact I think you most likely have a good idea of what HTML is judging from your post. However, this is a forum; everything posted is posted for every member and guest to read. With the exception of posts in non-serious topics, correcting posts stating factual errors is something I believe everyone should do when stumbling upon one. This goes for your, mine and everyone else's posts, regardless of whether it can be assumed that the author of the post actually does know the truth.


----------



## Satirical (Aug 24, 2011)

Waflix said:
			
		

> I started with VBScript. The basics are quite simple, and it helped me understanding how it works.
> Then I learned Python. Just because a friend of mine recommended it.
> After Python, I started learning C++.
> I don't have experience with C#.
> ...



+1, this is all very good advice, w3schools is amazing as well as cplusplus and learn-programming. Of course if you are very passionate about it and you'd like to have a career in it, try taking up a Degree in it, or doing a high-level course in Software Engineering.

I skipped VB and did some Web languages first, starting from the basics, HTML, then CSS, then eventually MySQL and Javascript, not too hard. Then I started on Java, which I love


----------



## Technik (Aug 24, 2011)

[delete]


----------



## boondoklife (Aug 24, 2011)

I just wanted to add my 2 cents in on this topic:

First off you need to know what you are going to be "programming" and what platforms it will be run on. If you are aiming for a widely compatible language, and I mean beyond just mac/pc/linux/or web-browsers, I would aim for C/C++ as they tend to be the most useful. C is also a great place to start for wii programming!

Java is great for if you are working only on platforms that support it. I have written a couple apps in java and it is a nice and robust language.

If you are just looking to do website related stuff then good luck! You will not only have to learn the markup languages (HTML/CSS) but also javascript. In addition to those you will also have to contend with the cross-browser issues that come with web authoring/programming.

As for learning them, I usually find a "Sams teach yourself XXX" at the library and use that as a primer. They are not the be all end all and will have some bad examples, but for the most part they are decent. If you do happen to go with C or a similar language, make sure you look into buffer overflows and pointers as they can be some of the biggest beasts around.


----------



## Deleted_171835 (Sep 18, 2011)

Satirical said:
			
		

> +1, this is all very good advice, w3schools is amazing as well as cplusplus and learn-programming. Of course if you are very passionate about it and you'd like to have a career in it, try taking up a Degree in it, or doing a high-level course in Software Engineering.
> 
> I skipped VB and did some Web languages first, starting from the basics, HTML, then CSS, then eventually MySQL and Javascript, not too hard. Then I started on Java, which I love


----------



## Coto (Sep 18, 2011)

C# all the way (not C++), and you could use TurboC to begin with.

Do some reads about programming, though. Or you won't understand anything.

i.e:

arrays, pointers, functions, cpu usage, variables, struct, etc.


----------



## boondoklife (Sep 18, 2011)

@Coto, out of curiosity why do you say not c++?


----------



## KingBlank (Feb 29, 2012)

Code academy is a great new website for learning java, new tutorials being added every now and then


----------



## Hyro-Sama (Feb 29, 2012)

Khan Academy has a pretty good tutorial for python.


----------



## thiefb0ss (Mar 5, 2012)

I's go with Python, it's easy to learn and has built-in functionality in most Linux/GNU distros.


----------



## notmeanymore (Jul 8, 2012)

The most basic, yet comprehensive programming guide ever: http://www.greenteap...om/thinkpython/
Honestly the whole deal about languages isn't that big a deal. I can think things through better in Python, but the language I use most of the time is Lua for the Corona SDK.
Once you've learned what different concepts are (which is the main goal of ThinkPython, instead of just teaching you Python), for me it's just been a matter of browsing an API page and a touch of googlefu. Not the best way of getting things done, but an easy way for a beginner to handle multiple languages.

And I gotta say, Python is the most versatile language I've ever seen. Quick and dirty script? Of course. Game development? Simple. Web design? Can do. Twitter feed? Why the hell not?
You name it, Python'll do it.


----------



## Deleted-185407 (Jul 8, 2012)

Personally I think Java is the best language to start off with, since it's easier to fix any errors in your code and quicker to dive into. Just download a standard Java IDE such as Eclipse and you're good to go. I'd stick to basic console applications for a good while, then have a look into stuff like Swing and maybe some graphical Java libraries. You can do quite a lot in Java, and Java is in fact one of the most popular languages in the development community. Java is pretty fast these days, cross-platform, and just much more easier to use.

I only recommend learning C/C++ when you actually understand the basics of a programming language. Most programming languages are pretty similar and only have a few differences between them. If you're able to use one programming language well, then you can easily adapt to others. The main reason to learn C/C++ is to really understand how memory works on a lower level, and if you really need a huge amount of power and finer control of memory (very unlikely for a newbie). In Java, memory management is completely hidden from the developer, but by learning C/C++ and how memory works, you can become a better developer in other languages. I guarantee you you're going to get a lot of memory-based errors when you're coding with C/C++. It's just not something that someone new to programming should have to deal with when they might not even know what a "for" conditional is.

Just to give some background about myself, I've recently finished a 4-year BSc. in Software Development (with Game Development added), and I'm currently working as a software developer in Ericsson.


----------



## TomNook (Jul 9, 2012)

I CODE IN JAVA for Minecraft.
I code my own client hack


----------



## urbanman2004 (Feb 26, 2013)

nice starting points... i will refer to this later


----------



## Guerillaz (Mar 8, 2013)

I've dabbled in Visual Basic and I have to say, my "Hello World" program is coming along nicely. LOL


I've only played with Visual Basic so I can't help too much but I am in college and looking into programming outside of my networking engineer major. Cisco is my b*tch now lol


----------



## Jaems (Mar 8, 2013)

I started with C then C++ then moved more toward web-dev, but like others in the thread have suggested, Python is a great scripting language to help introduce you to programming and also very versatile.

I strongly recommend you take a look at Zed Shaw's Learn Python The Hard Way. I know it sounds scary, but believe me when I say this is one the best introductions to programming that I've seen.


----------



## Ubuntuの刀 (Mar 10, 2013)

since this thread is stickied, The New Boston is an excellent place in my opinion to learn how to code. Python, Java, C, C++, C sharp(cant do the symbol), Ruby, and some other things. The website is useful overall, even though it's a small site.


----------



## shakirmoledina (Mar 10, 2013)

I really feel php as a scripting language is the best starting point.
Its simpler than .NET languages and also ASP.NET. It will allow you to make any program like I have worked on hospital,school,crops mgmt, pharmacy,pos etc systems and they work well.

They are web based (something that is very important these days) and cross-compatible because like facebook, all you need is a browser.
I started with c# but you have to go a long way until you reach a good point.

Its not very good with games but for that we have 
UNITY Engine (the best there is,was and ever will be IMO)


----------



## robgraves (Apr 5, 2013)

I personally started with C++, and then started working on Python.


----------



## Rydian (Apr 5, 2013)

I've been considering what to do with this thread for a while.  The obvious first response is "Rydian, just rewrite it like you tend to do", but the issue is that "programming" is a very large category.  Does somebody want to do simple HTML+CSS stuff for a website, or do they need server-side scripting?  Are they going to be needing any additional components, such as databases?  Would they be better off with an interpreted or a compiled language?  Do they need a wide library of available functions, or will they be fine making their own?  Is their target platform one that even has libraries available, or that certain languages can run on?  Are they free to jump right into a certain language, or are they trying to do something that would require technical understanding at a more basic level first?  Is a high-level language even an option?

I'm going to unsticky this and just leave it up to each person to ask themselves.  This isn't too common of a question so the forums won't exactly get flooded, and it's a question that's best answered on a case-by-case basis, since a person's intentions can vary _so wildly_, so the range of info available to them would too.


----------



## Fishaman P (Apr 5, 2013)

Start with Java in the Netbeans IDE.
After that, move on to C.
C just makes all of Java's annoyances disappear.


----------



## Foxi4 (Apr 5, 2013)

Fishaman P said:


> Start with Java in the Netbeans IDE.
> After that, move on to C.
> C just makes all of Java's annoyances disappear.


...why not start with C then? That's what I did - it's the most basic form of _"C-Like"_ languages, and that includes C, C++, Java and JavaScript and others. Even the most basic knowledge of C gives you a foothold in learning many other languages, plus it translates to native code unlike, say, JavaScript and Java.

//inb4RydianTalkingAboutJIT


----------



## Rydian (Apr 5, 2013)

Pft, Desmume does JIT now, and it's such a speed boost that 'tempers are jizzing their pants over it.

Don't you want to jizz your pants, Foxi?


----------



## Foxi4 (Apr 5, 2013)

Rydian said:


> Pft, Desmume does JIT now, and it's such a speed boost that 'tempers are jizzing their pants over it.
> 
> Don't you want to jizz your pants, Foxi?


Somehow I knew you'll mention it... HMPH! 

Well, yeah, it's a nice thing, but I still thing that C is the basis that people should start with.


----------



## Fishaman P (Apr 6, 2013)

Foxi4 said:


> ...why not start with C then? That's what I did - it's the most basic form of _"C-Like"_ languages, and that includes C, C++, Java and JavaScript and others. Even the most basic knowledge of C gives you a foothold in learning many other languages, plus it translates to native code unlike, say, JavaScript and Java.
> 
> //inb4RydianTalkingAboutJIT


Java's plentiful exceptions are helpful at first, and they reinforce good habits.
However, they quickly get annoying when you know that you're smarter than the JRE.
For example, in C, if you make array[10][2], array[19][0] is valid, and it is equivalent to array[9][1], because that's how arrays are allocated in _every language_. Java's JRE will barf if you try to do that.


----------



## Rydian (Apr 6, 2013)

Foxi4 said:


> Somehow I knew you'll mention it... HMPH!
> 
> Well, yeah, it's a nice thing, but I still thing that C is the basis that people should start with.


As far as learning programming in general, C _first_ is like dropping them in the deep end of the pool.


----------



## Coto (Apr 6, 2013)

boondoklife said:


> @Coto, out of curiosity why do you say not c++?


 
a 4 year reply, but because C++ is pretty much an extended C, (with some derivatives on calling more functions located on memory, or more "variety" while treating data on memory [you don't need that quirky tricks]) but in the end the "pure" C is the way to go if you want to think upon a rigid structure, with a good concept of data held in both our head and the machine. And pointers and such to retrieve those


----------



## Ubuntuの刀 (Apr 6, 2013)

Go Python, Java and/or C++. Unless you want to make websites, that is an absolute beginner way to learn to program.


----------



## Foxi4 (Apr 6, 2013)

Rydian said:


> As far as learning programming in general, C _first_ is like dropping them in the deep end of the pool.


Oh, I don't know about that. I started off with C and to be honest, when we got introduced to JavaScript at Uni, I found it to be messy and convoluted in comparison.


----------



## Rydian (Apr 6, 2013)

Foxi4 said:


> Oh, I don't know about that. I started off with C and to be honest, when we got introduced to JavaScript at Uni, I found it to be messy and convoluted in comparison.


People like you tend to start off with technical know-how and such anyways.  The average person barely knows syntax for typing an e-mail, let alone how to format a function with arguments.  There's also the development environment, and people being required to jump into things like compiling a binary and such.  That's why interpretert languages like Python are often suggested for somebody's first step, since it's relatively less hassle and confusion.


----------



## KingBlank (Apr 6, 2013)

If you play minecraft then start programming turtles+computers in the computer craft mod (its also in tekkit and ftb)
computercraft uses lua, which is a pretty nice language.


----------



## gifi4 (Apr 7, 2013)

Rydian, I honestly was wondering the same th


KingBlank said:


> If you play minecraft then start programming turtles+computers in the computer craft mod (its also in tekkit and ftb)
> computercraft uses lua, which is a pretty nice language.


You're watching programming with Guude.
Any chance that your're a fan of Guude?


----------

