# What would be a good programming language to learn if you're a beginner to programming?



## Deleted User (May 6, 2015)

I've been wanting to get into programming for quite a while now, but I don't know what programming language would be good for someone who is a complete beginner to programming, I want to try to start with one that's at least_ slightly_ easy.


----------



## zoogie (May 6, 2015)

Tomato Hentai said:


> I've been wanting to get into programming for quite a while now, but I don't know what programming language would be good for someone who is a complete beginner to programming, I want to try to start with one that's at least_ slightly_ easy.


Python or C/C++.

If anybody recommends Java to you, club them over the head with a blunt heavy object.


----------



## sarkwalvein (May 6, 2015)

Python. Interpreted makes the learners life joyful.


----------



## VinsCool (May 6, 2015)

Currently learning C. A bit difficult for beginners, but doable.


----------



## migles (May 6, 2015)

usually java is the language pointed for begginers. but fuck that.
java sucks.
imho java is just a sandbox... you can build stuff on it, but you will live on a closed box...


better learn actual C/C++
IMO is the best language...


----------



## sarkwalvein (May 6, 2015)

migles said:


> usually java is the language pointed for begginers. but fuck that.
> java sucks.
> imho java is just a sandbox... you can build stuff on it, but you will live on a closed box...
> 
> ...


 
I am a C/C++ programmer mainly.
But this describes my opinion on C: http://techcrunch.com/2015/05/02/and-c-plus-plus-too/


----------



## del_delly (May 8, 2015)

VinsCool said:


> Currently learning C. A bit difficult for beginners, but doable.


 
How did you find the documentation to compile stuff in the correct version, to avoid compilation failed?


----------



## sarkwalvein (May 8, 2015)

del_delly said:


> How did you find the documentation to compile stuff in the correct version, to avoid compilation failed?


 
If you want to learn programming in C I recommend you install some version of Linux, even in a virtual machine.
You get in touch with the real tools at the low level, and everything is very easy to obtain just using yout package managing software. (yum or apt-get, very easy to use even from the terminal)
If you install any Linux, let's say Debian, then be sure to install development packages (gcc, etc.)
There are linux man pages for every standard function in C, so that also helps.
I would also suggest using a linux distro to learn Python.
Actually, I would suggest a linux box for any kind of programming learning.
There are C tutorials all around the web anyway.
If you happen to install some linux and have problems compiling C in there, just ask here.

EDIT: No matter your OS, you can easily and legally install a virtual machine with linux that would run from your desktop as if it were just another program. No pirating required at all, everything is free (but I know this may be a letdown for the average temp user).
Just get VirtualBox and a Linux Distro CD image, and begin with the fun!


----------



## froatsnook (May 8, 2015)

I would recommend learning Javascript, HTML, and CSS.  The browser is an absolutely amazing environment for learning to program.

Or python if you really want to avoid the browser.  IMO, anyone recommending that you start out learning C++ or C is probably a sadist .  And I say this as someone who regularly programs in C++ for his day job!


----------



## sarkwalvein (May 8, 2015)

froatsnook said:


> I would recommend learning Javascript, HTML, and CSS. The browser is an absolutely amazing environment for learning to program.
> 
> Or python if you really want to avoid the browser. IMO, anyone recommending that you start out learning C++ or C is probably a sadist . And I say this as someone who regularly programs in C++ for his day job!


 
I agree... that's the reason I said:


sarkwalvein said:


> Python. Interpreted makes the learners life joyful.


 
and


sarkwalvein said:


> I am a C/C++ programmer mainly.
> But this describes my opinion on C: http://techcrunch.com/2015/05/02/and-c-plus-plus-too/


 
But... it seems the masochism is strong in this thread.


----------



## boomario (May 8, 2015)

I started with C/C++ and i don't see a problem on beginning with him,
But C# and object oriented programming is still a hell for me, sometimes i can't understand a sh*t there.


----------



## sarkwalvein (May 8, 2015)

boomario said:


> I started with C/C++ and i don't see a problem on beginning with him,
> But C# and object oriented programming is still a hell for me, sometimes i can't understand a sh*t there.


 
One of the reasons not to start with C, it makes you so fixed to a very low level kind of programming that later you can't take up to the sky and look things from a more generic high level, later it makes design patterns difficult to get in contact with.


----------



## Coto (May 8, 2015)

http://en.wikipedia.org/wiki/Brainfuck

no really, when i said "I want to be a better coder", i started learning/programming Brainfuck.

so when you start coding in any language it will be a dream


----------



## boomario (May 8, 2015)

sarkwalvein said:


> One of the reasons not to start with C, it makes you so fixed to a very low level kind of programming that later you can't take up to the sky and look things from a more generic high level, later it makes design patterns difficult to get in contact with.


Well, if that is true seems like i'm experiencing exactly that problem right now,
in that case i recommend starting with something else than C/C++.


----------



## gudenau (May 8, 2015)

I think you should start with Java, that is what I started with and it will allow you to easily go into other c like languages. Some large corporations are also starting to migrate to Java from C/C++, I know for a fact that Walmart is doing this.



zoogie said:


> Python or C/C++.
> 
> If anybody recommends Java to you, club them over the head with a blunt heavy object.


Why? Java is being adopted bye the large corporations?


----------



## VinsCool (May 8, 2015)

I don't see what's wrong with JAVA. This shares a lot of similarities with C/C++, so it may be easy to jump from one to another if the guy wishes to.


----------



## Nollog (May 8, 2015)

gudenaurock said:


> Why? Java is being adopted bye the large corporations?


 
where have you been? it's been cute to hate Java since minecraft.


when people ask this question I always try to think what the asker wants to do with programming.
since you said you want easy, start with BASIC, a dead but influential language. it's super easy to do something fun in and not get discouraged.

or unity, because it's got the early payoff and a lot of tools and support around it.

you're just looking for a starting point, think bigger next time.


----------



## gudenau (May 8, 2015)

VinsCool said:


> I don't see what's wrong with JAVA. This shares a lot of similarities with C/C++, so it may be easy to jump from one to another if the guy wishes to.


Thats what I say. :-D


----------



## sarkwalvein (May 8, 2015)

VinsCool said:


