Sooooo hello again I'm deciding what languages to "Invest" my time and attention to. Given I can learn two languages, one of them is already C++, but im look at GC languages. C# or Java, now my school offers Java classes next year but I'd be fine learning C# too. What is your opinion on which one is better to know? (Or maybe some other useful language like lisp)
C++, Java, Python, and maybe Lisp when you're bored.
Personally I'm against C# - it's like C++ and Java got married, had a kid, divorced and put the kid up for adoption, and Microsoft adopted it and got it an overcomplicated .NET crib to raise it in. It's a cool language, but it's annoying for end users.
As a rule of thumb, learn the popular languages first, and learn the other ones when you're bored. If you only learn the popular languages and not the other ones, you're missing out, and it could even help to know the design patterns of other languages so you know more ways to solve the same problems.
More people have different opinions, as seen below:
IMO C# is much better than Java. My experience of learning Java has been "Why does Java do it like this? The way C# does it is so much better". I'm guessing it's because where Java is a failed attempt at "C++ done right" (where "right" is "with several important things removed because they're a bit difficult"), C# is Java done right. .Net is not "overcomplicated" at all, and before someone brings up the issue of cross-platformness, it's true that the CLR doesn't run on as many platforms as JVM, but with Mono, it runs on all the important ones. And before someone else asserts that Mono isn't as good, yes, it is. Good enough to have been used in commercial game engines (Unity3D and The Sims 3 come to mind) and other commercial software. Microsoft's .Net implementation is probably better on Windows, but for those platforms that .Net doesn't support, Mono/Xamarin is perfectly fine.
By annoying, I mean I hate having to install the exact version of .NET framework needed for run various applications written in C# I have downloaded over the years. I'm not kidding, I can't get newer versions of .NET to run older C# code :p
I'm not looking for out there languages, I am good at BASIC but I was looking at uses for C# or Java for like a C++ other language mish-mosh program.
(idk I heard java is better for more complex problems)
Java or C# takes input as an exe and returns the output for
C++ to display.
But, for a first language basic was great (I miss not having to put semi-colons so bad!)
BASIC is a terrible first language to learn; it teaches horrible practices that scar your brain for life.
The very first programming I ever did was in a high school video game development class. It used a dialect of BASIC called Dark BASIC (basically a wrapper for DirectX) to do all the programming. As much as I loved it and still vaguely miss it (no support for it anymore) I did pick up some sketchy practices. Luckily, it was only one semester in high school and the teacher did no teaching, so I didn't pick up TOO many bad things from it.
Not really, I was going for a all purpose language to be based in,
@LB I completely agree about the 'Brain Scar' However it was a nice language for concepts at least. (BASIC to C++ was most likely the worst time I ever had programming).
@Cheraphy I used dark basic, I though it was pretty much completely unknown.
It's concepts that you need to learn, not languages. Just learn everything that does not look familiar. Try not to think too much about syntax and standard functions - you can always look those up. When you know several languages, you'll see that they are more similar than they look. You should then be a able to quickly pick up these similar languages if needed.
Also, +1 for Haskell. Although it's a bit like drugs...
"Personally I'm against C# - it's like C++ and Java got married, had a kid, divorced and put the kid up for adoption, and Microsoft adopted it and got it an overcomplicated .NET crib to raise it in. It's a cool language, but it's annoying for end users."
There's absolutely nothing wrong or annoying with C#. In fact, it's by far one of the most sophisticated programming languages to date -- not to mention the exceptional speed of the garbage collector! I personally find that its .NET dependency is amazing due to its ability to execute code on multiple platforms effortlessly. And the outstandingly optimised code which it generates is in itself a pioneering achievement.
Well done, Microsoft, for giving us the gem that is C#.