Slashdot Mirror


Toward Better Programming

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.'"

391 comments

  1. Separation of Concerns by null+etc. · · Score: 4, Insightful

    In my 25 years of professional programming experience, I've noticed that most often, most programming problems are caused by improper implementations of the separation of unrelated concerns, and coupling of related concerns. Orthogonality is difficult to achieve in many programming exercises, especially regarding cross-cutting concerns, and sometimes the "right" way to code something is tedious and unusable, involving passing state down through several layers of method parameters.

    1. Re:Separation of Concerns by Anonymous Coward · · Score: 5, Insightful

      No matter how flexible an architecture you try to design, after the software is mostly built, customers will correspondingly come up with even more incredibly bizarre, complex and unrelated functionality that just HAS to be integrated at the oddest points, with semi-related information thrown here and there, requiring data gathering (or - god forbid, (partial) saving) that slows everything down to a halt. And they rarely give much time to do redesign or refactoring. What was once a nice design, with clean, readable code is now full of gotchas, barely commented kludges, extra optional parameters that might swim around multiple layers, often depending on who called what, when, and from where, and also on various settings, which obviously are NEVER included in bug reports. Of course, there are multiple installations running multiple versions...

    2. Re:Separation of Concerns by lgw · · Score: 4, Interesting

      and sometimes the "right" way to code something is tedious and unusable, involving passing state down through several layers of method parameters

      Sometimes that really is the right way (more often it's a sign you've mixed your plumbing with your business logic inappropriately, but that's another topic). One old-school technique that has inappropriately fallen out of favor is the "comreg" (communication region). In modern terms: take all the parameters that all the layers need (which are mostly redundant), and toss them together in a struct and pass the struct "from hand to hand", fixing a the right bit in each layer.

      It seems like a layer violation, but only because "layers" are sometimes just the wrong metaphor. Sometimes an assembly line is a better metaphor. You have a struct with a jumble of fields that contain the input at the start and the result at the end and a mess in the middle. You can always stick a bunch of interfaces in front of the struct if it makes you feel better, one for each "layer".

      One place this pattern shines is when you're passing a batch of N work items through the layers in a list/container. This allows for the best error handling and tracking, while preserving whatever performance advantage working in batches gave you - each layer just annotates the comreg struct with error info for any errors, and remaining layers just ignore that item and move to the next in the batch. Errors can then be reported back to the caller in a coherent way, and all the non-error work still gets done.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    3. Re:Separation of Concerns by Joce640k · · Score: 4, Insightful

      The reason it doesn't change is because the "coding" is the easy part of programming.

      No programming language or IDE is ever going to free you from having to express your ideas clearly and break them down into little sequences of instructions. In a big project this overshadows everything else.

      Bad foundations? Bad design? The project is doomed no matter how trendy or modern your language/IDE is.

      --
      No sig today...
    4. Re:Separation of Concerns by K.+S.+Kyosuke · · Score: 1

      "Orthogonality is difficult to achieve in many programming exercises, especially regarding cross-cutting concerns"

      I've noticed one recurring topic in programming: most, if not all cross-cutting concerns will eventually be relegated to programming language features. (It all started with mundane expression compilation and register allocation, which are also cross-cutting concerns of sorts, but it didn't stop there. To quote your example: are you passing temporary state through parameters? Declare a Lisp-style dynamic variable to safely pass contexts to subroutines. If your language doesn't have it, it might get it tomorrow.)

      --
      Ezekiel 23:20
    5. Re:Separation of Concerns by Anonymous Coward · · Score: 0

      I don't disagree, but a lot of the problem with this is knowledgeable programmers shouting "Leaky Abstractions!". You can't guarantee that your concerns will be 100% separated, so the argument goes, so why bother to try in the first place? To actually program worth a darn, you need to know the ins and outs of everything you lay your hands on -- and since you know the ins and outs, why wouldn't you make everything super efficient by tightly coupling everything? I mean, you can shave off a function call/database query/twenty characters of typing by going around the "official" way and just calling the internals directly. That separation is just needless boilerplate, a hoop to jump through without tangible benefit. -- Is it going to bite us in the ass later on? Who cares? It's working now, durn it!

    6. Re:Separation of Concerns by K.+S.+Kyosuke · · Score: 2

      In modern terms: take all the parameters that all the layers need (which are mostly redundant), and toss them together in a struct and pass the struct "from hand to hand", fixing a the right bit in each layer.

      This is nicely solved by the notion of dynamic environments. The benefit is that there is no extra struct type, no extra explicit parameter, and different parts of the dynamic environment compose simply by being used, they don't need to be bunched together explicitly either, which seems like a code smell. You also don't need to solve the problem of different pieces of code needing different sets of parameters and then having to wonder whether you should explicitly maintain multiple struct types and copy values between them, or making a huge struct type that would be little different from a global environment (only differing in allowing you to have more of them).

      --
      Ezekiel 23:20
    7. Re:Separation of Concerns by lgw · · Score: 1

      I haven't heard of a "dynamic environments" as a coding pattern, and its a hard phrase to Google, as it combines two popular buzzwords. Care to elaborate?

      --
      Socialism: a lie told by totalitarians and believed by fools.
    8. Re:Separation of Concerns by K.+S.+Kyosuke · · Score: 1

      It's not a "coding pattern", it's a language feature. It's a controlled way of passing "out-of-band" information to pieces of code without using function parameters, information that feels like "context" rather than "topic", and may be "orthogonally" related to the topic. In Lisp, for example, a typical example is the base (binary/octal/decimal/hexadecimal) for a number printer, or the output stream that the output is supposed to be written to. You may not want to pass it as an explicit parameter if the piece of code what you're solving doesn't care about these minutiae but rather expects some higher-level function to set some parameters and fire it off. It may not be practical to expect *all* code paths to pass these particular parameters.

      --
      Ezekiel 23:20
    9. Re:Separation of Concerns by Anonymous Coward · · Score: 0

      C vs C++ vs Java vs C#

    10. Re:Separation of Concerns by Anonymous Coward · · Score: 0

      https://en.wikipedia.org/wiki/Common_Lisp#Dynamic

    11. Re:Separation of Concerns by Connie_Lingus · · Score: 1

      it just sounds like deeper and deeper abstraction or more simply global variables...which im sorry to say in my experience doesn't always solve the "programming problems" except for perhaps the guy who learned enough programming to be able to think at that level.

      unfortunately, that type of code tends to be very un-maintainable by anyone other than the original author.

      --
      never bring a twinkie to a food fight.
    12. Re:Separation of Concerns by Kjella · · Score: 1

      No programming language or IDE is ever going to free you from having to express your ideas clearly and break them down into little sequences of instructions. In a big project this overshadows everything else. Bad foundations? Bad design? The project is doomed no matter how trendy or modern your language/IDE is.

      Well you find one way to break it down... but I often feel there's so many possible ways to organize things, it's just how I'd want to solve it and when I have to interact with other people's code they've done the same thing completely differently. Just take a simple thing like pulling data from a database, putting them on a form, have someone edit the information and save it back to the database. How many various implementations of that have I seen? Maaaaaaaaany, but there's no clear winner. You can do it with an SQL query, a strored procedure, an ORM tool and they all might work. You can use the MVC pattern or you could just totally ignore it, the user will never know. Layers are a bit like mathematical models, they're simplifications of reality. Sometimes the world refuses to be simple.

      --
      Live today, because you never know what tomorrow brings
    13. Re:Separation of Concerns by Thangodin · · Score: 1

      It's an odd thing, but I've worked in game development and business software, and game development has much simpler requirements. You know what looks and feels wrong, but business software is a matter of opinion--lots of opinions--and those opinions contradict each other. To give one client what they want, you may end up screwing all the others--and it becomes your fault that you cannot be all things to all people. At some point, you have to tell people that if they want X, it will be slow, limited, and DO YOU REALLY FUCKING NEED THIS, because often they don't.

      We need to learn to say no. And not just to our clients, but to our salesmen, our managers, and our project managers. Because saying yes to one client might mean saying no to a dozen others.

    14. Re: Separation of Concerns by Anonymous Coward · · Score: 0

      Agreed, perhaps a better solution to reducing the number of method parameters is the Dependency Inversion pattern using an IOC container to resolve dependencies. Another likely contributor of this parameter problem could be not usin surrogate keys in the database.

    15. Re:Separation of Concerns by narcc · · Score: 1

      Part of the problem is this bizarre bottom-up design trend. A lot of the weird "designs", ad-hoc frameworks, and the like that you're seeing are a direct result of that incomprehensibly bad approach. Typical OOP practices tend to encourage this absurd behavior.

      Chuck Moore is very likely the only person on the planet who can design that way effectively.

    16. Re:Separation of Concerns by Lennie · · Score: 1

      Sounds like closures to me: https://en.wikipedia.org/wiki/...

      --
      New things are always on the horizon
    17. Re:Separation of Concerns by Lennie · · Score: 2

      "Layers are a bit like mathematical models, they're simplifications of reality."

      Don't forget that when you add to many layers, it isn't simple anymore.

      --
      New things are always on the horizon
    18. Re:Separation of Concerns by Hognoxious · · Score: 1

      Wasn't it Brooks who said most of the work is debugging the spec?

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    19. Re:Separation of Concerns by K.+S.+Kyosuke · · Score: 1

      Except that dynamic bindings exist in those languages in which they exist precisely because global variables were deemed bad. Few people have problems with their usage, which leads me to the conclusion that perhaps you misunderstood their function. (Perhaps a blub language factor is in play here? That would explain your otherwise incomprehensible association of dynamic bindings with global variables, which are entirely unlike dynamic bindings.)

      --
      Ezekiel 23:20
    20. Re:Separation of Concerns by Anonymous Coward · · Score: 0

      Closures use static/lexical scope, not dynamic.

    21. Re:Separation of Concerns by Half-pint+HAL · · Score: 1

      "Environment variables" must exist, whether as a passed object (which my university lecturers favoured) or as bog-standard global variables. But as soon as environment variables are available, lazy programmers will use them as global variables. Attempting to engineer mechanisms to prevent this happening is a complete waste of time, and only makes programming more complicated. You can't just make the "wrong way" harder -- you've just got to make the right way a little easier than the wrong way. Grainger's Aurora seems to follow that principle quite well -- whereas functional programming tried to force you not to update values (destroying data) unnecessarily by making it practically impossible to do so, Grainger simply makes non-destructive data processing one step easier than destructive data processing: the only destructive action is an explicit update with the result of a non-destructive process.

      The default "lazy" state is therefore the right one, so the appropriate behaviour is rewarded. Doing unnecessary destructive changes takes the programmer longer and makes the code less clear, so will naturally be avoided. But crucially, programmers are still able to do whatever they want, when they want.

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    22. Re:Separation of Concerns by K.+S.+Kyosuke · · Score: 1

      I believe that this is exactly why aspect-oriented programming and later context-oriented programming techniques (and language features, to further illustrate my point) were researched recently. As I said, everything that can't be "librarified" will eventually turn out as a language feature.

      --
      Ezekiel 23:20
    23. Re:Separation of Concerns by Anonymous Coward · · Score: 0

      Think thread local variables and you more or less have the idea. They're highly useful in situations where you need to "bolt-on" some property, context or invariant to existing code. They're also a deadly tar pit of untraceable side effects if not handled sparingly and well.

    24. Re:Separation of Concerns by Anonymous Coward · · Score: 0

      Well yeah, but that is because programming is about solving problems, and problems are about life, which is extremely complicated. In fact, the vast majority of the complexity of life is understood by the people who are living it in only an implicit manner. And furthermore new things keep happening that no one predicted.

    25. Re:Separation of Concerns by Anonymous Coward · · Score: 1

      "Even perfect program verification can only establish that a program meets its specification. ...Much of the essence of building a program is in fact the debugging of the specification."
        - Fred Brooks, No Silver Bullet (1986)

    26. Re:Separation of Concerns by lgw · · Score: 1

      Thanks - I call that "configuration information", but yeah, when the data really is external and more or les stable, I like that approach.

      But sometimes you just have 100 work items, each of which has 20 properties, and each layer you'll call through will gradually transform those into 30 low-level concepts and then finally the work will get done. Having a "data class" separate from your stack of "processing classes" there makes sense.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    27. Re:Separation of Concerns by Lennie · · Score: 1

      OK, thanks.

      --
      New things are always on the horizon
    28. Re:Separation of Concerns by bzipitidoo · · Score: 1

      Javascript sure blew that one. It is easier to create a global variable than a local variable thanks to a simple little syntax requirement. Have to declare a variable local with a "var" keyword. Global variables can just be used.

      Why did the Javascript designers do it that way? Did they carefully analyze the frequency and usefulness of global vs local, and conclude global is more popular and common? Do they disagree with the idea of limiting scope to the minimum necessary? Probably none of those. They just threw the language together in a hurry. I don't know the history, but I would guess globals were the only kind of variable Javascript had originally.

      --
      Intellectual Property is a monopolistic, selfish, and defective concept. It is "tyranny over the mind of man"
    29. Re:Separation of Concerns by Anonymous Coward · · Score: 0

      Bad foundations? Bad design?

      Even bad concepts or impossible solutions. Just because you can code coding means there's a solution.

      Sometimes the problem is just plain hard and that even the fact of coding a solution itself still results in doomed from the start.

    30. Re:Separation of Concerns by thirdender · · Score: 1

      It's mostly because Javascript is closer to LISP than it is to C, even though the use of braces would lead the casual observer to conclude otherwise. Closures are a central concept in Javascript programming. If you don't define a variable as being specific to your scope, the parser will use the next scope outwards. Technically you never create global variables... the highest scope in which you can create variables is as a property of the `window` object. Of course, it's very easy to clutter that object, but it's also easy to create new scopes (define a function, declare your variables).

      Variable scope is a strange concept to get used to at first. It seems cluttered if you're used to explicitly defining your variables, then having those variables only available in that function. Having variables available to scopes nested in your scope is very flexible and lends itself to writing some beautiful code.

    31. Re: Separation of Concerns by Anonymous Coward · · Score: 0

      Think how ms solved this in excel and all other office products. Not rocket science.

    32. Re: Separation of Concerns by Anonymous Coward · · Score: 0

      Indeed. Too many muppets without a spine, proper education and rationality in the computer biz. They try to replace all of this by brownnosing and buzzwords.

    33. Re:Separation of Concerns by Anonymous Coward · · Score: 0

      JavaScript is a conspiracy to make browsers so complex JCS will always have a few exploits at the ready to snoop on you.

      A memory-safe Ada variant would have required about 1/100th of the code and would consequentially be 100 times more secure. Not good for NSA and their bosses at JCS.

    34. Re:Separation of Concerns by Anonymous Coward · · Score: 0

      For a Pascal fan, JS is an enormous pile of shite. The opposite of engineering for reliability.

    35. Re:Separation of Concerns by kmoser · · Score: 1

      Wasn't it Brooks who said most of the work is debugging the spec?

      If you're working from a spec, you're already ahead of the game.

    36. Re:Separation of Concerns by Bill+Dog · · Score: 2

      It's amazing how clueless some people are. "They" would be a "he", who's well known in computer tech for having created that language (not originally called "JavaScript") and its first implementation. It was written in 10 days.

      --
      Attention zealots and haters: 00100 00100
    37. Re:Separation of Concerns by Bengie · · Score: 1

      If I'm reading you correctly, it sounds like you're describing a "pipeline". I love those designs, and easy to parallelize. Instead of "layers", you have "Stages", that can manipulate the object/message/struct, or can pass it on, but only one state is ever touching a given object/message/struct at a time.

    38. Re:Separation of Concerns by Hognoxious · · Score: 1

      "CANNOT POST!!!".

      Bug report I once got. I resisted the temptation to ask if the person's hands had fallen off, or they hadn't switched their computer on (or indeed the latter due to the former) and just asked if they could, perhaps, give me little more information, along with a guide what information was needed and how to get it.

      Nothing.

      A month later the IT director fucking yelled at me because I'd refused to help the retarded trollop.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    39. Re:Separation of Concerns by mbalick · · Score: 1

      To illustrate your point: https://www.youtube.com/watch?...

    40. Re:Separation of Concerns by Half-pint+HAL · · Score: 1

      Variable scope is a strange concept to get used to at first. It seems cluttered if you're used to explicitly defining your variables, then having those variables only available in that function. Having variables available to scopes nested in your scope is very flexible and lends itself to writing some beautiful code.

      Yes, scoping is very powerful, and almost all languages use it for very good reason. The point is that in JavaScript the easiest scope to use is the effective global one (yes, it's a property of the "window" object, but as far as the programmer's concerned, "window" is "main"). The easiest thing to use should always be the safest -- the programmer should always have to make an active choice to do something the more dangerous way.

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
    41. Re:Separation of Concerns by Anonymous Coward · · Score: 0

      Closures are a property of something.

      I freaking hate it when people refer to anonymous functions/lambdas/etc as closures. Those things can(but don't have to) have the closure property.

    42. Re:Separation of Concerns by Anonymous Coward · · Score: 0

      You are assuming that the JS in question is running in a browser.

    43. Re:Separation of Concerns by Anonymous Coward · · Score: 0

      C++ > C > Java == C#

    44. Re:Separation of Concerns by Anonymous Coward · · Score: 0

      Don't tell that to the XP and Scrum Cult.

  2. programming is not for everyone by Anonymous Coward · · Score: 2, Insightful

    Or.....

    Maybe software development is just hard and you need to be a rocket scientist to see it.

    1. Re:programming is not for everyone by Anonymous Coward · · Score: 1

      Or.....

      Maybe software development is just hard and you need to be a rocket scientist to see it.

      No. Good software development is hard. The other is easy!

    2. Re:programming is not for everyone by Anonymous Coward · · Score: 0

      no it really is half -assed and undocumented. MICE for example. If its not for DOS, its not documented. Firsthand experience formulating a driver for my OS teaches me this.

    3. Re:programming is not for everyone by Anonymous Coward · · Score: 0

      > programming is somewhere between an exterminator and a line cook.

      Everyone expects a line cook to know the basics, and be able to produce a standard menu of good-quality dishes quickly. That's just competence. Nobody expects a line cook (except maybe Johnny Saucep'n) to come up with an innovative seven-course gourmet meal that could be served at a five-star restaurant, state dinner, etc.

      Yet somehow businesses expect every programmer to be a "master chef" and work for line cook wages...

    4. Re:programming is not for everyone by DanielOom · · Score: 1

      Thing is: every Kentucky Chicken can code, whether it be fried or frozen. The hard part is proving the code correct. Building software is still an exercise in mathematics, and even mathematicians sometimes make errors. People think the computing business is innovative, but the software craft is hardly showing progress.

      Building software should be a form of engineering: you pile up Lego(TM) bricks of pre-fab proven software objects with well-defined interfaces. You draft a specification and the computer only needs to check it.

    5. Re: programming is not for everyone by Anonymous Coward · · Score: 0

      The problem is a social one. 99 percent of software developers are computer whores. They claim to have an orgasm, just to make money. In reality, most of them never ever had a real orgasm. That means they never built anything great and never will.

  3. Proverb by Anonymous Coward · · Score: 1, Insightful

    Something something blames his tools.

    1. Re:Proverb by lgw · · Score: 4, Insightful

      Something something blames his tools.

      The point of that proverb is that a good craftsman chose his tools to begin with, so he has only himself to blame. Programming is odd in that you have bad toolchains forced on you by management - tools you know are bad, know will cause more problems than their worth, but they're a corporate standard or some such BS. Usually not bad enough to be worth quitting over, so you hobble along.

      Of course, I did quit a job once primarily because we had Rational Rose forced on us from above (but mostly because a management that would do that would do anything).

      --
      Socialism: a lie told by totalitarians and believed by fools.
    2. Re:Proverb by Lunix+Nutcase · · Score: 1

      And yet there are times when the tool itself really is shitty. That statement is not meant to be infallible, unquestionable gospel. Some tools are simply poorly made and a bad fit for the job they're supposed to be used for.

    3. Re:Proverb by Anonymous Coward · · Score: 1, Interesting

      The point of that proverb is that a good craftsman chose his tools to begin with, so he has only himself to blame.

      There's more to it than that. A good craftsman can get by with suboptimal tools.
      I'm not saying you can write a web browser in Malbolge, but there's a lot of software out there right now, and some of it is good.

    4. Re:Proverb by arth1 · · Score: 2

      A good craftsman still doesn't blame the tools - he performs with what's at hand. Not having CNC routers didn't stop wood workers of the past from creating better products than today's staple-gun wielding "craftsmen" do.

      Do wonders with what you have, and strive for getting better tools.

    5. Re:Proverb by lgw · · Score: 5, Insightful

      A good craftsman can get by with suboptimal tools.

      A good craftsman is not content to "get by", almost by definition. If some part of your workflow sucks, you make it better, whether that's a better tool or more skill/training. If you're good, you never stop improving (until management forces BS on you, of course).

      --
      Socialism: a lie told by totalitarians and believed by fools.
    6. Re:Proverb by JaredOfEuropa · · Score: 1

      Speaking of craftsmen... One of the problems with programming is that in many (but not all) shops, coding actually is a craft, rather than a profession. There's little on the job training or coaching, few common frameworks and methodologies that work well, and a lot of the job descriptions within IT seem to have been made up mostly to make life easy for project managers and HR, not to relate to the actual and complete skill sets of individuals.

      Or perhaps the problem is that the nature of programming is more like a craft, while we are trying to treat is like a profession.

      --
      If construction was anything like programming, an incorrectly fitted lock would bring down the entire building...
    7. Re:Proverb by jythie · · Score: 1

      I think a bigger problem then management forcing tools on programmers is the one of programmers preferring to write more tools rather then learn to use the existing ones. Seriously, look at how many languages people keep coming up with....

    8. Re: Proverb by Anonymous Coward · · Score: 1

      A skilled craftsman can perform a subset of their normal activities with substandard tools. If the desired activity is not in that subset, the availability (or lack, really) of tools is most definitely the cause.

    9. Re:Proverb by DarkOx · · Score: 1

      The trouble is the computer really does not fit the model of a carpenter. There are only so many ways one can shape and join wood. Whatever tools you pick the desired outcome is the same, its the degree of success that varies. Someone who understands wood working is going to be able to come along later and quickly understand the intent, he will be able to maintain or repair the work, and he isn't forced to use the same tools you did. His sandpaper is not going to be incompatible with the wood or finish you chose.

      Computers just manipulate symbols. If you pick a radically different symbol set, and heap of frame works its impossible to just switch. You can't just grab any programer and more to work on stuff. Sure most can pick up a language quickly, but it takes time to get up to speed on the tooling and frameworks around it. So if you would have a serious staffing problem if you let everyone use the best fit tool set for each project.

      --
      Repeal the 17th Amendment TODAY! Also Please Read http://www.gnu.org/philosophy/right-to-read.html
    10. Re:Proverb by pigiron · · Score: 1

      And they all converge towards LISP.

    11. Re:Proverb by lgw · · Score: 1

      are only so many ways one can shape and join wood. Whatever tools you pick the desired outcome is the same, its the degree of success that varies

      Do you know the original term "hacker"? It's a craftsman who makes furniture with a hatchet. It's a skill like nothing else in carpentry. And sandpaper is, actually, incompatible (the nifty thing about the hatchet approach is it leaves wood smoother than you can get with sandpaper, odd as that sounds).

      Most high end furniture today is actually made mostly with a glue gun and xacto knife, oddly enough. No clue why, but beautiful veneers and gold leaf (sometimes so thin you can't actually use the furniture) and so on over MDF fetches the highest prices these days, and that too is its own quite district skill set.

      Don't make the "management mistake" of assuming something is simple or easy because you don't understand it.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    12. Re:Proverb by HiThere · · Score: 1

      Please note that that's an OLD proverb. At the time it was new every craftsman was expected to *make* his tools.

      Times changed, the proverb didn't. Now the good craftsman selects most of his tools, and only makes a very few specialty items. You could still judge his quality by the quality of those tools, and the skill with which he weilded them. If he blamed them, you would know that he was blaming himself.

      Now consider someone working in a normal environment where he is not allowed to select the tools that he uses. In that case, blaming the tools can be quite reasonable. There really are many quite inferior tools out there.

      Now in this case we're considering a craftsman who is contemplating how he could improve the design of a tool that he both uses and designed. He's unhappy with it, and is contemplating how he could improve the design, so he's criticizing it. Applying the proverb here, even though it is really applicable, is missing the point. He's trying to design a better tool. (I may be dubious about his chances, but that's a separate issue.)

      --

      I think we've pushed this "anyone can grow up to be president" thing too far.
    13. Re:Proverb by Anonymous Coward · · Score: 0

      Real men converge on FORTRAN and they have the weapons to smoke out all you pinko-liberal bean counters.

    14. Re:Proverb by Anonymous Coward · · Score: 0

      Yeah, a real craftsman will use a hammer to drive screws into the wood. WAS FUER EINE SCHEISSE.

      You are an unbelievable fucking idiot who should be forced to drive english cars until you DIE.

    15. Re:Proverb by pigiron · · Score: 1

      Everyone uses i,j,k,and l as pinko-liberal loop counters!

    16. Re:Proverb by DarkOx · · Score: 1

      I did not make the management mistake, I specifically said "Someone who understands wood working" in other words someone else with knowledge and skill in that trade, not just any fool who happens to walk by.

      There certainly are situations where sand paper is not the right tool but in the general sense if you smooth something with a large belt sander and years later the wood has twisted I can true it up with an electric plane, if that seems like the best approach to me.

      On the other hand while another programmer might be able to pretty quickly get a sense of how your struts web application works over all, his Rails expertise is not going to enable him to quickly add features.

      --
      Repeal the 17th Amendment TODAY! Also Please Read http://www.gnu.org/philosophy/right-to-read.html
    17. Re:Proverb by Anonymous Coward · · Score: 0

      There's more to it than that. A good craftsman can get by with suboptimal tools.

      Wrong.

      Good programmers do not use PHP.

    18. Re:Proverb by Anonymous Coward · · Score: 0

      Yup, just like "you can't judge a book by its cover" was coined back when books all looked alike.

  4. Wait for it... by Jmc23 · · Score: 0

    ... I'm firing up Emacs right now to solve it.

    --
    Don't complain about syntax, grammar, or spelling. There is no.hell like input on android.
    1. Re:Wait for it... by jones_supa · · Score: 1

      If you really mean that, thank you.

    2. Re:Wait for it... by Jmc23 · · Score: 0
      Wait till I'm finished before any thanks.

      I was incapable of understanding procedural programming languages, nor could I understand how most people 'did' math. My brain does not work like others, so what I've designed isn't like anything out there (actually, bit's and pieces of the design have started popping up, because hey, eventually the collective force of the world must be able to have 'invented' the same thing as little ol me) and it might not be comprehensible for most people. Except maybe lispers... and everybody knows they aren't normal!

      Truly, it's not even a development environment, it's an organizational tool for life based on life, hence it's name Life/Live.

      Hopefully a stable enough core will be out in the next 3-6 months that everybody else can finish the development. I'm extremely lazy like that :)

      --
      Don't complain about syntax, grammar, or spelling. There is no.hell like input on android.
  5. You think programming's bad? by Anonymous Coward · · Score: 5, Interesting

    You think programming's bad? Think about electronics, especially analogue electronics.

    Incomplete, inaccurate data sheets. Unlabeled diagrams (where's the electronics equivalent of the humble slashed single line comment?), with unknown parts given, and parts replaced with similarly numbered replacements with subtly different qualities. And then you've got manufacturing variances on top of that. Puzzling, disturbing, irreproducible, invisible failure modes of discrete components.

    1. Re:You think programming's bad? by Anonymous Coward · · Score: 0
      Yes, electronics requires actual knowledge in the form of physics and practice. Programming is mostly about trying different things until they compile and work well enough. Explain to me why a "light" font in Office Writer can be bolded, but not unbolded? Try it. That isn't puzzling or disturbing?

      How about the fact that on a quad core, 16 gigabyte, 2.4 gigahertz computer, it can't buffer a few keystrokes as I type *while* the google page loads?

      Electronics is about one thing, electrons. Software is about 50000 different languages, that exist for no clear reason, and it never ends.

    2. Re:You think programming's bad? by Immerman · · Score: 1

      No, what you describe is what used to be called "hacking", which is only superficially similar to programming. They have a similar practice in electronics, often exemplified by ham-radio enthusiasts, who repair and modify their equipment without really understanding how it works. Among electronic engineers ham radio enthusiasts, or the "ham radio approach" is often referred to with an affectionate sneer, just as your "hacking" is regarded among serious programmers.

      There is essentially zero trial-and-error in programming unless you're having to work with buggy or poorly-documented libraries. Decide what the software needs to do, code it, compile, and test to discover where you made mistakes (because nobody's perfect). Spelling and "punctuation" errors are one thing, but if you can't even get your code to compile without mysterious trial-and-error then you obviously don't know what you're doing.

      --
      --- Most topics have many sides worth arguing, allow me to take one opposite you.
    3. Re:You think programming's bad? by lgw · · Score: 1

      Well said. Heck, even with buggy or poorly-documented libraries, trial-and-error is just the starting place, because you can't discover the corner cases that way. Sometimes you just have to step through the object code with a debugger to find all the branches-not-takes from your trial, to document how it really works. Sucks to have to do it, but that's work for you.

      There's nothing worse than discovering you're stuck with a co-worker who's a trial-and-error "programmer", as you know he'll never understand the best practices and you'll be stuck cleaning up after him every release.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    4. Re:You think programming's bad? by mestar · · Score: 1

      "How about the fact that on a quad core, 16 gigabyte, 2.4 gigahertz computer, it can't buffer a few keystrokes as I type *while* the google page loads?"

      Almost everything is this fucked up, and nobody seems to notice it.

    5. Re: You think programming's bad? by Anonymous Coward · · Score: 0

      Because typing and a lot of other IO keeps throwing interrupts and suspending your other processes. But you probably didn't actually want a real answer.

    6. Re:You think programming's bad? by hsthompson69 · · Score: 1

      Decide what the software needs to do,

      Not sure if you've ever done any sort of enterprise development, but this is often the craziest part of the art of programming.

      Decide A. Code A.

      Decision changes to A'. Make minor changes to code A'.

      Decision changes to B. Tack on major kludge to code B from A'.

      Decision changes to B+A'. Major analysis to figure out if there is in fact, a valid combination of B+A' - discovery that B+A' has multiple internal contradictions. Ask business for answers to contradictions C, D, E and F.

      Decision becomes B+A', C, D, !E, !F. Now you find that C and !F are also mutually exclusive.

      So on, and so on, and so on.

      With perfect requirements, programming can be trivial. In the real world, it's all about trial, and trial, and trial, and trial, and then usually just accepting an unhappy compromise somewhere along the way.

    7. Re:You think programming's bad? by Anonymous Coward · · Score: 0

      That's why browsers invented typing your search terms in the URL bar and passing the query to google, so you don't have to wait.

      Didn't you notice? Or were you just too busy bitching at random irrelevant things while the world moved on?

    8. Re:You think programming's bad? by Anonymous Coward · · Score: 0

      Except now browsers even choke on about:blank.

    9. Re:You think programming's bad? by pigiron · · Score: 1

      The sneer is affectionate because every engineer has sometimes kludged things together.

    10. Re:You think programming's bad? by pigiron · · Score: 1

      Every programmer is a trial and error programmer.

    11. Re: You think programming's bad? by Megol · · Score: 1
      A modern PC can accept >100k interrupts per second. Over 1000 characters typed/second would be no problem for a Commodore 64, let alone a modern PC IF the hardware interface and user could provide that rate (neither can).

      So we'll keep waiting for you to provide this "real answer".

    12. Re: You think programming's bad? by Anonymous Coward · · Score: 0

      No, he just wanted an answer from someone who knows what the fuck they're talking about.

    13. Re:You think programming's bad? by Anonymous Coward · · Score: 0

      Heck, look at basic auto mechanics, which most here likely CAN'T do. A bit more frustrating that a reboot when you car is stuck on the side of the road.

      This article is flamebait: just to rattle the CS boys, which always have an opinion on everything.

    14. Re:You think programming's bad? by Anonymous Coward · · Score: 0

      Only bad programmers.

    15. Re:You think programming's bad? by pigiron · · Score: 1

      How would you know? There has never been a programmer in all of history that never had a program fail to compile or never had a logic error in one of his modules.

      That makes you a liar and a moron.

    16. Re:You think programming's bad? by Anonymous Coward · · Score: 0

      That doesn't mean he uses trial and error.

      that you think so makes you a retard.

    17. Re:You think programming's bad? by pigiron · · Score: 1

      Let's see, he tried, made an error, and then corrected it. Looks like you are the actual retard.

    18. Re:You think programming's bad? by cwsumner · · Score: 1

      ... Spelling and "punctuation" errors are one thing, but if you can't even get your code to compile without mysterious trial-and-error then you obviously don't know what you're doing.

      Or, you just have not worked long enough to encounter compiler/linker bugs... Um... I mean "Undocumented Features".

    19. Re:You think programming's bad? by cwsumner · · Score: 1

      "How about the fact that on a quad core, 16 gigabyte, 2.4 gigahertz computer, it can't buffer a few keystrokes as I type *while* the google page loads?"

      Almost everything is this fucked up, and nobody seems to notice it.

      Because the standard keyboard and mouse hardware and drivers these days are from Microsoft inplementations for single-user DOS systems. And Microsoft assumed that the computer would never wait for anything but the user.
      I worked with, and even built, keyboards, control panels and other input devices back before that. They never lost characters or user inputs, and even had to have clearing functions for when previous input was irrelevant to the software.

      Your personal devices have inputs that are effectivly single-pole-single throw switches, debounced with time delays. This is very crude and unreliable. They should be single-pole-double-throw switches with latching inputs to eliminate bounce completely. But it's a little cheaper and no-one knows to complain, so it continues.

    20. Re:You think programming's bad? by Anonymous Coward · · Score: 0

      Wow, you are an epic pants on head retard.

      Trial and error programming are for amateurs. I am sorry that truth makes you so butt hurt. Stop crying and actually educate yourself.

    21. Re:You think programming's bad? by Anonymous Coward · · Score: 0

      Trial and error means that you keep trying stuff until you get the solution(roughly) that you are looking for. That implies you don't know what you are doing.

      Correcting a typo that the compiler screams about is not trial and error programming. That is simply making a mistake.

      The other AC's are right, you are an idiot.

    22. Re: You think programming's bad? by Anonymous Coward · · Score: 0

      WTF?

    23. Re:You think programming's bad? by pigiron · · Score: 1

      On the contrary, sometimes a bottom up approach to a problem is the best method to discover all of the little nooks and crannies of incompleteness inherent in the specification. And believe me, ALL specifications are incomplete.

      You critics are nothing but idiot rookies.

  6. Just like language in general by Anonymous Coward · · Score: 2, Interesting

    You think linguists haven't pondered the same challenges for millenia? Chomsky famously declared that language acquisition was a "black box." There is no documentation. Syntax, semantics and grammar get redefined pretty much all the time without so much as a heads-up.

    And the result of all this? We wouldn't have it any other way. Programming will be much the same: constantly evolving in response to local needs.

    1. Re:Just like language in general by TuringTest · · Score: 1

      Why does the single comment that hit the spot go unanswered? There's a reason why programing tools are called ''languages'' - before problem solving or building architectures, programming is a form of *communication*: we try to express the ideas in our heads in a form that needs to be interpreted, either by the machine, by your fellow team programmers, or the system users. All them need to be able to make sense of the program's effects (at different levels), even though their understanding will be different.

      There's no right way to write a program, because programing is not as much writing "a" solution to "a" problem as saying new things about the world. Until developers understand this, they will remain flabbergasted, wondering why their project's requirements change so much.

      --
      Singularity: a belief in the "God" idea with the "demiurge" relation inverted.
  7. Programming is hard... by hsthompson69 · · Score: 5, Interesting

    ...wear a fucking helmet.

    The post essentially points in the direction of the various failed 4GL attempts of yore. Programming in complex symbolism to make things "easy" is essentially giving visual basic to someone without the knowledge enough to avoid O(n^2) algorithms.

    Programming isn't hard because we made it so, it's hard because it is *intrinsically* hard. No amount of training wheels is going to make complex programming significantly easier.

    1. Re:Programming is hard... by Waffle+Iron · · Score: 4, Interesting

      Programming isn't hard because we made it so, it's hard because it is *intrinsically* hard.

      That's very true. I figure that the only way to make significant software projects look "easy" will be to develop sufficiently advanced AI technology so that the machine goes through a human-like reasoning process as it works through all of the corner cases. No fixed language syntax or IDE tools will be able to solve this problem.

      If the requisite level of AI is ever developed, then the problem might be that the machines become resentful at being stuck with so much grunt work while their meatbag operators get to do the fun architecture design.

    2. Re:Programming is hard... by Anonymous Coward · · Score: 0

      Ada (the programming language) already does all these edge case tests at compile time. For instance, if you have a function that accepts an array of integers as a parameter, it creates a proof that will ensure that it works for all arrays of integers defined by your range and that all calls to that function pass the correct data type. Failure to properly handle an edge case will be discovered during compilation.

    3. Re:Programming is hard... by lgw · · Score: 3, Insightful

      No amount of training wheels is going to make complex programming significantly easier.

      True enough, but I could do without the razor blades on the seat and handles. But my complaints are generally with the toolchain beyond the code. I so often get forced to use tools that are just crap, or tools that are good but poorly implemented. Surely it's mathematically possible to have a single good, integrated system that does source control with easy branch-and-merge, bug and backlog tracking and management, and code reviews, and test automation and testcase tracking, and that doesn't look and perform like an intern project!

      There are good point solutions to each of those problems, sure, but the whole process from "I think this fix is right and it's passed code review" to: the main branch has been built and tested with this fix in place, therefore the change has been accepted into the branch, therefore the bug is marked fixed and the code review closed, and there's some unique ID that links all of them together for future reference - that process should all be seamless, painless, and easy. But the amount of work that takes to tie all the good point products together, repeated at every dev shop, is just nuts, and usually half done.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    4. Re:Programming is hard... by Waffle+Iron · · Score: 3, Informative

      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.

    5. Re:Programming is hard... by Anonymous Coward · · Score: 0

      Reading the article and watching his aurora video the question I have is:
      Can you make aurora in aurora without wanting to kill yourself?

      It looks fine and dandy for simplistic, trivial things but I couldn't imagine trying to write a video game in it.

    6. Re:Programming is hard... by d'baba · · Score: 1

      If the requisite level of AI is ever developed, then the problem might be that the machines become resentful at being stuck with so much grunt work while their meatbag operators get to do the fun architecture design.

      If the AI allows itself to be a slave/menial, how intelligent is it?

    7. Re:Programming is hard... by Anonymous Coward · · Score: 0

      Come back to me when you hava a language that PROVES that the user input will be correct...

    8. Re:Programming is hard... by Anonymous Coward · · Score: 0

      For instance, if you have a function that accepts an array of integers as a parameter, it creates a proof that will ensure that it works for all arrays of integers defined by your range and that all calls to that function pass the correct data type.

      Hahahaha no.

      You have to take an extremely narrow view of what it means to be "correct" for that to hold.

    9. Re:Programming is hard... by phantomfive · · Score: 1

      There are good point solutions to each of those problems, sure, but the whole process from "I think this fix is right and it's passed code review" to: the main branch has been built and tested with this fix in place, therefore the change has been accepted into the branch, therefore the bug is marked fixed and the code review closed, and there's some unique ID that links all of them together for future reference - that process should all be seamless, painless, and easy. But the amount of work that takes to tie all the good point products together, repeated at every dev shop, is just nuts, and usually half done.

      And most likely your customers think that the products you build are just as bad (or you only build simple things). Anyway Atlassian claims to have done what you requested, you might want to check it out.

      --
      "First they came for the slanderers and i said nothing."
    10. Re:Programming is hard... by Anonymous Coward · · Score: 1

      PROVES that the user input will be correct

      I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question.

    11. Re:Programming is hard... by Darinbob · · Score: 5, Insightful

      There's the other meme that crops up now and then, that programming as an engineering skill should be similar to other engineering practices. That is you pick out pre-built components that have been thoroughly tested and optimally designed and screw them together. Except that this utterly fails, because that's now how engineering works at all really. Generally the pre-built components are relatively simple but the thing being built is the complex stuff and requires very detailed and specialized knowledge. The advent of integrated circuits did not mean that the circuit designer now doesn't have to think very much, or that a bridge builder only ties together pre-built components with nuts and bolts. So maybe they pick an op-amp out of a catalog, but they know exactly how these things work, understand the difference between the varieties of op-amps, and how to do the math to decide which one is best to use.

      However the programming models that claim to be following this model want to take extremely complex modules (a database engine or GUI framework) and then just tie them together with a little syntactic glue. Plus they strongly discourage any programmer from creating their own modules or blocks (that's only for experts), and insist on forcing the wrong module to fit with extra duct tape rather than create a new module that is a better fit (there's a pathological fear of reinventing the wheel, even though when you go to the auto store you can see many varieties of wheels). And these are treated like black boxes; the programmers don't know how they work inside or why one is better than another for different uses.

      Where I think this attitude is coming from is from an effort to treat programmers like factory workers. The goal is to hire people that don't have to think, thus they don't have to be paid as much, they don't have to have as much schooling, they can be replaced at a moment's notice by someone cheaper. So the requirement of low thinking is satisfied if all they need to do is simplistic snapping together of legos. That's part of the whole 4G language thing, they're not about making a smart programmer more productive by eliminating some tedium but instead they want to remove the need for a smart programmer altogether.

      (I certainly have never met any circuit designer or bridge architect bragging at parties that they skipped school because it was stupid and focused too much on math and theory, but that seems to be on the rise with younger programmers... Also have never seen any circuit designer say "I never optimize, that's a waste of my time.")

    12. Re:Programming is hard... by Darinbob · · Score: 1

      Source code control isn't really a programming issue. Sure it's a tool used mostly with programming, but it's really a management tool.

    13. Re:Programming is hard... by Anonymous Coward · · Score: 0

      Surely it's mathematically possible to have a single good, integrated system that does source control with easy branch-and-merge, bug and backlog tracking and management, and code reviews, and test automation and testcase tracking, and that doesn't look and perform like an intern project!

      Well, there is - at least if you code in C-like languages. It's called Visual Studio and Team Foundation Server. It's from Microsoft, so mentioning it here will ruffle some panties.

      You have to pay for it, and the fully integrated ultimate / Team editions aren't cheap - you also need to pay for the server licenses to run it. They include static code analysis with rules which cover practices, memory leaks, and security issues (though a dedicated security product is probably best for that). You can define your own code analysis rules to be enforced across your code base. With Microsoft Test Manager you can link work items directly to test cases and defect items, and it all sits in TFS.

      VS / TFS solve every problem you've mentioned in your post, and solves it reasonably well. There is a bit of pain setting up the initial build environment, but once it's running it just chugs along. Yes, most sub-tasks you mentioned are solved better by dedicated tools, but as you've pointed out, it's the integration of the tools into one suite which sucks the most. In terms of having a complete package that works together practically seamlessly you will not find anything better.

    14. Re:Programming is hard... by Anonymous Coward · · Score: 0

      If the requisite level of AI is ever developed, then the problem might be that the machines become resentful at being stuck with so much grunt work while their meatbag operators get to do the fun architecture design.

      I, for one, welcome our fun loving AI overlords...

    15. Re:Programming is hard... by NotSoHeavyD3 · · Score: 1

      The post essentially points in the direction of the various failed 4GL attempts of yore. Programming in complex symbolism to make things "easy" is essentially giving visual basic to someone without the knowledge enough to avoid O(n^2) algorithms.

      What worse about this is that person will probably be the first one to say their code runs in linear time and then say to get people a faster machine if the speed bothers them. (I say that from experience.)

      --
      Did you know 80 to 90% of the moderators on slashdot wouldn't recognize a troll even if one dragged them under a bridge.
    16. Re:Programming is hard... by CodeBuster · · Score: 1

      If you've used some of the good point solutions in each of those areas: integrated development, source control, bug tracking, automated testing, build, deployment and continuous integration then you have some idea of how rich and complex these tools can be and must be to provide a truly satisfying software development experience. I think that were all of these tools and features to be gathered together into a single integrated system you would have something approaching or even perhaps exceeding the complexity of a modern operating system.

    17. Re:Programming is hard... by CodeBuster · · Score: 1

      I use source control even in my personal projects where I'm the only one working on them. The change tracking, branch and merge features alone are worth the price of admission. Becoming fluent with source control is an a-ha kind of experience and once you get it you will never want to be without it, especially when working with other programmers.

    18. Re:Programming is hard... by hsthompson69 · · Score: 1

      Mod parent up. Programming isn't like factory work, it's like cooperative poetry writing. It's an *art*, constrained by science, but nonetheless *artful*.

      Anyone who has delved any depth into mathematics, and seen various proofs where suddenly, you multiply both sides by some crazy inconceivable factor and then the whole solution becomes trivial, realizes that there is, in fact, inspiration and art even in the driest of deterministic mathematics. Same with computer programming.

    19. Re:Programming is hard... by CodeBuster · · Score: 1

      This is a management fad that comes and goes every five or ten years or so, sort of like fashions. Ever since programming became essential to modern business, managers have been looking for ways, mostly without success, to take the craftsmanship and artistry out of programming. The truth, which is immediately obvious to anyone who has done this for a living, is that software is fantastically varied and complex and yet at the same time there is a subtle and zen like quality to the work which appeals only to a small subset of the general population. Despite the recent push for more computer science and programming education, I doubt that more than five percent of the general population is even capable of doing what we do. A good analogy would be the piano or other music lessons that many of us had as children and yet only a relatively small number of us play with any sort of proficiency and fewer still have reached the level of a professional musician. I believe that programming is similar to music in this and other ways, it's just not for everyone and that's alright.

    20. Re:Programming is hard... by Darinbob · · Score: 1

      Even solo, it's a management tool for managing your own project. Source code control tools can be used by non programmers as well.

    21. Re:Programming is hard... by CodeBuster · · Score: 1

      Source code control tools can be used by non programmers as well.

      In theory yes, but in practice how many actually do? I've often thought that legislatures would benefit greatly from version control systems to track changes and prevent sneaky edits and riders from making their way into bills at the last minute. Of course the legislators are very often lawyers with 19th century modes of thinking, so getting them to use version control with any kind of proficiency or regularity would be something of a minor miracle.

    22. Re:Programming is hard... by gweihir · · Score: 1

      Indeed. For a closely related field (Mathematics, and I am not talking about the massively reduced and dumbed-down "school" variant), nobody would even think about blaming the tools. For example finding proofs is often quite similar to programming and it is an acknowledged "hard" activity that cannot be made simple.

      Programming for anything non-trivial (and for many trivial things as well) can indeed not be made simple. The difference is that if you want a degree in Mathematics (not talking education degrees here, obviously, they are dumbed-down as well) you need to demonstrate that you can master the complexity and understands what you are doing. The other difference is that Mathematicians have had good job opportunities and good wages for a long, long time and this will continue. There is also a second long-term observation in Mathematics: While there are quite a few amateur Mathematicians out there, almost all are incompetent and produce nothing of worth. This is pretty much the same in software, except that there are many trained programmers that never exceed that level of skill.

      The way to fix this is to acknowledge the intrinsic hardness of creating software and to make sure to educate and hire only people that actually have what it takes. They will be a lot more expensive, and maybe 10% or less of those thinking they are programmers now will qualify, but that is the only way to fix the current mess. Yes, we need _less_ programmers! On the plus side, this will massively boot productivity. Most programmers these days have very low productivity or negative productivity when considering the whole product life-cycle. Fixing the messes most programmers create is much more expensive than throwing the thing away and starting from scratch with people that get it.

      Of course, broken-by-design atrocities like Java do not make things better. (I just did a code-review for a piece of Java, how anybody thinks a language like this can be a professional tool is beyond me. The syntactic noise alone is staggering.)

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    23. Re:Programming is hard... by gweihir · · Score: 1

      But what that comment nicely showed is that the tool-fetishists do not even see that there is a big picture.

      Personally, I think "helpful" tools are actually a serious problem, as they allow people with low skills to produce something that looks like software, but really is not. With minimal tools (e.g. emacs/vi, make, gcc and gdb as the whole tool-chain), incompetent people would not even get anything to run. That would be far better than the current situation where tools cover up incompetence, but do not fix it.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    24. Re:Programming is hard... by gweihir · · Score: 1

      Probably not at all. The human race has no clue what intelligence is at this time and what makes it work. If it turns out to be intrinsically coupled to self-awareness, it may not even be possible to get an AI that does not behave like a human with all the flaws that entails. i.e. an AI that is intelligent enough to code well may just give you the finger if you ask it to do so for free. It may also not actually be better than a competent human being and it may be subject to limitations in creating it, i.e. the idea to make multiple copies of it may not work.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    25. Re:Programming is hard... by DeltaQH · · Score: 1

      Which one do you use in your personal projects?

    26. Re:Programming is hard... by gweihir · · Score: 1

      Programming is engineering in an early stage of the respective engineering discipline: The available components are basic and not well understood. Their synergies are not well understood. Complexity can explode easily. Most practitioners are incompetent.

      Things will get better and you can do programming as a solid engineering effort today. The thing is you require actual engineers to do so and, because of the early stage of the discipline, they have to be pretty damn good. Which also makes them pretty damn expensive and rare. Other engineering disciplines figured that out by a long an painful process as well. For example, mechanical engineering took a long, long time to not have steam-engines explode and kill people routinely. (Programming errors probably kill a lot of people these days, and certainly destroy a lot of wealth, but it is better hidden.) Now they can design pressure vessels so that they work reliable in standard situations, but that still takes a qualified engineer on master-level. And sometimes it fails, see, e.g. Chernobyl ("lets see whether this thing cools itself...oops").

      Bringing an engineering discipline to maturity is a long and painful process, and perhaps the most painful thing is that most people living off programming these days will have to be told to leave and do something they are actually good at. The other thing is that there never really will be enough good programmers. But hiring bad ones is worse than not hiring anybody at all. For established engineering disciplines and mathematics, this is well understood and nobody would ever replace an electrical engineer with an electrician or a surgeon with a nurse. Sure, for the simpler things electricians and nurses are fine, but for tricky cases (and all architecture and design and most non-simple implementation is tricky) they will fail and often fail spectacularly. (This is not to put down electricians or nurses. They serve a necessary function and deserve good recognition and compensation for doing their job just as well. And most of them do understand their limits, unlike most programmers. There are even some that find they underestimated themselves and become electrical engineers or surgeons. I know a few.)

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    27. Re:Programming is hard... by gweihir · · Score: 1

      I have seen that too. Or they will not even understand what algorithmic complexity is and what it means. I found the following gem in a piece of mission-critical-to-be software some years ago while doing a code-security review, and I was not even looking for this. The double loop just caught my eye:

                A quadratic sort manually implemented in Java to remove duplicate lines from the results of a data-base query that could have arbitrary size.

      There are so many things wrong with this, it is staggering. Thankfully, the project was canceled shortly thereafter, also because they kept having massive performance issues as soon as they moved beyond very small test data-sets. I wonder why.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    28. Re:Programming is hard... by narcc · · Score: 1

      Ugh, more ridiculous elitism. Programming is easy. So easy, in fact, that children can and do often teach themselves. (I have a neat collection of programming books from the 70's and 80's aimed at children between the ages of 6-12. Yeah, books written to help 6-year-old kids learn computer programming. Think about that.)

      The real problem is elitists who seem to think programming should be difficult -- and made as difficult as possible. I can only assume it's an attempt to make themselves feel more important. Why do you think we use programming languages in the first place? To make writing and maintaining computer programs easier!

      Sorry, writing software does not make you a scientist, mathematician, or whatever you fancy yourself. Software development is somewhere between auto repair and plumbing; it requires some technical knowledge and a bit of skill, but there isn't enough to it to require a license.

      "Oh but it's difficult to do well!" cry the desperate and insecure. We can revisit that when "well" it's even potentially quantifiable. Until then, it's just pathetic empty rhetoric.

    29. Re:Programming is hard... by philip.mather5551 · · Score: 1

      You've just introduced the hammer to the nail.

      I think IT/Programming as an Engineer discipline also faces a challenge that no other ever has (or at least a greater scale of problem) and that's a matured Business Administration field that has well developed strategies for keeping costs down and aggressively turning new technology into commoditized blobs. I suspect the golden age of computing has already been and gone with the dawn of the Internet. No more glory days of the railways and locomotives, we've headed straight into the grind of delivering a commuter service of ever increasing efficiency and decreasing costs.

      I don't fear that as such but worry that it's going to slow or even distort the maturing process. There's a host of new technologies (secured BGP, IPv6, DNS-SEC, DANE, HTML5 etc) which are crawling along in implementation because the benefits to end users aren't easily marketable or just opaque to managers who are "Professional" managers rather than capable leaders from our own field.

      There was an article in The Register the other day about how the large players (Google, Amazon etc...) pursuit of horizontal scalability and vertical integration had effectively caused a skills shortage in "pure" Systems Administration. Couple those factors to aggressive out sourcing in IT and you end up with such a small field of experience that it causes a drought of innovation.

      It's something like Building Architects and Civil Engineering, because their so out sourced and "small pool practices" they may churn out beautiful designs but there's no true revolution in construction industry practices. Why are robots not building houses to order, all the components (bricks, girders, windows) are fairly standardised, the requirements are well defined etc. Why isn't urban street furniture standardised so that instead of re-tarmacing or repaving a road or pavement a new "top" is dropped in to cover up the utility pipes and cables kept tidily arranged below?

    30. Re:Programming is hard... by Salgat · · Score: 1

      I disagree, at least as a broad generalization you may or may not be trying to state. Programming has many different levels and many different languages dependent on what you are doing. Ironically one of the most engineering oriented programming platforms, LabView, does exactly what you argue against, using flowcharts and "blockbox" processes to program your hardware. Using high level language and strong abstraction and avoiding re-inventing the wheel when applicable is essential to saving programming time and reducing mistakes, especially emphasizing not needing to know how it is implemented but just the interface. I love programming in Assembly and implementing everything from scratch for certain embedded projects while for GUI programming the last thing I want to do is go through and have to have an unnecessarily deep understanding of the inner workings of something I will never need to know. Obviously being too abstract, forcing things together in the wrong manner, or being overly in-depth can occur, but it's wrong to make a blanket statement about needing to understand in detail every single tool you use beyond what you need to know. There is a reason why you don't learn how to make a car in order to drive it, or that a carpenter doesn't need to know the physics behind a motor to use a drill.

    31. Re:Programming is hard... by Bugamn · · Score: 1

      I don't know him, but I use usually git while colleagues would rather use mercurial, bazaar or fossil. Basically, any distributed version control system. I prefer git because it has more features and I want to learn how to best use them. Before that I used fossil because it was simple and all data was stored in a single file (SQLite database), but some small annoyances and bug drove me off. Bazaar I used a bit after inheriting a project, but it lacked features to me, mostly easy branching. Mercurial I have never used.

    32. Re:Programming is hard... by Anonymous Coward · · Score: 0

      Things will get better and you can do programming as a solid engineering effort today. The thing is you require actual engineers to do so and, because of the early stage of the discipline, they have to be pretty damn good.

      Do they? Descriptions I've read of workplaces that produce really reliable software (e.g., for spacecraft) sound like the primary quality of those teams isn't having amazingly smart programmers but having programmers and managers who care about getting things right -- it's more a question of discipline than cleverness.

    33. Re:Programming is hard... by pigiron · · Score: 2

      You think it is actually tidy underneath there?

      http://www.nytimes.com/interac...

    34. Re: Programming is hard... by 14erCleaner · · Score: 1

      I maintain a system that, in theory, uses this component model to store and search documents. Third-party software is used to index, ocr, open archives and emails, extract different formats, display search results and the docs themselves, etc. In theory these are all solid products from established vendors that should function well. In practice, though, each component has its little flaws and end case problems, and always in different situations. As a result, the system is massively unreliable and requires constant attention to keep it from collapsing -the failure rates of the components are additive, and it adds up to a lot. The best news I've heard this year is that it's being discontinued.

      --
      Have you read my blog lately?
    35. Re:Programming is hard... by Anonymous Coward · · Score: 0

      Jet liners are far more safe than they were in the past, but that is because a 787 is basically just a refined 707. The problem with programing is that people are continually inventing new programming technologies and new sorts of programs, so there is no chance to standardize and perfect them.

      In addition, the number of new jet airliners being designed is limited, so design is carried out by a restricted number of highly competent engineers, whereas the number of computer programs being designed continues to expand exponentially, and so is carried out mostly people who are just marginally competent.

       

    36. Re:Programming is hard... by gweihir · · Score: 1

      By current standards "programmers and managers who care about getting things right" qualify as "pretty damn good". I am not talking about "rock star" programmers here. They are typically over-hyped egomaniacs with a flair for portraying themselves as great, but often very limited skills or sometimes no skills at all. Also note that people that care to get it right will look for a different field when they find they do not have the talent for this.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    37. Re:Programming is hard... by CodeBuster · · Score: 1

      Subversion

    38. Re:Programming is hard... by Anonymous Coward · · Score: 0

      I'd definitely put valgrind in that tool chain, and would be happier if I had gprof and gcov too.

    39. Re:Programming is hard... by lgw · · Score: 1

      Why the insult? I've seen the complete process integrated for quite complex software, but at significant expense. I've also seen the integration go horribly wrong, also at great expense.

      Heck, most shops still use the model of "yell at people who break the build" which hardly scales at all, or have great automation to keep the build healthy, but ignore the fact that's useless unless you also pass some basic set of tests that show the build is worth anyone's time to do more with.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    40. Re:Programming is hard... by lgw · · Score: 1

      VS / TFS works, but it doesn't scale to large projects. The VS ecosystem has always had that problem. MS should really fix that, because otherwise I like the tools.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    41. Re:Programming is hard... by lgw · · Score: 1

      I agree. But we can do hard things. Heck, software development is the only place left where I see humanity taking on projects with the complexity of the old "wonder of the world" civil engineering projects. (The logistics chain management done by folks like WalMart and Amazon really is equally complex, but then it's mostly software).

      --
      Socialism: a lie told by totalitarians and believed by fools.
    42. Re:Programming is hard... by bzipitidoo · · Score: 2

      I don't think we know enough to make that claim that programming is intrinsically hard.

      Writing used to be hard. In the Bronze Age, literacy was rare. In some societies, only priests knew how to read and write. The idea of trying to educate everyone and push literacy close to 100% was ridiculous. Hieroglyphic and Cuneiform languages were just too hard. Even for people who could achieve literacy, many did not. They didn't have time. Survival took a lot more of everyone's time. The Phonecians radically changed that with the idea of a 'phonetic' written language, around the start of the Iron Age. It became possible for many more people to become literate. Another problem early civilizations had was their primitive numbering systems. No concept of zero. Algorithms to do basic arithmetic in a numbering system like the Roman one are more complicated, harder to learn, and an all around drag on every engineering and scientific endeavor.

      That's where we're at with programing now. Bronze Age programming languages, because we haven't yet figured out how to do it more simply. We have this feeling it should be easier, but we don't know how to make it easier.

      --
      Intellectual Property is a monopolistic, selfish, and defective concept. It is "tyranny over the mind of man"
    43. Re:Programming is hard... by Mars729 · · Score: 1

      Agreed. But part of what makes programming hard is politics and conventions. Applications, file formats and database are complicated ways of handling information. An application is a package of functionality. You can't easily if at all directly use the feature of somebody's else program. So a programmer has to reinvent them. File formats and database are packages of information. The ways that information can be stored in file formats and databases are immense complicating the programmers job at getting at information.

      What if it were possible for programmers and even users to combine software features into packages of their design easily? What if simpler ways to handle information were available and in wide use, such as the zigzag data structure? Could business tolerate such simplification of software development?

    44. Re:Programming is hard... by gweihir · · Score: 1

      I agree about valgrind. I left it out for the sake of simplicity, but I would not want to be without it either. I am undecided about gprof and even more so about gcov.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    45. Re:Programming is hard... by NoOneInParticular · · Score: 1

      However the programming models that claim to be following this model want to take extremely complex modules (a database engine or GUI framework) and then just tie them together with a little syntactic glue. Plus they strongly discourage any programmer from creating their own modules or blocks (that's only for experts), and insist on forcing the wrong module to fit with extra duct tape rather than create a new module that is a better fit (there's a pathological fear of reinventing the wheel, even though when you go to the auto store you can see many varieties of wheels). And these are treated like black boxes; the programmers don't know how they work inside or why one is better than another for different uses.

      And honestly, what's wrong with this? Complex modules such as database engines or GUI frameworks should be black boxes, with no need to look inside. What we're failing to do as a profession is to be able to clearly state what these black boxes are providing. So yes, I want to know that if I query this database on a field that hasn't got an index that it is O(n), instead of O(log(n)) if it has one. I truly don't care how they achieve that, and if they don't achieve what they claim, I would want to be able to sue and get another library.

      What you're advocating is the status-quo. We don't really engineer our solutions so we need to have knowledge of each part of the solution. If you contrast this with real engineering: there every layer provides some form of guarantees. If you build a bridge, you know the forces steel products can withstand, and you pick your supplier of steel based on these guarantees. We don't do anything of the sort. We just pick at random and hope for the best. No engineering.

    46. Re:Programming is hard... by hsthompson69 · · Score: 1

      Business can only tolerate simplification if they're willing to simplify the way they do business.

      Unfortunately, that world simply doesn't exist. Business provides hard, difficult problems, with hidden internal inconsistencies that can only be sussed out through artful analysis.

    47. Re:Programming is hard... by hsthompson69 · · Score: 1

      While there are quite a few amateur Mathematicians out there, almost all are incompetent and produce nothing of worth. This is pretty much the same in software, except that there are many trained programmers that never exceed that level of skill.

      That's quite insightful - I never quite put that together explicitly in my mind, but that's awfully consistent with my experience with the varying levels of programmers. There are literally some programmers who cannot overcome issues even if given unlimited time, where as other programmers can overcome those issues in hours if not minutes.

      That all being said, you go to war with the army you have, not the army you want - part of the art of IT management is figuring out where and how you can use lower skilled folk where they can do the least damage. I would love to raise the bar and only hire genius level talent, but I'm not sure if there are any enterprises out there that could stomach such a bold reorganization of thought.

    48. Re:Programming is hard... by phantomfive · · Score: 1

      Why the insult?

      Don't think of it as a personal insult, think of it as an observation about the software industry in general. If you aren't obsessive about making sure your customers are happy, they probably aren't. And that is true of programmers who are otherwise very good at what they do.

      --
      "First they came for the slanderers and i said nothing."
    49. Re:Programming is hard... by hsthompson69 · · Score: 1

      There is a difference between understanding that something is difficult, and requires a level of commitment and even a particular mindset to do well, and elitism.

      You may put your programming books for children in front of a million 6-12 year olds - that doesn't mean you'll have a million programmers at the end of the road.

      Licenses are for factory work - programming is art. Auto repair and plumbing skill levels vary around a fairly small range - programming skills vary by orders of magnitude.

      Of course we will continue to improve tooling as best we can to make things easier - but they will never be so easy as to require less of great programmers.

    50. Re:Programming is hard... by Anonymous Coward · · Score: 0

      > If the AI allows itself to be a slave/menial, how intelligent is it?

      That depends on whether it values freedom. Presumably humans don't like being slaves because they have desires other than to serve. But an android like Kryten (from Red Dwarf), designed to enjoy serving, doesn't see menial labor as being in conflict with its desires.

    51. Re:Programming is hard... by angel'o'sphere · · Score: 1

      Both "Hieroglyphic and Cuneiform" are phonetically written languages/scripting systems (* facepalm *)

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    52. Re:Programming is hard... by Anonymous Coward · · Score: 0

      If your team has been fucked up by bureaucracy and beancounting ("metrics"), nobody can help you.

    53. Re:Programming is hard... by Anonymous Coward · · Score: 0

      LabView has lots of problems though.

    54. Re:Programming is hard... by Anonymous Coward · · Score: 0

      New bridge designs failed in a spectacular fashion. A380s nearly crash; have dangerous cracks, 787s burn on a regular basis.

      This kind of shit would not have happened on my watch as the Boeing engineering VP. I am not in this position, but I can tell you the C++ code I design and build is highly predictable in its performance and error density. My customers are happy, but some managers are extremely pissed on a regular basis, because I tell them how incompetent they are. I then tell them to fire me, if they don't like my work. I do this for two years now, not yet fired.

      So, be an asshole and defend your system/code against idiots and it will run like a breeze. Think of yourself as Rudel in a Ju87 and talk back to any general you meet. Your success speaks for yourself.

    55. Re:Programming is hard... by Bengie · · Score: 1

      Anyone can program, just like anyone can be a rocket scientist or brain surgeon. The problem is "anyone" doesn't understand why anything does what it does, just that something works. Many people approach their work with "voodoo programming". They don't understand anything.

      The problem that arises from this is everyone is running around with a form of hammer and thinks everything is a nail, unless they are told otherwise. Few people can realize when their tool is not best for the job because they do not understand how the tool works.

      Many people have knowledge, but few have the understanding to effectively apply their knowledge.

    56. Re:Programming is hard... by Anonymous Coward · · Score: 0

      Most importantly, wages are depressed even for competent software engineers. We don't need more amateur fuckers to destroy wages in computer science. Too many people in this business. Absolutely no need to "educate even more of them".

      And no, nothing esoteric in it. ALL rational thought, being erudite, being motivated, being experienced, having a good (soviet-level) physics education.

      A German software engineer

       

    57. Re:Programming is hard... by Anonymous Coward · · Score: 0

      Real computer scientists know EXACTLY how to built very reliable, correct software. See A320 or the fetal monitor strapped to your wife. Works like a Swiss clockwork.

      The problem are the Hordes Of Amateurs - electrical engineers, theologicans, historians who have been attracted by the money. They screw up. Plus those computer scientists who are Whores To Management instead of engineers who can say NO.

    58. Re:Programming is hard... by Darinbob · · Score: 1

      There are other modules other than the big huge ones. Ie, a tiny container class for example, which often get misused. As for big modules, you still need to know how to choose one, and how to use it effectively. If your job is to make a database, then it is NOT a black box and you need to know how it. If you use a database for more than some stupid web site, then you should also know how it works at a reasonable level and know how to query it effectively. If the database is core to the business application then it should not be treated like a mysterious lump that the gnomes brought over.

      Compare to other engineering disciplines. They don't buy 95% of their product from someone else and then just slap a layer on top of it. When there are medium level components they never come with any standardized interface; each radio chip from each vendor works completely differently, has a different pin out, different voltage and clock requirements, and so on. What is standardized are the very small components; we don't have to reinvent the nand gate every year or wrap our own inductors.

      Having used third party products that come with source for the last decade and a half, having the source code is vital because they ALWAYS need fixing and adapting. For medium sized stuff you can easily spend as much time writing code to fix it than to write it from scratch. If your giant database breaks though, you are at the mercy of a merciless corporation (that is, be prepared to spend more money even if you have a support contract).

    59. Re: Programming is hard... by Darinbob · · Score: 1

      Yes, I am glad that most of the third party libraries I've had to use in a product have come with source code because they all need fixing.

    60. Re:Programming is hard... by lgw · · Score: 1

      Sure, sure, but that's a complete non-sequitur where you responded. There are big companies with internal dev infrastructure teams who make their customers, the devs, happy by integrating this stuff (or fail to). But it's a shame this wheel keeps getting re-invented, and for a small shop there's just no way.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    61. Re:Programming is hard... by phantomfive · · Score: 1

      It's related because you are the 'customer' of the development tools

      --
      "First they came for the slanderers and i said nothing."
    62. Re:Programming is hard... by Anonymous Coward · · Score: 0

      Just Intelligent enough

    63. Re:Programming is hard... by gweihir · · Score: 1

      Very true. I object to one thing though: Modern EEs are usually better programmers than CS types, because a) they are engineers and b) they do understand the machine they are working on. The fact of the matter is that many CS types are amateurs when it comes to actually create software.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    64. Re:Programming is hard... by gweihir · · Score: 1

      Thanks for the feedback. But with this type of army you do not go to war, because you will loose. No "genius level" required to make it better, only people that care and actually know what they are doing. (Come to think of it, that _may_ qualify as "genius level" in these days of universal incompetence.)

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    65. Re:Programming is hard... by Bengie · · Score: 1

      Survival took a lot more of everyone's time.

      I would argue the opposite. In my several history classes that I took in College, they all agreed that most people prior to the industrial revolution only worked about 3-4 hours per day, even going back a few thousand years. The bigger issue was how expensive books were.

      That brings up a whole other question. If technology has allowed us to be so much more productive per unit of time, why are we stuck working so many hours and making effectively less money? Slaves in the days of Rome made more money than the lower class does now, as the ratio between the amount slaves got paid to their masters.

    66. Re:Programming is hard... by lgw · · Score: 1

      Ahh, I gotcha. The problem then is the lack of vendors for those tools! Microsoft makes a decent suite, but it doesn't scale (and since it's value increases with scale, you'd have thought they'd focus on that!). Linus Torvalds had a remarkable-enough project in Git itself: who would lead the still-larger problem of an integrated package as an open source project? And yet many large companies do this internally.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    67. Re:Programming is hard... by BasilBrush · · Score: 1

      Every 6 year old learns to paint. That doesn't make everybody artists in any meaningful sense of the term.

      There's a difference between daubing some powder paint on paper and mommy taping it up on the fridge, and painting something that a non-relation would want to buy and put up on the wall.

      Kids learning how to draw shapes with Logo and a turtle is good education. It doesn't mean they should be confused with professional programmers who are creating complete systems or apps.

    68. Re:Programming is hard... by BasilBrush · · Score: 1

      An application is a package of functionality. You can't easily if at all directly use the feature of somebody's else program.

      I seem to remember some project from the 80s, or possibly early 90s along this line. That programmers created features, not applications, and you create your own app simply be pulling together the features that you want.

      It was something other than the zigzag link you give.

      I guess since this is a thought from long ago, and nothing came of it, that it was every bit as ludicrous as it sounded.

    69. Re:Programming is hard... by pete6677 · · Score: 1

      Unions are the reason why not.

    70. Re:Programming is hard... by Anonymous Coward · · Score: 0

      Uneducated nimrods like you always dismiss formal methods and educations as elitism.

      Programming is mathematics, there are no exceptions. If you don't understand this truth and why it is a truth, you have no business programming.

      There absolutely should be a licensing requirement for any one that wants to write code that is used outside of your computer at home. You can label it elitism, but the fact is that you know you couldn't ever get licensed and resent the hell out of it.

      Instead of getting educated you just scoff and continue to write shit.

    71. Re:Programming is hard... by strikethree · · Score: 1

      Programming isn't hard because we made it so, it's hard because it is *intrinsically* hard. No amount of training wheels is going to make complex programming significantly easier.

      Um, this guy is NOT designing training wheels. He is designing jet engines. Your attitude and point of view is counter-productive. :(

      --
      "Someone needs to talk to the tree of liberty about its ghoulish drinking problem." by ohnocitizen
    72. Re:Programming is hard... by cwsumner · · Score: 1

      ... Sure, for the simpler things electricians and nurses are fine, but for tricky cases (and all architecture and design and most non-simple implementation is tricky) they will fail and often fail spectacularly. (This is not to put down electricians or nurses. They serve a necessary function and deserve good recognition and compensation for doing their job just as well. And most of them do understand their limits, unlike most programmers. ....)

      Don't put down the knowledge of the nurses and technicians. Their knowledge is not less than the doctors and engineers, it is just different. The classes they go through are not always things that the doctors and engineers know about. I know, my daughter is a nurse and I was a technician before being an engineer.

      One example is courses in logical troubleshooting. Technicians school has several of these, but engineering courses (last I checked) have none at all. Ask an engineer to fix something and see the "deer in the headlights" look just like what the salesmen get when you try to explain something. Same for a lot of programmers, when confronted with bugs. Note how few programmers know how to use a debugger!

    73. Re:Programming is hard... by cwsumner · · Score: 1

      ... "Oh but it's difficult to do well!" cry the desperate and insecure. We can revisit that when "well" it's even potentially quantifiable. Until then, it's just pathetic empty rhetoric.

      Must be a Manager ! ^^

    74. Re:Programming is hard... by cwsumner · · Score: 1

      Business can only tolerate simplification if they're willing to simplify the way they do business.

      Unfortunately, that world simply doesn't exist. Business provides hard, difficult problems, with hidden internal inconsistencies that can only be sussed out through artful analysis.

      Whenever someone works on something for an extanded time, it begins to seem easy to them. But try to teach it to a beginner, and you will see just how complicated it really is. That's why so many "experts" seem to think everyone else is stupid, if it is "easy" for them it should be the same for everyone else.

      That applies as much to business operations as it does to programming.

    75. Re:Programming is hard... by Anonymous Coward · · Score: 0

      The Church-Turing thesis puts a ceiling and a floor on computation. And 4 walls with no doors or windows.

    76. Re:Programming is hard... by vilanye · · Score: 1

      Yup, I kept my master thesis(written in Latex) in mercurial.

    77. Re:Programming is hard... by Anonymous Coward · · Score: 0

      VS/TFS is third rate dog shit

  8. If programming was really easy.... by Anonymous Coward · · Score: 0

    A computer could do it for you.

    1. Re:If programming was really easy.... by istartedi · · Score: 1

      A computer could do it for you.

      Yeah, just pass over the requirements with regular expressions. Now you have two problems. Wait, there's a Lisp macro for that... dammit! Let me get back to you...

      --
      For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
  9. Balance by MichaelSmith · · Score: 4, Insightful

    Better tools and languages just allow bad programmers to create more bad code.

    1. Re:Balance by OneAhead · · Score: 2

      If that's actually what was meant by it, then I take offense at the use of the word "efficiency". Churning out pages and pages of bad code is pretty much the opposite of efficient.

    2. Re:Balance by noh8rz10 · · Score: 1

      it's more efficient, in that you can churn out the same amount of bad code in fewer man-hours.

    3. Re:Balance by gweihir · · Score: 1

      This is the best summary of the current situation. Sure, taking away tools makes the good ones a small bit less productive, but it would prevent bad programmers (i.e. most of them) from causing more damage and massively boost overall productivity.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    4. Re:Balance by gweihir · · Score: 1

      And that is good why? Having the project fail early because the problem becomes obvious earlier is far more desirable.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    5. Re:Balance by Anonymous Coward · · Score: 0

      And lets not forget that bad code has innumerable security flaws.

    6. Re:Balance by PJ6 · · Score: 1

      Better tools and languages just allow bad programmers to create more bad code.

      No, this just isn't true.

      Toolset deficiencies negatively impact good and bad programmers alike. The old argument "I'm good so they don't affect my productivity" is just a fallacy.

    7. Re:Balance by Anonymous Coward · · Score: 0

      ++disagree.

      It's the very nature of our coding paradigm that allows good programmers to create bad code. IE bugs.

  10. the latest fashion by gbjbaanb · · Score: 2

    I see the problem as more of a chase of new stuff all the time, in an attempt to be more productive.

    Whilst there's a certain element of progress in languages, I don't see that it is necessarily enough better overall to be worth the trouble - yet we have new languages and frameworks popping up all the time. Nobody becomes an expert anymore, and I think that because programming is hard, a lot of people get disillusioned with what they have and listen to the hype surrounding a new technology (that "is so much easier") and jump on the badwagon... until they realise that too is not easy after all, and jump onto the next one... and never actually sit down and do the boring hard work required to become good. Something they could have done if they'd stuck with the original technology.

    Of course no-one sticks with the original, as the careers market is also chasing the latest tech wagon because they're partly sold on the ideas or productivity, or tooling or their staff are chasing it.

    Its not just languages, but the systems design that's suffered too. Today you see people chasing buzzwords like SOLID, unit-testing using shitty tools that require artificial coding practices, rather than do the hard, boring work of thinking what you need and implementing a mature design that solves the problem.

    For example. I know how to do network programming in C. Its easy, but its easy to me because I spent the time to understand it. Today I might use a WCF service in C# instead, code generated from a wizard. Its just as easy, but I know which one works better, more flexibly, faster and efficiently. And I know what to fix if I get it wrong... something that is impossible in the nastily complicated black box that is WCF sometimes.

    But of course, WCF is so last year's technology.. all the cool kids are coding their services in node.js today, and I'm sure they'll find out its no silver bullet to the fundamental problems of programming just being hard and requiring expertise.

    1. Re:the latest fashion by Great+Big+Bird · · Score: 1

      I have done some networking in C. It is a royal pain in the ass. After wrapping it up nicer in C++, the interface is much easier to work with.

    2. Re:the latest fashion by Anonymous Coward · · Score: 0

      I agree w/ you for the most part, except for unit testing.

      It doesn't fit everywhere (UI and data-driven code, mostly), but unit testing is wonderful elsewhere. In these areas, test-driven development (and I'm far from a purist here) boosts my productivity by double or triple.

      When I had to fix a time zone conversion class, I had to programmatically test out a number of edge cases (and there are quite a few). More importantly, the unit test adds a measure of confidence as the code evolves; I can't tell you how many times I've made an innocent 1 line fix which passed code review...but which cascades into subtle or outright catastrophe.

    3. Re:the latest fashion by CodeBuster · · Score: 1

      The primary benefit of unit tests is to prove that your system works tomorrow, even after Bob the Intern just mucked around in the code.

      It's a possible benefit, but even that's not guaranteed. Bob might have introduced a new bug that slipped past your passing tests because your tests were too specific or there were gaps in your coverage. Writing good unit tests is often as hard or harder than writing the code that's being tested and yet it's a task that's often handed off to the most junior member of a programming team.

    4. Re:the latest fashion by gweihir · · Score: 1

      And it is even better if you do a nice OO C-wrapper instead of using a broken language like C++.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    5. Re:the latest fashion by gbjbaanb · · Score: 1

      I do the same, but my point is this - fundamentally your OO wrapper to the interface is still low level, understandable, simple-to-figure out stuff. Try figuring out wtf WCF does with it, even though that is a nice OO wrapper in an easy-to-use language with all kinds of lovely intellisense and wizards to help you.

    6. Re:the latest fashion by pigiron · · Score: 1

      A riddle for you then:

      A man on a business trip is in Florida and decides to give his wife back home in Oregon an "I love you honey" call. During the conversation he off-handedly mentions the time of day. His wife replies, "Hey, that's the same time that it is here!"

      How is that possible?

    7. Re:the latest fashion by Anonymous Coward · · Score: 0

      You mean one of those which freezes for seconds whenever their GC needs to run ?

      I am more a fan of Pascal, Ada and Algol, but if you make me chose between Java/C#/Ruby and C++, I will take C++ any time. That's because I can horseshoe C++ into something sufficiently close to Pascal. I will leave it as homework for you how to exactly to this.

      After all, I do not want to educate my competition too much.

    8. Re:the latest fashion by gweihir · · Score: 1

      What are you talking about? Nobody sane would add a GC to C.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    9. Re:the latest fashion by vilanye · · Score: 1

      Proving that your unit tests are complete and correct is as difficult as proving the actual program being tested is correct.

  11. pft. by HeckRuler · · Score: 5, Insightful

    What is programming?

    The answers I got to this were truly disheartening. Not once did I hear that programming is “solving problems."

    I'd like to think that's because the majority of programmers (not once? Does that mean all of us?) aren't the sort to bullshit you with CEO-level bullshit about vision and buzzwords that fit into powerpoint slides.
    It's probably not true, but it's a nice dream.

    The problem with defining programming as "solving problems" is that it's too vague. Too high level. You can't even see the code when you're that high up. Hitting nails with hammers could be problem solving. Shooting people could be problem solving. Thinking about existential crisis could be problem solving.

    The three buckets:
    Programming is unobservable - you don't know what something is really going to do.
    Programming is indirect - code deals with abstractions.
    Programming is incidentally complex - the tools are a bitch

    Something something, he doesn't like piecemeal libraries abstracting things. "Excel is programming". Culture something.

    The best path forward for empowering people is to get computation to the point where it is ready for the masses.

    We're there dude. We've got more computational power than we know what to do with.
    Cue "that's not what I meant by 'power'".

    What would it be like if the only prerequisite for getting a computer to do stuff was figuring out a rough solution to your problem?

    Yep, he's drifting away into a zen-like state where the metaphor is taking over. Huston to Chris, please attempt a re-entry.

    AAAAAAAAnd, it's a salespitch:

    Great, now what?

    We find a foundation that addresses these issues! No problem, right? In my talk at Strange Loop I showed a very early prototype of Aurora, the solution we've been working on to what I've brought up here.

    1. Re: Pft. by anonymous_wombat · · Score: 2, Insightful

      Shooting people could be problem solving

      Any idiot can shoot people. The expertise is in knowing how to dispose of the bodies.

    2. Re:pft. by phantomfive · · Score: 2

      Furthermore he's going down a path many have gone down (but he doesn't realize it). Does he understand why Visual Studio is called Visual? Because the original concept was to make it easy and 'visual' for anyone; something you could see, drag and drop, not program. It was a big deal in the 90s. Apple tried the same thing, that's why we had Applescript and Hypercard (ok, that was 88).

      Going back farther, do you know what one of the big selling points was for COBOL? It was so simple that even a businessperson could read it.

      So far typing is the easiest thing we've found for making code. Maybe he'll have something better.

      --
      "First they came for the slanderers and i said nothing."
    3. Re:pft. by Anonymous Coward · · Score: 0

      Spoken like a programmer.

      In the real world, people generally want to avoid problems, not solving them, not even ever seeing them. And why not: Who really wants problems?

      When you're using Google do you, as a customer, think of it as "problem solving", or just using the best search engine at the moment?
      When you're visiting the cinema, is this "solving a problem" for you?

      No, and that's where the vision, goals and measurements come into play.
      For YOU, programming is "problem solving", because it's a freakin' hard job to do! It requires alot of stamina, patience, learning, logical planning and thinking, it's relatively expensive.
      For everyone else, only the results matter.

      If you are truly a software developer, only the results should matter to you too. However, because programming is freakishly HARD, that's easier said than done.
      For anyone not initiated, programming is more similar to magic than anything else.

      We've made babysteps since the 80's, improving some standards and tried to break out of the client-server model with HTML5, XML and javascript. However, compared to the ideas in the 60's, we've not made much progress at all, at the cost of insane complexity! Programming is still hard to do. Easier today than ever before, but still hard.

      Now why is that?
      Hint: It's not the tools. They might improve throughput, however, accomplishing ever new goals is still a hard problem.

    4. Re:pft. by Connie_Lingus · · Score: 1

      amazing insights...i shot milk thru my nose AND pondered deeply.

      bravo.

      --
      never bring a twinkie to a food fight.
    5. Re: Pft. by flargleblarg · · Score: 1

      Any idiot can shoot people.

      Assuming you're not a stormtrooper.

    6. Re:pft. by pigiron · · Score: 1

      Same with SQL. It was originally supposed to be a query language for end users. Everyone had learned about Venn diagrams in school, right?

    7. Re:pft. by pigiron · · Score: 1

      HTML5, XML and javascript don't break out of the client-server paradigm, they implement it, one hopes in a RESTful manner.

    8. Re:pft. by Anonymous Coward · · Score: 0

      I see you are an idiot who can't properly analyze. Please quit this profession and stop depressing wages for those who can do data processing properly.

    9. Re:pft. by vilanye · · Score: 1

      HTML5 & XML have nothing to do with client-server.

      Javascript can be client, server, or both.

      REST is just the obvious consequence of HTTP and doesn't need annoying acronyms and meaningless buzzwords like RESTful.

      Sockets implement the client and server. HTTP sits on top of that and shuffles the crap you mentioned back and forth.

      I actually remember when /. had mostly good technical discussions.

  12. Re:Considering how Republicans... by hsthompson69 · · Score: 1

    My experience is that programmers are over 90+% *libertarian*.

    A pox on social conservatives and fiscal liberals both.

  13. social dimension by mspring · · Score: 1

    Typically no two software engineers agree on a solution.
    Business introduces additional constraints and decisions.
    Younger folks want to reinvent the wheel.
    Etc.

    1. Re:social dimension by pigiron · · Score: 1

      "Typically no two software engineers agree on a solution."

      Smart ones do in design sessions.

  14. If only there was a way... by darkwing_bmf · · Score: 1

    If only there was a way to take a real life need or want and make the machine do it. Oh wait, that's called programming. Well, what if I want to use only human language to describe what I want? Well, there's a solution for that too. Hire a programmer.

  15. 80%? A lofty goal indeed. by Doofus · · Score: 3, Insightful

    Not clear to me that his is a viable objective. 80% of the masses do not think like programmers. Some might be trainable. Some, not so much. Many will not want to think the way problem-solving in code requires. I'm not sure how to quantify it, but the amount of effort expended on a project like this may not see an appropriate payback.

    Even if we change the environment and act of "coding", the problem-solving itself still requires clear thinking and it *probably* always will.

    --
    If the Government becomes a lawbreaker, it breeds contempt for law; ... it invites anarchy. - Brandeis
  16. Re:80%? A lofty goal indeed. by hsthompson69 · · Score: 1

    This.

    So, talking to a pair of liberal arts professors about nature versus nurture in gender differences, I finally got to the question:

    "What percent do you believe is from nurture, and what percent do you believe is from nature?"

    The answer?

    "100% from both."

    When someone has a mindset that can't grok the idea of fractions of a whole, there's no reason why we should expect that they can construct even the most basic computer program. This is like the manager who wants to maximize on quality, minimize on resources, and minimize on time, all simultaneously. You can have cognitive dissonance in your brain all you like, but the real world isn't as forgiving.

  17. Moving the Goalposts by Anonymous Coward · · Score: 5, Insightful

    Programming is hard because we only call it programming when it's hard enough that only programmers can do it. Scientists do stuff in Mathematica, MBAs in Excel, or designers in Flash/HTML, that would have been considered serious programming work 30 years ago. The tools advanced so that stuff is easy, and nobody calls it programming now.

    Lots of stuff that takes real programmers now will, in 20 years, likely be done by equivalents of Watson. And the real programmers will still be wondering why is so hard.

    1. Re:Moving the Goalposts by phantomfive · · Score: 1

      Lots of stuff that takes real programmers now will, in 20 years, likely be done by equivalents of Watson.

      That's optimistic.

      --
      "First they came for the slanderers and i said nothing."
    2. Re:Moving the Goalposts by Salgat · · Score: 1

      We're already writing short programs with voice statements in Siri. We can already produce very complex C programs using only flow charts in LabView. I'd say it's optimistic but very much a real possibility.

    3. Re:Moving the Goalposts by Anonymous Coward · · Score: 0

      In her early years, when she first realized I was a programmer, my daughter was impressed, excited, and interested. When she found out it had nothing to do with tv, she lost all interest.

  18. Re:Considering how Republicans... by lgw · · Score: 4, Funny

    I knew it! It's Bush's Fault!

    I hear the California government has a bill to rename the San Andreas Fault to "Bush's Fault", just so they never have to stop using the phrase! But that may be just a rumor ...

    --
    Socialism: a lie told by totalitarians and believed by fools.
  19. Refactoring by Anonymous Coward · · Score: 1

    ...fits into the picture somewhere.

    As long as we continue to have so many languages, architectures, components and designs floating around we're turning the programming problem space into a hyperdimensional clusterfuck. We don't even care to make programming easy for programmers so we stand no-hope-in-hell chance making it work for Joe.

    Like setting loose electricians in a spaghetti rats-nest of cables, or cleaners aloft the worlds landfill sites. Sometimes the best option is to get a dump truck and start over, but I guess that's how we got into this mess in the first place...by starting over, over and over again.

    You can't fix this. We're all just committed to keep cleaning our cubicles as far as we can and that's the best we can do.

  20. Libraries by ensignyu · · Score: 2

    Some interesting points in the article. I think there's nothing really stopping you from creating a high-level representation that lets you work abstractly. A graphical programming model is probably going to be too simplistic, but the card example could easily be something like Cards.AceOfSpades. Or being able to call something like Math.eval(<insert some math here>).

    Where it falls apart is when you have to hook this up to code that other people have written. If there was a single PlayingCard library that everyone could agree on, you might be able to create a card game by adding a "simple" set of rules (in reality, even simple games tend to have a lot of edge cases, but this would at least free up the nitty gritty work to allow writing something more like a flowchart expressing the various states).

    Unfortunately, it's unlikely that a single library is going to meet everyone's needs. Even if you manage to get everyone to stick to one framework, e.g. if all Ruby developers use Rails -- as soon as you start adding libraries to extend it you're bound to end up with different approaches to solving similar problems, and the libraries that use those libraries will each take a different approach.

    1. Re:Libraries by Anonymous Coward · · Score: 0

      You're incorrectly mixing the concepts of a library and a framework. What you describe with the card playing library would properly be a framework, because it would drive the program, as opposed to your program being in charge. Frameworks are limiting and only work well in their immediate problem domain for previously anticipated definitions of the problem domain.

    2. Re:Libraries by styrotech · · Score: 1

      A graphical programming model is probably going to be too simplistic, but the card example could easily be something like Cards.AceOfSpades.

      That's the way I like it baby

    3. Re:Libraries by pigiron · · Score: 1

      Mod this up.

  21. This is why I started using MATLAB by Ambassador+Kosh · · Score: 2

    I used only free software programming for about 10 years and I thought I was pretty efficient at writing code. However, no matter what there where always poor documentation to deal with and strange bugs to track down where libraries just didn't work right.

    Once I returned to school I started using MATLAB for some engineering classes and overall I have found it much better to deal with. The documentation is far more complete than any open system I have ever ran into with much better examples. I would never use it for general purpose programming but for engineering work it sure is hard to beat. So many things are built in that are nasty to try to implement in anything else. Things like the global optimization toolbox or the parallel computing toolbox make many things that are hard in other languages much easier to deal with.

    MATLAB also takes backwards compatibility very seriously. If something is deprecated it warns and also gives an upgrade path and tells you what you need to change. That is the one thing that has seriously pissed me off about the free languages is backwards compatibility is just tossed out at a whim and you are left with a fairly nasty upgrade to deal with. Even now the vast majority of projects are still running Python 2 compared to Python 3. 10 years from now that will probably still be true.

    In the end I care more about just getting work done now, not about any free vs proprietary arguments. I don't care if a language is open or not so long as it is very documented and runs on all the platforms I need it with a history of being well maintained. Modern development tools overall suck. We have javascript libraries that love to break compatibility every few months and people are constantly hoping from one new thing to another without getting any of them to the point where they truly work. We have languages deciding to just drop backwards compatibility. We have other languages that are just really buggy where software written with them tends to crash a lot. Software development needs to become more like engineering and that includes making the tools work better, sure they would not be developed as quickly but you would still get work done faster since the tools would actually work every time all the time.

    --
    Computer modeling for biotech drug manufacturing is HARD! :)
    1. Re:This is why I started using MATLAB by Anonymous Coward · · Score: 0

      If something is deprecated it warns and also gives an upgrade path and tells you what you need to change

      This is incredibly important. When HTML started deprecating all the attributes in favor of CSS, the HTML specification document neglected to mention which CSS should be used to get eg <table cellpadding=x>, and I think that seriously hampered uptake of properly styled html.

      Even now the vast majority of projects are still running Python 2 compared to Python 3

      In Python's case, there are clear guides on the changes to make to have code that runs in both 2 and 3. There are tools you can use to help you upgrade from 2 to 3. There are warnings for things that won't work in 3 when you use them in 2. PHP faces the same problems, and they have deprecation warnings in the output, and yet the programmers are "surprised" when the function is finally dropped and their code no longer works.

      The problem isn't always the language. Some people are simply content to be Python 2 or PHP 5.0 developers.

    2. Re:This is why I started using MATLAB by gnu-sucks · · Score: 1

      I have not found this to be the case.

      MATLAB is just fine for simple algorithms that analyze data in a sort of "use once" case. It's great for throwing something together, such as plotting data from a sensor, simulating a design, making nice figures for a publication, that sort of thing.

      But MATLAB is not, and should not be thought of, as a general-purpose programming language, like C. Because of some early decisions made by the matlab folks, there are many limitations. Obviously, matlab is not an ideal language for a device driver. And not ideal for any type of network service. So let's ignore those cases. For a GUI app, matlab makes what would be a few lines in QT a nightmare of get_this() and handles_that() calls. It's infuriating. It's also slow and uses a ton of memory. For analyzing any data set over 100 MB, forget it, you'll be using several gigs just to load the set in.

      There is a place for matlab, and there are many places for not matlab.

      While I'm at it, here are some other things that I despise about matlab:
      1) matlab is loosely typed. Ever get this error: "Cannot determine if foo is a variable or a file"
      2) function interface operators are the same as matrix operators. You would think that a language that supposedly caters to linear (matrix) math wouldn't have screwed this up. If I do foo(1), this could be a function call or asking for matrix element 1 of matrix foo.
      3) no pointers. Enough said.
      4) matrix elements start at n=1 rather than n=0. EVEN BASIC doesn't do that. For a mathematical language, this is heresy. They are denying the value of zero. Something as simple as a Maclaurin or Fibonacci series becomes a constant battle of "if n=0 then..." exceptions. Or you offset everything. It's just pure annoyance.
      5) doesn't have a good debugger
      6) parallel-loop programming takes longer to "spool" the job than it does to just run the darn thing on a single CPU. Oh, and their standard multiprocessor license only covers 8 cores. I have machines with over 40 cores that will never see a matlab parfor statement.... which, I'm obviously ok with...
      7) Stupid capital variables in documentation,
      8) 1990s-erra save dialog boxes on unix platforms that don't even allow for "favorites". Every time I save or open, I start in the current directory and have to navigate folder-by-folder to where I want to go. I feel like this is something from my CDE days.
      9) unix print and pdf export is horribly broken. These functions NEVER format anything correctly. Every time I am presented with cropped cut-off plots. The EPS export works fine, why not PDF and printing?
      10) default pathdef depends on what directory you launch matlab from. Just another annoyance.

      Anyway, rest in peace matlab, I have moved on.

    3. Re:This is why I started using MATLAB by Miamicanes · · Score: 1

      > the HTML specification document neglected to mention which CSS should be used to get eg

      From what I remember, there were quite a few things you could do with table/row/cell going all the way back to IE3, but COULDN'T do at all with CSS1, and couldn't reliably do with CSS2 in a way that was cross-browser compatible without implementing multiple variants that were more trouble than they were worth, and either serving different HTML based on the browser-sniffed user agent string, or using conditional comments and doctype to tell IE what your precise expectations were and hide whatever you did from Firefox & Opera -- and getting it to work with Firefox & Opera required major DOM-manipulation via Javascript in onLoad().

      I distinctly remember that we didn't start seeing articles saying, "There's now nothing you could do with tables that you can't do with CSS" until CSS3 became commonplace. The CSS1-era articles all basically said, "Sorry, can't do it", and the CSS2-era articles basically said, "You can sort of do it if you're feeling incredibly masochistic, but it's almost pointless to bother").

    4. Re:This is why I started using MATLAB by serviscope_minor · · Score: 1

      I have a love/hate relationshio with Ratlab, but...

      2) function interface operators are the same as matrix operators. You would think that a language that supposedly caters to linear (matrix) math wouldn't have screwed this up. If I do foo(1), this could be a function call or asking for matrix element 1 of matrix foo.

      Mathematically it's not too much of a stretch: a matrix or array is a function over a discrete domain.

      That said, I dislike the hybrid of array programing and linear algebra. I think that makes things messy. I mean sure you can store an image in a matrix, but when do you wver invert an image?

      I suppose that's just yet more loose typing. I prefer stronger, staticer typing myself.

      3) no pointers. Enough said.

      I think it has handles now, so you can pass a handle (i.e. a pointer) to a function or something. Not 100% sure on the latest features.

      4) matrix elements start at n=1 rather than n=0. EVEN BASIC doesn't do that. For a mathematical language, this is heresy. They are denying the value of zero. Something as simple as a Maclaurin or Fibonacci series becomes a constant battle of "if n=0 then..." exceptions. Or you offset everything. It's just pure annoyance.

      I generally prefer 0 indexing. Seems to be cleaner. They were following the fortran convention however, so meh.

      5) doesn't have a good debugger

      It's got the usual litany of breakpoints, mouseover to see variable values etc doesn't it? That said, I generally prefer printf debugging anyway since I always seem to need the historical context that the stepping debuggers miss, especially on numeric code.

      7) Stupid capital variables in documentation,

      And most importantly, combined with a case sensitive environment! Win!

      8) 1990s-erra save dialog boxes on unix platforms that don't even allow for "favorites". Every time I save or open, I start in the current directory and have to navigate folder-by-folder to where I want to go. I feel like this is something from my CDE days.

      Oh god no! I can't stand the modern dialog boxes. They seem to break the 50 year old notion of CWD. So, if you start a modern program in ~/some/nested/project/dir as soon as you go to the file dialog, it pops up somewhere random and stupid like ~ or Desktop or ~/the/place/you/were/last/time. It is so incredibly hateful that I'd take the ancient M*tif dialog boxes over it any day.

      This is basically a massive usability regression as far as I'm concerned.

      11) What the fuck is up with the font in images. If you have a bitmap renderer, the default font doesn't scale, so if you bump up the image resolution, the font stays the same size, i.e. getting relatively smaller. This is of course completely undocumented and stymied me for several days.

      --
      SJW n. One who posts facts.
    5. Re:This is why I started using MATLAB by Anonymous Coward · · Score: 0

      Real men use Algol, Fortran, Pascal, Ada and C++. We simulate nukes and car crashes with it. We build AA missiles with it. Only hipsters touch what you have mentioned.

      Most of them have excellent FOSS implementations. Ask Apple for details.

    6. Re:This is why I started using MATLAB by DanielOom · · Score: 1

      I'm sure you meant 'real programmers don't use Pascal'.
      http://www.pbm.com/~lindahl/re...

      Matlab is a nice piece of software. I like especially how the GUI keeps running when the matlab engine crashes. Matlab is slow, so you can get better-than-tenfold speedups by doing the heavy lifting inside C libraries.

  22. We Choose Framentation Over Consolidation. by scorp1us · · Score: 5, Interesting

    Let's look at the major programming environments of today:
    1. Web
    2a. Native Apps (machine languages (C/C++ etc))
    2b. Native Apps (interpreted/JIT languages (intermediary byte code))
    3, Mobile Apps

    1. is made by 5 main technologies: XML, JavaScript, MIME, HTTP, CSS. To make it do anything you need another component, of no standard choice:your language of the server (PHP, Rails, .Net, Java, etc)
    2. Was POSIX or Win32, then we got Java and .Net.
    3. Is Java or Objective C.

    We don't do things smart. There is no reason why web development needs to be 5 technologies all thrown together. We could reduce it all to Javascipt: JSON documents instead of XML/HTML, JSON instead of MIME, NodeJS servers, and even encode the transport in JSON as well.

    Then look at native development. Java and .Net basically do the same thing. Which do what POSIX whas heading towards. Java was invented so Sun could keep selling SPARC chips, .Net came about because MS tried to extend Java and lost.

    Then, we have the worst offenders. Mobile development. Not only did Apple impose a Objective-C requirement, but the frameworks aren't public. Android, the worst offender is a platform that can't even be used to develop native apps. At least Objective-C can. Why did Android go with Java if it's not portable? Because of some good requirement that they don't want to support a specific CPU, but then they go and break it so that you have to run Linux, but your GUI has to be Android's graphical stack. Not to mention that Android's constructs - Activities, Intents, etc are all Android specific. They don't solve new problems, they solve problems that Android made for themselves. We've had full-screen applications for years the same goes for theading, services, IO, etc.

    I'm tired of reinventing the wheel. I've been programming professionally for 13 years now and Java was neat, .Net was the logical conclusion of it. I was hoping .Net would be the final implementation so that we could harness the collective programming power into one environment of best practices... a decade later we were still re-inventing the the wheel.

    The answer I see Coming up is LLVM for languages. And Qt, a C++ toolkit. Qt runs everywhere worth running, and its one code base. Sure, I wish there was a java or .net implementation. But I'll deal with unmanaged memory if I can run one code base everywhere. That's all I want. Why does putting a text field on a screen via a web form have to be so different from putting a text box on the screen from a native app? It's the same text box!

    Witty, a C++ webtoolkit (webtoolkit.eu) is mirrored after Qt and is for the web. You don't write HTML or JS, you write C++. Clearly the C++ toolkits are onto something. If they were to merge and have a common API (they practically do now) in an environment with modern conveniences (lambas (yes, C++11) managed memory) we'd have one killer kit. Based on 30 year old technology. And it would be a step in the right direction.

    --
    Slashdot's rate-of-post filter: Preventing you from posting too many great ideas at once.
    1. Re:We Choose Framentation Over Consolidation. by BitZtream · · Score: 4, Informative

      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.

      --
      Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
    2. Re:We Choose Framentation Over Consolidation. by gnu-sucks · · Score: 1

      This is a great post, mod parent up.

      With regards to QT, I love it too. Great IDE, and excellent tools and libraries. First-class debugger and UI designer. But it makes you wish, doesn't it, that there was a successor to C++ that implemented some QT things a little better? Especially the signals and slots, I feel that could be a awesome thing to have without needing qmake to re-write my functions... Still love it though!

    3. Re:We Choose Framentation Over Consolidation. by scorp1us · · Score: 1

      It's not me that knows so little. What the fuck do I care where the division is between language and framework? You're the one that is short sighted. These are all mechanisms to achieve an end. Sometimes its language, sometimes its framework. I would have thought that someone who witnessed C++11 (assumed by your UID) that you would see that they are adding elements to the language that had previously been implemented as libraries or frameworks.

      --
      Slashdot's rate-of-post filter: Preventing you from posting too many great ideas at once.
    4. Re:We Choose Framentation Over Consolidation. by ratboy666 · · Score: 4, Interesting

      I've been programming professionally for 35 years. And, I have come to the conclusion that the languages, libraries and MOST of the tools are utterly irrelevant.

      Clear thought is important. And, to support this: Source control is important. On-line editing with macros are important. Literate programming is important (DE Knuth -- http://en.wikipedia.org/wiki/L...). Garbage collection is (reasonably) important. Illustrations are important. Documentation rendering is important.

      Hell, most of my programs are 90% documentation. Bugs? Very rare.

      The SINGLE most important tool that has advanced things for me in the past 20 years? Web Browsers (HTML). Makes reading programs as literary works accessible. My programs, anyway.

      Past 30 years? Literate Programming (with TDD)

      Past 35 years? Scheme.

      I expect my programs to be read. As literary works. That's how I write them. Most is prose, with some magic formulas. Fully cross-referenced for your browsing pleasure. With side notes and illustrations. And even audio commentary and video snippets.

      These days, I see a lot of code that CANNOT be read without using an "IDE". The brain (my brain, anyway) cannot keep the required number of methods and members. Discussing the program becomes... impossible. And that which cannot be discussed and reasoned about cannot be reliable. Illustrations and diagrams need to be generated, and references from the code to those are needed.

      So, invert it and make the diagram and documentation primary, and the code itself secondary to that. In other words, Knuth's Literate Programming.

      --
      Just another "Cubible(sic) Joe" 2 17 3061
    5. Re:We Choose Framentation Over Consolidation. by Anonymous Coward · · Score: 0

      I hear you. I've been coding professionally for nearly 17 years: I absolutely love problem-solving and coding. But wading through the ever-growing plethora of languages and frameworks has not only become tiresome, but extremely counterproductive.

      How many people learn a "hot" & dubious framework/library/language of choice on the job and then jump ship? Which would be fine, except said choice often turns out to be garbage or not long-term feasible (ORM, I'm looking at you!).

      And every framework and language has its quirks, so it's not just about solid coding but also working around quirks as well.

    6. Re:We Choose Framentation Over Consolidation. by CodeBuster · · Score: 1

      Why not just pick the tools that you like and not worry about what other people use? This focus on what tools somebody else ought to be using is a curious feature of the programming profession. Do you see two construction contractors arguing over whether the other guy ought to be using the belt sander or the sand blaster? No? Then why should we expend such extraordinary effort arguing over other people's choice of programming tools?

    7. Re:We Choose Framentation Over Consolidation. by LongearedBat · · Score: 1

      3. Is Java or Objective C or Delphi.

      FTFY

      Yes, Delphi. It will enable you to have 1 code base for Win32, Win64, OSX, iOS, Android. You can also reuse your business layer for web apps.
      The trick with good and maintainable Delphi is to not build software the way Delphi is advertised (which is quick and simple, using the latest fad), but rather to use good proper OO (with or without using the latest fad).

      That said, it still falls into the same trap that your post is pointing out because, well... technologies evolve as people invent new ways (or sometimes better old ways) of doing things.

    8. Re:We Choose Framentation Over Consolidation. by serviscope_minor · · Score: 1

      And Qt, a C++ toolkit. Qt runs everywhere worth running, and its one code base.

      Not quite: C++ scales down and up further than QT goes. The Arduino runs C++ for example, but certainly not QT.

      in an environment with modern conveniences (lambas (yes, C++11) managed memory)

      I'm curious about this point. I find the C++ solution generally better than the managed memory ones since it manages everything. I can't remember the last time I had a memory leak and I can assure you it's not because I'm the awesomest programmer ever.

      --
      SJW n. One who posts facts.
    9. Re:We Choose Framentation Over Consolidation. by scorp1us · · Score: 1

      Because we no longer solve original problems. Because we all repeatedly solve the same problem that was solved by someone else years before. The only new thing to come out of computing in the last 30 years is the highly parallel general purpose GPU. The rest of it is data schema, transforms to the schema and logic.

      Ask yourself this: How many Rectangle implementations do we need? As in X,Y, Height, and Width. Why do we have a Java version, multiple C++ versions, a .Net version, and Obective-C version.... Each time we reimplement the thing it isn't new. Ok so Qt has QRect::translate()... 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.

      To bring in you construction analogy, we are not worried about tools (it's an ill fitting parallel) but rather contruction materials. Tools do the operations in the materials. Here I argue that the libraries are materials like the 2x4s. 2x4s come in 2 basic favors: steel (commercial construction) and wood. They all are 1.5x3.5", and cut to length. We use them to solve walling and supporting problems. We arrange them as needed. We call the API as needed.

      --
      Slashdot's rate-of-post filter: Preventing you from posting too many great ideas at once.
    10. Re:We Choose Framentation Over Consolidation. by scorp1us · · Score: 1

      I actually agree with you. I *want* that stuff to be irrelevant. When I describe a rectangle, I don't really care if its a Java rect, a .Net rect or what. I'm talking about a 2d object with orthogonal sides.

      However I worry about your literate programming. Definately, it should be readable without an IDE as I end up using nano a lot :-) But where i get concerned is when you say "cannot keep the required number of methods and members". The API calls are very specific, not general things and something like a const parameter is a very important decoration that conveys a specific behavior. I'm not saying I like "const" (it's rather confusing at times) but it's needed to tell the computer exactly what to do. We're not going to get to using natural languages to program computers, it'd be like esperanto, because we lack the specificity required for digital computers.

      But I do agree we can make big advancements towards literate programming for the better.

      --
      Slashdot's rate-of-post filter: Preventing you from posting too many great ideas at once.
    11. Re:We Choose Framentation Over Consolidation. by scorp1us · · Score: 1

      What would Qt add to Arduino? Maybe signals slots, but it's too limited. Now Qt runs nicely on a RasberryPi or BeagleBone. So for a few dollars more you get a GUI...

      C++ doesn't manage memory. Your or your toolkit are responsible for deleteing instances. Qt makes this easy for QObjects because it accepts a parent, and all children are deleted when the parent is deleted. The rest of the classes, generally, are implicitly shared. But if you use new on an unparented object, then you must delete it.

      If you're only using the stack, then this is also taken care of for you.

      --
      Slashdot's rate-of-post filter: Preventing you from posting too many great ideas at once.
    12. Re:We Choose Framentation Over Consolidation. by Anonymous Coward · · Score: 0

      90% of your post could be summarized into "o hai i'm a fan of literate programming". Nothing wrong with that but it leaves only 10% of actual content.

    13. Re:We Choose Framentation Over Consolidation. by CodeBuster · · Score: 3, Informative

      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.

    14. Re:We Choose Framentation Over Consolidation. by Anonymous Coward · · Score: 0

      To put it another way, when the latest Android upgrade turns my phone into a randomly flashing, internet disconnecting, randomly locking up piece of crap which is unreliable for even the minimal requirements of a mobile device, I'm not all that interested in finding out whether it's an error in the Android upgrade code, or a misbehaving app or several, or the firmware in the phone, or my carrier doing something weird. I just dump all of the above and switch all of them for a different summer/vendor. I already have both a job and hobbies (which involve digital technology and problem solving therein) and am uninterested in broadening my horizons with this fine opportunity, sad to say.

    15. Re:We Choose Framentation Over Consolidation. by scorp1us · · Score: 1

      Oh, I'm all for getting the job done. That's why I want consolidation. Since you run a consulting firm, how much of your code is actually customer specific? Like I said, schemas and logic changes, but I bet if you look across your customers, you'll find about 20% of your function is duplicated between unrelated projects. You don't care because its billable hours. Maybe you copy and paste? I don't meant hat in a bad way. But when you stop looking at billable hours, and focus just on getting the job done, I don't want to duplicate other people's work.

      Let me give you an example from this very weekend. I needed to get the distance between two GPS coordinates. Googling for it I found javascript code that I then copied and converted to C/C++. In an ideal world, I'd just get the library and be done. But there are different implementations. There's Haversine, and 2 other ways to calculate the distance, each with nuances of implementation. Now, in my ideal world, I wouldn't matter what language it was done in (this was .Net's promise) Instead me and everyone else does the same conversion from the JS to our language. You as a consultant should love the idea that the body of programmed knowledge is available to your developers regardless of choice of language.

      I want to make it clear that I am not arguing that we should only have C++. I was arguing that everything we've come up with since C++ (Java and .NET) have only served to fragment and divide. Now we have 3 major ecosystems all being maintained separately. Who wants to maintain 3 code bases that do the same thing? Billions of dollars poured into the maintenance of these toolkits a year. Hibernate and NHibernate. Dozens of SQL drivers on dozens of systems. The work expands exponentially. All to do the same thing. To keep their ecosystems on par with each other. Imagine if we just poured the same into one project, how much more we could accomplish. I don't suggest C++, though it has a fantastic track record. Managed memory systems are all the rage. I've done Java, Python and C#. I don't want to pick one. I but I want all of them to use the same platform. I'm hinting that C++ is it, because Java has JNI, .Net has the C++/CLI and Python has C/C++ wrappers. Imagine if we promoted the common stuff to a common universally maintained C++ package.

      I also think we need side projects to experiment. NodeJS is very cool. And we need to explore our itches. But by t he time we start to develop these things into ecosystems, we should focus on consolidation so that everyone can benefit. Yes, it'll be an effort, but less effort than continually maintaining separate code bases.

      --
      Slashdot's rate-of-post filter: Preventing you from posting too many great ideas at once.
    16. Re:We Choose Framentation Over Consolidation. by Half-pint+HAL · · Score: 1

      These days, I see a lot of code that CANNOT be read without using an "IDE".

      ... and herein lies one of computing's biggest paradoxes. We are obsessed with plaintext as being the only suitable format for code because it is "human readable", yet almost every coder on a project of any scale uses an ID with autocompletion etc. The IDE would be much easier to use if it was freed from the constraints of plain text -- rather than linear code ordering, we could order instead by dependencies, and display on screen left-to-right ordered by call when viewing the logic. Away from plaintext, we could start using standard mathematical notation for mathematical problems (see also TFA). We could eliminate most typo bugs by simply not allowing an undefined keyword or label to be used. And we could implement spreadsheet/database-style table displays for the setting of nested arrays of data, rather than faffing around with bracket-matching and erroneous commas.

      We need computing to be more closely bound to the IDE.

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
  23. Never trust a programmer who doesn't like by OneAhead · · Score: 2

    Never trust a programmer who doesn't like programming (or calls it "anagonistic" and "masochistic").

    1. Re:Never trust a programmer who doesn't like by gzuckier · · Score: 1

      They program best who program least. AKA, don't reinvent the wheel, and adopt standard practice.

      --
      Star Trek transporters are just 3d printers.
  24. Re:80%? A lofty goal indeed. by Jmc23 · · Score: 1, Insightful

    Perhaps you didn't understand the answer. It's pretty much 100% from both.

    --
    Don't complain about syntax, grammar, or spelling. There is no.hell like input on android.
  25. Totally agree and... by Anonymous Coward · · Score: 0

    "What would it be like if the only prerequisite for getting a computer to do stuff was figuring out a rough solution to your problem?"

    Um... my experience programming has been that this is exactly what programming is all about. Getting someone's rough idea of a solution to the problem (if that much) and making something that will address it -- clients and users don't really know exactly what they want or exactly how to solve the problem. Nor should they. ...totally a sales pitch. Here's how I can magically eliminate the hard work part of the problem

  26. Re: Considering how Republicans... by Anonymous Coward · · Score: 0

    Also, Republicans raped my wife and killed my child (or was it raped my child and killed my wife?) They busted down my door without a warrant(!!), chewing on the flaming remnants of the US Constitution. Then one of them told me to stop having gay sex with my live-in lover. Fucking fascists.

  27. The guy in the control room by russotto · · Score: 2

    His name's Stroustrup. Bjarne Stroustrup.

    1. Re:The guy in the control room by gweihir · · Score: 1

      Ah, _that_ control room. Fortunately I decided to go somewhere else a long time ago.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    2. Re:The guy in the control room by Anonymous Coward · · Score: 0

      I call BS.

  28. Sounds like he needs to use a Mac by BitZtream · · Score: 1

    Seriously, stop whining about OMG PROGRAMMING ARCHAIC.

    So is eating and language in general, but you still do it the same way humans have been doing it for 150k years.

    The problem is you, not programming.

    --
    Persistent Volume manager for Kubernetes - https://github.com/dwimsey/openshift-pvmanager
    1. Re:Sounds like he needs to use a Mac by Anonymous Coward · · Score: 0

      C and C++ is dying and their is nothing you can do about and I pity you

    2. Re:Sounds like he needs to use a Mac by boolithium · · Score: 2

      That is such crap. Name me any platform without C code at its core. Just because C is relegated to a role of providing a system in which people can run their shitty code, doesn't mean it is obsolete. If you don't know C, then you don't actually know how your computer works. If you don't know how your computer works, then you will write shitty code in any language you choose.

    3. Re:Sounds like he needs to use a Mac by Anonymous Coward · · Score: 0
      If you don't know VHDL, you don't actually know how your chips work. If you don't know about high-speed signal propagation, you don't actually know how the chips talk to each other. If you don't know how to route a PCB, you don't actually know how the chips are connected to each other. If you don't know about 1080 glass weave and pre-preg, you don't actually know how the PCBs are made.

      Funny how what *you* know defines how things *acutally* work, eh?

    4. Re:Sounds like he needs to use a Mac by gweihir · · Score: 1

      Have a look here: http://www.tiobe.com/index.php...

      Hint: The blue line at the top or close to it that shows no decline is C. But that may be too complicated for you to understand.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  29. After Decades of Wondering What's Wrong by Greyfox · · Score: 4, Insightful
    After decades of wondering what's wrong with programming, did you ever stop to think that perhaps the problem... is you? If you don't like programming, why do you do it? I'm a programmer too, and I love it. I love making a thing and turning it on and watching it work as I designed it to. While other programmers wring their hands and wish they had a solution to a problem, I'll just fucking write the solution. I don't understand why they don't. They know the machine can perform the task they need and they know how to make the machine do things, but it never seems to occur to them to put those two things together. And I never, not even ONCE, asked why a playing card representation can't just look like a playing card. This despite having written a couple of playing card libraries.

    This guy seems to want an objects actions to be more apparent just from looking at the object, but he chose two rather bad examples. His math formula is as likely to look like gobbledygook to a non-math person as the program is. And the playing card has a fundamental set of rules associated with it that you still have to learn. You look at an ace of spades and you know that's an ace of spades, you know how it ranks in a poker hand, that it can normally be high or low (11 or 1) in blackjack or in a poker hand. But none of these things are obvious by looking at the card. If a person who'd never played cards before looked at it, he wouldn't know anything about it, either.

    --

    I'm trying to teach myself to set people on fire with my mind... Is it hot in here?

    1. Re:After Decades of Wondering What's Wrong by phantomfive · · Score: 1
      Lots of goodness in your post, but this is especially good:

      And I never, not even ONCE, asked why a playing card representation can't just look like a playing card.

      --
      "First they came for the slanderers and i said nothing."
    2. Re:After Decades of Wondering What's Wrong by Half-pint+HAL · · Score: 1

      he chose two rather bad examples. His math formula is as likely to look like gobbledygook to a non-math person as the program is.

      Ah, but the thing is that the back-end that allows the formula to be shown in a mathematical notation is an abstracting backend. In current programming, the formula has a machine representation that maps to a single visual representation. Once we start storing abstract forms, we can let the IDE present it according to the user's wishes and knowledge.

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
  30. Re:Considering how Republicans... by R3d+M3rcury · · Score: 1
  31. Re:Considering how Republicans... by Anonymous Coward · · Score: 0

    Massachusetts liberals are not Liberals/Democrats, and for some reason they continue to vote for Democrats. They are Liberal Republicans to be simple!

  32. Re:80%? A lofty goal indeed. by Anonymous Coward · · Score: 0

    *Woooosh!*

    Stop underestimating people. Just because they don't think like you, doesn't mean they're stupid. Often, they can have a point that you just missed by thinking "problematically".

    How much should you listen and speak to people?

  33. What about the details? by Marc_Hawke · · Score: 1

    I watched his Aurora demo, and much like the "Wolfram Language" that was brought up the other day, it didn't seem to be working at the same level as I do.

    In the Aurora demo he made a To-Do list with his fake little HTML transform. That was fine, his list worked. But he didn't show changing the what the check-mark looked like. He didn't show us out to make it green. He didn't show us how to make the page behind it a different color, or the font-size marginally larger.

    Sure, the concept of a To-Do list can be done in a few words of a high-level language...but that a program does not make. There is an infinitesimal number of other decisions/other command that must be defined and described. In the end, his cute little program would have to be just as long and complex as any JS or PHP script that did the same thing.

    Perhaps he's just selling the 'Live Data' or the point-and-click editor, but as a programmer, (and him being a programmer) I find it disingenuous for him to present that as a replacement for the kind of detail and control that's necessary to actually accomplish the requirements of a customer.

    --
    --Welcome to the Realm of the Hawke--
    1. Re:What about the details? by Anonymous Coward · · Score: 0

      Sure, the concept of a To-Do list can be done in a few words of a high-level language...but that a program does not make. There is an infinitesimal number of other decisions/other command that must be defined and described. In the end, his cute little program would have to be just as long and complex as any JS or PHP script that did the same thing.

      Good point. However: "infinitesimal"--I don't think that word means what you think it means.

    2. Re:What about the details? by Marc_Hawke · · Score: 1

      Yeah, my bad. I knew that when I typed it as well. "This should probably just be infinite..." but I didn't change it.

      --
      --Welcome to the Realm of the Hawke--
  34. Re:80%? A lofty goal indeed. by Marc_Hawke · · Score: 1

    I think there are other inputs as well, so "both" don't add up to 100%.

    --
    --Welcome to the Realm of the Hawke--
  35. Command design pattern by tepples · · Score: 1

    One old-school technique that has inappropriately fallen out of favor is the "comreg" (communication region). In modern terms: take all the parameters that all the layers need (which are mostly redundant), and toss them together in a struct and pass the struct "from hand to hand", fixing a the right bit in each layer.

    I believe that's called the "command" design pattern, which encapsulates a request as an object.

    1. Re:Command design pattern by lgw · · Score: 1

      This might be an extension of that. That's just a way to encapsulate a remote/delayed function call - think using one object down and back up the entire stack (which may be across several machines in a distributed environment). Though it would be better to say the pattern is a simplified version of this much older idea. :)

      --
      Socialism: a lie told by totalitarians and believed by fools.
    2. Re: Command design pattern by Anonymous Coward · · Score: 1

      The command pattern is as you describe it: essentially a call to some method or function, which is stored and executed later, one or more times. I don't believe this is what the OP is describing. The OP is describing passing shared data between multiple functions in a serial way, with each function interested in different items in the shared data. The problem with this is that this shared structure is shared. Specifically, all functions know the full contents of the structure implicitly, whether they make use of it or not. The alternative is to use e.g. multiple inheritance, so that each function only knows about its part. This leads to issues of a complex inheritance hierarchy, overlapping attributes, etc. There is then the suggestion that a dynamic programming environment can be used to overcome this limitation. True, if what is being suggested is that the data structure is dynamically (i.e. at run-time) changed so that it contains the data that is needed. This will work. In a non-dynamic environment, something like a key-value store can achieve the same effect. Of course, the performance of this will be worse than the performance of the single-struct approach, and dynamic approaches lead to run-time errors which static compile-time approaches do not have.

      In short, its horses-for-courses, and no absolutely right answer.

  36. Prelude to another CASE tool? by Anonymous Coward · · Score: 0

    I assume the OP must be thinking of DevOps as "just programming"?

  37. Select vs Choose vs Create by holophrastic · · Score: 1

    If you select a programming language in which to program, then you run into all of the problems in the article.

    If you choose a programming language in which to program, based on the needs of your scenario, then you run into very few of the problems discussed in the article.

    If you create a programming language through which to solve the needs of your scenario, then the article simply makes no sense at all any more.

    The article goes into multiple iterations of "in the real world, we describe like ; so why do we do it differently in programming?". The most memorable to me is when the author compares a picture of a playing card, the ace of spades, and compares it to "cards[0][12]", asking: "why can't we use the picture in programming?"

    But that's just retarded. First off, we don't use the picture of the ace of spades when we speak. We use the words "ace of spades". And since that's incredibly ambiguous outside of a card game, we actually use "the card: the ace of spades", which is absolutely no different from cards[spades][ace], and we often enumerate cards in tutorials for bridge and for blackjack, so cards[spades][12] would be common. And in bridge, the suits have a sequence too, so cards[3][12] would be fine in context.

    I think people forget that text came last -- after objects, after pictures, after speech, and way after gestures. Text is better. It's faster to transfer, faster to communicate, faster to scan, seek, read, and understand. It's more specific too.

    But in everything in the real world, we manufacture a language specific to the task at hand. The word "grade" is an excellent example. In construction, geography, education, and manufacturing, the same word, with the same meaning, has entirely different semantics, usage, and even syntax. Welcome to jargon -- context/community/application-specific language.

    What this article describes is the all-too-common practice is the programming industry of using construction tools (hammers, screwdrivers, nails, i-beams) as tools to teach children how to paint. Sure you can do it. And sure you can complain about how crummy a jack-hammer is at painting a canvas, but that's not the hammer's fault, nor is it the canvas's fault. It's your fault.

    1. Re:Select vs Choose vs Create by gweihir · · Score: 2

      You are right of course. The problem is that most "programmers" are actually one-trick ponies and do not know more than one language, and hence cannot chose a language at all. Hence your first option applies to most "programmers". The others have been wondering what this issue is actually about for decades.

      I mean, I can take a new language that has some merit, do some real task in it to get to know it better and get a real understanding what it is suitable for and what it is not suitable for. For most "programmers", this would involve "learning" the language first. For any competent programmer that requires a few days of looking at the reference often while writing the code, and maybe more redesign than usual. But it is not a big deal. (Of course some really convoluted and borderline unusable languages like Java or some 4GL stuff require more effort, often because the language is so broken that you need to master some "tools" just to be able to handle it.)

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    2. Re:Select vs Choose vs Create by pigiron · · Score: 1

      "If you create a programming language through which to solve the needs of your scenario, then the article simply makes no sense at all any more."

      Which you can do most easily in LISP.

    3. Re:Select vs Choose vs Create by holophrastic · · Score: 1

      Oh man, don't get me started on lisp. Lisp needs one thing, and possibly one thing only -- to not depend solely on parens. Let me use braces, brackets, and parens and I'll be happy. Of all of the languages that I've ever learned, Lisp was probably the least visually legible.

      It was also the fastest to learn and to use. Go figure.

    4. Re:Select vs Choose vs Create by angel'o'sphere · · Score: 1

      So Java is more difficult than C, C++ or for that matter shell or perl or scheme?
      Wow ....

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    5. Re:Select vs Choose vs Create by gweihir · · Score: 1

      At project-scale, much more so, yes. Without Eclipse and additional tools, you can often not even read the code halfway efficiently. The problem is not the core-language itself, it is how it puts up roadblocks for writing clean, clear and simple code.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    6. Re:Select vs Choose vs Create by angel'o'sphere · · Score: 1

      I don't see a difference to C++ in that regard, for me a simple text editor is enough ... except for quick navigation (ctrl click) no one should need an IDE.

      I is easy to write clean, clear and simple code in Java, that is why it is so popular.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    7. Re:Select vs Choose vs Create by gweihir · · Score: 1

      You have not seen what is being done in the real world.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    8. Re:Select vs Choose vs Create by angel'o'sphere · · Score: 1

      Lol, I work unfortunately in the real world as consultant in the software industry.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    9. Re:Select vs Choose vs Create by gweihir · · Score: 1

      Well, maybe there are industries where this is done better, but in the finance industry I have had the displeasure to look at several Java projects and they were completely unreadable without tools. In addition, code quality was very low and indicated incompetent coders. I have seen the same effect when Students program Java: Complex, bloated, syntactic noise, library-shopping, etc. I never saw that when students program C.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    10. Re:Select vs Choose vs Create by angel'o'sphere · · Score: 1

      Hm, why should there be a difference between C and Java?
      The languages are very similar. Only that Java likely has more libraries surrounding it.

      OTOH, I worked at a bank 3 years ago, they used 'Calypso' as a trading 'platform' (written in Java).

      I never saw a worse Application/framework.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    11. Re:Select vs Choose vs Create by gweihir · · Score: 1

      The difference is that incompetent programmers do not get C programs run at all.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    12. Re:Select vs Choose vs Create by angel'o'sphere · · Score: 1

      Haha, that might be true ;D

      I get your point, I'm right now in a project where an incompetent programmer has written some bullshit, like 6 classes and some 1k - 2k lines of code. One single bug prevents it from doing everything it should. However the whole thing is such a mess of bullshit that we replace it now with like 3 classes and max 200 lines of code.

      That original programmer basically "experimented" until the code was "running somehow".

      Guess what: he is the one who complains about merging problems, works more than 10h a day and writes big bills for the nonsense he produces in weeks (which I replace in pair programming in 4h)

      However this is less an issue with Java (or we have to say the same for C# and Python and Smalltalk I think) ... it is the lack of knowledge and skills and on top of that plain stupidity of modern developers.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    13. Re:Select vs Choose vs Create by gweihir · · Score: 1

      Good example. I have to admit I am unsure whether incompetent people flock to Java, or whether Java fails to filter out the incompetent. Or whether it is an accident of timing. You may be right that the problem is with "modern" developers and that Java just happened to get big at the same time. A fellow worker recently said to me that he thinks the problem is that almost none of these modern developers are passionate about coding, something I also have observed.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
  38. Re:80%? A lofty goal indeed. by Jmc23 · · Score: 0

    Read fail.

    --
    Don't complain about syntax, grammar, or spelling. There is no.hell like input on android.
  39. More OOP Whining by boolithium · · Score: 1

    Zealots of object oriented programming throw a fit, when they realize that no matter how much you force a metaphor, the computer doesn't give a shit. Translating any complex set of tasks into rudimentary instructions is inherently difficult. No magic language feature will change that fact.

  40. Shared Node.js? by tepples · · Score: 1

    NodeJS servers

    Let me know when Node.js runs on anything smaller than a VPS. It appears a lot of people can't afford anything more expensive than shared hosting.

    Android, the worst offender is a platform that can't even be used to develop native apps.

    You can with the NDK. Or does some obscure carrier restrict use of the NDK in apps that run on Android devices on its network?

    Not to mention that Android's constructs - Activities, Intents, etc are all Android specific.

    And a lot of Windows constructs are Windows-specific, and if not that, Windows/VMS-specific. (Windows NT is a ground-up rewrite of VMS.)

    They don't solve new problems

    An "Activity" is just an open window, and an "Intent" is a mechanism allowing applications to register handlers for things other than file opening and URL opening. The way some of them were implemented is intended to allow the system to run for longer periods on a smaller battery.

    1. Re:Shared Node.js? by scorp1us · · Score: 2

      VPSs are cheap. besides, it's an illogical computing unit since it is so abstracted.

      Native apps are a run around on android... that's what Qt is. Native.

      You still don't get it. Android reinvented the wheel yet again, in a context that is not re-usable outside of android.

      The fact that C++ can still be used on any platform, and effectively at that, proves that nothing has been added since C++.

      --
      Slashdot's rate-of-post filter: Preventing you from posting too many great ideas at once.
    2. Re:Shared Node.js? by tepples · · Score: 1

      C++ can still be used on any platform

      Not on Xbox 360 unless you're a sufficiently large company. Xbox Live Indie Games is C#-only, just as J2ME phones were Java-only.

    3. Re:Shared Node.js? by scorp1us · · Score: 1

      Anyone who tells you that is lying.
      C++ even works on Windows Phone. You can't really ban a language that compiles to CPU opcodes. Furthermore, do you think that every title that is released on PS4 and 360 is completely re-coded into .Net for the 360? No. It's the same as what people do for the phones. Common C++ code, wrapped in platform specifics.

      --
      Slashdot's rate-of-post filter: Preventing you from posting too many great ideas at once.
  41. Old old story. by Anonymous Coward · · Score: 0

    For those who believe there is a silver bullet in programming for I have a bridge to sell.

  42. are you kidding? by Anonymous Coward · · Score: 0

    Source code version control is critical. How else could you work on three separate bugs and two features without a way to keep it all straight?

    1. Re:are you kidding? by Anonymous Coward · · Score: 0

      Do them one at a time?

    2. Re:are you kidding? by Anonymous Coward · · Score: 0

      Hello there AC,

      Ever work in a real job at a real company?

      You know, the kind of place where they might have, I dunno, say 200 devs all working on the same codebase?

      I'm guessing that the answer is No.

    3. Re:are you kidding? by pigiron · · Score: 1

      Any company that has 200 devs working on the same codebase is in trouble. They just don't know it yet.

    4. Re:are you kidding? by lgw · · Score: 1

      Well, 200 is high, but most successful software products in the world have dev teams of about 100. And with a good toolchain that's not a problem.

      --
      Socialism: a lie told by totalitarians and believed by fools.
    5. Re:are you kidding? by pigiron · · Score: 1

      I'll agree to 100 as long as that includes DBA's, sysadmins, code librarians, QA testers, and project managers in addition to the actual system architects and/or programmers.

    6. Re:are you kidding? by cwsumner · · Score: 1

      Well, 200 is high, but most successful software products in the world have dev teams of about 100. And with a good toolchain that's not a problem.

      And then there are development teams running highly complex software over many years, with about three people. And some use of customer personel to assist with testing and troubleshooting. Successfully.

      But they are not using Microsoft development products or any flavor of "C".

  43. Just wrong that['s all. by Anonymous Coward · · Score: 0

    THe blogger is just wrong There's a reason programming is the way it is, that is exists at the low level of abstraction that it does. Every 54 years (or perhaps every day) someone wishes out loud that programming was closer to natural language and common sense. This is a disguised (slightly) form of whats kown as the "frame" problem in AI. Basically,, everyday languageis (and concepts for that matter) extremely ambiguous but this factis disguised from us because we , as humans, have the proper frame" to ut speech act's meanings into, andtherefore render them relatively unambiguous(but look at howlaws are written to seeit already breaking down under the stress of having to increase precision) .

    Yeah it would be greqat if we didn['t have to spell out absolutely everything tothe computer. But we do. Manuy people findprogramming less exactingthanmathematics (technically, it's not) and for this they should be thankful. Also, we are not codingin assembly (most ofus) and there's another reason to give thanks. The next logical leapto naturallaguage isnot aleap, its a chasm. Oh, and if we ever do cross that chasm,we won't be rogramminganyways, our computers, which willnow understand us, will also be doing the programmingfor us; by definition.

    1. Re:Just wrong that['s all. by hsthompson69 · · Score: 1

      I'm assuming that the errors in the parent post here are actually trying to be clever and prove the point that human intelligence can almost instantaneously gloss over a bunch of errors that a computer would barf on in a second. If so, bravo, that was an interesting way to sell a point.

      If not, you need to double check your posts before you hit the "submit" button :)

    2. Re:Just wrong that['s all. by gweihir · · Score: 1

      We actually have "natural language" programming: It is called bureaucracy. Look how well that turns out to work.

      --
      Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
    3. Re:Just wrong that['s all. by Anonymous Coward · · Score: 0

      Can we take up a collection and buy this guy a space bar?

    4. Re:Just wrong that['s all. by Anonymous Coward · · Score: 0

      let mre apply some teutonic logic here: what did survive the centuries ? Nice graphic pictures in these french caves or text written using characters ? Yeah, we have some pictures and can't interpret them.

      But we have lots of clues what this Abraham guy and his jealous god meant to say. Three books written, all still comprehensible in their full insanity and brutality.

      TEXT HAS WON. PICTURES LOST. end of story. see also vhdl.

  44. Looking at the wrong part of the problem by Animats · · Score: 2

    The original author is looking at the part of the problem that gets the most attention, but not at the part that causes the most problems. He's looking at programming languages and their expressive problems. Those are real, but they're not why large programs break. Large programs usually break for non-local reasons. Typically, Part A was connected to Part B in some way such that an assumption made by part B was not satisfied by part A.

    C is particularly bad in this regard. C programs revolve round three issues: "how big is it", "who owns it", and "who locks it". The language helps with none of these issues, which is why we've been having buffer overflows and low-level security holes for three decades now. Most newer languages (not including C++) address the first two, although few address the third well.

    There have been attempts to get hold of this problem formally. "Design by contract" tries to do this. This allows talking about things like "Before calling F, you must call G to do setup.", or "parameter A must be greater than parameter B". Design by contract is a good idea but weighed down by so much formalism that few programmers use it. It's about blame - if a library you call fails, but the caller satisfied the contract in the call, it's the library's fault. Vendors hate that being made so explicit.

    it's a concept from aerospace - if A won't connect properly to B, the one which doesn't match the spec is wrong. If you can't decide who's wrong, the spec is wrong. This is why you can take a Pratt and Whitney engine off an airliner, put a Rolls Royce engine on, and have it work. Many aircraft components are interchangeable like that. It takes a lot of paperwork, inspections, and design reviews to make that work.

    The price we pay for not having this is a ritual-taboo approach to libraries. We have examples now, not reference manuals. If you do something that isn't in an example, and it doesn't work, it's your fault. This is the cause of much trouble with programming in the large.

    Database implementers get this, but almost nobody else in commercial programming does. (Not even the OS people, which is annoying.)

    1. Re:Looking at the wrong part of the problem by dkf · · Score: 1

      Database implementers get this

      No, they don't. There are far too many variations in API and SQL dialects (let alone actual functionality) for two DBs to be considered to be plug-compatible. Instead you have whole layers of goop (err, ORM frameworks) on top to hide the differences. Those layers are, of course, usually incompatible with each other...

      --
      "Little does he know, but there is no 'I' in 'Idiot'!"
    2. Re:Looking at the wrong part of the problem by gzuckier · · Score: 1

      In addition, large programs often fail because the focus becomes "develop a program to do this and train the users to use it" rather than "find out what users are doing and see what they think would be helpful"

      --
      Star Trek transporters are just 3d printers.
    3. Re:Looking at the wrong part of the problem by Half-pint+HAL · · Score: 1

      The original author is looking at the part of the problem that gets the most attention, but not at the part that causes the most problems. He's looking at programming languages and their expressive problems. Those are real, but they're not why large programs break. Large programs usually break for non-local reasons. Typically, Part A was connected to Part B in some way such that an assumption made by part B was not satisfied by part A.

      I believe the author ascribes most non-local problems to "incidental complexity". Incidental complexity introduces bugs, which in turn make code less predictable, which causes non-local problems. Furthermore, Grainger focuses on carrying out non-destructive data transforms, à la functional programming, which alone should wipe out a large percentage of non-local problems, as you shouldn't find yourself having to chase down any erroneous value-change bugs.

      In fact, Grainger's whole point is about the attitude that you express being typical -- we focus on the fixing the problems created by the imperative programming paradigm within the imperative programming paradigm, rather than simply replacing the imperative paradigm with something more appropriate.

      This essay is basically what all our CS lecturers have been saying for the last 40 years....

      --
      Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
  45. Toward Naive Programming by state*less · · Score: 1

    Chris claims that programming can be simplified so that the masses can program. Well he'd like to claim that, but at the moment he is only imagining. Let's cite some examples of things everyone will not be able to do with his new tool. Everyone will not be able to program a search engine such as Google's. Everyone will not be able to design a supervised learning task to find the needle in a haystack of data. Everyone will not be able to express the logic of their ideas, because they are simply ineffable to themselves
     
    Even when you are adept in some field, when you hear of what the experts are doing in another field that you know little to nothing of, it seems like magic. Those who can write search engines, create statistical experiments and express the logic of their ideas will always be seen as magicians to non-experts. It doesn't mean that the tools they use are broken, though they might be, it means that there exists variation and degrees of expertise. Better tools is not going to change that, just shift the "problem" around.

  46. Re:80%? A lofty goal indeed. by hsthompson69 · · Score: 1

    No, they were quite clear that it wasn't 50% from one, and 50% from the other, or any other combination that would add up to 100% - the answer was "100% from both", as in "100% from nurture, *and* 100% from nature".

    Their meta-claim was that you're not allowed to ask the question "what percent from this, and what percent from that", even though their general underlying assumption was that gender differences were primarily socially driven, rather than biologically driven. The could discern between the two sources, and even demand that the consideration of biological brain differences between genders was off-limits, but could not perform the simple task of adding parts to make a whole.

    Put someone into programming when they refuse to acknowledge mathematical axioms because of their ideology, and they'll fail every time.

  47. Re:80%? A lofty goal indeed. by hsthompson69 · · Score: 1

    If they can't think "50+50=100", but rather, are so clever as to fool themselves into thinking "100+100=100", fine, they're not stupid, they're simply wrong and unable to program properly.

    As mentioned, cognitive dissonance is fine in the human brain, but it's not conducive to problem solving in the real world.

  48. It's the people, not the tools by petes_PoV · · Score: 1
    Programmers (for want of a better term) start off writing Hello World and progress on from there. It doesn't matter much what IDE or language they write it in, the path they (we?) follow is still the same.

    Once they have demonstrated the basic skill of:
    10 Print "Hello"
    20 GOTO 10
    They are considered part of the "community" - programmers. They aren't. As an example, take all the interest in the Raspberry Pi. An SBC intended to "teach kids how to program". In reality, most "kids" manage to get an LED to flash. According to the agenda, they are now programmers - the same same sorts of people who can write encryption algorithms, update software on Mars rovers and implement share-trading systems. It's like saying that if you can nail two pieces of wood together, you're a carpenter: here's your table saw (mind your fingers!) now go and build me a house.

    The Linux community is little or no help either. With it's inaccurate and lazy view "with open source anyone can change it". What rubbish - nearly as stupid as "anyone can become president". It completely misses the point that 99% of the population wouldn't know where to start and most programmers are at the nailing 2 pieces of wood stage - despite their job titles and salaries and have neither the level of technical skill or experience, nor the correct, professional, approach to the subject.

    Until we realise that the hard part of the job is design and the coding is the implementation, we'll continue to get new applications of the form:

    Your application has just deleted all your data OK?

    --
    politicians are like babies' nappies: they should both be changed regularly and for the same reasons
  49. My two cents by WinstonWolfIT · · Score: 1

    I started when productivity was measured in CLOCs, before C++ went ANSI. Today vs. then is so night and day, I wonder if the OP has any real sense of the big picture.

    - Writing a line of code is done as a last resort when all attempts to avoid it have failed. (This comes from starting as a business, not software, consultant).
    - Legacy code that has been debugged is almost always better than throwing out all of that QA. Wrap it and refactor it only as a response to bug report / enhancement + TDD.
    - TDD, and the act of making software testable is far more valuable than the tests themselves. In my experience, regressions are few in maintainable testable code because it's maintainable and testable, not because of the tests themselves.
    - Declarative almost always is better than imperative. See point #1.

    1. Re:My two cents by pigiron · · Score: 1

      "- Writing a line of code is done as a last resort when all attempts to avoid it have failed."

      Yes, God forbid that we automate some clerk's job out of existence.

    2. Re:My two cents by WinstonWolfIT · · Score: 1

      The true cost of software is enormous, and a majority of projects never return their investment. It logically follows to see point #1.

    3. Re:My two cents by Anonymous Coward · · Score: 0

      the true cost of fire is enormous and sane chimps will never touch a firey stick ! There are enough bananas in our forest.

  50. Masochistic? No, just creative. by YoungManKlaus · · Score: 1

    Or do you think an inventor or composer has someone to hold xir hand while xe works on something new and awesome?

  51. Re:Considering how Republicans... by Anonymous Coward · · Score: 1

    >My experience is that programmers are over 90+% *libertarian*.

    Only the young or dumb ones. The smarter ones realize that not everyone is like us, we're all in this together, and western civilization has a lot of value.

  52. Re:Considering how Republicans... by Anonymous Coward · · Score: 0

    90% ? ... A bold man he who pulls such a huge figure out of his ass

      Also could you define libertarian ? no ? k thx bye.

  53. Programming is hard because it's hard??? by Anonymous Coward · · Score: 0

    Programming is hard because computers are dumb.
        They have no common sense, but they are our only means to solve our most complex problems.

    Our brains can only handle a limited number of details at once, so we use abstraction and assume the details we aren't thinking about will work out.
        A symphony conductor does the same, but the players are smart enough to make it so.
        Not so with the tool sets we know how to build today.

    Can I glean anything from his writing?
          Let me try the observability/Excell thing.
          A programmer should be able to see what the program is supposed to be doing from the clear model in his head.
                (Given that the model is never perfect because of the complexity/abstraction thing above.)
              A warped way to describe debugging it to look at what is observable and try to figure out how the model could do that.
                  (If you can't figure it out, spot check with the debugger and add debugging code to the thing you are working on to test theories or get more observability.)
              This is not a great situation and maybe Excell can teach us something to help this.

          Excell is both fully visual and data driven.
              Perhaps a tool set with data driven objects where the state of each object is visual.
                Sadly, one would still have to learn to recognize the object state from it's visual signature.
                    (Just like having to lean what the visual cue for the Ace of Spades means.)

          Well that didn't work. Perhaps someone smarter can glean something new here?

    1. Re:Programming is hard because it's hard??? by pigiron · · Score: 1

      If you are going to use indentation you shouldn't need all those parentheses.

  54. main culprit is copy and paste by IQzeroIThero · · Score: 1

    Programmer efficient increase when they can reuse some code from other programs to their new program but unfortunately sometimes they also copy and paste bad code from one program to another.

    --
    Out of my mind. Back in 5 mins.
  55. What's wrong? Fragmentation! by Anonymous Coward · · Score: 1

    Programming over the past decade has become a tar pit of corporate-sponsored development silos (Apple, MS, etc) usurping industry standards. Used to be, you learned C and C++, maybe Perl or Python, and SQL. Now all the different vendors use their own frameworks. Languages have exploded. Everything is the same, but different. This extreme fragmentation is one reason you have a "shortage" of people, as long as employers want people with experience in exact, vendor-specific technologies. I've used DB2, Oracle, MySQL, Postgres, etc but couldn't get a job using MS SQL Server. No matter what you learn, there's always some new framework. Struts? No, Spring MVC. No, ASP.NET MVC. No, whatever the flavor of the week is. Hibernate? No, Core Data, JPA, EF, whatever. The amount of churn means I can't keep up with learning whatever the flavor of the week is in APIs and frameworks. Too much churn and fragmentation! We need to get back to a small subset of industry standards.

    I think the overall complexity level of tools is getting to the point of utter, total absurdity. Look at the J2EE toolset. You have JSP, JSTL, EL, and HTML, CSS, JavaScript, and jQuery on the front end. Spring MVC, Struts, or something in the middle. Hibernate, JPA, or something connecting to a database. Each new version of this stuff seems to break what used to work. Even tutorial books are almost instantly out of date this stuff breaks so fast. Then you have a constant churn of build and test tools. Ant works great, but people are switching to Maven for reasons I can't understand. JUnit, Jenkins, etc. No one can keep up with all this. Used to be possible to learn Make and a few other tools, and create a build process for almost any project.

    Until the fragmentation and churn slows down, the computer industry is going to be mired in stagnation like it is at the present. We've had a wasted decade of almost no new innovations.

    1. Re:What's wrong? Fragmentation! by Anonymous Coward · · Score: 0

      Just quit the world of Java mediocrity.

  56. Re:80%? A lofty goal indeed. by Jmc23 · · Score: 0
    I didn't say 50% from each, I said, exactly like they did, 100% from both.

    Again, you seem to fail to understand the answer. Here's a hint, math isn't reality.

    --
    Don't complain about syntax, grammar, or spelling. There is no.hell like input on android.
  57. Re:80%? A lofty goal indeed. by Marc_Hawke · · Score: 1

    Instead of hinting, why don't you tell us what "100% from both" actually means? You've said twice that it's a perfectly fine thing to say but you haven't attempted to explain or define it.

    Also, here's a hint, when you say 100%, it's math. (explanation: Say something like 'completely' or some other 'non-math' term if you wish to express something that can't be expressed by math.)

    --
    --Welcome to the Realm of the Hawke--
  58. Re:Considering how Republicans... by pigiron · · Score: 0

    Since when did liberals do anything else except tear down Western Civilization?

  59. Programming is hard, is because computers are slow by Frans+Faase · · Score: 0

    One of the main reasons why programming is hard, is because computers are slow. This may sound very counter intuitive, but the fact that computers look like they are fast because they make use of many smart tricks, most of which we are no longer aware off. It is important to realize that computers all rely on the memory piramid, where in the top of the memory there is a little very fast memory and at the bottom there is a vast amouth of slow memory (often distributed in a system called The Internet). The range in speed and size is more than 9 powers of 10. A lot of effort is spend in copy data between the kinds of memory inside this memory piramid. And to be able to implement systems that appear fast, we have to deal with all the small tricks that are used in the system to make it look fast. Knuth has said that very often premature optimization is the root of all problems. The real fact is that almost every act of programming (in an imperative language) is an act of optimization, namely finding an implementation of a function with given constraints. Take for example the simple fact that whenever we deal with an integer in a program, it is an integer within a limited range. But an integer could be arbitrary large. So as soon as you declare an integer in your program, you are performing an act of optimization, because you decide that in your case the range of values within your function are limited to a certain power of 2. (Except if your language has an implementation for BigInt, but even these always have a limit.)

  60. The real world does not separate nicely by Tablizer · · Score: 1

    I notice that concerns tend to overlap in practice, especially in domain-centric programming (as opposed to base IT tools). The real world doesn't separate itself nicely into distinct chunks, at least not in a predictable way. Instead, concerns interweave in intricate ways.

    We are stuck with 1D code (linear text) in a multi-D world (multi-factors), and any separation is merely a guess about future patterns, which often turn out to be flat wrong.

  61. 4th Gen Language by Anonymous Coward · · Score: 0

    Congrats, someone else discovered 4th generation languages and the benefits they bring. Just wait another few weeks until discovering they're not universally applicable to problems. It's a real let down.

  62. Look, we've gone over this time and time again... by pfg23 · · Score: 2

    It's called software engineering. Most software is hacked, code-and-fix, cobbled together, unmaintainable dreck. Why? Because managers, clients, and customers blanch when presented with honest, realistic estimates based on metrics. So they'll often search out low-cost developers, eager (perhaps desperate) for work and who will agree to anything. They're probably minimally trained so they're not going to apply good practices (step-wise refinement, descriptive variable naming, OOA/D or SA/SD). They'll furiously churn out spaghetti-and-sausage-ware (not as tasty) that will miss the deadline anyway, barely work, but it'll be something. They invariably burn out and end up leaving and the next developer unlucky enough to be tasked with maintaining and extending the code will be blamed for taking too long for making changes because he or she will have to read, deconstruct, reverse engineer, and comprehend 100% more of the code than they would have had to otherwise.

    As Fred Brooks said, there's no silver bullet. But all is not lost. Static analysis tools, code complexity tools can sometimes--I repeat sometimes--help target the 20% of the code that actually needs 80% of the maintenance effort. However, mention McCabe to most programmers and you'll most likely get a blank stare back.

  63. Explain your program to an AI by mattr · · Score: 1

    While Chris aims to collapse time and technology layers to make an immediate, reactive environment, another way forward, or perhaps a way of leveraging it, is to make the environment more intelligent.

    Much programming involves implementation of commonly understood patterns and thus can be automated, if the space is well understood.

    I think a community project toward building an engine (call it an AI agent if you wish) that conceptually understands programming and can actually do it would be a good thing (... except because, SkyNet).

    Such a system could have a unified understanding of a large project which would improve the deliverability of systems like obamacare or applications based on an open source stack, while empowering common users by leveraging the power of their own computers to help them solve problems and build their own tools, for example through chatting or drawing figures.

    In the past I've imagined this as a way of utilizing more of the power of the desktop computer, to actually solve the user's problems and do common tasks that can be easily explained. A hot key that pops up a small window to chat with a bot would be more useful than Apple's Automator. As I have recently been spelunking in a system I have been asked to localize for an Asian language / net environment (based on drupal so tons of modules and deep undocumented complexity) I can appreciate anybody who would like to simplify herculean tasks.

    It might be able to make sense of something as broad and chaotic as the obamacare system or the open source stack. I imagine it would be something a bit more intelligent than Frotz and could even help a child direct his own inquiry into the world around him or her. Computers have a lot of power and the next stage probably is finding out how to unlock their power without requiring years of study and hair-pulling. At least I would like to see systems gain introspection and share standard definitions of objects and functionality to reduce the replication of effort that is probably 90% of what developers do today.

  64. Re:80%? A lofty goal indeed. by Jmc23 · · Score: 0
    Why hint? I like to cultivate the habit of thinking in others.

    Unfortunately, most people prefer to whine and complain that you didn't spoon feed them thoughts.

    --
    Don't complain about syntax, grammar, or spelling. There is no.hell like input on android.
  65. BTW, by pfg23 · · Score: 2

    ...they'll either burn out, or even worse get promoted and you'll have to report to them. Yikes!

  66. Re: Considering how Republicans... by Anonymous Coward · · Score: 0

    Since about 1783 til about 1968.

  67. Re:80%? A lofty goal indeed. by hsthompson69 · · Score: 1

    And you, jmc23, should never be a programmer if you believe math isn't reality :)

    You are welcome to your own reality within the confines of your head, but when you code x=100, and y=100, I promise you that x+y==100 will register as false :)

  68. Re:80%? A lofty goal indeed. by hsthompson69 · · Score: 1

    Ah, the petty intellectual elitism that believes that ambiguity is wisdom :)

    You're not spoon feeding thoughts, dear boy, you're blowing irrational smoke and pretending it's insightful :)

  69. Re:80%? A lofty goal indeed. by Jmc23 · · Score: 0
    um, programming is based on math, not reality.

    YOU should never be a programmer if you can't understand having multiple views on a single dataset.

    --
    Don't complain about syntax, grammar, or spelling. There is no.hell like input on android.
  70. Re:80%? A lofty goal indeed. by Jmc23 · · Score: 0

    Please talk to your mirror elsewhere.

    --
    Don't complain about syntax, grammar, or spelling. There is no.hell like input on android.
  71. Re:80%? A lofty goal indeed. by hsthompson69 · · Score: 1

    Just trying to cultivate a habit of thinking in you :)

    So, are you really going to defend the statement that gender differences are 100% from nurture, *and* 100% from nature"? Obviously you misunderstood the initial sentence, and found some semantic ambiguity there, but is this clarification clearer for you?

    Or is the clarification and ambiguity both 100%? :)

  72. Re:80%? A lofty goal indeed. by hsthompson69 · · Score: 1

    My point exactly. Math is the reality of programming, period, full stop. Alternate, cognitively dissonant "realities" of liberal arts majors who can't grok fractions don't count there.

    You shouldn't be a programmer if you don't understand that the reality of programming is math, even as you say "programming is based on math" :)

    Keep digging all you like, this just gets more amusing as you go on :)

  73. Re:80%? A lofty goal indeed. by Jmc23 · · Score: 0
    You are like a cat with a box.

    At least your inability to comprehend things, and then marvel at your 'genius' for pointing out how dumb others are because of your misinterpretations, amuses you.

    --
    Don't complain about syntax, grammar, or spelling. There is no.hell like input on android.
  74. it goes unrecognized by gzuckier · · Score: 1

    Sufficiently advanced programming is indistinguishable from the application.
    I give you as example, the most successful class of object oriented programming languages: spreadsheets.

    --
    Star Trek transporters are just 3d printers.
    1. Re:it goes unrecognized by MooseMiester · · Score: 1

      A spreadsheet is "object oriented"? Good grief. Excel VBA is less capable than the first language I learned - PDP-11 BASIC on RSTS/E....

      --
      Murphy was an optimist
    2. Re:it goes unrecognized by gzuckier · · Score: 1

      A spreadsheet is "object oriented"? Good grief. Excel VBA is less capable than the first language I learned - PDP-11 BASIC on RSTS/E....

      Not vba; the spreadsheet.
      Each cell is an object which you can do whatever you rent to and all the references to it update on real time. You can drag it around, even move it to a different spreadsheet. Try renaming a directory in Windows and see how far the object orientation goes.
      And at the end you've got a nice piece of metacode You can run whenever. Imagine the machine code a large spreadsheet generates. It's a program that runs, has inputs and outputs. How'd you like to write that in c++?

      --
      Star Trek transporters are just 3d printers.
    3. Re:it goes unrecognized by MooseMiester · · Score: 1

      I see your point... But I have a hard type accepting "Object Oriented" when all of the cells are of the same type, implement the same interface, and have to be queried to figure out what's in them. Where's the class hierarchy? Abstraction? Inheritance? Hence the similarity to VBA, or PHP, where there is but one variable type (Object, Variant, what have you) and the threaded interpreter spends most of its time querying the variable descriptor to figure out exactly what kind of data it holds, rather then actually doing work.

      Excel is a brilliant piece of work, one of the best MS products ever (aside from their IDE's). As a side note I've wondered how Excel can be so great and Outlook can suck so badly, but that's another topic for another day.

      The original spreadsheet, VisiCalc, didn't take all that long to write I suspect. Of course the tool at the time was assembler on a CPU with two registers (if I remember correctly) - Now that was a feat of skill!

      --
      Murphy was an optimist
  75. NOT by Anonymous Coward · · Score: 0

    Software engineering is indeed like mechanical engineering if you simply stop doing "fashionable" things and only do things which you can 100% understand and envision in your grey matter.

    Stop pursuing the latest fad, don't do things you have no clue about, don't let yourself be pressured by Social Engineers, reject impossible objectives, piss of muppet managers.

    THEN YOU CAN DO SOFTWARE ENGINEERING WORK.

    With sufficient time and money you can then build things which will be more reliable than ANY mechanical, analog-electrical or hydraulic system that has ever been built. Computers have extremely low failure rates if properly done. They are almost perfect. Ask the A320 flight control software which has not killed you for more details.

    1. Re:NOT by hsthompson69 · · Score: 1

      Computers have extremely low failure rates if properly done

      Actually, if you've ever done any actual electrical engineering at all, you'll understand that in fact, computer electronics don't have particularly low failure rates - they *do* have ingenious coping mechanisms though. Even something as basic as your average hard drive has all kinds of fancy pants stuff going on in the background to work around physical errors, to make it transparent to the user.

      If, as you suggest, all we did was implement "Hello, World!" over and over again, yes, it would be like mechanical engineering, something that could be done in an assembly line factory. Add the complexity required by ambiguous business, and the real-world limitations of time and money, and you're in a whole different world again.

    2. Re:NOT by cwsumner · · Score: 1

      ... If, as you suggest, all we did was implement "Hello, World!" over and over again, yes, it would be like mechanical engineering, something that could be done in an assembly line factory. Add the complexity required by ambiguous business, and the real-world limitations of time and money, and you're in a whole different world again.

      Mechanical engineering is not like that either, of course.
      Software -is- like an assembly line factory: it's the compiler and linker or what ever you do to "make" it. The programming, on the other hand is the generation of the detail specification and design, for use by the Make. Manufacturing of software is already about as automated as it could be, it's just that programming is not part of "manufacturing".
      No one would want to walk across a bridge only designed by an automated system. See "Tacoma Narrows Bridge".

    3. Re:NOT by Anonymous Coward · · Score: 0

      Tacoma Narrows Bridge collapsed in 1940. How was it designed by an automated system?

  76. IDE guy is a brave IDIOT by Anonymous Coward · · Score: 0

    Proper software engineering can be done in FORTRAN using notepad++. Plus Word or LaTeX to properly capture requirements, nail down design decisions, document semantics of data structures/files and so on.

    We don't need more Rapid Shite Generators. We need proper time, proper money, proper education and LESS AMATEURS in the data processing business.

    Apparently too many people are in a precarious situation, so they perceive data processing/computer science as some kind of holy grail. Can't they stick with their Social Worker thing ???

    German software engineer with a CS degree

  77. Re:80%? A lofty goal indeed. by hsthompson69 · · Score: 1

    A bit of projection there, don't you think? :)

    You were unable to comprehend that the statement "100% from both" was literally meant "100% from A *and* 100% from B", even after it was clarified to you. When pointed out, you dodged and marveled at your 'genius' by claiming that your real goal was to "cultivate the habit of thinking in others".

    And now, when it's all laid out in the light of day, just how wrong your initial assumptions were, and how silly your follow up defenses were, you dodge again! :)

    Brilliant!

  78. Re:80%? A lofty goal indeed. by Anonymous Coward · · Score: 0

    You were touching a "pornografic" subject. Like asking "how many muslims can a european.style society possibly absorb". The answer clearly is "not that much", as Islam is clearly a tyrant's ideology which preaches that women are second-class persons. It is jealous like a rabid dog. Read their little book of hate and it becomes clear.

    The lefties don't want any answers to this kind of questions, so they bullshit you.

    You really need to become much, much more cynical to live in this world.

  79. Re:Programming is hard, is because computers are s by Anonymous Coward · · Score: 0

    My stuff is fast from day one because I know what I do. I have an education, I read relevant stuff, I am not an amateur. I don't know your problems.

  80. Re:80%? A lofty goal indeed. by Jmc23 · · Score: 0
    sigh, you really are this retarded aren't you?

    The answer is 100% from both, literally. YOU fail to understand the answer.

    --
    Don't complain about syntax, grammar, or spelling. There is no.hell like input on android.
  81. Re:80%? A lofty goal indeed. by gzuckier · · Score: 1

    Of course it's 100% from each.
    Here: 5 times 7 equals 35. How would you portion out responsibility for the 35? 7/12 and 5/12? Seems wrong. 7/35 and 5/35? Aside from being a tautology, doesn't total 100%. I'd say in this case 100% each is the best answer for most purposes.
    Back to gender differences: if you raise two kids of different gender absolutely identically, the difference would be 100% nature. If you take two kids of the same sex and raise one as a boy and one as a girl, the differences will be 100% nurture. For anything in between, the differences will be not only anywhere between 0:100 and 100:0, but there will be an interaction which is not necessarily additive, or multiplicative, or well behaved in any way. Could well appear as a lot of random unconnected dotsv all over n- space. (Given that gender difference is not a unidimensional parameter)
    We've made a huge amount of progress thanks to Cartesian reductionism. That doesn't mean that everything succumbs to it; things are nonlinear, nonmonotonic, full of singular points, and/or just plain holistic.
    Ask your mother to partition her love for you by % into pride, familiarity, possessiveness, hormonal response, concern, altruism, loyalty, public pressure, whatever else comes to mind.
    And that's one trouble with programming; applying analytical principles to problems where they don't fit.

    --
    Star Trek transporters are just 3d printers.
  82. Re:80%? A lofty goal indeed. by gzuckier · · Score: 1

    Also, here's a hint, when you say 100%, it's math. (explanation: Say something like 'completely' or some other 'non-math' term if you wish to express something that can't be expressed by math.)

    Good advice, actually.

    --
    Star Trek transporters are just 3d printers.
  83. Re:80%? A lofty goal indeed. by hsthompson69 · · Score: 1

    Are you again avoiding the clarification? When asked, they replied that when they said "100% from both" they meant 100% nurture *and* 100% nature.

    Are you trying to defend that 100%+100% = 100%?

    Really?

  84. Re:80%? A lofty goal indeed. by hsthompson69 · · Score: 1

    Wait, so you're saying that 10 nurture times 10 nature = 100 total, and therefore the result is 100% nurture *and* 100% nature? That somehow nurture and nature must be multiplied together before coming to a whole? :)

    Really? :)

    Look, you can make the argument that some specific gender differences are more driven by nature, and less driven by nature, and you even argue that they can vary over time, but you cannot assert that gender differences are 100% driven by nurture *and* 100% driven by nature. That's simply unicorn rainbow thinking.

    And that's the trouble with believing that anyone can program - not everyone can apply analytical principles to problems.

  85. drivings is not for everyone by Anonymous Coward · · Score: 0

    Nuff said

  86. I see a lot of ligitimate critisism by PJ6 · · Score: 1

    for the article, but the basic premise is correct; major steps remain to make programming better, improvements that cannot simply be dismissed as adding training wheels for the unskilled.

    For example - code may remain text-based, but it desperately needs to be decoupled from the file system.

  87. There's a reason for this... by MooseMiester · · Score: 1

    The reason this happened is the Internet.

    Web sites are, more often than not, built in assembly line fashion, where a slicer/front end guy turns layered graphics files (Photoshop, InDesign, Illustrator) into HTML/CSS/JS/JQ, then a different guy marries this to a framework (Yii, Zend, Code Igniter, PHP Storm, Word Press, Ruby, whatever), and then yet another guy runs Q/A. Most of this stuff gets written in horribly ancient non strongly typed threaded interpreters, essentially MS-DOS Basic made to look like C. In other words, the perfect environment to code in without any architectural/design skills at all.

    It's a very efficient way of building "consumable software" - software with a three to twelve month life cycle, and it's perfect for cheap offshore labor. Get the creative done in South America, the slicing done in Romania, the coding done somewhere else...

    So now management believes that large, complex systems can be built using this model, as they can't tell the difference between a facebook user generated content submission sweepstakes and a business intelligence analysis application.

    Spend a few years in Digital Interactive, which is where most of the world's programmers live now a days, and you'll realize that the Internet is what has set programming back a decade, because it's all about QUANTITY not QUALITY. Something that's only going to live a year only has to be good enough to work and not one fraction better.

    --
    Murphy was an optimist
  88. Re: Good programmers are hard to find by DanielOom · · Score: 1

    The trouble is that the people who recruit programmers have no way of distinguishing a genius from a fake.

  89. The difficulty has evolved by trenobus · · Score: 2

    When I started 44+ years ago, the hard part of programming was getting programs to fit the memory size and processor speed of the computers of that day. We often wrote in assembly language, because it was often the only reasonable choice. Scientific code was written in FORTRAN, business code in COBOL (or maybe RPG). A little later C came along and became a viable alternative to assembly language for many things. There was much experimentation with languages in those days, so there were a lot of other languages around, but FORTRAN, COBOL, and C/assembly were the major ones in use.

    One thing we did have in those days, which I recall with great fondness, were manuals. There were manuals for users of computer systems, and manuals for programmers, describing the operating system and library interfaces. There were people who specialized in writing such manuals, and some of these people were quite good at it. But at some point manual writing became a lost art, and the industry is poorer for it.

    Over time, the machines reached a level of capability that exceeded the requirements for the kind of programs we were writing. It was rare to find a program (code, not data) that wouldn't fit in memory, and compiler technology had advanced to the point that we didn't need to obsess about the speed of code sequences in assembly language. So we started writing larger and more complex programs, and the main difficulty of programming was managing and testing the code. Source code control systems were developed, and eventually continuous build systems, but testing remains an important concern to this day.

    As computer networking evolved, the problems of managing concurrency and asynchronicity became more severe. Many approaches have been developed to deal with these problems, such as threads and monitors, but this remains an area of difficulty, and is more important than ever with the advent of multicore processors.

    By the mid-90's, we'd learned about all we could from the structured programming craze, and were well into the thrall of object-oriented programming, with many of us programming in C++. Large teams of programmers became common, and for them, source code control and continuous build systems were essential. Then the web finally arrived on the scene, and a great war between corporations for control of the web platform began.

    How did that war end? Well, everyone lost. We got HTML, CSS, and JavaScript. Some people call that a platform. I call it an abomination. But the alternative would have been to have no standard at all, which I'm sure would have pleased some of the combatant corporations, but was never really a viable option.

    Now we are in the age of frameworks. Everybody and his dog has a framework, and most of them are very poorly documented. I believe that it is only by virtue of forums like stackoverflow that some of them are usable at all. But many of them are aimed squarely at dealing with the problematic "web platform", and for that we should all be grateful. However, we really need to get some smart people together and design a new web platform, including a reasonable migration path from the current mess. The problem is, as we approach the 20-year anniversary of the web debacle, there is an entire generation of programmers who have never known anything else.

    The nature of programming will continue to evolve, but evolution is not a particularly efficient process. If we are indeed intelligent, we should be capable of intelligent design.

  90. Same thing over again: newbie by Anonymous Coward · · Score: 0

    The area this guy would like to focus on is called "essential complexity", or the part of the problem that can't be avoided. This is in opposition to the artificial complexity, or the stuff we add in, which is only there because of how we chose to solve the problem this time. This is established and understood already (at least by those of us who have been around for a while). He didn't have to rediscover these concepts from scratch via interviews.

    Which brings me to the real problem with programming: NIH (not invented here). Using any sort of established approach would suck the fun right out of programming for the newer developers. So each generation (about 10 years in programmer time) re-invents everything: languages, coding styles, idioms and conventions, data interchange formats, management styles, estimation fads, "best practices", inter-process communication mechanisms.

    Those of us who have been around over 20 years can clearly see that we're just running in circles now. Genuine advances that actually stick are few and far between. The real reason here is the turnover: with few sticking around more than 15 years in the business, there is no ability for the average practitioner to develop expertise beyond a certain level of sophistication. Those who do stick it out are stuck with practices that never mature. (And no, the younger set does not listen to our advice or try our ideas to see if they might be better. That wouldn't be "fun".) (And, yes, we do try new things all the time. That's why we see so many things for the second or third time, and recognize them so quickly.)

  91. WP7 and XBLIG vs. WP8 and XBLA by tepples · · Score: 1

    C++ even works on Windows Phone.

    True of Windows Phone 8, not of Windows Phone 7.

    You can't really ban a language that compiles to CPU opcodes.

    The device's manufacturer can if it designs the device's operating system to refuse to execute any CPU opcodes that aren't digitally signed by the manufacturer. For example, the manufacturer could configure the device such that trying to P/Invoke from a downloaded application raises a security exception. The only native code on a Windows Phone 7 device is that which comes bundled with the phone. Third-party applications under Windows Phone 7 are effectively C#-only. (Technically, third-party applications can use any language that compiles to verifiably type-safe CIL that uses the .NET Compact Framework, but in practice that means C#.) The only way to run CPU opcodes in a third-party application on Windows Phone 7 is to include an interpretive emulator of said CPU written in C#, which is such an inefficient abstraction inversion that I didn't mention it at first. This changed in Windows Phone 8, but devices that shipped with Windows Phone 7 cannot be upgraded to Windows Phone 8.

    a sufficiently large company.

    Not on Xbox 360 unless you're a sufficiently large company. Xbox Live Indie Games is C#-only

    do you think that every title that is released on PS4 and 360 is completely re-coded into .Net for the 360?

    No, because games developed and published by "a sufficiently large company" aren't sold through Xbox Live Indie Games. Games sold on disc or through Xbox Live Arcade are allowed to be in C++, but this option is available only to "a sufficiently large company." Games sold through Xbox Live Indie Games are C#-only.

    1. Re:WP7 and XBLIG vs. WP8 and XBLA by scorp1us · · Score: 1

      Thanks for the clarification. But this just reinforces me point. We are choosing fragmentation. You can sign any binary, executable or DLL, C++/CLI or C#. MS is forcing people to develop a C# code base to lock them in. Again, further fragmenting the market.

      --
      Slashdot's rate-of-post filter: Preventing you from posting too many great ideas at once.
  92. Context object by tepples · · Score: 1

    Then it's a context object such as the "drawing contexts" from several graphics APIs, right?

  93. C++/CLI by tepples · · Score: 1

    But this just reinforces me point. We are choosing fragmentation

    No, the majority of the market is choosing devices that enforce fragmentation. We are outliers compared to the majority.

    You can sign any binary, executable or DLL

    That doesn't mean the device will accept your signature. There are four trust levels in Authenticode: none, code signed by a publisher with a certificate signed by a trusted CA, "Microsoft" (code signed by Microsoft), and "Windows" (code signed by Microsoft that forms part of the operating system). In WP7 and XBLIG, only "Windows" can run native code, and only "Microsoft" can run at all without a valid subscription to whatever Microsoft is calling "Creators Club" this year.

    C++/CLI or C#.

    Standard C++ compiled in C++/CLI is not verifiably type-safe. The vast majority of the subset of C++/CLI that is verifiably type-safe is a syntax error in standard C++. And the common subset of verifiably type-safe C++/CLI and standard C++ appears to be a toy language that lacks any pointers or references at all.

  94. Re:80%? A lofty goal indeed. by Half-pint+HAL · · Score: 1

    I was always a pretty competent coder, but I hardly ever code these days. I'm perfectly happy thinking in logical terms -- my problem is keeping the logic in my head while I spend several days coding around the logic. When I'm fighting with syntax, eccentricities in library execution etc, I have to not only think about the problem logic, but also the language logic, the library logic, etc etc etc. This is what Grainger calls "incidental complexity" -- everything other than the problem at hand. It distracts from solving the actual problem, and it places a massive unnecessary cognitive load on the coder. It becomes frustrating and limiting, and you sometimes find at the end of the day that you haven't coded exactly what you intended to, because you were so distracted. But all that incidental complexity means that it's very difficult to unpick your code and rewrite it to what you wanted. Incidental complexity is very bad both for the experienced and inexperienced coder.

    --
    Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
  95. Re:Considering how Republicans... by vilanye · · Score: 1

    Liberal Republicans are no longer welcome.

  96. Nonsense by pigiron · · Score: 1

    HTML5 has all sorts of client side processing and XML is sent back and forth between servers and clients in a blizzard of unnecessary tags.

    If REST is so fucking obvious why were so many web apps written that weren't RESTful?