> I don't see what's wrong with JAVA. This shares a lot of similarities with C/C++, so it may be easy to jump from one to another if the guy wishes to.


 
Actually I would recommend Java over C/C++ for learning.
It doesn't encourage you to program like a hack.
You should learn pointer math and its implications, null terminated strings, mallocs, frees and all that shit when you're dead and in hell... Or when necessary, but not at the beginning.

PS: When you start to learn programming you want to develop good practices, structures and notions that would later allow you to create and maintain big programs, yours or from others, how to code properly in a way that is easily read and understood, how to document properly. I would say that something important that you shall learn is e.g. design patterns, and design patterns and C are not friends.


----------



## Deleted User (May 8, 2015)

Nollog said:


> where have you been? it's been cute to hate Java since minecraft.
> 
> 
> when people ask this question I always try to think what the asker wants to do with programming.
> ...


 
I've actually been wanting to start a project in Unity for, well, a few months actually. Does Unity use it's own programming language?


----------



## Lucifer666 (May 8, 2015)

I started with C++ its piss easy


----------



## sarkwalvein (May 8, 2015)

Tomato Hentai said:


> I've actually been wanting to start a project in Unity for, well, a few months actually. Does Unity use it's own programming language?


 
From Wikipedia:


> The game engine's scripting is built on Mono, the open-source implementation of the .NET Framework. Programmers can use UnityScript (a custom language with *ECMAScript*-inspired syntax, referred to as *JavaScript* by the software), C#, or Boo (which has a Python-inspired syntax).


So you should learn whatever suits you best:

Javascript (alike)
C#
Python (alike)
Python is everywhere, and I prefer that over Javascript.
C# is actually a nice language, kind of similar to Java and C++.
As they would say, choose your destiny.


----------



## gudenau (May 8, 2015)

Tomato Hentai said:


> I've actually been wanting to start a project in Unity for, well, a few months actually. Does Unity use it's own programming language?


 
I think it is mainly C#.


----------



## sarkwalvein (May 8, 2015)

Lucifer666 said:


> I started with C++ its piss easy


 
To be honest, I don't find C++ difficult, but I strongly believe it can make you a bad coder if used inappropriately which is quite common.


----------



## VinsCool (May 8, 2015)

sarkwalvein said:


> From Wikipedia:
> 
> So you should learn whatever suits you best:
> 
> ...


 
How python is similar to C? I'm curious.


----------



## sarkwalvein (May 8, 2015)

VinsCool said:


> How python is similar to C? I'm curious.


 
I don't find Python so similar to C actually.


----------



## Deleted User (May 8, 2015)

sarkwalvein said:


> From Wikipedia:
> 
> So you should learn whatever suits you best:
> 
> ...


 
I'm probably gonna stick to Python, then. Maybe learn a bit of JavaScript and C#, too.


----------



## VinsCool (May 8, 2015)

sarkwalvein said:


> I don't find Python so similar to C actually.


 
Sorry. My question was: Is there any similarities from C to Python?


----------



## Deleted User (May 8, 2015)

Oh, also, does anyone know what Ruby is like?
I realized a couple days ago that it was installed on my computer already, even though I don't remember installing it.


----------



## sarkwalvein (May 8, 2015)

VinsCool said:


> Sorry. My question was: Is there any similarities from C to Python?


 
Yes, both are very structured and have very similar flow control commands.
You could, but shouldn't, program Python as a very procedural language emulating C.
But Python has many high level data types not available in C.
Mmm... And also Python has a huge standard library not available in C.


----------



## VinsCool (May 8, 2015)

sarkwalvein said:


> Yes, both are very structured and have very similar flow control commands.
> You could, but shouldn't, program Python as a very procedural language emulating C.
> But Python has many high level data types not available in C.
> Mmm... And also Python has a huge standard library not available in C.


 
That's what I wanted to know. Thanks


----------



## JoostinOnline (May 8, 2015)

It depends. If you want to learn something, learn a form of C. If you want to have a starter before that, I recommend Java (despite what zoogie said). It's a great way to learn, although not that useful in the end.

If you do go with Java, take a look at Robocode. It's a very fun way to learn, especially if you have friends to battle with.


----------



## FAST6191 (May 8, 2015)

To answer the question of the thread/OP I did write the sticky at the top of the forum section http://gbatemp.net/threads/so-you-want-to-learn-to-program.371255/

It says most of what I would say here, though as you have not expressed a desire to program emulators, video codecs, drivers and such like then yeah go for something simpler and scripting based (Python, Lua, Perl) for your first language.



froatsnook said:


> I would recommend learning Javascript, HTML, and CSS.  The browser is an absolutely amazing environment for learning to program.
> 
> Or python if you really want to avoid the browser.  IMO, anyone recommending that you start out learning C++ or C is probably a sadist .  And I say this as someone who regularly programs in C++ for his day job!



Granted javascript is Turing complete (unlike the other two mentioned*) and I suppose it is better than suffering php, though if you want to get paid in fairly short order and stuff going in even shorter order then php is a good language to learn.

*HTML5 fans are invited to fight me.



Nollog said:


> where have you been? it's been cute to hate Java since minecraft.
> 
> 
> when people ask this question I always try to think what the asker wants to do with programming.
> since you said you want easy, start with BASIC, a dead but influential language. it's super easy to do something fun in and not get discouraged.



Since minecraft? Please; Java has been the stuff of security nightmares, installation nightmares, maintenance nightmares, web browsing nightmares, more security nightmares and more besides since before minecraft was an incomplete twinkle in the eye of its creator. Java's taint was mainly limited to the business software world since everybody dropped it from websites though so not everybody felt it.

As for Basic please no. It has awful concepts underpinning it and is often considered one of the worst things to happen to early computing.


----------



## grossaffe (May 8, 2015)

JoostinOnline said:


> It depends. If you want to learn something, learn a form of C. If you want to have a starter before that, I recommend Java (despite what zoogie said). It's a great way to learn, although not that useful in the end.
> 
> If you do go with Java, take a look at Robocode. It's a very fun way to learn, especially if you have friends to battle with.


Ah, Robocode, that takes me back to my first semester of college.


----------



## JoostinOnline (May 8, 2015)

grossaffe said:


> Ah, Robocode, that takes me back to my first semester of college.


That's where I learned it.  Our class had tournaments for extra credit.  I spent so long on my bot, and out of terrible luck the moment the match started every robot turned and fired at mine.  It exploded in a few seconds, and I screamed "NO!!!!!!!!!"  I still laugh remembering that devastation.


