Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
[flagged] Your Language Sucks (theory.org)
17 points by tormeh on Nov 17, 2014 | hide | past | favorite | 8 comments


C:

Manual memory management can get tiring. Only if you don't exercise.

String handling is manual memory management. See above. See above.

The support for concurrent programming is anemic. Introducing C11 and OpenMP!

Terribly named standard functions: isalnum, fprintf, fscanf, etc. Beauty is subjective.

The preprocessor is the best thing ever.

Not feeling your smartest today? Have a segfault. Can I have another?

Lack of good information when segfault occurs... the "standard" GNU toolchain doesn't tell you the causes of segfaults in the standard runtime. Enable debug mode.

If that code is legacy, you're in for two days of not looking like a hero. Luckily there are 137 alternatives.

:-)


Too many of these are quibbles about minor language warts and constructs that shouldn't be used in the first place. For example:

Python: There is no "do ... until <condition>". Most languages don't have this either.

C#: i++.ToString works, but ++i.ToString does not. When would you ever need this?

Ruby: Suffix-conditions after whole blocks of code. Just don't do that.

Java: unused keywords, such as goto and const. Do you really need to name your variables goto and const?

Some criticisms do point out fundamental limitations and flaws, but most of the time this is by design and the solution is to use a different language. For instance, C has manual memory management, Python uses indentation for nesting, and Haskell uses lazy evaluation. Only a few are potential fixes in future language versions or forks (e.g. HashMap literals for Java... which I thought had been introduced in version 8, but I guess not).


Most of these are extremely bad points (complaining about 'no interfaces' in Python, no braceless if in Perl, etc.) but I'm particularly baffled by "Unicode support should have been built in from [Ruby] 1.0". Ruby came out in 1996. If it had standardized Unicode support at the time, it would have ended up using UTF-16 like JavaScript.


Interestingly, the length of the "sucks" list is seemingly directly proportional to how frequently it's used.


I object to this sort of analysis and comparison. Languages don't suck. They may be well or ill suited to particular tasks or development styles.


This is to show you that it doesn't matter. As long as you get the results you wanted.


+1 includes Haskell

-1 lacks LISP


yeee.. GO doesn't suck.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: