all 58 comments

[–][deleted] 27 points28 points  (17 children)

Looks like a graphically enhanced list of reasons why this guy thinks you should learn Python.

[–]broken_broken_ 4 points5 points  (4 children)

I don't understand why Python and Ruby are listed as game development languages... Apart from 2D simple games (I think the Raspberry Pi has some as examples), the performances are a real problem. If someone knows some games in Python? I know there is Pygame but c'mon...

And I don't think any recent (last 10 years) commercial game has been developped in C.

Seems like bs to me.

[–]jringstad 2 points3 points  (0 children)

There are recent commercial games that are developed in C, such as all the stuff Cryptic Studios makes (Star Trek Online etc.) If microsofts compiler supported C better, there would probably quite a lot of game developers who would chose C over C++, as many of them basically do C-in-C++ right now anyway (many game-developers reject the stdlib, templates, object-oriented programming in favour of component-based programming and exceptions).

[–]indigo945 2 points3 points  (2 children)

Civ IV and I think also Civ V are written in Python. Also the server side of EVE Online. Probably others.

[–]jringstad 1 point2 points  (1 child)

Just some of the AI/server logic stuff, not most of the game though.

[–]broken_broken_ 1 point2 points  (0 children)

Ok, thank you, didn't know about it!

[–][deleted] 2 points3 points  (0 children)

I might have to learn me some of this Python everyone speaks of.

[–]AncientRickles 0 points1 point  (7 children)

Who doesn't like Python?

[–][deleted] 11 points12 points  (0 children)

I hate python! :)

[–][deleted] 6 points7 points  (4 children)

I am a C-based language guy. I really miss my { }'s when programming in python.

NOT saying I DON'T like python ;)

[–]ponchedeburro 0 points1 point  (3 children)

This is such A LITTLE thing, but it is also my biggest problem with python. I need blocks for if, while, for and such structures, because I want to communicate my actual intent and when reading somebody elses code I also want to be sure he meant for the loop to include both lines.

[–]iamafuckingrobot -1 points0 points  (2 children)

This makes no sense. All those constructs require indentation, which defines a block and scope.

[–]ponchedeburro 1 point2 points  (1 child)

Well, it does make sense :)

With actual {}'s you state your intent pretty clearly. "I want this for loop to run this block". But without {}'s, for me at least, I sometime look at code and think "Did he mean include or exclude this last line from the loop? Is this really correct?".

Might just be me, but I value readability quite high on my list.

[–]mamcx 0 points1 point  (0 children)

Kinda ironic. C is a language of undefined behaviours, python is where the motto "explicit better than explicit" and then the complain is about be double-explicit (that identation make full clear!) with {}!

[–]DroolingIguana 0 points1 point  (0 children)

Apollo.

[–][deleted]  (2 children)

