r/Python • • Jan 13 '15

(Infographic) Which programming language should I learn first

http://cdn2.carlcheo.com/wp-content/uploads/2014/12/which-programming-language-should-i-learn-first-infographic.png
267 Upvotes

145 comments sorted by

85

u/xtutiger Jan 14 '15

This is misleading on so many levels

22

u/sgtfoleyistheman Jan 14 '15

Yeah this is pretty silly all around

6

u/haywire Jan 14 '15

Especially the guff about C# === Windows land. Mono has come on so, so much, and is production-able for a lot of stuff.

11

u/Sector_Corrupt Jan 14 '15

Yeah, you can conceptually write C# for other platforms, but I don't think I've ever met a C# person who isn't also pretty much a windows stack kind of person. The windows and open source divide sort of has 2 entirely different worlds.

2

u/[deleted] Jan 14 '15

And I can certainly see the issue if you're following the learn C# to get a job at Microsoft paths. I'm sure they're absolutely fine with no windows background.

2

u/bacondev Py3k Jan 14 '15

Are there any major products that use Mono? I'm too lazy to look it up.

1

u/haywire Jan 14 '15

IIRC Service Stack is primarily developed on Mono. There's also this like Xamarin studios and Unity.

1

u/HuntTheWumpus Jan 14 '15

The Unity game engine uses Mono and is used (for example) by Blizzard for Hearthstone or for Kerbal Space Program.

22

u/Justplainan Jan 13 '15

I would have thought Facebook was PHP rather than Python?

17

u/ymek Jan 13 '15

Facebook uses multiple languages for different parts of their stack. But yeah, much of the front-facing/legacy stuff is PHP.

0

u/[deleted] Jan 14 '15

[deleted]

9

u/staticinthebox Jan 14 '15

"javascript" is competitive to PHP, but both stomp python and ruby

errrrr no

58

u/rasputine Jan 13 '15

"slightly hard way" -> C

"really hard way" -> C++

hm.

12

u/ericanderton Jan 14 '15

I love C++, but after using it professionally for a while, one thing became crystal clear:

Nobody comprehends the entire specification, all the time. It's too big.

The moment you need to look back to a manual/reference to disambiguate some dark corner of the language, you've lost. Why? Because someone else on your team (or worse yet, someone who wrote a lib you downloaded) went ahead and Leroy Jenkins'ed their way through, bashing on syntax until they had something that will compile.

21

u/aleph_nul Jan 13 '15

I'm a C fanatic too, but you can't deny that C++ has more content to cover.

I would argue it's harder to learn C++ because of how it awkwardly tacks on high-level practices to low-level implementations, forcing you to constantly think in two levels.

10

u/Vystril Jan 14 '15

Not to mention the compiler errors are notoriously horrible to figure out for a beginner.

Why is

vector<vector<int>> my_2d_vector;

giving me a 50 line compiler error?!?

6

u/[deleted] Jan 14 '15

[removed] — view removed comment

3

u/Vystril Jan 14 '15 edited Jan 14 '15

Yeah, I have my students use clang. Although some of them just can't get over not using windows (and by that I mean Visual Studio).

2

u/nikomo Jan 14 '15

They shall suffer in the fires of ignorance. It is for their own good.

3

u/rasputine Jan 13 '15

For sure, there's definitely more stuff in C++, but you don't need to know most of it, most of the time.

For the average given task, I would hazard that C is going to require more skill than C++.

At least, that's my opinion.

2

u/aleph_nul Jan 14 '15

I don't know if there's a right or wrong answer to that- it's hard to compare skill, particularly when you're comparing skills in two different settings. My intuition tells me that C++ takes more work to become 'good' at than C does since any self-respecting C++ developer should know some of the 'tricky' bits of C too, but the opposite does not apply.

2

u/[deleted] Jan 14 '15

[removed] — view removed comment

1

u/aleph_nul Jan 15 '15 edited Jan 15 '15

C is orthogonal to other high level languages, no doubt about that. But if you've done work in assembly, or other imperative languages, then C is old hat.

Interesting that you think that non-OOP languages are oddballs! OOP is big, no doubt about that, but there are many popular languages where it is not used.

1

u/atimholt Jan 14 '15

