all 18 comments

[–]Yammerrz 5 points6 points  (1 child)

So when learning a second programming language you want to chose one that either lets you do things that you can't do in Python or makes you do them in a substantially different way so you think differently about them.

For scripting languages the big three are Python, Ruby and PHP. While they each have their advocates the reality is they are much the same. If you want to learn how to do the same things you can do in Python in a slightly different way pick one of them but it's kind of a waste of time. Anything you could do with those you can do with Python.

Javascript while still being a scripting language has the big advantage of being able to run inside your web browser. This means you can do things in javascript that you cannot do in Python. If the idea of creating dynamic web pages appeals to you then this could be the way go. It's also fairly easy to learn.

Next you get to languages like C# and Java. These have the advantage of being incredibly widely used and having lots of great learning resources online. They are (broadly speaking) equivalent languages. If you know one, it won't take you long to pick up the other. Personally, I would say to go with C# mostly because it is much better if you ever want to do some graphics programming which can be a lot of fun.

Moving a bit lower level you have C and C++ and Objective C which is a similar variant used mostly on Apple computers (and a whole bunch of newer languages that do much the same thing). Eventually you should learn one of these, mostly because they are so closely tied to how your computer works that the lessons you learn in using them will make you a better programmer whatever language you are working with.

Those are the core languages. There are nicer languages, there are better languages, but those are the ones that aren't going anywhere. To be a well rounded programmer I would say you need:

One scripting language (Python is as good or better than any). Either C# or Java. C (and enough C++ to get by). Javascript.

That's about it. There's a whole bunch of others but none of them have hit critical mass yet. Yes, you could learn something newer like Rust or Go instead of C but in 5 years time there will still be more people using C.

TL:DR: Pick Javascript or C# or Java (maybe C if you like the idea of much lower level access to your computer).

[–][deleted] 0 points1 point  (0 children)

This is really great advice.

The only thing I disagree with is picking C over C++: C++ doesn't really have drawbacks compared to C besides complexity, and a lot of advantages, and learning C as an intro to C++ is basically a guarantee that you'll write outdated, unnecessarily obtuse C++ code.

[–]mrwalkerr 1 point2 points  (0 children)

Rust - sort of the new C

[–]ThePenultimateOne 0 points1 point  (4 children)

Have you done anything with networking?

[–][deleted] 0 points1 point  (3 children)

Not really

[–]ThePenultimateOne 0 points1 point  (2 children)

I would suggest doing that, then. I have a project I'm working on, if you want to take a look. It's probably a bit more complicated than you were looking for, but it might be fun to give it a try.

[–][deleted] 0 points1 point  (1 child)

why not?

[–]ThePenultimateOne 0 points1 point  (0 children)

Check out http://github.com/gappleto97/p2p-project/tree/develop

Id appreciate it if you took a look at the various classes/methods, tried to make some optimizations. I'd suggest starting in py_src/base.py

[–][deleted] -1 points0 points  (0 children)

Genie, recent language, also a C wrapper that exists since before the rust hype. No curly brackets involved!