Other Languages?

Pages: 12
I was wondering what everyone else felt about other programming languages. I started learning Java and decided I liked C++ more and moved into that. Now I get people telling me I should learn C# or Java because C++ is extremely complicated for no reason. I believe C++ is the most versatile language, but what other languages does anyone recommend to learn. I was thinking about learning visual basic and maybe a little more about Java. My teacher recommends not learning Java, but I thought I would get a few more opinions. Even though at the rate things are going C++ will probably have major control of my time for a long time before I feel comfortable enough to learn another language.
Very nice. Is this the way most C++ programmers feel about Java? I did have my teacher say that when java came out and said it could make the average joe a programmer he and his colleagues groaned about all the incompetent people who would start programming.
That's how me and my friends think at least. Not sure about everyone else though.
/ C++, \ Java
C++ is surely better than Java and C#. It isn't more complicated than them, it only is more powerful and multi-paradigm (so you need to learn more paradigm to know all C++)
Of course knowing also other language is not a bad thing but if you can choose on what to focus, choose C++

( Notice that in a C++ forum you would hardly find someone stating that C# or Java are better than C++ )
They're different tools for different jobs and nurture different styles of programming.

C++ is stronger if you need to get closer to the machine, Java is stronger if you're prepared to sacrifice the implied performance gain for flexibility and portability.

For example, you wouldn't seriously consider C++ for AOP. And conversly, the templates in Java are compromised.
Last edited on
firedraco wrote:
C++ > Java IMHO.


I don't particularly care for Java either, but it's not as awful as its made out to be.

I skimmed that article you linked to and that guy had a quote which I found rather humorous:

"I spent several months programming in Java. Contrary to its author's prediction, it did not grow on me. I did not find any new insights - for the first time in my life programming in a new language did not bring me new insights. It keeps all the stuff that I never use in C++ - inheritance, virtuals - OO gook - and removes the stuff that I find useful. It might be successful... but it has no intellectual value whatsoever" - Alexander Stepanov


The fact that the guy thought this was a good quote pretty much destroys all his credibility.

This Alexander guy apparently isn't even a C++ coder, he's a mishmash C/C++ coder. I mean if he doesn't use inheritance and virtuals (and "OO gook"), he's basically using "C with // comments". Of course someone like that won't like an OO language like Java.
C++ is definitely more complicated than Java and C#. Sure, those two have libraries of ridiculous proportions and the runtime environment is more complex than just the CPU, but the language itself is more complex.
See these if you want to see a few reasons:
http://yosefk.com/c++fqa/
http://www.codeproject.com/KB/cpp/FastDelegate.aspx
http://www.google.com/search?q=most+vexing+parse
I wouldn't say it's complicated for no reason, but I would say it's more complicated than absolutely necessary.

If you want to learn Java/C#, that's fine, but as firedraco's link points out, you won't learn anything mind-opening. A C++ programmer can pick up either one in a few days, anyway. That's not an accident.

EDIT: I don't agree. I've seen some pretty absurd examples of OO design being used just because it was there. Of course, I'm not saying there are no instances where OO is useful. Far from it. But I have noticed the tendency to think that OO is always the best alternative. Java and C# only encourage this notion.
That's what I like about C++. It gives the chance to choose the best paradigm possible to every problem.
Last edited on
closed account (S6k9GNh0)
1. The D programming language
2. The C programming language
3. Google's GO programming language
4. Assembly
5. FORTRAN
6. One is born about every time you take a poo. Have fun exploring.
@ helios:

But to say you never use inheritance, virtuals, etc. I mean why would you even use C++ then? You're basically coding with straight C at that point.

I agree that OO is not always the best solution, but in my experience I've found that it is one of the better solutions most of the time.

It's not always the fastest though (in fact it hardly ever is). A good OO design takes much longer to construct than slapping something procedural together (but of course the speed comes at a price of expandability and maintainability).

I think that's why so many people embrace the C/C++ approach. Quick 'n' dirty has a lot of appeal sometimes.
you won't learn anything mind-opening.


Have you looked at cross cuts in AOP and all the other cool stuff you can do with reflection? For example, you can add logging to program without modifying it. I say it can be mind-opening.
I heard about the D programming language. My buddie was talking about how it's better than C++. I don't know. Oh, and paradigm's are just elemets right?
Last edited on
Programming languages are development tools. They are the product of requirements, just like any other software and, as such, all of the popular languages have merit. No language to date has set out to fulfill the does-everything-better-than-every-other-language requirement and succeeded.

Analogously, if someone was attempting to pound a nail into a board with a screwdriver they might exclaim, "This screwdriver is no hammer!" Similarly, if someone was attempting to drive a screw with a hammer they might exclaim, "This hammer is no screwdriver!" The question should not be which tool is better.

Java is dependent on a runtime environment which yields platform-independence. It is supplied with a very rich set of libraries. For security, there are a number of restrictions regarding what you can do with Java. Oh the other hand, C++ is backward compatible with C. C++ supports multiple paradigms, etc. Their requirements were never intending to be the same.

It is my belief that C++ should be learned before Java.

Last edited on
Disch wrote:
But to say you never use inheritance, virtuals, etc. I mean why would you even use C++ then? You're basically coding with straight C at that point.
C++ in not just C with classes, you can use C++ without OO and still be far from C

xitan wrote:
Oh, and paradigm's are just elemets right?

http://en.wikipedia.org/wiki/Programming_paradigm
I totally agree that C++ is better than Java. Java's one advantage is the massive number of classes available in its libraries. The platform independence is powerful but not enough to justify (IMO). Of course every language has its uses. C++'s sheer versatility, and its support for both powerful object management and primitive types, is what makes it so interesting to me. I also appreciate the ability to export into an executable which is not an option in Java.
I personally do not favor C# as it is in no way platform-portable. It is effectively Microsoft only where as C++ (and Java, even more easily) can be implemented on pretty much any platform.
That's my opinion, but I cannot deny that Java has its uses (applets I would say are the biggest).
Disch wrote:
But to say you never use inheritance, virtuals, etc. I mean why would you even use C++ then? You're basically coding with straight C at that point.
Bazzy wrote:
C++ in not just C with classes, you can use C++ without OO and still be far from C
Exactly. OO is not the only paradigm C++ offers that C doesn't have. There's also metaprogramming and some form of functional I haven't looked at yet.
Then there's also the STL, std::strings, soon we'll have built-in concurrent programming support, regexes, etc. etc.
closed account (S6k9GNh0)
The D language was popular during the supposed period of time while C++ wasn't so popular (I'm not sure when this was to be honest). It has many advantages over C and C++ but it has many disadvantages. You'd have to do the research to figure it out.

Java seems to be useless unless used for true cross-platform ease and where performance is not a serious issue. It also has a great selection of libraries that work via cross-platform. It's usually limited to things that C++ could easily do.

Assembly is considered the king of languages. Most languages that compile, translate into assembly first and then compile into machine language. It's difficult to understand and to write and often has unneccessary bugs that are extremely difficult to find.
Assembly is considered the king of languages.

By whom?

Java seems to be useless unless used for true cross-platform ease ... usually limited to things that C++ could easily do.

What an outragous thing to say.
closed account (z05DSL3A)
Java seems to be useless unless used for true cross-platform ease


Just a random musing, Is Java (the language) really cross-platform? Yes...No...I would say not.

Java, the language, is used to create code to be compiled for the Java Platform (VM, runtime environment), it is unfortunate that they have the same name, it confuses allot of people. ;0)
Pages: 12