Slashdot Mirror


C Code On GitHub Has the Most "Ugly Hacks"

itwbennett writes: An analysis of GitHub data shows that C developers are creating the most ugly hacks — or are at least the most willing to admit to it. To answer the question of which programming language produces the most ugly hacks, ITworld's Phil Johnson first used the search feature on GitHub, looking for code files that contained the string 'ugly hack'. In that case, C comes up first by a wide margin, with over 181,000 code files containing that string. The rest of the top ten languages were PHP (79k files), JavaScript (38k), C++ (22k), Python (19k), Text (11k), Makefile (11k), HTML, (10k), Java (7k), and Perl (4k). Even when controlling for the number of repositories, C wins the ugly-hack-athon by a landslide, Johnson found.

29 of 264 comments (clear)

  1. Perl by mozumder · · Score: 5, Funny

    Pretty sure people already assume that every line of Perl code is an ugly hack anyways, so they didn't have to write a comment on it.

    1. Re:Perl by dgatwood · · Score: 4, Funny

      To recognize that a line of code is an ugly hack, someone would have to first understand it, and as we all know, only Perl can parse Perl.

      --

      Check out my sci-fi/humor trilogy at PatriotsBooks.

  2. Maybe C developers are more honest by angryargus · · Score: 5, Insightful

    Regardless this seems like a pretty crappy study. There's many other phrases like kludge or XXX to have considered.

    1. Re:Maybe C developers are more honest by Anonymous Coward · · Score: 5, Insightful

      C developers are good enough to know when what they're doing is an ugly hack.

      If PHP developers were at the same standard, every line would end with // Ugly Hack.

    2. Re:Maybe C developers are more honest by dgatwood · · Score: 5, Insightful

      C developers are good enough to know when what they're doing is an ugly hack.

      If PHP developers were at the same standard, every line would end with // Ugly Hack.

      I think the reason PHP is #2 on the list is that the people who are still writing PHP are mostly pretty good. The ones who were awful have all moved on to Python or Ruby or whatever the scripting language of the week is these days.

      In fact, I'd be willing to bet that a sizable percentage of the folks who are still actively using PHP are C programmers. I use it for all my web programming because it is exceptionally easy for me as a long-time C programmer. I basically write C with dollar signs and a few other minor tweaks, and it works. Even better, if there's some piece of code that has to be blisteringly fast, I can port it from PHP to C faster than you can say sed 's/\$//sg'. Okay, it really isn't quite that trivial, but it is pretty close.

      And yes, I do occasionally take advantage of being able to mix PHP and HTML, but not very often. I mostly just use it as a compile-free web programming language with better string handling and basic support for classes.

      --

      Check out my sci-fi/humor trilogy at PatriotsBooks.

    3. Re:Maybe C developers are more honest by mwvdlee · · Score: 5, Informative

      https://github.com/search?utf8...
      Javascript wins.

      PHP developers prefer murdering kittens: https://github.com/search?utf8...

      Some other fun facts:
      C developers are most ashamed of their code: https://github.com/search?utf8...
      PHP coder don't fix bugs: https://github.com/search?utf8...
      C developers' code actually get worse as it ages: https://github.com/search?utf8...

      Java developers seem to have the most trouble getting their code to work: https://github.com/search?utf8...
      Not surprising: https://github.com/search?utf8...

      Disclaimer; not corrected for any type of bias or error, of which there are many.

      --
      Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
  3. File this under "NO SHIT" by darkain · · Score: 5, Interesting

    Seriously guys. File this one under "NO SHIT" - Of course C is going to have the most ugly hacks. Why? Because it is by design able to access a hell of a lot more than other languages. How many languages have direct hardware access? Or inline ASM code? And does the word "hack" in the code really make it an "ugly" hack? Seriously? I wrote a micro-kernel for an ARM platform about a decade ago, and there was an assload of inline ASM code and direct pointer manipulation to access the underlying hardware, there is no other way to do this. Yeah, I'm sure the word "hack" appeared countless times in my code, because that's the general term we use. That doesn't make it "ugly" or bad by any means.

    1. Re:File this under "NO SHIT" by AmiMoJo · · Score: 5, Insightful

      Maybe the reason C has more is that the specific string "ugly hack" is more commonly used by C programmers. Languages like Javascript are really ugly and full of nasty hacks, but that's normal for them so no-one comments on it.

      --
      const int one = 65536; (Silvermoon, Texture.cs)
      SJW, n: "Someone I don't like, and by the way I'm a fuckwit" - AC
    2. Re:File this under "NO SHIT" by someone1234 · · Score: 4, Insightful

      In this study, an ugly hack was determined by the string "ugly hack" appearing in code comments. It was a totally scientific study.

      --
      Patents Drive Free Software as Hurricanes Drive Construction Industry
    3. Re:File this under "NO SHIT" by gstoddart · · Score: 4, Informative

      Honestly, for some of us "hack" means anywhere from "an inelegant but necessary workaround", to "a really awesome and unexpected use of something", to "defeating system security", or a clueless person bashing away at something they don't understand, or "something I just whipped up".

      GP is absolutely correct ... for many of us, "hack" is a very generic term.

      --
      Lost at C:>. Found at C.
  4. There might be a bit more to it. by hamster_nz · · Score: 5, Insightful

    C coder know a ugly hack when they see one, and when they write one.

    I would conjecture that nearly every line of Perl scripts is an ugly hack, so nobody bothers to add a comment... 8-)

  5. The ultimate ugly hack? by hamster_nz · · Score: 5, Insightful

    Fast inverse square root (sometimes referred to as Fast InvSqrt() or by the hexadecimal constant 0x5f3759df) is a method of calculating x1/2, the reciprocal (or multiplicative inverse) of a square root for a 32-bit floating point number in IEEE 754 floating point format.

    http://en.wikipedia.org/wiki/F...

    Anybody got any better Ugly Hacks to share?

    1. Re:The ultimate ugly hack? by Anonymous Coward · · Score: 5, Insightful

      Duff's device

      C's default fall-through in case statements has long been one of its most controversial features; Duff observed that "This code forms some sort of argument in that debate, but I'm not sure whether it's for or against."

  6. Perl was last? by Okian+Warrior · · Score: 3

    Perl was last on that list?

    For those people who say that Perl coders only write incomprehensible gibberish, I say:

    BWA HA HA HA HA!

  7. Nonsense... by SlovakWakko · · Score: 5, Insightful

    The whole C language is one beautiful hack, scary at first but once you get to know it in some really messed up sw project you can't help but love it. The balance between freedom and structure is excellent.

  8. Low hanging hack... by x0ra · · Score: 5, Informative
    Did any of you actually read the "ugly hacks" this is pretty low hanging stuff, not the evil pointer-arithmetics and language corner undefined behavior case type of hack...

    #ifndef __INCif_etherh /* Quick and ugly hack for VxWorks */

    // ugly hack because we don't have fscanf
    int fscanf(FILE* stream, const char* format, int* value)

    #else /* ugly hack to make it compile on RH 4.2 - WA */
    #include
    #endif

    /* ugly hack GRR */
    #if !defined(__GNUC__) && !defined(__common_include__)
    #define __attribute__(x) /* nothing */

    /* XXX argh, ugly hack to make stuff compile! */
    #define snprintf(BUF, SIZE, ...) sprintf(BUF, __VA_ARGS__)

    1. Re:Low hanging hack... by chiasmus1 · · Score: 5, Insightful

      After looking at those examples, it seems to me that C programmers can claim something is an "ugly hack" because it was not what they wanted or because someone else's code was messed up. The C code hacks where there because they could not see an elegant solution. Programmers for other languages probably do not even know that the code they are writing is ugly.

  9. Heavy duplication by x0ra · · Score: 3, Insightful

    Every single page has many occurence of the same "ugly" hack. If the folks who did the study had an ounce of legitimacy, they would have filtered for all those duplicates. If they had actually been competent, they would have done an in-depth study of all those "ugly hack". Of course, at this point, the article would have been worthless, but hey, they got their first page on /. ...

  10. Only meaningful if weighted by blind+biker · · Score: 4, Insightful

    These numbers should be weighted to the amounts of code in the various programming languages on GitHub. There may be lots of C "codefiles" with the "ugly hack" string in them, but there probably is a lot of C code overall on GitHub, too.

    --
    "The agriculture ministry is not in charge of Gundam" - Japanese ministry official.
  11. Re:Such is C by ShanghaiBill · · Score: 5, Insightful

    C Code EVERYWHERE has the most "ugly hacks"

    Ah, but C also has the most beautiful hacks.

  12. Define Ugly Hack by enter+to+exit · · Score: 3, Informative

    "Ugly Hack" very often means the programmer has done a smart thing, if not an exactly correct thing. Although sometimes an ugly hack is just an ugly hack.

  13. it's a C idiom by bugs2squash · · Score: 5, Insightful

    "/* ugly hack to... */" is a modest expression of pride describing concise, functional, readable and elegant C code in the same way as the term "//elegant approach to..." in C++ describes some borderline-insane misapplication of the STL with the incomprehensibility of perl and the verbosity of java.

    --
    Nullius in verba
  14. Re:Such is C by dgatwood · · Score: 4, Insightful

    C Code EVERYWHERE has the most "ugly hacks"

    C code is ugly hacks. But how else are you going to write an efficient ring buffer?

    --

    Check out my sci-fi/humor trilogy at PatriotsBooks.

  15. Re:Such is C by Darinbob · · Score: 5, Informative

    I think the key difference here is that when someone uses C they want efficient code to some extent. Small, or fast, or both. In other languages the culture is often "do it in the method approved by the sacred elders", and so ugly hacks may be forbidden and the slow/bulky method is preferred, according to the mantra "do not reinvent the wheel because thou are not as wise as the wheel builder". Or the presence of an ugly hack implies that the novice must clearly have been prematurely optimizing, for as the wise men say tomorrow is too soon to optimize.

    For example in Python the claim is that there's almost always only one way to do something, which either means ugly hacks are not possible, or else there's a lack of imagination amongst the programmers.

    The higher level a language is, the more it seems that the goal is to get stuff done fast rather than efficient or elegant.

    Finally, I have actually seen cases where code is labeled an "ugly hack" when it really wasn't a hack at all but rather not as tiny or or elegant as the author wanted.

  16. Re:Such is C by Anne+Thwacks · · Score: 4, Interesting
    Some people may not even remember 10, 12, 18, 24, 36 and 60 bit processors.

    For ugly hacks, you can't beat trying to optimise string ops 8 bit bytes on a 60 bit (Cray) processor - they natively used 6-bit chars, and packed four 15 bit instructions in a word, but required jumps to be aligned on a double word boundary to avoid pipeline stalls. Apart from assembler, I think C is probably the only language that could do it at all.

    (I it tried in Fortran and then realised there were better things to do in life).

    --
    Sent from my ASR33 using ASCII
  17. Re: Such is C by luis_a_espinal · · Score: 5, Insightful

    Is that really something to brag about?

    Yes. If you don't understand why, you have no place in engineering.

  18. It just shows the self awareness of C coders by 140Mandak262Jamuna · · Score: 3, Interesting
    They are just analyzing mostly comments, not code. Dijkstra gave the prescient warning ages ago: "Always debug the code, not the comment".

    C coders know when they are using ugly hacks and would take a moment to comment it or name the function with the term ugly hack. They realize it is not elegant and make a note so that future developers do not think it is a reference implementation worthy of replication and emulation. It is basically "this is probably not worth copy/paste, do a fresh implementation".

    Other language coders might be using these ugly hacks with pride not knowing anything better.

    --
    sed -e 's/Chuck Norris/Rajnikant/g' joke > fact
  19. Re:Such is C by beelsebob · · Score: 3, Insightful

    Wrapping it in ifdefs doesn't make it elegant. It just makes it not a hack. Instead, it makes it ugly, and correct.

  20. Re:Such is C by khellendros1984 · · Score: 3, Informative

    This is a complete and total lie. There may be one "good" way to do something (for values of good), but there are many ways of doing soemthing.

    It's not a "complete and total lie." The Zen of Python, "Python Enhancement Proposal #20", states:

    There should be one-- and preferably only one --obvious way to do it.

    It's one of the guiding principles of the language's design. Type "import this" into a Python command-line, and PEP20 gets printed out.

    --
    It is pitch black. You are likely to be eaten by a grue.