- Joined
- Feb 4, 2010
- Messages
- 27,880
- Solutions
- 4
- Reaction score
- 8,281
- Trophies
- 0
- Age
- 38
- Website
- rydian.net
- XP
- 9,186
- Country


Totally agreed. However, Unity was the experience that tried to weed me out XDSounds like a good way to weed out people who aren't cut out for game design early in the course.
Sounds like a good way to weed out people who aren't cut out for game design early in the course.

I took a Game Dev C++ in college and not in a single moment were memory management and pointers discussed. Its completely possible for a beginner to jump into the language without wading into the low-level aspects of the language.
That's the beauty and strength of C++, the high/low level versatility of the language and its enormous catalog of mature libraries.
About people saying there's no advantage in learning C++ without pointers, quite frankly, didn't you heard that C/C++ is faster than most high level languages, especially C# and Java which run in a virtual machine? Also, C#/Java are well known for wasting RAM unnecesseraly making the software slower for system with lack of RAM

Fixed, I found quite incredible how Android apps which are based in Java consumes so much RAM. My smartphone's have 80% of its 300mb of RAM consumed, even when I don't have any app running besides the ones that execute in the phone's boot. And this is because Android uses Dalvik which is a VM optimezed for handhelds.Sure they might need that HUGE LOAD of extra RAM to run their virtual machines, but that does not make software slower at all.
It's a complete myth that Java/C# are significantly slower than C++. They used to be, but they haven't been for years. We even have PSP emulators made with Java now (eg. http://jpcsp.org/index.php?p=About).
Even if there was a significant delay, the amount of time to learn and develop applications is significantly smaller in Java. You can pump out high-performance applications far more easily when using Java/C# than you can with C++.
That's why C++ is more suitable for game developers who need to extract as much power as possible from the hardware they're working on. Not for beginners who don't even know what "int" means.
Fixed, I found quite incredible how Android apps which are based in Java consumes so much RAM. My smartphone's have 80% of its 300mb of RAM consumed, even when I don't have any app running besides the ones that execute in the phone's boot. And this is because Android uses Dalvik which is a VM optimezed for handhelds.
Well, I would say that the Java PSP emulator is highly optimized to have a good performance. It's a great work, but only proves that highly optimized Java programs can be fast for real-life purposes. Of course, there's no difference in performance between making a calculator in C++ or Java, but for complex software C++ clearly wins.
I have to disagree. Quite frankly, Java and C++ are almost identical in terms of syntax and code. And both Java and C++ use 'int' for that matter. Sure in C++ there is some small details in using characters and strings, but it's nothing hard to learn and actually gives you a lot of freedom later when you have to implement string based functions.
Not only that, but since Java takes off the control you have in C++, you have to memorize a whole lot of function names, when in C++ many times you only have to write a 2-line code using familiar tools. In Java you need to search for a function everytime you need to do something fancy that the Java creators didn't intend you to do.
Java is only easier to learn when start studying how to make graphical UI or how to make data structure stuff. But this is not basic programming knowledge anymore and at this point both the C++ and Java student already have a fair amount of programming knwoledge.
RAM usage affects the speed of an applications once it's lacking. Handheld devices are getting more common each day, sparing RAM is pretty important if you're not a short-sighted PC programmer.Operating systems will always take up a fair amount of RAM to use. I wouldn't blame Java for that at all. Besides, the core point here is that RAM usage rarely affects the speed of an application. We have plenty of RAM these days, so using RAM usage as a reason to learn C++ is silly for beginner programmers.
This quote only shows you how much you don't know about programming languages. Even if you don't use pointers or your own management memory system, a C++ app will always be as fast or faster than a Java application provided they're running the same implematation of a code.And again, nobody is arguing that C++ is inferior or anything. We know that complex software in C++ is going to win once you use pointers effectively, your own memory management system, and bit of assembly here and there.
I'm not going to say C/C++ is the best language to learn programming, but Java is far from being easy to learn either. If there's a famous language to begin learning how to program it's Pascal. The only real significant difference between Javal and C++ is the usage of pointers, and no ones obliguates you to use them in a C/C++ program. Besides the first language I learned was C and it didn't make me quit or anything. It only made me enjoy programming.However, beginners are not going to be writing complex applications for years, and by learning C++ you're just going to confuse them. It's not the syntax so much that matters, but mostly those extra things that are unique to the language that are confusing, as well as the cryptic error messages that love to appear often. Hand-holding is a great thing for a new developer, as it won't cause them to give up in frustration.
You don't need to memorise anything as a programmer. Most IDEs will provide auto-complete, and there's plenty of documentation for Java anyways. From my own experiences, most functions in C++ have far more cryptic names than functions in Java. It's harder to remember C++ functions than it is to remember Java functions because of that reason. Could you provide an example of something that's not natively available in Java, but is natively available in C++? From my own experiences, you often have to implement basic functionality in C++, while that functionality is already available to you in Java.
RAM usage affects the speed of an applications once it's lacking. Handheld devices are getting more common each day, sparing RAM is pretty important if you're not a short-sighted PC programmer.
This quote only shows you how much you don't know about programming languages. Even if you don't use pointers or your own management memory system, a C++ app will always be as fast or faster than a Java application provided they're running the same implematation of a code.
I'm not going to say C/C++ is the best language to learn programming, but Java is far from being easy to learn either. If there's a famous language to begin learning how to program it's Pascal. The only real significant difference between Javal and C++ is the usage of pointers, and no ones obliguates you to use them in a C/C++ program. Besides the first language I learned was C and it didn't make me quit or anything. It only made me enjoy programming.
Sorry if you had a bad experience with C++, but maybe you learned from a bad teacher or with a bad guide?
You provide me with examples, since you claim this so passionately! My main point was that Java needs you to use functions for everything, it has way more function to memorize than C++ for the same kind of program. Plus, C++ also have IDEs with auto-complete, but if you don't have a clue about what the name of the function is you're going to have google them every fucking time for both languages.

If I want to do a string replace in Java, I just go "myString.replace("thisword", "withthisword");". If I want to something similar in say, there isn't even a function for that! ........ And even if there was a function, it'd have weird names like "strpos". I rarely have to Google anything in Java, but for C and C++, constantly searching up documentation as to what they weirdly named functions do.
The function you're looking for is strcpy(thisvariable,"withthisword"); from the string.h default library. Since it's such an old fuction and the Java equivalent have the same sintax, I can only think Java's myString.replace() is just a reimplematation of the strcpy() function.
It's not skyrocket, since it's about functions you use frequently, so it's not that hard to memorize at all. I still find the good old printf() or even the cout<<string; to be quite easier to remember than the Console.println() for example. Your problem seems to be you're not familiar with C/C++ and thus have some hard time with it. My main problem with Java is when it comes to working with making list, queue and etc... In C++ if you want to make an iteration it's as easy as doing oldpointervalue = nextpointervalue; In java you have to use some obscure functions that changes names depending if you're working with a list, a queue, a binary tree and etc...
std::list<int>::const_iterator iterator;
for (iterator = intList.begin(); iterator != intList.end(); ++iterator)
{
std::cout << *iterator;
}
for (String myString : myStringList) {
System.out.println(myString);
}
strcpy doesn't replace "thisword" "withthisword". It just deep copies one char array to another char array. In most languages, string replace as the name implies, goes through the string and replaces the first instance of the word you supplied in the first parameter, with the word you supplied in the second parameter. For more details, look at the link here: http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#replace(char, char)
Lists and other collections are far more difficult in C++ than in Java. Simple example, to iterate over a list in C++, you have to use the most bizzare of syntax ever:
Code:std::list<int>::const_iterator iterator; for (iterator = intList.begin(); iterator != intList.end(); ++iterator) { std::cout << *iterator; }
Whereas in Java, if I want to iterate over a list:
Code:for (String myString : myStringList) { System.out.println(myString); }
I'd find it hard to believe that Java functions change names, considering the majority of them implement the List interface which means they all have the exact same list of functions, with maybe one or two additional functions depending on what type of collection you're working with.
//just for context, declaring your own list structure
struct no
{
int value;
struct no *next;
}list;
list *myList = somepointer; //Setting a variable with its initial value
list *iterator = myList; //This is our iterator
//The line of code that actually does the iteration
iterator = iterator->next;

C# absolutely does not use a virtual machine. That concept is entirely unique to Java.especially C# and Java which run in a virtual machine?
how I learned to interate a list at the university:
Code://just for context, declaring your own list structure struct no { int value; struct no *next; }list; list *myList = somepointer; //Setting a variable with its initial value list *iterator = myList; //This is our iterator
Code://The line of code that actually does the iteration iterator = iterator->next;

Java's JIT nowadays, (like Dolphin and the faster branch of Desmume, if that says anything for speed compared to normal C++).Anything that runs via a virtual machine is factually slower than a native binary counterpart of the same code, it goes without saying.
C# absolutely does not use a virtual machine. That concept is entirely unique to Java.