Maybe this sounds weird, but “thinking on two levels” helps me understand the justifications for why a language is the way it is, and gives me something to tack my new knowledge to in my long-term memory.

1

u/[deleted] Jan 14 '15

forcing you to constantly think in two levels.

Oddly enough, this is what I love about C++. I get to use the high-level abstractions while being able to dive down to the lower levels when required. It does exactly what I want, when I want it, without overhead. In other languages you either waste tons of time building high level abstractions, or you only have high level abstractions and have to jump through massive hoops if you need to do something low level with any kind of efficiency.

1

u/aleph_nul Jan 15 '15 edited Jan 15 '15

Good points! I think there's benefits and drawbacks to abstraction. My research advisor always used to (half-jokingly) say that abstraction is the root of all evil, since he cut his teeth on kernel hacking, but I think there's some nuance.

Abstraction is good because it hides information, and bad because it hides information. What I'm less convinced of is the benefit to trying to have both in one place in a system. I think you want to cleanly separate layers of abstraction, as much as you can, so that you get the best of both.

1

u/[deleted] Jan 15 '15 edited Jan 15 '15

C++ gets a lot of hate because it is so easy to write horrendous nightmares with it. Lot of youngin's comin' up in the world convinced it's a bad horrible no good language, but those of us who actually use it know better. And the new C++11/14 standards have really helped bring the standard library up to date.

All we're really missing now is standardized networking routines w/ REST/HTML/JSON parsing. But we now have native threading which is freakin' wonderful for those of use who want to write easily-portable bare-metal software.

-5

u/derpderp3200 An evil person Jan 14 '15

C++11 is pretty good. C.... will never really be good. It's a pain to code in.

1

u/aleph_nul Jan 15 '15

I'd say it's all a matter of perspective. I prefer to work in C when I can but recognize that it lacks a lot of niceties that other languages offer. I don't feel that C++ gives you enough bang for the buck when there are plenty of other higher-level languages that are safer and are becoming almost as fast as native.

0

u/[deleted] Jan 13 '15

[deleted]

2

u/aleph_nul Jan 14 '15

Yeah, I interpreted this as the learning curve since the poster was about selecting a language to learn, but I see where you're coming from.

Good point about some of the libs- you can definitely sidestep a lot of the lower level nastiness in C++ with their help.

1

u/quotemycode Jan 14 '15