----------



## sarkwalvein (May 8, 2015)

FAST6191 said:


> To answer the question of the thread/OP I did write the sticky at the top of the forum section http://gbatemp.net/threads/so-you-want-to-learn-to-program.371255/
> 
> -snip-


Very good article.
But I would suggest, even if it is anecdotal, to name some commonplace programming languages used in academics/research:

MATLAB and its FOSS look-alikes Octave and SciLAB (very used in research related to engineering)
R (very used in research that uses lot of statistics)
FORTRAN (very used by the old professor still giving classes that doesn't want to leave the past behind)
LaTeX (if CSS and HTML were there, why not the defacto standard for scientific paper typesetting)


----------



## grossaffe (May 8, 2015)

JoostinOnline said:


> That's where I learned it. Our class had tournaments for extra credit. I spent so long on my bot, and out of terrible luck the moment the match started every robot turned and fired at mine. It exploded in a few seconds, and I screamed "NO!!!!!!!!!" I still laugh remembering that devastation.


haha!  I didn't have time to make my robot awesome.  One thing I had wished I learned about was reflection, though, as that allows you to access private fields of a parent class, so I believe it would be possible to cheat and make your robot invincible.


----------



## RodrigoDavy (May 8, 2015)

I would recommend C,C++, Python or Java

Python, this is a great language. The most user friendly one, very well documented... I love it! It's a scripting language, very useful to automate some task in Linux environments and it also has usage on the web.

C is not as hard as people make it out to be. It's actually very simple to use, I think what most people complain about C is that you actually have to understand the language to use it, but to be fair the language is simple enough that understanding is not hard unless you're really lazy. Use C or C++ if you want to program for consoles/handhelds.

C++ is C with object oriented programming. I would recommend learning it after you grasp the basics of C, since it's basically the same language as C but with more resources.

Java is good because it is widely used. If you want to make Android applications this is the way to go. But I find Java to be a really complicated language, to this day I don't understand how it works. It basically has methods for doing everything you can imagine but most of the time I don't really know what I'm doing. Nevertheless it's very widely used so there's a great advantage in dominating Java


----------



## 4ur0r (May 8, 2015)

zoogie said:


> Python or C/C++.
> 
> If anybody recommends Java to you, club them over the head with a blunt heavy object.


 
^ This

C++ is definitely the better to start with since it's not interptreted


----------



## sarkwalvein (May 8, 2015)

4ur0r said:


> ^ This
> 
> C++ is definitely the better to start with _*since it's not interptreted*_


 
The other way around.
For learning programming interpreted is best as you can easily go through your code, run, modify, run, and get used to how things works by experience FAST without having to deal with the compile-link-execute process.
When you already have some feeling for programming logic and algorithms I think it is a good moment to move from interpreted.
(Of course, you could always start from scratch with a compiled language but I think it is not the most effective approach)


----------



## filfat (May 8, 2015)

C# Is a great starting language it also quote easy to learn C++ once you know C#.
Anyhow don't learn python just yet; there's _no_ real use for it (for example how many large application uses it?) If you want to learn a high level language go with Javascript (EMCA 6)



sarkwalvein said:


> Actually I would recommend Java over C/C++ for learning.





VinsCool said:


> I don't see what's wrong with JAVA. This shares a lot of similarities with C/C++, so it may be easy to jump from one to another if the guy wishes to.


 


Java is not relevant anymore, and saying its a good language is a lie; however i can agree on the fact that it's easy  C# hower is the way to go (especially now when C# is cross platform)


----------



## Arras (May 8, 2015)

Most people will honestly just recommend whatever they use/started with. I use C# myself and rather like it. It's similar to Java and very object-oriented. It takes some getting used to, but it's really useful to know how to create decently structured code instead of just hacking everything together in one file with 2000+ lines. You can also use it in Unity if you want, which might be a pretty good idea to start out with, since you can use the Unity editor combined with simple scripts to practice things and get fun visual feedback on what you're doing.
Microsoft also offers Visual Studio for free now, so I recommend downloading that. I think it has support for C(++) and a few other things too. https://www.visualstudio.com/products/visual-studio-community-vs

(also, I really don't think it's a good idea to start with Javascript. Javascript has a RIDICULOUS number of bad things you can do)


----------



## filfat (May 8, 2015)

Tomato Hentai said:


> I've actually been wanting to start a project in Unity for, well, a few months actually. Does Unity use it's own programming language?


 
No, it uses C# (Like about anything these days)


----------



## sarkwalvein (May 8, 2015)

filfat said:


> Java is not relevant anymore, and saying its a good language is a lie; however i can agree on the fact that it's easy  C# hower is the way to go (especially now when C# is cross platform)


Really?
Everyday around me I see Java used more and more, but I mostly know what they use in academics/research in Universities, and in some companies related to the automotive industry.
Not that I am defending Java, only saying what I see in my very narrow view/contact with professional programming.
I myself don't normally program Java anyway, most of my work is either in C/C++ or in a specific engineering research related scripting language (MATLAB & friends).


----------



## filfat (May 8, 2015)

sarkwalvein said:


> Really?
> Everyday around me I see Java used more and more, but I mostly know what they use in academics/research in Universities, and in some companies related to the automotive industry.
> Not that I am defending Java, only saying what I see in my very narrow view/contact with professional programming.
> I myself don't normally program Java anyway, most of my work is either in C/C++ or in a specific engineering research related scripting language (MATLAB & friends).


 
Weird how _all_ the development job listings asks for .NET developers (That might just be Sweden and US though)


----------



## Deleted User (May 8, 2015)

sarkwalvein said:


> Really?
> Everyday around me I see Java used more and more, but I mostly know what they use in academics/research in Universities, and in some companies related to the automotive industry.
> Not that I am defending Java, only saying what I see in my very narrow view/contact with professional programming.
> I myself don't normally program Java anyway, most of my work is either in C/C++ or in a specific engineering research related scripting language (MATLAB & friends).


 
I see Java being used quite often myself. A lot of the hacking utilities I have on my computer are in Java, and quite a few other types of programs, too.


----------



## del_delly (May 8, 2015)

sarkwalvein said:


> !


 
No anon, once you got to "failed to compile, *some error*" How did you adjust the compiler to the correct C version the tutorial is using? 
How did you find the language documentation for the version, to correct your code so it compiled?


----------



## sarkwalvein (May 8, 2015)

filfat said:


> Weird how _all_ the development job listings asks for .NET developers (That might just be Sweden and US though)


 
Perhaps that is just the way it is, not in my field (engineering/research), but I believe you are much more knowledgeable than me in the actual IT/development programming business. So I take your word.



del_delly said:


> No anon, once you got to "failed to compile, *some error*" How did you adjust the compiler to the correct C version the tutorial is using?
> How did you find the language documentation for the version, to correct your code so it compiled?


 
Sorry, but that is just too few information to know what are yo talking about,
What tutorial? What compiler? What error?
The reason I suggested using a linux distro with development packages installed is that all is already set up and working correctly.


----------



## filfat (May 8, 2015)

sarkwalvein said:


> Perhaps that is just the way it is, not in my field (engineering/research), but I believe you are much more knowledgeable than me in the actual IT/development programming business. So I take your word.


 
I'm not sure thats true 
However, might just be an enterprise thing, seems like all the schools and workplaces I have been looking at teaches/uses .NET (Most likely because of ASP.net, Xamarin and Unity) 

Also, it's not that Java is all bad, theres quite a lot of good things (eg Cross platform and its rather quick to get something running; kind of like Windows Apps)


----------



## del_delly (May 8, 2015)

sarkwalvein said:


> Sorry, but that is just too few information to know what are yo talking about,


 
I am talking about a hypothetical scenario. As far as I understand, half the reason to go Lua/Python for learning is because they have proper versions, meaning so long they match up whatever you do is fine. 
For C and C++, what version you are using is a mess. And from the 3-4 C tutorials I have read, none of them ever adress this issue.


----------



## filfat (May 8, 2015)

Also, you could always just go with web development as a start 
http://www.manifoldjs.com/ <-- Would allow you to create apps for all platforms


----------



## sarkwalvein (May 8, 2015)

del_delly said:


> I am talking about a hypothetical scenario. As far as I understand, half the reason to go Lua/Python for learning is because they have proper versions, meaning so long they match up whatever you do is fine.
> For C and C++, what version you are using is a mess. And from the 3-4 C tutorials I have read, none of them ever adress this issue.


 
Oh well... Yes, actually you have kind of incompatibility with actual versions of the language standard (for example compiler not being compliant with C++14), but that is a problem mostly with old Microsoft compilers.
Stick to a (always easily obtainable) updated version of gcc and you will not have these problems that relate to the core language and the STL.
Then, the actual headache relating C/C++ programming, is that you very often (always?) use third party libraries that are not part of the standard (because there is so much missing), like Qt, boost, etc, etc, etc... and sometimes for a project you need a specific library version of a third party that you also need to get to compile, and headaches start arriving.


----------



## FAST6191 (May 8, 2015)

sarkwalvein said:


> Very good article.
> But I would suggest, even if it is anecdotal, to name some commonplace programming languages used in academics/research:
> 
> MATLAB and its FOSS look-alikes Octave and SciLAB (very used in research related to engineering)
> ...



*starts rocking in the corner at mention of matlab*
Granted taking the time to learn it meant I did in 20 minutes what others still fighting with spreadsheets did in 2 hours.

I am surprised I did not mention R, I usually mention it in passing for such articles.

I would only suggest Fortran to people that are otherwise looking at Cobol, K&R C or something so they can go in and sort problems with legacy setups. Granted the academic side still has some serious ties, I mainly notice it in astronomy related stuff but that is more because that aligns better with my interests and I am sure it is probably used lots elsewhere too.

Tex/latex. Afraid I am too cool for those and use Lyx for my multi page professional documents. I mentioned it in the articles on multimedia but I am not sure typesetting is all that relevant here.


----------



## JoostinOnline (May 8, 2015)

sarkwalvein said:


> The other way around.
> For learning programming interpreted is best as you can easily go through your code, run, modify, run, and get used to how things works by experience FAST without having to deal with the compile-link-execute process.
> When you already have some feeling for programming logic and algorithms I think it is a good moment to move from interpreted.
> (Of course, you could always start from scratch with a compiled language but I think it is not the most effective approach)


^This. This, so many times.

And for the record, I didn't start with Java. I started with TI-BASIC (if that counts), then took SCHEME in college, followed by Java. C is self-taught.

SCHEME was horribly frustrating because it is (intentionally) so limited. Because of that, you have to learn how to be creative. I'm not an exceptionally good programmer, but because of SCHEME I'm great at compacting things and making my functions flexible for future use. Unfortunately, it's not great if it's self-taught. The temptation to quit is too easy when your grade isn't on the line. You aren't going to give yourself "homework" that can lead to you screaming out of frustration (yeah, that happened to me once, and I'm normally very level-headed).

People put down Java as a learning language because they are only thinking in terms of distribution. I never use Java anymore, and I'd certainly never distribute anything written in Java. However, it's a great language to learn with, and there is no shortage of resources for guides. Combining it with Eclipse and the downloadable API that can be linked to it, you have instant access to function examples. You can test out all your stuff without having to compile too.


----------



## Nollog (May 9, 2015)

Tomato Hentai said:


> I've actually been wanting to start a project in Unity for, well, a few months actually. Does Unity use it's own programming language?


 
I've only installed it, haven't bothered doing anything with it because I have no ideas.



FAST6191 said:


> Since minecraft? Please; Java has been the stuff of security nightmares, installation nightmares, maintenance nightmares, web browsing nightmares, more security nightmares and more besides since before minecraft was an incomplete twinkle in the eye of its creator. Java's taint was mainly limited to the business software world since everybody dropped it from websites though so not everybody felt it.
> 
> As for Basic please no. It has awful concepts underpinning it and is often considered one of the worst things to happen to early computing.


It only became popular to hate java after minecraft, I didn't say anything about any legitimate concerns.

basic is easy, it's a good base to start from if she wants to actually finish something with programming.
most others will probably cause her enthusiasm to fizzle out.





filfat said:


> Weird how _all_ the development job listings asks for .NET developers (That might just be Sweden and US though)


.net is becoming very popular, but java is still wanted, and businesses love using the same programs for decades, so will at least be around for upkeeping.


----------



## FAST6191 (May 9, 2015)

Nollog said:


> It only became popular to hate java after minecraft, I didn't say anything about any legitimate concerns.
> 
> basic is easy, it's a good base to start from if she wants to actually finish something with programming.
> most others will probably cause her enthusiasm to fizzle out.



I quite assure you Java was loathed by basically everybody that had to maintain computers, give or take those making good money from virus cleanups, long before minecraft. Hate does not have to be unjustified. Edit. Also http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html which was from 2005.

Basic is easy, I am not about to argue otherwise. It is however a bad programming language from a lot of perspectives and the very last thing you want to be doing is unlearning bad habits. Equally if you can not keep your enthusiasm when using something like python then you picked the wrong first project.


----------



## Ericthegreat (May 9, 2015)

Tomato Hentai said:


> I've been wanting to get into programming for quite a while now, but I don't know what programming language would be good for someone who is a complete beginner to programming, I want to try to start with one that's at least_ slightly_ easy.


Learn java, then after you've made somthing, switch to unity and learn C# (is a easy switch from java)

EDIT: Perhaps these days there are good C# for unity tutorials. But the aforementioned was just my path, but I will say I am probably the only person in this thread wgo has published at least semi successful app, created with unity.


----------



## the_randomizer (May 9, 2015)

I've been thinking about programming, even tried it in university classes, however, I fear lest I made a mistake in wanting to learn it. They had us learn C# to begin with, I take it C+/C++ would be better vantage point to start with? Heck, maybe I'm not meant to learn it, which would explain why I failed the course twice but, C+ sounds like the best way to start.


----------



## The Real Jdbye (May 9, 2015)

Personally, I started with Visual Basic, didn't like it, went over to Game Maker and learned GML, and that got me familiar with the syntax that many languages share, like PHP, C, Java.
Then I went over to Delphi (Pascal) and liked how powerful the IDE was, and how easy the language was once I got used to it. I also used C/C++ a little but never really got into it. It's lower level than most others so it's probably not the best starting point.

Since then I've been using PHP, C# and a bit of java. C# is my current favorite.
think C# is a good starting point nowadays as it's a modern high-level language that is used professionally and Visual Studio is powerful not to mention free.
Unity is probably a better starting point for game development. Some people consider it the modern day equivalent to Game Maker.
Java is pretty easy too, and very similar to C#, but java isn't used much nowadays so there's not much point in learning it unless you want to do minecraft modding or something.


----------



## Alkéryn (May 9, 2015)

Well I started with HTML5 but I dont know if I can call it a language so I would recomand you c or c++(beter of both to begin(they are diferent there isn't a better one)) but they are maybe a bit dificult for a beginer just don't begin with java or assembly
I would realy recomand you c++ and because you are canadian I admit that you speak french so I realy recomand you this site :
Learn c++ there


----------



## JoostinOnline (May 9, 2015)

FAST6191 said:


> I quite assure you Java was loathed by basically everybody that had to maintain computers, give or take those making good money from virus cleanups, long before minecraft. Hate does not have to be unjustified.


 
Those aren't reasons not to use Java as a learning language.  You (and many other people in this thread) keep seeming to think the title is "What would be a good programming language to use if you want to immediately distribute programs?"  It's about learning, and Java is good for learning.  I'm going to make the next part big so plenty of people will see it.

*It doesn't matter if your Hello World app has security flaws.*


----------



## VinsCool (May 9, 2015)

Alkéryn said:


> Well I started with HTML5 but I dont know if I can call it a language so I would recomand you c or c++(beter of both to begin(they are diferent there isn't a better one)) but they are maybe a bit dificult for a beginer just don't begin with java or assembly
> I would realy recomand you c++ and because you are canadian I admit that you speak french so I realy recomand you this site :
> Learn c++ there


 
That's where I study currently. This, online tutorials on various websites and my book by Claude Dalaunoy. Also with opensource codes, trial and errors. Very important. Trying and keeping it until your code work is what leads to success.

Oh and I think Tomato do not speak french


----------



## Alkéryn (May 9, 2015)

VinsCool said:


> That's where I study currently. This, online tutorials on various websites and my book by Claude Dalaunoy. Also with opensource codes, trial and errors. Very important. Trying and keeping it until your code work is what leads to success.
> 
> Oh and I think Tomato do not speak french


 
My bad there still are other good website to learn in english
THis two for example 1 and 2 wich is the official one


----------



## the_randomizer (May 9, 2015)

Yup, I most definitely came to the conclusion, after reading all the comments on here that my brain is not only incapable of learning even the most rudimentary programming languages, but that it simply is not my forte, nor the right path for me to take  I tried, oh how I tried, big mistake. very big mistake.


----------



## Alkéryn (May 9, 2015)

the_randomizer said:


> Yup, I most definitely came to the conclusion, after reading all the comments on here that my brain is not only incapable of learning even the most rudimentary programming languages, but that it simply is not my forte, nor the right path for me to take  I tried, oh how I tried, big mistake. very big mistake.


 
With time perseverance you can achieved this no one is good in the begining exept somes but You can do it if you want to 
personaly my bigest enemy is not that I'm bad but I'm realy lasy witch can be a quality in programing but sometime I'm just to lasy to code something ^^



filfat said:


> Also, you could always just go with web development as a start
> http://www.manifoldjs.com/ <-- Would allow you to create apps for all platforms


 
He is rigth web developement is super easy and to begin it could be nice to learn HTML5+CSS+PHP+Javascript as I said it sound like many but they are one of the easiest I know and it is nice to begin with and won't be a pain in your head


----------



## FAST6191 (May 9, 2015)

JoostinOnline said:


> Those aren't reasons not to use Java as a learning language.  You (and many other people in this thread) keep seeming to think the title is "What would be a good programming language to use if you want to immediately distribute programs?"  It's about learning, and Java is good for learning.  I'm going to make the next part big so plenty of people will see it.
> 
> It doesn't matter if your Hello World app has security flaws.



Though I would suggest Java over something like Basic I am not sure I can suggest it over other alternatives discussed. Indeed if we are going the aborted path/learn one language and switch to a real one later option then I would sooner suggest Scheme or something along those lines.


----------



## the_randomizer (May 9, 2015)

Alkéryn said:


> With time perseverance you can achieved this no one is good in the begining exept somes but You can do it if you want to
> personaly my bigest enemy is not that I'm bad but I'm realy lasy witch can be a quality in programing but sometime I'm just to lasy to code something ^^


 

I dunno, man, there've been times where I was reduced to tears from sheer frustration at being unable to learn, much less retain what I learned, it was infuriating, the fact I failed the basic programming class twice is something that sort of unmotivated me from wanting to learn again.


----------



## Alkéryn (May 9, 2015)

the_randomizer said:


> I dunno, man, there've been times where I was reduced to tears from sheer frustration at being unable to learn, much less retain what I learned, it was infuriating, the fact I failed the basic programming class twice is something that sort of unmotivated me from wanting to learn again.


 
then learn another programing language with another website I know when i begin c++ I got complety bored of it because I took a bad website and I was not ready for it at the time so I could only recomand to try others things and never learn a programing language just to learn it but because you want to do something with it otherwise it is easy to get bored of it


----------



## the_randomizer (May 9, 2015)

Alkéryn said:


> then learn another programing language with another website I know when i begin c++ I got complety bored of it because I took a bad website and I was not ready for it at the time so I could only recomand to try others things and never learn a programing language just to learn it but because you want to do something with it otherwise it is easy to get bored of it


 

The motivation, finding it is something I struggle with a lot, I dunno, it just...sometimes I get conflicted on why I want to learn programming lol.


----------



## JoostinOnline (May 9, 2015)

FAST6191 said:


> Though I would suggest Java over something like Basic I am not sure I can suggest it over other alternatives discussed. Indeed if we are going the aborted path/learn one language and switch to a real one later option then I would sooner suggest Scheme or something along those lines.


That would be great if he was taking a class.  Read my previous post.
http://gbatemp.net/threads/what-wou...ner-to-programming.388273/page-3#post-5485118


----------



## grossaffe (May 9, 2015)

It's okay, randomizer, programming isn't for everyone, but nothing is.  I can't draw for shit, but I don't sweat it; just means that if I need art, I go to an artist who can hopefully understand my ramblings and crude drawings and make something that fits what I picture in my head.


----------



## Alkéryn (May 9, 2015)

grossaffe said:


> It's okay, randomizer, programming isn't for everyone, but nothing is. I can't draw for shit, but I don't sweat it; just means that if I need art, I go to an artist who can hopefully understand my ramblings and crude drawings and make something that fits what I picture in my head.


True we can't be good at everything in the first but I think that if you realy want it you can,I'm a good dev and graphist ,I cook realy good but I just can't progress fast on guitar so I try like I can but I'm just not realy good at that^^
but i still progress slowly but I do


----------



## endoverend (May 9, 2015)

I've been getting into Java lately with my high school robotics team (we program in Java exclusively) but what I really started with was TI-BASIC in which I am thoroughly educated  I made a version of Tetris for a TI-83 that I am so unbelievably proud of. :/


----------



## Alkéryn (May 9, 2015)

endoverend said:


> I've been getting into Java lately with my high school robotics team (we program in Java exclusively) but what I really started with was TI-BASIC in which I am thoroughly educated  I made a version of Tetris for a TI-83 that I am so unbelievably proud of. :/


 
Yeah I had fun with it to ^^ 
in class sayin Yeah I'm working what could I do else ^^


----------



## gifi4 (May 9, 2015)

There's a huge sticky thread for this: http://gbatemp.net/threads/so-you-want-to-learn-to-program.371255/


----------



## Alkéryn (May 9, 2015)

gifi4 said:


> There's a huge sticky thread for this: http://gbatemp.net/threads/so-you-want-to-learn-to-program.371255/


 
Yeah there are good reference in there and it is well explained so good post ^^


----------



## FAST6191 (May 9, 2015)

grossaffe said:


> It's okay, randomizer, programming isn't for everyone, but nothing is.  I can't draw for shit, but I don't sweat it; just means that if I need art, I go to an artist who can hopefully understand my ramblings and crude drawings and make something that fits what I picture in my head.


I am not so sure about that.
Not everybody needs to be able to drop down to assembly level but I would say everybody does need to be able to program as far as being able to take some inputs, do some maths on it and output it and the following 50 values to a CSV or something.


----------



## TecXero (May 9, 2015)

Along with everyone else, I'd recommend C/C++.
It's a bit rough to start out on, but it's worth it. You can use it for most things you'll need or want, it's efficient, and will probably always be useful. Java is okay, but only if you need something that will be easily cross-OS compatible.


----------



## Nollog (May 9, 2015)

FAST6191 said:


> I quite assure you Java was loathed by basically everybody that had to maintain computers, give or take those making good money from virus cleanups, long before minecraft. Hate does not have to be unjustified. Edit. Also http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html which was from 2005.
> 
> Basic is easy, I am not about to argue otherwise. It is however a bad programming language from a lot of perspectives and the very last thing you want to be doing is unlearning bad habits. Equally if you can not keep your enthusiasm when using something like python then you picked the wrong first project.


 
"basically everybody that had to maintain computers", yeah, but people like that hate everything for good reasons when they're terrible. I'm talking about randoms on the internet who really don't know what they're talking about.
Back when I was learning java, it was hammered into me that it's got a very specific use-set : when you have a hundred different computer set-ups and need the same program to run on them all. (2002)

yeah, basic is like cannabis.


----------



## JoostinOnline (May 9, 2015)

TecXero said:


> Along with everyone else, I'd recommend C/C++.


I don't think you read any of the other posts.


----------



## Foxi4 (May 9, 2015)

JoostinOnline said:


> I don't think you read any of the other posts.


If you disagree with that recommendation, you're out of touch. Just about any modern programming language is based on the C syntax to some extent and C++ concepts like classes or constructors are present in both compiled and interpreted languages. C is a fantastic starting point for any programmer, whether the end-game is supposed to be C++, Java, C# or just about anything else. There's a couple of exceptions, but the general rule is that almost everything is derrivative of C simply because C is amazing, it became so ubiquitous specifically because it does what it's supposed to do without being a pain in the ass.


----------



## JoostinOnline (May 9, 2015)

Foxi4 said:


> If you disagree with that recommendation, you're out of touch. Just about any modern programming language is based on the C syntax to some extent and C++ concepts like classes or constructors are present in both compiled and interpreted languages. C is a fantastic starting point for any programmer, whether the end-game is supposed to be C++, Java, C# or just about anything else. There's a couple of exceptions, but the general rule is that almost everything is derrivative of C simply because C is amazing, it became so ubiquitous specifically because it does what it's supposed to do without being a pain in the ass.


I don't think you read the part I quoted. He said "along with everyone else", but most people didn't suggest C/C++.

The end game should never be Java, but it's an easy language to start with, and even easier to test. Plus, Robocode. 

I agree that C is awesome, it's an extremely powerful language. For most people, it's not recommended as a start up language.


----------



## Foxi4 (May 9, 2015)

JoostinOnline said:


> I don't think you read the part I quoted. He said "along with everyone else", but most people didn't suggest C/C++. The end game should never be Java, but it's an easy language to start with, and even easier to test. Plus, Robocode.  I agree that C is awesome, it's an extremely powerful language. For most people, it's not recommended as a start up language.


I don't see why not, seeing that Java which you're recommending is heavily based on it plus it introduces concepts known from C++ and its own proprietary bullshit. I also don't see how it couldn't be someone's end-game - Java is pretty widespread and used on just about any modern device, its strong point is portability. I wouldn't recommend it to a beginner though because it's infuriating, C is much more... well, logical in the way it operates.


----------



## JoostinOnline (May 9, 2015)

Foxi4 said:


> I don't see why not, seeing that Java which you're recommending is heavily based on it plus it introduces concepts known from C++ and its own proprietary bullshit. I also don't see how it couldn't be someone's end-game - Java is pretty widespread and used on just about any modern device, its strong point is portability. I wouldn't recommend it to a beginner though because it's infuriating, C is much more... well, logical in the way it operates.


Most people would disagree with that. In fact, you're the first person I've ever heard say that C is easier than Java.

As many people have pointed out, it's hated by most of the community because it requires JRE and it's insecure.


----------



## Foxi4 (May 9, 2015)

JoostinOnline said:


> Most people would disagree with that. In fact, you're the first person I've ever heard say that C is easier than Java.
> 
> As many people have pointed out, it's hated by most of the community because it requires JRE and it's insecure.


Of course it's easier - clean C doesn't have classes or objects and by extension doesn't cause any problems with inheritance etc. - it's as barebones as it gets, one clean stream of code - that's a good starting point before implementing complex concepts. The only thing you might want to worry about is memory since it's not managed. Java is hated, but it's everywhere. Java is the fossil fuel of the programming world - it's cancerous, we all wish it to just go away, but it's everywhere so we stick with it for the sake of portability.


----------



## Marth16 (May 9, 2015)

Is it strange that I think that vb.net is an easy to learn language, ideal for beginners?


----------



## Foxi4 (May 9, 2015)

Marth16 said:


> Is it strange that I think that vb.net is an easy to learn language, ideal for beginners?


The problem with Visual Basic and Basic in general is what you do with it afterwards. Visual Basic is just one step above drag-and-drop and it doesn't translate well to any other _"professional"_ language.


----------



## Marth16 (May 9, 2015)

Foxi4 said:


> The problem with Visual Basic and Basic in general is what you do with it afterwards. Visual Basic is just one step above drag-and-drop and it doesn't translate well to any other _"professional"_ language.


 
C# isn't a professional language?


----------



## Deleted User (May 9, 2015)

Marth16 said:


> C# isn't a professional language?


 
I what think Foxi4 is saying is that drag and drop isn't really a professional way of coding.


----------



## Foxi4 (May 9, 2015)

Marth16 said:


> C# isn't a professional language?


C# is not based on Visual Basic, the fact that it can use .Net is irrelevant. Visual Basic is like the Fisher Price of power tools.


----------



## Marth16 (May 9, 2015)

Foxi4 said:


> C# is not based on Visual Basic, the fact that it can use .Net is irrelevant. Visual Basic is like the Fisher Price of power tools.


 
You do realize that you can translate c# to vb.net and vice versa?


----------



## Foxi4 (May 9, 2015)

Marth16 said:


> You do realize that you can translate c# to vb.net and vice versa?


Of course you can. You can also translate Swahili to English and back, that doesn't make Swahili a Germanic language. The syntax in VB is completely different to C#, VB .Net will teach you how to use .Net, but it won't teach you C# - you're making a big logical jump there.


----------



## Deleted User (May 9, 2015)

So C# is based off of C, correct? if I learnt C before I learnt C# then does that mean I would be able to begin programming a game in Unity using C, and then continue in C#?


----------



## Foxi4 (May 9, 2015)

Tomato Hentai said:


> So C# is based off of C, correct? if I learnt C before I learnt C# then does that mean I would be able to begin programming a game in Unity using C, and then continue in C#?


If you want to do anything worthwhile in the future, learn C++ which is practically extended C.


----------



## sarkwalvein (May 9, 2015)

Foxi4 said:


> If you want to do anything worthwhile in the future, learn C++ which is practically extended C.


 
And git, and svn, and some good scripting language, Python IMHO, and SQL, and some way of networked IPC like CORBA but I prefer ICE.
Also talking about grid why not learning MPI, and also some CUDA or OpenCL if your prefer the open way.
And of course you should learn about general threading, I would say to go the standard C++11 or boost way, but this can be slower on certain platforms (Windows).
And now that we are on it, perhaps you should learn about hi-end solvers and linear programming, what about the free COIN-OR Lemon? (also boost provides too)
But if you want to go professional about this you should probably try the classics CPLEX or the today's popular GUROBI.
And...
Wait, what did you want to program?

PS: What I try to make evident here is that there are MANY things you could learn, all very useful for specific tasks. And actually you could do things way faster, more productive, more error free WITHOUT C++. You can do many worthwhile things in the future and most of them probably will not be C++ related, but knowing C++ is always a plus of course (I still think it is not a good first language anyway).
PS2: I know I am awful at trying to get my point across.


----------



## julian20 (May 9, 2015)

In school i learn at the moment python and at home i learn C


----------



## JoostinOnline (May 9, 2015)

Foxi4 said:


> Of course it's easier - clean C doesn't have classes or objects and by extension doesn't cause any problems with inheritance etc. - it's as barebones as it gets, one clean stream of code - that's a good starting point before implementing complex concepts.


This statement makes me question how much experience you actually have with OOP. Did you actually learn it, or just try to look at some random code and figure it out? 

Not having to directly mess with memory or work with pointers/references also makes things much simpler. 

You're also acting like everyone is a natural at programming. It's a very rare thing to see clean code from a beginner.


----------



## Foxi4 (May 9, 2015)

sarkwalvein I'm talking about the baseline syntax, you don't seem to get my point. Knowing basics of C/C++ gives you a head start in learning other languages in the future because they borrow the baseline structure, knowing VB is not the same in this regard. Being familiar with C/C++ syntax will make things like Java, JavaScript, C,  Objective C, PHP or Pearl at least familiar, for a VB user they'll seem like Chinese.



JoostinOnline said:


> This statement makes me question how much experience you actually have with OOP. Did you actually learn it, or just try to look at some random code and figure it out?
> 
> Not having to directly mess with memory or work with pointers/references also makes things much simpler.
> 
> You're also acting like everyone is a natural at programming. It's a very rare thing to see clean code from a beginner.


This is not a matter of experience but a matter of overhead which is smaller in C since it's a simple language. I get your point, what I'm saying is that objects can be introduced later in the learning process rather than right out of the gate. Then again, I'm a sucker for low-level and C is as low as you can get before ASM, so I might be jaded in regards to memory management, I'll give you that.


----------



## sarkwalvein (May 9, 2015)

Foxi4 said:


> sarkwalvein I'm talking about the baseline syntax, you don't seem to get my point. Knowing basics of C/C++ gives you a head start in learning other languages in the future because they borrow the baseline structure, knowing VB is not the same in this regard. Being familiar with C/C++ syntax will make things like Java, JavaScript, C, Objective C, PHP or Pearl at least familiar, for a VB user they'll seem like Chinese.


Yeah, but you need to have some good tutor looking over you if you learn C or C++, because it is prone to make you write like a hack, and those habits stick with you later and are a sickness difficult to get rid off.
You can write very obfuscate, unnecessarily complicated and difficult to read code in C/C++ that otherwise perfectly works. And this is BAD.
Also, having to deal with pointers/memory or very low level data types (C!) takes your attention out of the important things (high level concept of the program, reusable design patterns, software engineering in short).
That is the reason I think it is not a good start.
Regarding the structured way of coding in C (that you could also find on Java or C#), yes I think it is good, but I think also it is better to start with some language that is not so low level.


----------



## Foxi4 (May 9, 2015)

sarkwalvein JoostinOnline I think I can see where we got off the wrong foot now, I understand your points, so let me explain. There is a difference between learning and actively using something - I think every programmer should learn basics of C, the syntax (how to create loops, conditional statements, structures, arrays etc.) but to use C in today's climate would be complete busy work. You misunderstand what I'm saying, I'm not calling for people to go back to the command line, that's insane. I'm talking about learning ubiquitous concepts of C and applying that knowledge in learning a modern language, not to actively use C - it's too impractical for that.


----------



## JoostinOnline (May 9, 2015)

Foxi4 said:


> sarkwalvein I'm talking about the baseline syntax, you don't seem to get my point. Knowing basics of C/C++ gives you a head start in learning other languages in the future because they borrow the baseline structure, knowing VB is not the same in this regard. Being familiar with C/C++ syntax will make things like Java, JavaScript, C,  Objective C, PHP or Pearl at least familiar, for a VB user they'll seem like Chinese.
> 
> This is not a matter of experience but a matter of overhead which is smaller in C since it's a simple language. I get your point, what I'm saying is that objects can be introduced later in the learning process rather than right out of the gate.


Experience does matter if we are talking about which language is better for learning. I could say C# is a terrible language to start with, but since I've barely used it.  Even if I was right, I'd have no business making that claim because I'd be talking out of my ass.

A large benefit of Java as a learning language is the wonderful documentation integration in Eclipse. You just click a function and in a lower box it shows you the syntax and examples. 

PS: Eating lunch with my family so it'll be an hour or two before I can respond. I'm getting a glare from my brother.


----------



## grossaffe (May 9, 2015)

Foxi4 said:


> sarkwalvein JoostinOnline I think I can see where we got off the wrong foot now, I understand your points, so let me explain. There is a difference between learning and actively using something - I think every programmer should learn basics of C, the syntax (how to create loops, conditional statements, structures, arrays etc.) but to use C in today's climate would be complete busy work. You misunderstand what I'm saying, I'm not calling for people to go back to the command line, that's insane. I'm talking about learning ubiquitous concepts of C and applying that knowledge in learning a modern language, not to actively use C - it's too impractical for that.


Hey, don't put down C as a useful language.  It's a brilliant language and still very much practical.


----------



## Foxi4 (May 9, 2015)

grossaffe said:


> Hey, don't put down C as a useful language.  It's a brilliant language and still very much practical.


Only in certain kinds of applications and on certain platforms.


----------



## TVL (May 9, 2015)

My general suggestion to anyone is to start with Java. But there might be reasons to chose something else depending on what you mainly are going to do... if you are to make software (not games) for Windows I don't believe anything has a convenience advantage over C#. The differences between the three Java, C# and C++ aren't that big and if you know one you can learn all three.


----------



## TecXero (May 9, 2015)

JoostinOnline said:


> I don't think you read any of the other posts.


 
Well, just the first page. I assumed the rest followed suit. Oh well.


----------



## JoostinOnline (May 9, 2015)

Learning programming languages is like dating women _if you are a terrible person_.

First you find an easy one, just to have some fun and get practice. Learn the basics, get some tips from your friends who've tried it out too, and maybe even come up with a few tricks of your own.  Once you've been up in there and learned all the secrets, you abandon it, but tell some other newbies about your experiences with an easy way to get started.

Next, you start looking for something long term.  You can look on your own, or have some friends set you up.  Maybe even test out two or three on different nights of the week.  Just don't mix them up, that won't end well.  See which ones can do all the things you like, and is ready to serve your needs.

Eventually you'll find one that you love.  It might not be perfect, and sometimes you may get angry with it, but it's great enough that you'll never want to use something else.  That doesn't mean you'll never get any other-language-action on the side, but that's just temporary.  You'll always come back to the language you love.


----------



## Foxi4 (May 9, 2015)

JoostinOnline said:


> Learning programming languages is like dating women _if you are a terrible person_.
> 
> First you find an easy one, just to have some fun and get practice. Learn the basics, get some tips from your friends who've tried it out too, and maybe even come up with a few tricks of your own.  Once you've been up in there and learned all the secrets, you abandon it, but tell some other newbies about your experiences with an easy way to get started.
> 
> ...


That is the weirdest analogy you could've possibly come up with. It's also exactly right lol.


----------