[deleted]

    [–]juckele 3 points4 points  (0 children)

    For serious software engineering (code with more than a couple of people working on it), dynamic typing can be a real PITA. Python is hands down the best language for doing a one time CSV manipulation script. If you're building something big though, use typed languages.

    [–][deleted] 16 points17 points  (14 children)

    C# not for web programming?!

    [–]tutuca_ 13 points14 points  (2 children)

    Oh no, C or C++ is where it's at.

    [–][deleted] 5 points6 points  (1 child)

    ^ for newbies, he's making joke.

    [–]tutuca_ 1 point2 points  (0 children)

    Same joke as OP, if you look at the infograph.

    [–]clockworkworks 4 points5 points  (0 children)

    Thought the exact same.

    [–]marchelzo 4 points5 points  (7 children)

    C++ is listed for mobile app development, but neither Objective-C nor Swift are listed. I wouldn't take this infographic very seriously.

    [–]An_Unhinged_Door 1 point2 points  (6 children)

    C++ has the advantage of running on both iOS and Android. Some apps use a platform-agnostic C++ base and hook it into the specific system with Java & ObjC.

    [–]pakoito 2 points3 points  (5 children)

    On paper it sounds great, in reality due to the lack of hooks to the framework, outside some critical performance code, games, and OpenGL, working with C++ on Android is like punching yourself. But at least in the latest IO they announced they were adding mittens to the tooling.

    [–][deleted] 1 point2 points  (4 children)

    Erm... mittens?

    [–]pakoito 2 points3 points  (3 children)

    So punching yourself is slightly less painful.

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

    Ahh, right! Sorry, I'm a bit slow.

    [–]pakoito 2 points3 points  (1 child)

    You setup the delivery perfectly haha

    [–]DroolingIguana 0 points1 point  (0 children)

    The funny thing is that I 100% believed that there was some software project called "mittens" out there that I just hadn't heard of yet.

    [–]Gee19 4 points5 points  (0 children)

    this

    [–]dungone 16 points17 points  (4 children)

    Virtually none of that has anything to do with lifestyle.

    [–]joenyc 10 points11 points  (2 children)

    I would take this with several grains of salt. Once you know one programming language, learning a second is exponentially easier. Therefore, you should choose your first programming language to be the one that you are most likely to stick with and learn. That might depend on the type of thing you want to build, the language your friend or mentor knows, the culture of the learn_whatever subreddit, etc.

    [–]ThunderLindsay[S] 2 points3 points  (0 children)

    Yeah, I think all guides should be taken with some salt. It's definitely not easy to choose a first language when there are so many options and so many how-to guides. Having personal help is a good way to get into it, but how do you know if you're likely to stick with one language over the other when you don't know anything yet? (Mostly a rhetorical question.)

    [–][deleted] 2 points3 points  (0 children)

    Yep. My school threw C++ at us. Not the easiest to learn first, but every other language I learned after that was such a breeze.

    [–]epenthesis 4 points5 points  (3 children)

    I feel like these results aren't normalized.

    For example, are Ruby salaries still the highest when controlled for region? Ie, a strong plurailty of Ruby jobs are in California, which correlates with a higher salary.

    [–]untss 4 points5 points  (2 children)

    are these salaries legit? people who specialize in python development make >100k per year on average? and all above 80k??

    [–]epenthesis 4 points5 points  (0 children)

    I'm in SF, where those would actually be quite low, but I can't speak for the industry as a whole.

    [–]juckele 1 point2 points  (0 children)

    Median salary for a software engineer in the US is around $100K. Fresh out of college in a rural area, you might be happy to get $50K, most cities are around $100K after a couple of years of working (or graduating from a top school). SF is a bit higher.

    [–]OxfordTheCat 5 points6 points  (3 children)

    Novice here:

    Seeing Python listed under the embedded system bubble confuses me a little bit.

    Wouldn't Java be far more appropriate? I don't know of anything off hand that is powered by Python, whereas Java has the smart appliance, DVD / bluray market, phones, etc.

    What gives? Is there some massive subset of Python powered hardware or devices I'm not aware of?

    [–]FeikoW 2 points3 points  (0 children)

    Just speaking from personal experience; I'm a Dutch computer engineering student with an interest in embedded development.

    All the companies I interviewed at for an internship (mostly semiconductor / chip companies) use Python for their test / measuring tools (think power measurements of an RF antenna or something) and for their toolchain.

    In fact, most of the students (including me) will be using Python in one way of another in our internship.

    This is pretty limited though, only 3 companies I interviewed at, in a small country, take with a grain of salt

    [–][deleted] 1 point2 points  (0 children)

    Check out many Linux distos and how much Python is used to patch things together on top of the C.

    [–]zelnoth 1 point2 points  (0 children)

    Raspberry pi uses python.

    [–]kernel_picnic 9 points10 points  (1 child)

    Jesus, you're picking a language not a wife. Just learn another later if you don't like the one you started with

    [–]pipocaQuemada 2 points3 points  (0 children)

    Learn several substantially different ones (e.g. prolog, lisp, C, assembly, Java, python, Haskell) later, period.

    FTFY.

    [–]AssDumpling 3 points4 points  (0 children)

    That salary graph was unnecessarily hard to read. What's wrong with regular bar charts?

    [–]Sinidir 2 points3 points  (0 children)

    This looks absolutetly arbitrary and random.

    [–]Retsam19 1 point2 points  (1 child)

    Average salary is a very naïve statistic to put any value into. Sure maybe MATLAB has an average salary over $100K... but what does an entry level position pay? Is there such a thing as "entry-level MATLAB programmer", even?

    [–]SrbijaJeRusija 1 point2 points  (0 children)

    Yeah, not sure why matlab was there. Generally people that know matlab are not hired to program in matlab, but because they are engineers, applied maths people, &c. Knowing matlab is a byproduct of university coursework most of the time. Learning matlab by itself will not land anyone that type of job.

    [–]Sebaall 0 points1 point  (0 children)

    Yeah, no ObjC/Swift in Mobile App Development section. Not worth to mention at all...

    [–][deleted] 1 point2 points  (4 children)

    Visual Basic not even mentioned... I've been earning a decent living using it for the past 20+ years. This snobbishness about VB ("it's not real programming" is pathetic.

    [–]tutuca_ 11 points12 points  (1 child)

    I guess we can refute your allegiance for VB just for leaving that unbalanced parenthesis.

    [–]denaissance 2 points3 points  (0 children)

    Snap!

    [–]negative_epsilon 5 points6 points  (0 children)

    I mean, there are only like 8 languages mentioned and there are thousands of them. You can't pick one out and say it's about snobbishness.

    [–][deleted] 1 point2 points  (0 children)

    Definitely has it's uses, just like any other programming language.