Follow Slashdot stories on Twitter


Forgot your password?

Toward Better Programming 391

An anonymous reader writes "Chris Granger, creator of the flexible, open source LightTable IDE, has written a thoughtful article about the nature of programming. For years, he's been trying to answer the question: What's wrong with programming? After working on his own IDE and discussing it with hundreds of other developers, here are his thoughts: 'If you look at much of the advances that have made it to the mainstream over the past 50 years, it turns out they largely increased our efficiency without really changing the act of programming. I think the reason why is something I hinted at in the very beginning of this post: it's all been reactionary and as a result we tend to only apply tactical fixes. As a matter of fact, almost every step we've taken fits cleanly into one of these buckets. We've made things better but we keep reaching local maxima because we assume that these things can somehow be addressed independently. ... The other day, I came to the conclusion that the act of writing software is actually antagonistic all on its own. Arcane languages, cryptic errors, mostly missing (or at best, scattered) documentation — it's like someone is deliberately trying to screw with you, sitting in some Truman Show-like control room pointing and laughing behind the scenes. At some level, it's masochistic, but we do it because it gives us an incredible opportunity to shape our world.'"
This discussion has been archived. No new comments can be posted.

Toward Better Programming

Comments Filter:
  • by Waffle Iron ( 339739 ) on Friday March 28, 2014 @07:27PM (#46607145)

    Ada (the programming language) already does all these edge case tests at compile time.

    It checks one low-level layer of cases out of a whole conceptual stack that extends way up beyond any language definition, and even then only at certain spots, and only as long as you feed in the correct assumptions for the check cases themselves.

    In other words, it does a little thing that computers are already good at. It does little or nothing for the big picture.

  • by BitZtream ( 692029 ) on Friday March 28, 2014 @08:11PM (#46607341)

    Wow, you're intermixing frameworks, language, runtimes and document formats ... like they are interchangeable and do the same things ...

    Mind blowing that you could write so much about something which you clearly know so little.

  • by CodeBuster ( 516420 ) on Saturday March 29, 2014 @02:11PM (#46610545)

    Because we no longer solve original problems.

    There's nothing new under the sun. On the other hand, we still have to deliver finished work products to the ones paying the bills. I prefer to do this without tying myself into knots worrying about whether or not there's some brilliant framework or API out there that can magically solve all of my problems while ending hunger and bringing about world peace. You're no doubt familiar with KISS? I use it every day and you know what? It works.

    Why do we have a Java version, multiple C++ versions, a .Net version, and Obective-C version.

    Because the people who make the platforms don't care about interoperability or at least not very much. We live and work in the real world, not the world as we might like it to be. You accept this and move on or at least most of us who want to get shit done do.

    but why can't we just add translate to all languages and implementations when we decide we need a translate() function. Why are the Java and .Net ones seperate, with different methods and signatures despite it being one concept.

    In other words, why doesn't everyone just speak English? Languages, whether natural or constructed as with programming languages, are used by humans with different personal preferences, likes, dislikes and needs. We don't add translate to all languages because not everybody needs it, wants it or even cares about it.

    It seems to bother you a great deal that other people "reinvent the wheel" instead of doing things the way that you think they ought to be doing them whereas I on other hand don't much care what other people do or what tools they use. As long as my clients are satisfied, I'm satisfied. If you want to spend your career being an architecture astronaut then by all means don't let me stop you, but I think you'll find that much of what we do in the world of paid software development is a matter of getting the job done and getting paid as quickly and expediently as possible so that we can move on to the next project. Duct tape and WD40 may not be glamorous tools, but they get the job done.

Honesty is for the most part less profitable than dishonesty. -- Plato