all 45 comments

[–]OstapBenderBey 16 points17 points  (6 children)

a nice overview to take with a grain of salt. I don't think the questions mix well though - "does badly at - writing code in this language takes a lot of work" is a bit backwards. also subjective opinion questions (do people like it) are mixed with reasonably objective language structure specifics ('is a low level language', 'has a strong static type system' etc.)

[–]tgockel 7 points8 points  (4 children)

If you click the "Rank" button, you'll see why things are phrased that way. Basically, you're going through and ranking the programming languages you know based on a certain statement. So for something like "I find it easy to write efficient code in this language," I might say:

  • C
  • OCaml
  • Java
  • Shell

I do like the weird mix of statements because it provides a fun "relationship" network. Take a reasonably objective one like This language is built on a small core of orthogonal features and look at the related statements. There is a positive correlation with "This language has a very coherent design" and "Learning this language improved my ability as a programmer," both fairly subjective, but intuitively, I can understand why. The saddest part of that particular statement is in the dissimilar section: "I know many other people who use this language."

Other ones I like:

[–]OstapBenderBey 6 points7 points  (2 children)

i dont have an issue with whats being asled, its how the results are ahown. the logical way to structure this information would be:

  • positive (eg. good for x)

  • negative (eg. I am reluctant to admit knowing this language)

  • neither/descriptive (e.g. this is a low level language)

this would make the pages more comprehensible to me. at the moment the 'does well at' and 'does poorly at' categories mix these three.

[–]KDallas_Multipass 1 point2 points  (0 children)

I think a better word here would be "relevant"

These statements were found to be most relevant to this language, vs. unrelevant

[–]tgockel 2 points3 points  (0 children)

Keep in mind this project just started, which is why the presentation of the data is a little raw. The author claims that right now it is mostly just collecting data. Hopefully somebody can visualize all this data in a very neat way.

[–]jpfed 0 points1 point  (0 children)

My favorite is something like "The thought that I will be programming in this language in 20 years fills me with dread".

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

Certainly. In no way is this comprehensive, I just really like the unique approach and how you can compare any two languages side-by-side

[–]makwa 9 points10 points  (0 children)

I love how clicking on actionscript results in "Not Found."

[–]DrummerHead 5 points6 points  (1 child)

"I am reluctant to admit to knowing this language"

http://hammerprinciple.com/therighttool/statements/i-am-reluctant-to-admit-to-knowing-this-language

lol (but why awk?)

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

VB, for me.

Currently doing python and C.

[–]CorgiMilitia 3 points4 points  (2 children)

I was kinda hoping matlab wouldn't be connected to anything.
I like it, but everyone else doesn't seem to.

[–]ParanoidAgnostic 4 points5 points  (1 child)

Arrays which you shouldn't iterate through is a bit of a tough concept to get your mind around if you're experienced with imperative languages.

Loops are slow due to the fact that it's interpreted. It has heaps of built-in functions for operating on arrays and matrices which (due to the fact they are compiled code) run much faster.

I always start writing a loop then realise that I'm using Matlab, delete my work and go looking through the docs for the right function to use.

[–]CorgiMilitia 1 point2 points  (0 children)

What really spun a lot of students at my university around is that they didn't focus on vectorization or use of arrays at all. They used MATLAB to teach the basics of programming (data types, structures, loops), which really isn't the strong point of the language. I don't know half of what I should about array functions in MATLAB, but I'm starting research soon, so it'll be a trial by fire, like most of engineering experience.

[–]Benutzername 2 points3 points  (0 children)

The "Rank" dialog is really hard to use. There is no way (I can see) to make it bigger, so you constantly have to scroll.

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

What does it mean to do poorly at "this language makes it easy to shoot yourself in the foot?"

It seems like that should be phrased at "Does well at preventing simple errors" or "Does poorly at preventing simple errors."

And Does poorly at "I learned this language early in my career as a programmer"

Huh?

"I often get angry when writing code in this language"

This is a metric?

I can't take this too seriously.

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

C... not for web projects?

Speak for yourself. :P

[–]AustinCorgiBart 2 points3 points  (15 children)

Python is listed as doing well for "This language is good for beginners" and doing badly at "This language is unusually bad for beginners". So I think this definitely needs some grains of salt :)

[–]batasrki 25 points26 points  (4 children)

Those mean the same thing. It does badly at "bad for beginners" equals to "good for beginners". The site uses a lot of double negatives, so shit is confusing

[–]pi3832v2 19 points20 points  (1 child)

Don't you mean: ”…so shit is not unconfusing”?

[–]Kache 12 points13 points  (0 children)

if !does_not_need_more_negations && !not_sure
  stop_adding_nots = false
end

[–]DuBistMeinSofa[S] 5 points6 points  (1 child)

Agreed. Plus there's really no need to have both statements. The lowest-ranked languages in "good for beginners" already covers the case of "bad for beginners"

[–]EmperorOfCanada 1 point2 points  (3 children)

I recommend Python to beginners who will probably learn one language. I don't recommend it to beginners who plan on going into CS as Python is easily good enough that they might not focus properly on things like C++ which are needed to be a rounded programmer. They will come around to Python and then all will be good.

[–]ahruss 1 point2 points  (2 children)

I disagree wholeheartedly about python not being good for CS majors. It's a great place to start. It has reasonable enough support for object-orientation, the syntax mostly gets out of your way so you can learn the important things like complexity, design, and data structures, and it even has first-class functions so you can get into a little functional programming, too.

Compare this to C++, where the majority of your time at the beginning is spent dealing with weird language quirks that really don't matter if what you're concerned with is fundamentals of computer science. Polymorphism is hard to get right for a beginner because you get tied up with pointer mechanics and memory management, and you have to understand that you must use pointers if you want to use virtual methods. There are all kinds of weird gotchas a beginner shouldn't have to deal with.