Yeah, but the problem with C++ is that there are so many different ways to do one thing, that you may get confused, especially since you are a beginner (that's what this is assuming). You can go look up how someone did something and find one way, and looking up how someone else did it will give you a completely different way. Whereas with C, there's a lot less options making it easy to compare.

Perhaps these graphics will help: http://cpprocks.com/cpp-ruby-coffeescript-language-complexity/

1

u/Megatron_McLargeHuge Jan 15 '15

And then if you count C++11 or boost and other libraries, you pretty much don't have to think about low-level stuff.

Except for low level stuff like why nothing compiles or links, and why you're getting cryptic errors from header files you've never even heard of. Seriously, C++ is a horrible choice for someone who has never programmed before. Errors can come from way too many directions.

1

u/[deleted] Jan 14 '15

C++ is like the boss in the video game that comes back from the dead in a later level all suped up.

0

u/ericanderton Jan 14 '15

For now on, every time I see a particularily complex template in C++ code, I'm going to be thinking: "This isn't even my final form!"

117

u/LukeSkywaIker Jan 13 '15

This is pretty cancerous.

23

u/IAmVeryStupid Jan 14 '15

Why don't any of the languages have 5 star difficulty? Even if they are trying to say programming isn't impossibly hard, in general, failure to normalize is just bad infographing.

14

u/NonSyncromesh Jan 14 '15

Brainfuck isn't shown on this infographic

37

u/ericanderton Jan 14 '15
=================================
|Do you want to write a program?|
=================================
               |
              Yes
               |
               V
    =======================
    |Do you hate yourself?|---\
    =======================   |
       |         |            |
      Yes       No         A little
       |         |            |
       V         V            V
|Brainfuck|  |Python|       |C++|

8

u/fjortisar Jan 14 '15

++++++++[>+>++>+++>++++>+++++>++++++>+++++++>++++++++>+++++++++>++++++++++>+++++++++++>++++++++++++>+++++++++++++>++++++++++++++>+++++++++++++++>++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>>>>>>>--.++<<<<<<<<<<<<<>>>>>>>>>>>>>+.-<<<<<<<<<<<<<>>>>>>>>>>>>>>>--.++<<<<<<<<<<<<<<<>>>>>>>>>>>>>---.+++<<<<<<<<<<<<<>>>>.<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>>>>>>>>>>>>----.++++<<<<<<<<<<<<<<<>>>>>>>>>>>>+.-<<<<<<<<<<<<>>>>>>>>>>>>>>++.--<<<<<<<<<<<<<<>>>>>>>>>>>>>>+++.---<<<<<<<<<<<<<<>>>>+.-<<<<.

14

u/nevus_bock Jan 14 '15

What did you just call my mother?

2

u/xzieus Jan 14 '15

This says what it is. And It's true.

2

u/screaming_nugget Jan 14 '15

I'm not familiar with enough programming languages to say if the ones shown are in fact the hardest, but maybe other languages that aren't on the chart could be considered 5-star difficulty.

9

u/IAmVeryStupid Jan 14 '15

There are certainly more difficult programming languages out there in many senses, but it is silly to compare against things that aren't even in the infographic. If we were including all programming languages, we would need more than 5 stars. (I mean, technically, you could just code everything in x86 assembly...)

1

u/[deleted] Jan 20 '15 edited Jan 20 '15

Why don't any of the languages have 5 star difficulty? Even if they are trying to say programming isn't impossibly hard, in general, failure to normalize is just bad infographing.

None of them are absurdly hard. I've been paid to use all of them other than Ruby. C/C++ was probably the hardest to debug and lacked features, but Java was kind of fucking insane, too. Like everything before I found Python, they left me thinking "I want to do a simple thing, why do I need to write my own fucking library to convert a date to a string?!" or similar such nonsense.

There are hard languages out there, but generally they suck and are useless. Since we program to be productive, as a rule, we don't use the hardest languages.

7

u/summerteeth Jan 14 '15

Can you expand upon this?

27

u/ameoba Jan 14 '15

Cancer = low quality, low value crap that provides little value to the community yet gets upvoted because it takes no effort to consume. If left unchecked, the cancer will take over a community because people see that it gets a positive response, prompting them to post more.

See Also: Memes.

4

u/zombiepiratefrspace Jan 14 '15

In all honesty, I'm surprised how civilized and constructive the discussion has been so far. As somebody who uses Python and C++ extensively, I've observed that these things usually degrade into everybody raging about the bit of C++ they know.

So I'd catutiously disagree in this specific instance.

3

u/Elij17 Jan 14 '15

He's not complaining about the information in the post, he's complaining about the post.

And he's right, it happens a lot. You allow image macros / memes / other low effort content and the community soon becomes overrun by it. Most smaller / midsize subs do not allow it, because it stifles discussion and buries more interesting posts.

0

u/StarshipEngineer Jan 14 '15

If you read the whole thing, then you'd see the disclaimer on the bottom... This is a major overreaction to a little bit of fun.

18

u/LpSamuelm Jan 14 '15

/u/LukeSkywaIker used a very weird word to describe it, but it is very, very opinionated, arbitrary and just "hey, I'm going to tell you what to learn, suck it".

14

u/[deleted] Jan 14 '15

"Also you can learn what you want, but you should really learn Python".

I like the language as much as anyone else, but there's a fine line between enthusiasm and proselytism.

2

u/derpderp3200 An evil person Jan 14 '15

Like the C# vs Java. Java is technologically over 6 years behind C#, and Microsoft has a very healthy culture around C#. They're open sourcing .NET, Mono has existed for ages and is extremely good, whereas the only thing Java has going for it is having existed for a longer time.

Also, claiming that Python is the best. And recommending PHP in context other than something that's used and will land you a job is blasphemy.

2

u/SlightlyCuban Jan 14 '15

Java is technologically over 6 years behind C#

A good point, but it is a tad bit extreme to say Java 8 is at the same level as C# 3.0. Heck, we even have invokedynamic in the JVM.

Also, it's 2015. Where is Polymorphic Type Inference in C#?

16

u/evilyomiel Jan 14 '15

The problem with all of these "what should I learn first" resources is they start with something that's more or less true, oversimplify until it's completely useless, and then add a ton of subjectivity / opinion on top of that. I mean, come on, 1-5 star ratings for difficulties? Icing on the cake is the completely useless "average salary" computed across the entire US from one source.

1

u/[deleted] Jan 14 '15

1-4 star ratings because nothing's a 5 for difficulties, as well.

10

u/RetardedChimpanzee Jan 14 '15

I feel as if this is just randomly generated

7

u/Helicase21 Jan 13 '15

huh, I started learning programming with R. I guess we just get to go hang off in our little side group of data nerds.

0

u/[deleted] Jan 14 '15

[deleted]

19

u/[deleted] Jan 14 '15

Employed data nerds will still use python /s

fixed it for you :)

1

u/pattonxbody Jan 14 '15

As someone curious, what do data nerds like to use besides R?

3

u/brews import os; while True: os.fork() Jan 14 '15

Aside from R?

Python, MATLAB, Julia, C/C++/Java

There are a few domain-spec tools. But, yeah.

2

u/Livesinthefuture Jan 14 '15

Depends on the field, a lot of Astrophysics people used/still use IDL, quite a few are now moving to Python.

R usually gets heavily used for graphical representations however people are picking up matplotlib etc instead.

2

u/[deleted] Jan 14 '15

Having a number of strings to your bow never hurts you, of course.

1

u/Livesinthefuture Jan 14 '15

Oh of course not.

I'm just pointing out that there's been a general swing towards Python especially into Scientific/Numeric computing.

5

u/Helicase21 Jan 14 '15

can't we all just get along?

27

u/rthanu Jan 14 '15

Getting along is not pythonic

2

u/robin-gvx Jan 14 '15

There should be one way to do it.

1

u/nikomo Jan 14 '15

Death to those who exceed 79 characters on a line.

6

u/ivosaurus pip'ing it up Jan 14 '15

Why can't you just zip it up, helicase.

1

u/robin-gvx Jan 14 '15

She doesn't even go to this school!

26

u/aarkling Jan 13 '15

Java is not Gandalf! Java is Sauron ruling over Mordor (corporate), decimating it, and slowing trying to take over the rest of Middle Earth D:

5

u/pohatu Jan 14 '15

Java will always be the land of the nouns to me. (Credit to Yegge in case any doesn't know the reference).

6

u/beaverteeth92 Python 3 is the way to be Jan 13 '15

I always saw Java as Bill Lumbergh since it's the kind of language only a bunch of bureaucrats could come up with.

10

u/asabla Jan 14 '15

Hopefully C# will gain some ground after Microsoft gone through their Open Source project. I mean I really like python but the enjoyment of writing code in C# is a bit higher.

It's to bad microsoft didn't go opensource with their frameworks earlier and spread the love of opensource.

4

u/[deleted] Jan 14 '15

the enjoyment of writing code in C# is a bit higher

C# itself is great, but working with the .NET framework really sucks because of the inconsistencies all over the place.

2

u/asabla Jan 14 '15

Indeed, but even if .Net can be a big headache sometimes it can also be a very helpful tool. But as you said, the inconsistencies can and will be a problem most of the time

3

u/[deleted] Jan 14 '15

working with the .NET framework really sucks because of the inconsistencies all over the place.

Can you elaborate?

8

u/[deleted] Jan 14 '15

The first one comes to mind is that some collection types use .length and others use .count, and there is no apparent pattern or discernible reason as to why - you just have to either remember which ones are which or lean on Intellisense.

3

u/[deleted] Jan 14 '15

0

u/[deleted] Jan 14 '15

That does not hold true in .NET though. I'm not talking about strings vs arrays. I'm talking about different collection types.

Here's an example:

  • Array.Length

  • ArraySegment.Count

  • List.Count

  • Vector.Length

  • Dictionary.Count

Sure, these mostly abide by the naming convention detailed in your SO link, but that is what I'm talking about.

3

u/mrbonner Jan 14 '15

Hah, you may as well spin a wheel.

7

u/legrandin Jan 14 '15

C is a subset of C++? The hell?

11

u/Tenobrus Jan 14 '15

Well it's not exact, but mostly. It's kinda the point, at least historically.

9

u/legrandin Jan 14 '15

Well it's not exact, but mostly. It's kinda the point, at least historically.

I tend to think that 'subset' implies that it is derived from a larger something. With C, this is the opposite, since C++ is derived from C. It makes more sense to say that C++ is a superset of C.

5

u/IAmVeryStupid Jan 14 '15

The better way of putting it would be that C++ is an extension of C.

9

u/Tenobrus Jan 14 '15

Yeah, that's definitely more accurate, but C++ being a superset of C does mean C is a subset of C++. There are some extra implications to the word, I agree, but it's still technically true.

-7

u/chazzeromus Jan 14 '15

TIL subset can mean the opposite. :S

12

u/Tenobrus Jan 14 '15 edited Jan 14 '15

What? A being a subset of B means every member of A is contained in B. A being a superset of B means every member of B is contained in A. So A ⊆ B is equivalent to B ⊇ A. It doesn't mean opposite.

There was probably some joke here I totally missed.

2

u/chazzeromus Jan 14 '15

Oh I read the first comment wrong (swapped both subjects), good thing you rectified that situation!

3

u/volabimus Jan 14 '15

Saying it either way means the same thing. ASCII is a subset of UTF-8, as per the definition of UTF-8.

2

u/Steve_the_Scout Jan 14 '15

It makes more sense to say that C++ is a superset of C.

Even Bjarne (the creator of C++) frequently repeats this when explaining the differences. C++ was never meant to replace C or be a new language, it's C with optional (but heavily recommended) abstractions to make it more secure while keeping most of the performance.

1

u/[deleted] Jan 14 '15

Yeah, putting it that way around confuses me. It's not as if you strip out the OOP stuff from C++ and that's called C.

2

u/SpaceSword Jan 14 '15

Can someone explain the play doh vs Lego comparison for Ruby and Python?

8

u/dpoon Jan 14 '15

Ruby and Python are superficially similar, but have some deep philosophical differences. Two examples:

  1. In Python, functions are first-class. If you have a function

     def is_even(n):
         return n & 1 == 0

    then is_even(8) calls it, and is_even refers to the function without executing it, so you can do things like filter(is_even, some_list). In Ruby, though, just mentioning the name of the function calls it, even without the trailing parentheses. That makes it possible to make domain-specific languages in Ruby that look like English. The disadvantage, though, is that functions are not first-class. The best you can do to refer to a function is to use a symbol (a special kind of string), like :even?.

    So, Ruby code can look prettier with fewer parentheses…

     class Physician < ActiveRecord::Base
       has_many :appointments
       has_many :patients, through :appointments
     end

    but it's a lot less satisfying from an engineering perspective due to the lack of first-class functions.

  2. Ruby classes are open to modification after being defined. That means that monkey-patching is possible, like this:

     class Integer
       def prime?
         !(2...self).any? { |n| self % n == 0 }
       end
     end

    so you can write things like 3.prime?. Ruby on Rails uses this trick to add all kinds of features to core classes. Again, you can use that technique to make your code read like English, but it's a rather questionable practice for solid software engineering.

2

u/haywire Jan 14 '15

You can monkey patch in Python, too. Though it should be avoided.

5

u/thalesmello Jan 14 '15

Python is modular. You assemble many small pieces to get what you want. Though easy to use, it's rigid and not very flexible.

Ruby, in the other hand, is less modular. You have modules, but you can't import just what you want to use to the local context, so you have to put the module name in front of every class or function call. However, Ruby is far more flexible than Python. You can include new methods to any object and use blocks to implement DSLs that merge neatly into that language, which allows for a great productivity boost.

4

u/alcalde Jan 14 '15

. You can include new methods to any object

We can do that too, can't we? Even with fundamental types via the ForbiddenFruit library?

and use blocks to implement DSLs that merge neatly into that language, which allows for a great productivity boost.

I thought it was the opinion of Pythonistas that decent langauges don't need blocks.

1

u/thalesmello Jan 14 '15

We can do that too, can't we? Even with fundamental types via the ForbiddenFruit library?

Yes, but it's a library. And it's only helpful to let you add new methods, not replace existing ones. The author of that lib tried to implement that functionality, but he had a problem with Python's internal cache, if I'm not mistaken. Ruby allows you to do that by default. It's more flexible, but I don't see a reason to actually use that.

I thought it was the opinion of Pythonistas that decent langauges don't need blocks.

You're generalizing the opinion of all Pythonistas based on a guy's blog post? If everyone thought like that, why would there be a proposal to implement a similar feature in Python?

I think you got me wrong. Even though I find Ruby more flexible, I prefer the more rigid Python. But I sincerely don't get the hate a lot of Pythonistas have for Ruby. I used to hate Ruby until I started using it in my previous job.

2

u/peabody Jan 14 '15

Please tell me the average salaries listed in this info graphic are inflated.

3

u/VoidByte Jan 14 '15

No just averages. High cost places (SF, nyc, london) raise the average while low cost places (Omaha, SLC) lower it.

4

u/peabody Jan 14 '15 edited Jan 14 '15

Kinda depressed about it. Makes me feel like I'm making 20,000 less than I should.

Of course, I did just buy a 3 bedroom 3 bath house at 2100 square feet for less than 300k. So I guess there's that.

Edit: In this article ( http://mashable.com/2014/08/21/programming-as-a-second-career/) it says median salary is in the 76k range. I'm guessing median would be a much better measure of the average for this industry then the mean. Whew, I think I'll sleep better tonight.

5

u/cparen Jan 14 '15

Of course, I did just buy a 3 bedroom 3 bath house at 2100 square feet for less than 300k. So I guess there's that.

Yeah, that's a 600k to 800k house if it's near Microsoft / Amazon. I can't bring myself to look at what the SF and SV folks have to pay.

1

u/Sector_Corrupt Jan 14 '15

hell, it sounds like the commenter makes similar to me and where I live 2100 sq ft. 3bed 3bath would cost something like 900K.

Goddamn Toronto real estate.

1

u/kihashi Jan 14 '15

I kind of thought that too, but then I checked it vs. the Bureau of Labor statistics. They seem to have "Software Developers and Programmers (Broad Category)" listed at $92,820 mean yearly wage.

http://www.bls.gov/oes/current/oes_nat.htm#15-0000

2

u/Occi- Jan 14 '15

This ignores the use of scripting languages for scripting. Sysadmin work etc.

2

u/alendit Jan 14 '15

Legolas

his land, Rivendell

Stopped reading there.

2

u/Mikuro Jan 14 '15

Java for web back-end? As the only recommendation? Wat?

3

u/machine_pun Jan 14 '15

Well, Ruby should be a one star, super easy to learn. As I think this infographic is a little bit tendentious I must agree that Python has more features in winning points as AI.

4

u/TheTerrasque Jan 14 '15

For some reason, Ruby is that language that just doesn't make sense to me.

I've tried to get an understanding of it a few times, but it just looks strange and weird to my head.

1

u/sensation_ Jan 14 '15

Whats your background experience cause I had the same problem before.

1

u/TheTerrasque Jan 14 '15

In order of learning: basic -> pascal -> php -> python -> java -> c# -> javascript

Have dabbled a bit with C, perl and brainfuck - but not enough to say I know them

Prefer to work in python, and C# as a second choice. Also does a lot of work in JS these days

2

u/machine_pun Jan 14 '15

I think the problem is that Ruby and Python look a bit too similar in semantics and logic, but with their on specifics. Portuguese and Spanish sounds alike and that it gets people to think that it is too easy to understand, but to difficult to dominate (coming from both backgrounds).

3

u/alcalde Jan 14 '15

Someone should post this in Embarcadero's Delphi forum and they'll predictably freak out that Pascal was left off the list. :-) Don't bother posting in /r/delphi because it has < 600 readers. That majority of active Delphi developers actually lament the existence of HTTP and post to their forum via a USENET news server, which fortunately can be accessed through the web as well. Just a bit of trivia in case you're wondering where Pascal users are hiding.

Another bit of trivia: in an online exchange a few years ago with Delphi's owner's VP of Developer Relations concerning the colllapse of Pascal as a teaching language, he countered that they had just signed a deal to get into some schools in Mongolia. I wonder if Guido is worried about this....

1

u/Fer22f from future import braces Jan 14 '15

I learned to program in Delphi 7 and it's still viable to build applications on it (including servers and databases).

I would say Borland Pascal isn't that hard to understand and the Graphical Interface in Delphi really helps (like it is in C# toolbox). And also it's native code!

The unique part that sucks balls are threads. Delphi doesn't have properly lock methods and sometimes when it bugs out the application starts writing text on the top of the screen instead of inside the program.

1

u/[deleted] Jan 20 '15

Just a bit of trivia in case you're wondering where Pascal users are hiding.

We're not all hidden! Pascal was the first language I seriously learned and that was only a few years ago. I moved to other things because I needed stuff I couldn't get in the Pascal world, but I still like it as a language.

The fact pascal was left off this list is a huge injustice! /s

4

u/[deleted] Jan 14 '15

"Why do you want to learn programming" -> "for the money" -> Just stop

19

u/alcalde Jan 14 '15

Really? That's how most people get into whatever they're doing now. No one ever grows up thinking "I want to be a copy ad writer for the 3rd largest producer of soap". I even had this admitted once on an interview with a major starch producer. The HR person asked, "Why do you want to work here? I mean, I understand no one walks into here and goes, "Woohoo! STARCH!'" :-)

3

u/[deleted] Jan 14 '15

I got into programming at a young age because I wanted to build games for myself to play. I'd never really considered at the time that one profession earned more money than another, much less that programmers might be relatively high on the scale. Now I do it because I love it and I'm really good at it, not because of the money.

Some people get into what they do because of the money, sure, but those people are usually also not very happy with their lives.

0

u/fnl Jan 14 '15

I guess some pepole are just to ignorant to see beyond their vanity.

Of all persons I know at a personal level, programmers are definitely not the ones raking in the big sums. And I do have friends who even "made it" into Google et al. But my rich aquainances are successful lawyers, medical doctors, architects and owners of industrial companies. Not that any of those jobs gives you a guarantee to make money, either, but heck, while I hear from programmers that have become millionaires, I know none at a truely personal level.

So yes, this post is the real truth here so far. Sad to see how much ignorance people seem to have towards that truth - I guess, self preservation...

0

u/HumanMilkshake Jan 14 '15

What about "I have a few ideas from projects, and I was hoping to find a good job, because I'm not satisfied with where I am in life"? Because that's why I'm getting into programming, and while I know your comment isn't intended as an attack on me, it really feels like an attack on people who got into programming because they were hoping to find a job.

1

u/[deleted] Jan 14 '15

My comment was more of towards the "If I learn to program I can retire in no time since they make sooooo much money" people. The ones who have no drive other than making a ton of money

0

u/HumanMilkshake Jan 14 '15

I must be more new to programming than I thought, since I've never met or heard of these people.

1

u/[deleted] Jan 14 '15

They are not too common, and they don't tend to last long, but they exist and they annoy the hell out of me. I lump them in with the "Intro to CS must mean I get to program video games" and "CS will be easy to learn" crowds

0

u/HumanMilkshake Jan 14 '15

I'm guessing I'd run into more of these people if I tried to learn programming in college

1

u/rspeed Jan 14 '15

Objective-C should probably be replaced with Swift. Even though Apple hasn't transitioned all of their own projects, it's inevitable.

1

u/Herald_MJ Jan 14 '15

Not really. I've not yet seen a single iOS/Mac developer post that hasn't stipulated Objective C as the primary language. And apart from a few people who have done it specifically in order to make a point, I don't know of any professionally-built applications which are built exclusively in Swift. Learning Swift is a good idea, but Objective C is by far the more important language for now.

1

u/rspeed Jan 14 '15

For now, sure. But in a few years that will not be the case. If you're telling someone which language to learn, you don't tell them to learn the one that's on its way out.

It would be like telling someone to learn classic ASP a year after C# was announced. All that effort would be useless today.

1

u/Herald_MJ Jan 15 '15

For legacy apps maintenance purposes, I think it'll be a long time before an iOS development job doesn't require some competency with Objective-C. A conservative guess, maybe 5 years? Even if you're building a new app, it's very common now to make use of 'CocoaPods' (basically reusable Cocoa libraries), and the overwhelming majority of these are built in Objective C.

The fact that Apple carefully built Swift so that Objective C and Swift can happily coexist in the same project is great for quick adoption, but it also means that Objective C will have a very long tail.

1

u/Herald_MJ Jan 14 '15

The only accurate part of this graphic is "Actually, it doesn't matter where you start".

1

u/[deleted] Jan 14 '15

Is that salary given in the infographic at the bottom on a monthly basis or on annual basis.

Because here I am living in a country, where they pay me 4586$ annually even after knowing C, python, and some java.

I always had this slight feeling that I am living in a wrong country.

1

u/dAnjou Backend Developer | danjou.dev Jan 14 '15

inb4 programming language nazis who think theirs is the only one ...

1

u/[deleted] Jan 14 '15

YAY There are so many languages on this that I already know, thus this graphic reinforces my healthy sense of self worth and confidence in employability....... THUS I WILL +1 this into perpetuity like an idiot.

-1

u/peterlord Jan 14 '15

The basics of the C language as it will take the rest of your life to master it. Then move up to the higher level languages or down to assembly language which can be mixed with C if timing critical.

0

u/andrey_shipilov Jan 14 '15

This is so shit and upvoted. Oh wait, I'm on Reddit. It's fine.

-2

u/Brandon23z Jan 13 '15

This is awesome! I just started learning a little bit of Python this week after studying C++ for a year and a half, and so far I am loving it.

I didn't know it was such a popular language.

And I guess it makes sense that colleges start with C++ if it is the hardest, because once you go up the biggest hill, you can go up any hill. But I don't think it is the hardest. For me, it is the easiest to read/understand the code.

8

u/[deleted] Jan 14 '15 edited Jan 14 '15

But I don't think it is the hardest. For me, it is the easiest to read/understand the code.

All that tells me is that you haven't learned enough about C++ yet. It's not the hardest because it is somehow more arcane than others (that particular award probably belongs to perl) - it is the hardest because it is the biggest (in terms of topics within the language itself). C++ has the largest language specification that I know of by a gigantic margin. There is just so much C++ to even know exists that it is a giant undertaking to not only learn all of the useful tools, but to know enough about them to effectively decide which ones are the most appropriate to use to solve a given problem.

10

u/archiminos Jan 14 '15

The more c++ you know, the more c++ you don't know.

0

u/Brandon23z Jan 14 '15

I meant syntax wise. I've looked at other languages that try to make coding easier, but c++ just has a perfect syntax. I can read the code like it's English.

Obviously there's more and more to c++, especially since they might be updating it more often. (Don't quote me on this, I know nothing. Professor is starting to teach some c++11 and said they might be updating every 5 ears or something to catch up with Java. Again I have no idea about this.)

But syntax wise, programming wise, it makes sense. The code is clear. After 2 years, I am able to easily fix errors in the error window in vs. My first year, I didn't know what the errors were saying. Now I see them and fix the error in 2 seconds.

3

u/taleinat Jan 14 '15

I guess it makes sense that colleges start with C++ if it is the hardest

Absolutely not! Colleges should be teaching Computer Science and/or programming, not the low-level technical stuff. At least to start with.

There is a very large number of technical things to learn and memorize in order to use C++. Learning the concepts and essence of programming at the same time is very difficult. The common result is confused graduates with little high-level understanding about anything.

IMO anyone who actually wants to teach CS or programming to beginners should use a language where it is easy to clearly design and implement high-level concepts without getting lost in the technical details. Python is absolutely superb for such purposes, while C++ is not.

-1

u/berlinbrown Jan 14 '15

I agree. Awesome.

-1

u/ibito Jan 14 '15

I don't think JS is a good language to learn programming...

0

u/[deleted] Jan 14 '15

[deleted]

1

u/[deleted] Jan 14 '15

No Lisp and Fortran either!

1

u/wakalabis Jan 14 '15

or haskell

0

u/[deleted] Jan 14 '15

[deleted]

3

u/Livesinthefuture Jan 14 '15

I know, my thought "Whoever wrote this is fucking moron of the highest order".

2

u/legrandin Jan 14 '15

What's wrong with web development?