I want to someday make my own indie game but I don't know which language is best for me. Should I go with java, python, c++, or? If you have a suggestion please include a beginner book from amazon or anywhere else really. Thank you.
Rollback Post to RevisionRollBack
KoalaKraftPvP.Beastnode.Net <----- Fun PvP Griefing server, small community looking for new members!
They all have their contraindications to being used as a starting language. I'd recommend starting with a language that includes static typing, lexical scope, and functional and object-oriented features. I say this because you don't want to be thrown for a loop by the concepts later. I also really dislike dynamic typed languages as starting languages because there are so many bad habits to be formed from dynamic typing that are impossible to pick up when working with static typing. It's also easy to move from static typing to dynamic typing but less so the other way around. Ditto with lexical scope and dynamic scope.
Python has dynamic typing and significant whitespace, so I don't particularly like it. The idea of significant whitespace is just so offensive to me that I can't regard it as anything more than a toy language, unfit for real-world use.
Java can be confusing every now and again due to the way it tries to hide its use of references from you. This can lead to functions having unintended side effects (side effect is a technical term, btw) and some somewhat unintuitive behavior. There's also a bunch of syntactic sugar that helps to erode its strong typing, but that's not a big deal. The one major caveat is that it's gonna force you into OOP early and often. There WILL be a bunch of "you don't understand why you're putting this stuff here but do it anyway because I said so" in starting tutorials.
C++, on the other hand, just plain doesn't have strong typing with its base types (multiple data types can be used interchangeably with no errors, and the way they're converted will be unintuitive; ie '6' = 59), which can lead to "fun" situations every now and then. Unlike Java (and much to my preference), it does make the use of references explicit and deterministic.
C# has all the problems of Java but without the syntactic sugar.
Honestly, I'd go with Java. The implicit use of references won't be confusing too often. You can often use the language without knowing what that even is. Tutorials can steer you away from syntactic sugar. It has static typing and lexical scope, which can force you to build good habits or at least make a plethora of bad habits impossible to pick up. The boilerplate is a bit of a problem, but you'll come to understand why it's there.
They all have their contraindications to being used as a starting language. I'd recommend starting with a language that includes static typing, lexical scope, and functional and object-oriented features. I say this because you don't want to be thrown for a loop by the concepts later. I also really dislike dynamic typed languages as starting languages because there are so many bad habits to be formed from dynamic typing that are impossible to pick up when working with static typing. It's also easy to move from static typing to dynamic typing but less so the other way around. Ditto with lexical scope and dynamic scope.
Python has dynamic typing and significant whitespace, so I don't particularly like it. The idea of significant whitespace is just so offensive to me that I can't regard it as anything more than a toy language, unfit for real-world use.
Java can be confusing every now and again due to the way it tries to hide its use of references from you. This can lead to functions having unintended side effects (side effect is a technical term, btw) and some somewhat unintuitive behavior. There's also a bunch of syntactic sugar that helps to erode its strong typing, but that's not a big deal. The one major caveat is that it's gonna force you into OOP early and often. There WILL be a bunch of "you don't understand why you're putting this stuff here but do it anyway because I said so" in starting tutorials.
C++, on the other hand, just plain doesn't have strong typing with its base types (multiple data types can be used interchangeably with no errors, and the way they're converted will be unintuitive; ie '6' = 59), which can lead to "fun" situations every now and then. Unlike Java (and much to my preference), it does make the use of references explicit and deterministic.
C# has all the problems of Java but without the syntactic sugar.
Honestly, I'd go with Java. The implicit use of references won't be confusing too often. You can often use the language without knowing what that even is. Tutorials can steer you away from syntactic sugar. It has static typing and lexical scope, which can force you to build good habits or at least make a plethora of bad habits impossible to pick up. The boilerplate is a bit of a problem, but you'll come to understand why it's there.
I agree with this.
But I have one change tho. I would actually start with C++ due to the basic programming is a bit simpler then Java itself. While the switch to Java is not that much a change concept wise but the syntax is a bit different. Also I find since a fair bit of Java's IDEs actually are more user friendly when it comes to syntax (highlighting mistakes) compared to Microsoft's IDE for C++ does not, it reinforces learning the syntax and proper use of syntax.
This is experience that I have learn first hand. I started off with C++ myself and am just now learning Java. It was very quick to change. Which I did find that because I used C++ I was much less likely to make stupid syntax errors. Which help speed up debugging and less time going thru mistakes.
While you can do the same thing is Java, you would be a bit less likely not to use the help from the IDEs for Java.
The Meaning of Life, the Universe, and Everything.
Join Date:
8/25/2012
Posts:
393
Member Details
From what I've heard, Python is more of a scripting language than a programming language. It's not for "serious" use. Also, I echo Quiz's sentiments about significant whitespace.
Java programs add a layer of virtualization, which is the reason why a game can have the same system requirements as Crysis and still come out looking like Wolfenstein 3D. Don't use Java.
C and C++ have their quirks, but if you're going to become a programmer some day, then they're what you'll end up using, period.
There are java classes at my highschool but I don't know if they'd be worth while.
I'm guessing it's a comp. sci class? I took that class in high school (3 years ago) and it was fun. It definitely got me interested in programming and was easier to learn than c++. Take it in the class and get a feel if you like programming, You can always drop out if you really don't like it.
C and C++ have their quirks, but if you're going to become a programmer some day, then they're what you'll end up using, period.
Not necessarily. Out of all programming jobs, web development makes up a very significant portion of them, and both C and C++ are exactly useless when it comes to web development. It's Java, VB.Net and C# that are most sought after in that realm (working knowledge of Javascript, HTML, CSS, XML, and SQL is assumed). PHP isn't used as often in a professional, enterprise environment.
Even so, though, C and C++ remain good starting languages because they are the base after which most of the most popular modern programming languages were modeled.
Not necessarily. Out of all programming jobs, web development makes up a very significant portion of them, and both C and C++ are exactly useless when it comes to web development. It's Java, VB.Net and C# that are most sought after in that realm (working knowledge of Javascript, HTML, CSS, XML, and SQL is assumed). PHP isn't used as often in a professional, enterprise environment.
Even so, though, C and C++ remain good starting languages because they are the base after which most of the most popular modern programming languages were modeled.
Quoted for truth. The vast majority of Applications development jobs consist of writing and maintaining the Business applications that a company uses- for most of them, the software isn't even a product- it's just a means to the company's business goals. For example, many companies have internal development teams to create custom, company applications, such as those used in Call centers, or for internal business logic. Many people have this idea that if you are a software developer, that the software you are creating is a product of the company you work for, but that is seldom the case. Companies that sell that software are an exception rather than the rule.
In-sourced Company business applications do not use Systems programming languages, like C or C++; the goal is the focus- not how to get there. Typically they go for Languages like those mentioned- C#, Java, and VBA. It's also common to apply web development languages (HTML/JS/CSS/PHP/ASP.NET) because those companies also have internal Intranets, and they don't exactly maintain themselves.
My point is that a lot of people seem to think Software development is 'glamourous"; they seem to think that if they become a developer, they will have more followers on twitter and be interviewed for their ground-breaking contributions. But the fact is that you will usually just be one of the important but easily replacable cogs in a corporate machine. That isn't to say it's a bad thing, of course.
I would recommend python which is fairly easy to use, but it is slower than java at number crunching and you are going to have to get NumPy for numbers and PyGame for a display. Here is some great free books on python http://inventwithpython.com/
Python is easier than java and java is easier than c++, but you may not like java because of it's whitespacing because it has no curly brackets for containing functions and such like java or c++. You said your school also has java classes so you might as well learn java because it's a pretty good language and it faster and can do much more then python.
Rollback Post to RevisionRollBack
I Play games, and program in Python, If you need help send me a message!
Well first of all, to be sure if you actually want to learn programming I recomend starting out with haxic. Haxic is they EASIEST starter programming languages out there and it's used to make flash games. Look up haxic tutorials on youtube.
Now once you are sure that you want to get into programming the next thing you should do is go into python. There is a famous youtuber called thenewboston who makes they easiest python tutorials. Look him up on youtube.
Usually the way a programming language can do the simplest thing by printing "Hello world!" on the screens tells you which one is the easiest to learn. Therefor you should start with something easy and doing tutorials you will find out if programming and making games by programming is something you really want to do. Python and Pygame would be a better place to start before moving on to Java or C++, and maybe Unity3D.
Well first of all, to be sure if you actually want to learn programming I recomend starting out with haxic. Haxic is they EASIEST starter programming languages out there and it's used to make flash games. Look up haxic tutorials on youtube.
I looked up Haxic, and it seems to be a scripting language. That is not the same as a programming language. Not sure why you would recommend a scripting language with little actual use over a programming language.
Now once you are sure that you want to get into programming the next thing you should do is go into python. There is a famous youtuber called thenewboston who makes they easiest python tutorials. Look him up on youtube.
thenewboston has little grasp on actual programming concept. Languages are simply a method of conveying what you want to do. How you do it is what matters. Great, you know syntax. Know do something with it, you probably can't since thenewboston doesn't really show you what to do. Plus, its all copy-paste sort of stuff. Would not recommend him.
Doesn't matter too much which programming language you choose, but MrQuizzles has solid advice.
I looked up Haxic, and it seems to be a scripting language. That is not the same as a programming language. Not sure why you would recommend a scripting language with little actual use over a programming language.
Oh no we don't. Let's not start with this jazz. A scripting language is just an interpreted language, especially one used as an embedded language (like Lua, ECMAScript, or Python; not to be confused with embedded system programming, which is very different). Scripting languages are programming languages in every capacity. Even batch is turing complete.
If you want to rag on Haxic for being a scripting language, then you're gonna have to rag on Python, PHP, and JavaScript for the same reason. There's plenty of good reasons to not recommend Haxic (for anything; it looks awful), but it being a scripting language is not one of them.
Highly recommend C#. Awesome IDE(visual studio!) lots of documentation, and although XNA is technically defunct now via Microsoft, great library to get some game practice with if you're interested in that field. Plus you could always convert to monogame.
Java is "alright" I guess. Although I totally disagree with the idea that C# has all of Java's problems, if anything Java has many more problems than C# from a usage and an architecture standpoint.
My main thing with Java is that it isn't as popular a language as they make it out to be, it just didn't fit any particular roles anymore due to how defunct its applet usage has become. For games the language might as well have been dead with the exception of Minecraft giving it a popularity boost. Of course a lot of companies still use Java, mainly the ones that have been doing so for a long time and have no reason to convert.
But all that's kind of beside the point, just start with -anything- simple to understand(e.g. not c++) to get some experience under your belt.
and although XNA is technically defunct now via Microsoft
This Isn't necessarily the case, but rather the retiring of the MVP expertise. The DirectX MVP was also retired, but DirectX isn't going anywhere anytime soon.
Java is "alright" I guess. Although I totally disagree with the idea that C# has all of Java's problems, if anything Java has many more problems than C# from a usage and an architecture standpoint.
+Bajillionty. I find it hard to believe that anybody could ever find Java to be a better language than C#; it's a superset of Java, really. The only people that think Java is better have simply never worked extensively in both.
Java is "alright" I guess. Although I totally disagree with the idea that C# has all of Java's problems, if anything Java has many more problems than C# from a usage and an architecture standpoint.
Well, I was speaking from a "this is my first programming language" standpoint and the sorts of pitfalls new users might run into. It'll expose new programmers to the same amount of boilerplate, it'll thrust objects at them just as early on. Those are the two biggest factors I'm looking at. The two largely share feature sets (C# has some more). C# merely lacks syntactic sugar.
Python has dynamic typing and significant whitespace, so I don't particularly like it. The idea of significant whitespace is just so offensive to me that I can't regard it as anything more than a toy language, unfit for real-world use.
Java can be confusing every now and again due to the way it tries to hide its use of references from you. This can lead to functions having unintended side effects (side effect is a technical term, btw) and some somewhat unintuitive behavior. There's also a bunch of syntactic sugar that helps to erode its strong typing, but that's not a big deal. The one major caveat is that it's gonna force you into OOP early and often. There WILL be a bunch of "you don't understand why you're putting this stuff here but do it anyway because I said so" in starting tutorials.
C++, on the other hand, just plain doesn't have strong typing with its base types (multiple data types can be used interchangeably with no errors, and the way they're converted will be unintuitive; ie '6' = 59), which can lead to "fun" situations every now and then. Unlike Java (and much to my preference), it does make the use of references explicit and deterministic.
C# has all the problems of Java but without the syntactic sugar.
Honestly, I'd go with Java. The implicit use of references won't be confusing too often. You can often use the language without knowing what that even is. Tutorials can steer you away from syntactic sugar. It has static typing and lexical scope, which can force you to build good habits or at least make a plethora of bad habits impossible to pick up. The boilerplate is a bit of a problem, but you'll come to understand why it's there.
I agree with this.
But I have one change tho. I would actually start with C++ due to the basic programming is a bit simpler then Java itself. While the switch to Java is not that much a change concept wise but the syntax is a bit different. Also I find since a fair bit of Java's IDEs actually are more user friendly when it comes to syntax (highlighting mistakes) compared to Microsoft's IDE for C++ does not, it reinforces learning the syntax and proper use of syntax.
This is experience that I have learn first hand. I started off with C++ myself and am just now learning Java. It was very quick to change. Which I did find that because I used C++ I was much less likely to make stupid syntax errors. Which help speed up debugging and less time going thru mistakes.
While you can do the same thing is Java, you would be a bit less likely not to use the help from the IDEs for Java.
Java programs add a layer of virtualization, which is the reason why a game can have the same system requirements as Crysis and still come out looking like Wolfenstein 3D. Don't use Java.
C and C++ have their quirks, but if you're going to become a programmer some day, then they're what you'll end up using, period.
I'm guessing it's a comp. sci class? I took that class in high school (3 years ago) and it was fun. It definitely got me interested in programming and was easier to learn than c++. Take it in the class and get a feel if you like programming, You can always drop out if you really don't like it.
Not necessarily. Out of all programming jobs, web development makes up a very significant portion of them, and both C and C++ are exactly useless when it comes to web development. It's Java, VB.Net and C# that are most sought after in that realm (working knowledge of Javascript, HTML, CSS, XML, and SQL is assumed). PHP isn't used as often in a professional, enterprise environment.
Even so, though, C and C++ remain good starting languages because they are the base after which most of the most popular modern programming languages were modeled.
Quoted for truth. The vast majority of Applications development jobs consist of writing and maintaining the Business applications that a company uses- for most of them, the software isn't even a product- it's just a means to the company's business goals. For example, many companies have internal development teams to create custom, company applications, such as those used in Call centers, or for internal business logic. Many people have this idea that if you are a software developer, that the software you are creating is a product of the company you work for, but that is seldom the case. Companies that sell that software are an exception rather than the rule.
In-sourced Company business applications do not use Systems programming languages, like C or C++; the goal is the focus- not how to get there. Typically they go for Languages like those mentioned- C#, Java, and VBA. It's also common to apply web development languages (HTML/JS/CSS/PHP/ASP.NET) because those companies also have internal Intranets, and they don't exactly maintain themselves.
My point is that a lot of people seem to think Software development is 'glamourous"; they seem to think that if they become a developer, they will have more followers on twitter and be interviewed for their ground-breaking contributions. But the fact is that you will usually just be one of the important but easily replacable cogs in a corporate machine. That isn't to say it's a bad thing, of course.
Python is easier than java and java is easier than c++, but you may not like java because of it's whitespacing because it has no curly brackets for containing functions and such like java or c++. You said your school also has java classes so you might as well learn java because it's a pretty good language and it faster and can do much more then python.
Now once you are sure that you want to get into programming the next thing you should do is go into python. There is a famous youtuber called thenewboston who makes they easiest python tutorials. Look him up on youtube.
Hope this helped
I looked up Haxic, and it seems to be a scripting language. That is not the same as a programming language. Not sure why you would recommend a scripting language with little actual use over a programming language.
thenewboston has little grasp on actual programming concept. Languages are simply a method of conveying what you want to do. How you do it is what matters. Great, you know syntax. Know do something with it, you probably can't since thenewboston doesn't really show you what to do. Plus, its all copy-paste sort of stuff. Would not recommend him.
Doesn't matter too much which programming language you choose, but MrQuizzles has solid advice.
Thinking about coming a mod to simply not moderate.
Oh no we don't. Let's not start with this jazz. A scripting language is just an interpreted language, especially one used as an embedded language (like Lua, ECMAScript, or Python; not to be confused with embedded system programming, which is very different). Scripting languages are programming languages in every capacity. Even batch is turing complete.
If you want to rag on Haxic for being a scripting language, then you're gonna have to rag on Python, PHP, and JavaScript for the same reason. There's plenty of good reasons to not recommend Haxic (for anything; it looks awful), but it being a scripting language is not one of them.
Java is "alright" I guess. Although I totally disagree with the idea that C# has all of Java's problems, if anything Java has many more problems than C# from a usage and an architecture standpoint.
My main thing with Java is that it isn't as popular a language as they make it out to be, it just didn't fit any particular roles anymore due to how defunct its applet usage has become. For games the language might as well have been dead with the exception of Minecraft giving it a popularity boost. Of course a lot of companies still use Java, mainly the ones that have been doing so for a long time and have no reason to convert.
But all that's kind of beside the point, just start with -anything- simple to understand(e.g. not c++) to get some experience under your belt.
This Isn't necessarily the case, but rather the retiring of the MVP expertise. The DirectX MVP was also retired, but DirectX isn't going anywhere anytime soon.
+Bajillionty. I find it hard to believe that anybody could ever find Java to be a better language than C#; it's a superset of Java, really. The only people that think Java is better have simply never worked extensively in both.
Well, I was speaking from a "this is my first programming language" standpoint and the sorts of pitfalls new users might run into. It'll expose new programmers to the same amount of boilerplate, it'll thrust objects at them just as early on. Those are the two biggest factors I'm looking at. The two largely share feature sets (C# has some more). C# merely lacks syntactic sugar.