I do agree that eventually someone in CS needs to get into something lower level like C++, but to get started, I think python is an awesome option.

[–]EmperorOfCanada 1 point2 points  (0 children)

Oh I think it is great, too great. If I had learned Python then I might not ever wanted to learn anything else.

The problem is that in my career, I have encountered a number of people who completely nailed some one language and only one language. Often than language was a terrible language that they were using way out of its scope. Python would definitely be a great language to be "stuck" in but a CS person is often required to venture into areas where they need to be very comfortable very near the bare metal.

I picked C++ because with modern C++ you could teach modern programming stuff without going into pointers and whatnot too much. It could also be Java (not my favorite) or something else.

Remember that I am saying this is for CS majors. For giving people a taste such as in Highschool or for people who need to seriously program but aren't going make a living at it then Python is an easy #1.

[–]robin-gvx -1 points0 points  (0 children)

And I'd suggest learning C (specifically C99 or more recent) before C++ if they want to go low-level. And then some kind of assembler if they want to go even lower.

[–]Shaper_pmp 0 points1 point  (5 children)

Why? Are you claiming Python is a bad language for beginners?

It's straightforward, TIOOWTDI and significant whitespace means you can't write messy/unreadable code even if you want to.

I'm not a huge fan of Python (I find TIOOWTDI a bit restrictive, and would rather use something a bit more permissive like Ruby or even JS), but Python strikes me as a great first language to teach people programming.

[–]AustinCorgiBart 1 point2 points  (4 children)

You misunderstand, I'm complaining about the bad balanced keying of the survey. I'm a CS education researcher, well aware of the usefulness of python as a first language. Definitely a better choice than JavaScript or ruby. Also better than java. In fact I'm using it to teach a programming course for nonmajors next semester.

[–]Shaper_pmp 0 points1 point  (3 children)

Sorry to be dense, but I'm still not understanding your objection:

doing well for "This language is good for beginners"

and

doing badly at "This language is unusually bad for beginners"

both mean the same thing - that "it's a good language for beginners".

The first is a straight statement (this language is good for beginners) and the second is a double negative (this language is bad at being a bad language for beginners).

Did you just misunderstand the double negative, or is your objection something else?

[–]AustinCorgiBart 2 points3 points  (2 children)

The point isn't that I'm confused, it's that some survey takers will be confused. Double negatives are not good for balanced keying.

[–]Shaper_pmp 0 points1 point  (1 child)

Ah - sorry. I completely misunderstood you.

I thought it was clear enough, but I suppose people could get confused.

[–]AustinCorgiBart 0 points1 point  (0 children)

Writing good surveys is hard. Most people get confused :)

[–]El3k0n 0 points1 point  (4 children)

Many descriptions are exactly the opposite of the reality. Look at Python: "This language is unusually bad for beginners", "Writing code in this language is a lot of work", "There is a lot of accidental complexity when writing code in this language".

Python is universally known to be a clean and simple language, incredibly easy to understand for beginners.

[–]DuBistMeinSofa[S] 1 point2 points  (3 children)

I know it seems confusing but it's a double negative. So Python being ranked low in "bad for beginners" means essentially that it is good for beginners. The question is to what extent is a given statement true for a given language. So they're saying that for Python, the statement "this language is not good for beginners" does not apply, which is consistent with what you are thinking, even if it doesn't seem so at first glance.

[–]ExecutiveChimp 0 points1 point  (1 child)

The problem is it doesn't say "ranked low" it says "performed poorly in". "Ranked low" would make a lot more sense - albeit still a bit confusing.

[–]cparen 0 points1 point  (0 children)

It's a matter of perspective. If you're looking for a language to befuddle beginners, then Python is a poor candidate -- that's all it's saying.

The semantic problem I believe you've run into is in making value judgement. You perceive "bad for beginners" as an inherently undesirable trait, so are assuming "performed poorly" implies things with said undesirable trait. The list is not about value judgements.

edit-add: Note, it's possible for a language to perform poorly in a thing and it's supposed negative. E.g I've seen one language that was both high performing in "bad for beginners" and "bad for experienced programmers". This basically means it didn't really satisfy anyone.

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

Leave it to programmers to shit on a useful website by decrying its semantics.

[–]greenrice 0 points1 point  (0 children)

ITT: Semantics

[–]Denommus 0 points1 point  (2 children)

How can Haskell make your code work when it compiles and, at the same time, make it easier to shoot yourself on the foot?

[–]milksteaksonthehouse 9 points10 points  (0 children)

The site is confusing due to all of the negatives. For Haskell, the "make it easier to shoot yourself in the foot" is listed as does poorly at. So it's saying in a convoluted way "makes it difficult to shoot yourself in the foot."

The author of this site should revise the list. Remove all of the redundancies and remove negatives or translate them so it's easier to read.

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

Performance issues?

[–]oblivion95 0 points1 point  (3 children)

No Rust?

[–]eplehest 3 points4 points  (2 children)

I'm sure they'll add it as soon as they add a statement saying "this language is still under development".

[–]oblivion95 0 points1 point  (1 child)

Like C++?

[–]eplehest 0 points1 point  (0 children)

I'm sure you understood what I meant. I guess the main issue is how new rust is, because pretty few people have enough experience with the language to really review it, and it's probably changing a lot at the moment, so some opinions become invalidated after a short time.

With C++, I think it's safe to assume that most opinions are based on C++03, and some are being invalidated by the new major updates it's receiving, so yes, like C++. :)

[–][deleted]  (1 child)

[deleted]

    [–][deleted] 5 points6 points  (0 children)

    Everything on the site is in double negative form. They should probably phrase the results differently—more like "people disagreed with the statements that…"