We need a programming language for the rest of us

Recently I took on the enormous task of learning Objective-C from the bottom up and I was struck by something I couldn’t shake: this is too hard. An experienced developer might scoff at me for saying that, but it’s true. I’ll be honest about my education, Calculus II was the most math I ever took, I have an advanced degree from Berkeley in Journalism. I am a proficient HTML/CSS developer and can glue enough javascript together to solve almost any problem that has presented itself. My first encounter with C was at a community college when I was 13, and found the syntax so repetitive and purposefully obscure that I hid from it for years.

Now, many years later trying to restart, you might accuse me of not trying hard enough, but that simply isn’t true – I’ll continue plugging away at Objective-C until I’m functionally competent. However, I can’t but help that C is a syntax which refuses scalable learning and hides behind overly complex system.


Shield of Complexity

Saying C is too complex betrays that it takes a very specific syntax to define all the functions (or possible functions) of a computer. I acknowledge that its specificity is required to interact with hardware across many platforms, but learning C shouldn’t have to be a bottom up affair. I want to start with the big ideas and make my way down, and I suspect I am not alone. I can’t help but think a language founded by PhD’s suffers from the ‘shield of complexity’. In other words, those who know it have little interest in simplifying it as it devalues their own knowledge.

This is an unsustainable attitude in a society so tightly integrated with technology, where code is growing to the importance of literacy.

It can be easier if we just had better code grocery stores

I was struck recently while I was at the grocery store with my girlfriend, ruffling through stacks of fresh fruits and vegetables to find all the ingredients for a meal. Why can’t coding be more like this? I thought, more like picking ingredients for a meal. Learning C is like learning the genetic sequencing of a tomato. While it certainly is required for the tomato to exist, I don’t need to be familiar with it to slice it and put it together with a list of ingredients. It’s outside the resolution of knowledge required for preparing a meal.

On top of that, if every would-be chef needed to know the genetic sequence of a tomato before he or she constructed a meal, they’d probably never get around to the cooking. In fact, they’d probably never become a chef in the first place, because they, naturally, would not have been a very good geneticist.

Libraries, code-bases, and other niche hangouts aren’t enough

What I’m talking about is beyond some visual basic for the new age or a wysiwyg for C, but a natural language syntax which calls on object libraries within C which form a simpler foundation for learning.
As programs become an increasingly essential part of our day to day lives, we need to help kids learn code which will aid them for the rest of their lives. Mandating that they learn highly advanced mathematical skills mixed with a non-natural linguistics (asterisks as pointers, period condensed syntax, c’mon!) just is not realistic. It’s keeping curious children from learning the basic skills which they could later build on if they get as far as multivariable calculus. In the meantime, the rest of us could benefit from a programming language which doesn’t require years to learn. In short, we need a language for those of us who are skilled in fields other than mathematics. We need a language which embraces a more natural syntax (yes its possible) and a language which allows junior developers to both define and script without using a term-base which has grown to an astronomical size. Have you looked at the number of method calls in all the various branches of C lately?

Making code as simple as possible is charity for the rest of us

Can the complex branches of C be condensed into a series of objects which can be strung together using natural language? I think so, but for the moment it’s far beyond my ability. I do know that we cannot continue down a path of increasingly complexity in programming languages, if only that it will eventually become impenetrable to all but the most dedicated users. This artificial barrier will keep the expression of thousands or maybe millions of voices from reaching users.

208 comments:

  1. Erm. This is what scripting languages like Python are for. Until we have reasonable natural language parsers, things aren't going to get much simpler.

    ReplyDelete
  2. Also try processing, does fun display stuff, isn't web targeted, and has some good books for non programmers.

    ReplyDelete
  3. http://www.python.org/
    http://www.ruby-lang.org/en/
    http://www.php.net/
    http://logo.twentygototen.org/8kpcBaQu

    So many options!

    ReplyDelete
  4. Learning the syntax of a language is quite possibly the easiest part of learning to code, you really should focus on learning the basics of computer programming before suggesting that we need another language/paradigm to make it easier.

    In all honesty, C is one of the easiest languages to learn, and it's not until after you've mastered the language that you realize that is not where the challenges are.

    ReplyDelete
  5. > Have you looked at the number of method calls in all the various branches of C lately?

    C does not have methods.

    ReplyDelete
  6. A child was on a journey with his father. One day, they happened upon a vast ocean that stood in their way. "Son," the father said, "we will need to change directions, the great water is blocking our path." "Father," the son said, "it's not a problem. I brought a bucket. I'll just scoop the water up and move it behind us."

    You can be forgiven for believing that programmers intentionally obfuscate the craft with the intent of protecting their economic turf. However, nothing could be further from the truth. Yours is the belief of an absolute beginner naively lacking any historical context for the craft he is learning.

    In truth, the analysis of language is one of the great problems of  science. It is one with which the smartest minds, those that have studied math well beyond calculus 2, have struggled and continue to struggle to solve. The ease with which all humans attain the language ability hides the complexities inherent within. However, attempt to teach language to a person beyond the age of eight or so who has never learned to speak, and you will discover that it is literally impossible.

    Your call for a simpler programming language is one that has been made by anyone who has ever called themself a programmer. As a matter of fact, the history of programming languages can almost be described as the history of  trying to make programming accessible to the masses. (Fortran was programming for non-programmers. C was a non-assembly-language language. Object-oriented programming, as in Objective-C, is an attempt at simplification. Python and other scripting languages, is another step up.)

    In this context, you can take your blog post as your first step into "true" programming. (As much respect as I have for those who work with CSS and HTML to make websites work, they are to programming what pamphlets and road signage are to novels and research papers.) It is a perfectly reasonable request, yet one that has proven to be impossible so far. 

    Alan Turing, one of the fathers of computer science, described what is known as "the Turing Test," which is essentially: the ability of a program/computer/robot to convince a human being (via concersation) that it is also human. Fully passing this is one of the holy grails of computer science.

    Please don't be mad at the rest of us for not solving it yet. Kurzweil has a long bet that humanity will finally achieve this by 2029. At least until then, all humans, including yourself, will have to work to be understood by computers.

    ReplyDelete
  7. @ Anthony

    Thanks for such a complete and thoughtful reply.

    ReplyDelete
  8. I disagree with Anthony's last paragraph. Half the battle in any programming task is to be able to understand the problem to be solved and in great detail be able to specify the steps to be taken. Most people just don't think that way. That's why there will always be a need for programmers. I heard a line once that if someday a computer is created that understands English we will quickly discover that most people do not speak English.

    ReplyDelete
  9. @Chris
    You're welcome. Thanks for taking my comment in the spirit it was intended. Best of luck in your studies.


    @Steve
    Your response is not a disgreement with my last paragraph. It's instead a straw-man argument against a position I didn't take.

    ReplyDelete
  10. I actually agree with you. I am a C++ programmer.. and I hate the way its taught. Its traditionally taught bottom up. With C first and then "C with Classes" and then modern C++ with STL not at all. This is backwards. It should be bottom up with STL first, classes later, and then C not at all. Bjarne Stoustrup that invented C++ agrees. He actually wrote a beginners book with this setup, called "Programming -- Principles and Practice Using C++".

    ReplyDelete
  11. I can agree with much of what Antony's said about the big picture, but your plea for better syntax has an answer in languages like Inform 7. Inform 7 was meant for writing interactive fiction (text adventures), and reads very much like a somewhat stilted English. The preface of the manual quotes Brooks and Knuth, two giants of the software world, and echoes some of what you've written here (http://inform7.com/learn/man/doc1.html). An real-world example can be found at http://inform7.com/learn/eg/bronze/source.html.

    Of course, were Inform 7 to be expanded to deal with many of the real-world tasks normal programming languages are used for, then I suspect that it may quickly begin to look a lot less like English.

    I think that the reason the C languages are so terse is simply because a huge amount of meaning is packed into each line. "foo(bar);" is much easier to type that "Invoke the function foo with the variable bar as the first parameter.", and takes less space on disk, although that doesn't matter today as it once did.

    It could be argued today that since code is written once and read many times during years of maintenance, that language designers are optimizing for the wrong thing in focusing on write-ability instead of readability. But many smarter people than I have spent a lot of time arguing over this one.

    ReplyDelete
  12. Wow you're thick. Why would developer's make easy languages? It would mean more people would be able to become developers... Unfortunately that means that there would be less jobs for those that are good at it.

    And if you want a programming language that's easy, use python, or ruby.

    ReplyDelete
  13. The hard thing is not the syntax of a language, the hard thing is programming (whichever way you define it: algorithmization + modelling +abstracting, or Breaking down a problem into such small problems that you can 1:1 translate them into computer constructs).

    Logo is a very easy language, but some people get it and some don't (from some experience teaching programming with Logo)

    Stephan
    --
    http://codemonkeyism.com

    ReplyDelete
  14. This is the classic case of someone with a very superficial understanding of a problem, thinking that it is unnecessarily complex, and blaming it on 'elitist' PhD minds.
    When you have a deeper understanding of the challenges, and serious experience in programming something complex, you'll see the flaws of your argument.
    You should practice a more humble approach to life, if someone made something a certain way, probably there's a very good reason for it. You'll be right 99% of the time.
    Good luck.

    ReplyDelete
  15. You should learn AppleScript, thats the nearest to a natural language that exists and is widely used AFAIK.

    ReplyDelete
  16. C's syntax is terse, almost terse beyond reason. And its type declaration system is frankly idiotic (why should any language need something like cdecl).

    But syntax is actually the easy part of programming.
    Thinking about what has to happen and in what order is hard. About things that might go wrong (file is unreadable, network is down).
    And you have to take efficiency into account. Your killer-app is worthless if it requires a $3000 machine and still takes two hours to do its job.
    Another hurdle to overcome: you have to learn that a computer does what you tell it to. Not what you intended, implied or meant.

    I find your suggestion that languages are difficult on purpose, to ensure we developers get to keep living the good life, insulting.
    Worse, it is quite obviously wrong. The development of programming languages has been a ongoing effort to make programming easier. By enforcing good practices, making certain types of errors impossible, etc.

    If you are looking for material to study, I suggest looking up garbage collection, buffer overflow, Contracts in Eiffel, the language ADA and its history.
    And for a "follow the money" perspective, look at the Ariane flight 501 disaster or the comp.risks archive in general.
    A lot of money has been lost (not to mention lives) by bad software. That's a strong incentive to make programs better and thus programming easier.

    ReplyDelete
  17. Take a look at Scratch, it's an excellent introduction to programming for newcomers.

    http://scratch.mit.edu/

    In general, computer languages either try to make things easy for the human programmer or efficient for the machine. Scratch makes things easy for the human, C and its derivatives favour the machine.

    The real challenge is to have both, this is still an unsolved problem.

    ReplyDelete
  18. > I have an advanced degree from Berkeley in Journalism.

    ROFL

    ReplyDelete
  19. I'm guessing you don't speak any foreign languages, either, but I'm enjoying the image of you whining to the teacher that Chinese should be easier to learn, like picking up ingredients for a recipe at a grocery store.

    Programming isn't like shopping, it's growing everything for the dish from scratch. Flour? Grow the wheat, thresh and mill it. Beef? Grow a cow, slaughter and butcher it.

    You're a journalist the way the elementary school nurse's aid is a paramedic.

    ReplyDelete
  20. Who would have thought a Journalism degree didn't give you the knowledge and understanding required to throw an App Store success together in a week

    ReplyDelete
  21. > In other words, those who know it have little interest in simplifying it as it devalues their own knowledge.

    Oh, you got that wrong. Those who know C have no interest in simplifying it because C is pretty simple on its own.

    It's like learning to drive a car. At first it might be hard (ok, not if you're an automatic transmission american) and you wish someone would make it easier. But then after you've learned it you see that there's no need to make it easier because it's fucking easy already.

    ReplyDelete
  22. According to its "father", Dennis Ritchie, C has been invented as a sort of "Macro Assembler". And assemblers deal with hardware. And dealing with hardware gives you (potentially) the best possible results but has never been an easy task. That is why Android platform is so much easier to digest, since it is built on a virtual-machine-based language, which adds a big buffer (muffler) between the hardware and user applications.

    ReplyDelete
  23. Ah, you're learning Objective-C because you have a 'million dollar idea' for an iPhone app. Good luck, macfag.

    p.s. Try learning Ruby or Python, like others have suggested. Your worthless Apple App Store contribution can wait.

    ReplyDelete
  24. I think you need to consider the tradeoffs of simplifying a programming language in the way you propose. Picking out tomatoes only works as long as you want to cook a meal, but in programming you can rarely create a finished meal from prepared ingredients - at some point you will need to invent a new fruit that the grocery store hadn't imagined anybody would ever need, and trying to do unintended things with the framework you're using is one of the most frustrating things in the programming world...

    C(++) is an extremely generalized language and I love it for this reason - you are given only the very basic building blocks, expressed in the way the computer wants it, which is really the way the developer wants it. Say what you want about C syntax, but making a natural programming language would have huge drawbacks. There must never be any ambiguity in programming, and for every line you write you have to be completely certain how the computer will interpret what you're trying to do.

    ReplyDelete
  25. Ruby is the language you are looking for. No, seriously.

    http://www.ruby-lang.org/en/

    Ruby has a truly awesome community, as does Rails (a very popular web framework written in ruby).

    ReplyDelete
  26. Just stick with HTML/CSS and Javascript, when windows 8 comes out you're all set. Meanwhile you've got node.js.

    ReplyDelete
  27. > As programs become an increasingly essential part of our day to day lives, we need to help kids learn code which will aid them for the rest of their lives.

    You might be interested in checking out Shoes:

    http://en.wikipedia.org/wiki/Shoes_(GUI_toolkit)

    I gather a large part of the reason for it's development was to make programming more accessible to children.

    ReplyDelete
  28. So going off your logic, French as a language is too hard! All those funny words and symbols! Different meanings for things! Someone should make French more accessible to those who speak English!

    ReplyDelete
  29. You should definitely do some combination of going to school for programming classes and techniques and going through hundreds upon hundreds of hours of self-taught learning and trial and error to teach yourself the concepts, syntax, and usage of a useful language. You'll probably also need to do the same for a useful database solution that integrates seamlessly.

    Then, after you've done all that, gotten fairly competent, and can turn a reasonable project idea into a compartmentalized plan, you can start going on craigslist to get offered $50 for a solid three weeks of work, or get a job with your skills that pays as much as $10 per hour.

    ReplyDelete
  30. Programming is difficult, when you don't know how to program. Cooking is difficult when you don't know how to cook. Building houses is difficult when you don't know how to build houses. Repairing cars is difficult when..... Well, I'm sure you get my point ;)

    ReplyDelete
  31. He has no time (patience, need... you name it) to be a musician. He wishes to be a DJ instead. That's fine. Learn thousands of sound samples instead of just 7 notes ;) Real knowledge IS understanding though.

    ReplyDelete
  32. Dude, programming is easy

    Here's a 7 year old doing it
    http://www.youtube.com/watch?v=qJG7QFH7-Bs

    and another
    http://www.youtube.com/watch?v=O0Gk2Mu9H6g

    8 y.o.
    http://blogs.msdn.com/b/bobfamiliar/archive/2010/09/21/the-8-year-old-programmer.aspx

    12 y.o.
    http://www.javalobby.org/java/forums/t93670.html

    11 y.o.
    http://www.youtube.com/watch?v=5TkadOlbyD8

    > [I] can glue enough javascript together to solve almost any problem that has presented itself.

    liar

    ReplyDelete
  33. Writing a newspaper article is too hard. I mean, I can type, so I should be able to write, shouldn't I?

    A bit of history, I graduated as a software developer, and aced my typing classes. And yet writing a newspaper article, you know, an actual journalistic piece, is just too hard.

    ReplyDelete
  34. Sounds like you dived in the deep end with Objective C. You should try learning something like Python which has much less syntactic cruft, is much easier to read, and requires much less overhead (e.g. you don't have to define all your functions first).

    As others have mentioned Inform7 is another option, but for writing interactive fiction/text adventures. It is written in pseuedo-natural-language.

    ReplyDelete
  35. Hey there. I just wanted to add to the discussion that you should give a language like python a try. It was developed to be easy to write at the expense of runtime performance. It is also meant to be easy to read because the language mandates the use of standardized indentation (rather than curly brackets like { }) inside decision blocks and loops.

    With something like python, you can develop software much faster. But then when you need performance, you dig deep into your modules (or hire a C programmer) and write an equivelant in C that can be called from python. Your top-level routines don't change, but your performance does (anywhere from 1.5x - 20x speedup).

    It begs the question. What do you want? Do you want an app that runs in 2 seconds that you wrote in an hour, or one that runs in 0.1 seconds that took you all afternoon? Not all problems translate cleanly into these two categories, but the distinct philosophies are important.

    Good luck on your quest and I hope that you give it another shot. If you're developing for a specific platform that requires objective-C, perhaps it is useful to start off learning the "abstractions" of programming (in python) so you start thinking about the problem differently, then venture into the syntax of objective-C.

    ReplyDelete
  36. My background: former cognitive scientist who did research in psycholinguistics (semantics), taught intro compsci labs, and now work as an IT consultant. I've given this speech about a million times, so forgive me if I sound a touch pedantic...

    [speech]
    The problem with programming languages isn't that they're too complicated, or even that they're "unnatural". Programming languages are in fact laughably simple when compared to human languages. There are only a very few syntactical rules, and they have a vocabulary of just a couple hundred words at most. Learning a programming language is FAR easier than learning a human language, no question about it.

    No, the problem is that computers are *stupid*. Incredibly powerful calculating engines and inhumanly fast, to be sure, but unbelievably stupid by any other human standard. Computers do not *understand* ANYTHING. For them to be able to parse a natural language they need to be able to comprehend context and semantics. In order to do that, they unfortunately seem to need to be just as intelligent as a human is. More intelligent, actually, as there is still plenty of room for misunderstanding between two human language speakers even when doing something like giving directions to drive a car from point A to point B. And AI like that is still well beyond the state of the art and will be for some decades to come. Which is why you tell a programmer what you want and *he* writes the programs, instead of telling a program what you want and having *it* write the program.

    It is the stupidity of computers that is what makes programming hard, not a programming language's syntax or it's construction or the math and logic used in a program. You have to explicitly outline everything in excruciating detail, because computers don't understand context or subtext. *That* is where the complexity comes from - having to go into that level of detail, instead of the computer just being able to understand what you mean by saying "draw a cartoon of a man running between his house and his car and slipping on a banana peel" as a human being would be able to do. And the closer to the metal you are, the worse it gets as you're having to be more and more explicit as there are fewer and fewer interpretative layers between you and the computer's processing. That's why many people can usually fumble their way around with high level scripting languages like Javascript or Python well enough, but start to stumble when C type languages rear their ugly heads. Being able to provide meaningful instructions to something so stupid and literal minded that it only understands ten rules of grammar and only knows a couple of hundred words requires the person doing the instructing to do a LOT of thinking and explaining using those extremely limited language constructs. It's exhausting and frustrating!

    Even with libraries of functions and methods that others have built before you to call on, it's *still* incredibly time consuming and frustrating. You still need to know those functions and methods and when to call them, because the computer DOESN'T. Remember, it's stupid. It doesn't understand *context*. So while to you or me it's obvious *from context* that to draw a stick figure cartoon man you're going to need a circle for a head, a line for the body, and some angled lines sticking off the main line for the arms and legs... a computer still needs to be told that all, every time, explicitly. You're going to have to tell it to call those libraries to draw those shapes and how to arrange them all in relation to each other, using the very simple and extremely limited tiny little programming language it can barely parse. And THAT is what makes programming hard: having to write reams and reams and reams of instructions for a complete idiot who can never just 'get' what you mean, using just the few words it can understand, over and over again.
    [hceeps]

    ReplyDelete
  37. Unfortunately, I'm not done yet... In complaining about needing to know math in order to be able to comprehend modern programming languages you're showing a fundamental misunderstanding of how programming works. Programming is *not* based on math, though math can be very helpful when programming and many programming features revolve around mathematical functions. Rather, programming and programming languages are based on *formal logic*. Mathematics as it's generally understood is actually an example of a formalized logical system. If you'd taken Logic 101 instead of Calc III, you'd be much better prepared for computing. Plus logic is much much simpler than Calc III, to boot!

    Hope there's something useful in all that blah blah blah there for you!

    PS: accuracy and precision are also very important in programming, again unlike a natural language... which is another reason why you in particular may be frustrated by it. Why do I think that? Take a look at this statement from your article: "However, I can’t but help that C is a syntax which refuses scalable learning and hides behind overly complex system."
    ;)

    ReplyDelete
  38. Chris,

    Some of what you write about C is correct. With the core C libraries, you get very, very little. You can't "go to the store and find a tomato". Other languages (or frameworks) like Java and C# (.NET) have gone far out of their way to provide you with a "supermarket of programming ingredients" if you will. Luckily for most languages, if you don't find what you wannt in the standard libraries you can visit "specialty shops" (www.sourceforge.net, codeproject.com, etc...) where you often find other ingredients.

    Taking your analogy a bit further, ingredients alone do not a gourmet meal make. There will be a need to learn fundamentals of programming (algorithms, data structures, logic, etc...) if you are going to produce something of high-quality. Someone can always produce something of lower quality by ignoring these fundamentals. There are a lot of people who are capable of "Top Ramen" programming -- and there are situations where this is OK too.

    C is a bit terse, but that's because it was built 40 years ago to be a low-level language. It actually was a pretty good language for the time. (It is still a good language, though if someone were to try redesigning a language with the same purpose of C today, I think many design decisions would be different. See the 'Go' programming language as an example.)

    There are higher-level languages of course -- shoot, you are familiar with one of them: JavaScript. But the higher-level languages aren't perfect either. I assume you know that since you've decided to try to learn Objective-C. Each language has its own niche where it excels (PHP: web programming; C: low-level "portable assembly"; Lua: great embedded scripting language, esp. for C-based apps).

    I'm confused by your point that programming is too hard and that we need a more natural language. You've used JavaScript and mention that you've yet to find a problem you can't solve with it. Why then doesn't it fit your needs as a "natural language"? What are you missing that is causing you to go to objective-C? Are you trying to develop something for the iPhone or iPad and feel cornered into objective-C? If you explain further, people may be able to better help you out.

    As other people have mentioned, you may be better off with a language that is a bit higher-level than C. Python and Ruby are great suggestions. Of course, you'll be limited in your choices if you want to create an iPhone app.

    Anyway, good luck in your adventures!

    - Kevin

    P.S. Objective-C is not C. ;-) Many of the gripes you mention have to do with Objective-C, and not C.

    ReplyDelete
  39. I can't help but point you at LOLCODE (lolcode.com) - Enjoy.

    ReplyDelete
  40. Your analogy is incomplete. Imagine no one had ever taught you to cook and then took you into a grocery story. You'd look at the store with the same sense of bewilderment as you look at programming. How do you make a tomato sauce that actually tastes like something you'd want to eat? How do you add that to pasta and cheese to make a lasagna?

    Doing anything from scratch requires a bit of knowledge and a lot of experience. That includes software.

    That said, you can always pick up a box of mac and cheese and you can feed yourself for a night, provided you have a pot, boil water, and know how to add butter to the sauce mix. Even basic cooking requires some familiarity with the kitchen. Same goes for programming. As others pointed out, there are scripting languages that handle a lot of the "from scratch" aspects for you. But they still require some programming experience.

    You could say the same about writing anything or any creative endeavor. It's one thing to write an essay, quite another to attempt to write the great American novel.

    ReplyDelete
  41. Profoundly clueless article. C is not "purposefully obscure", it is not "overly complex", it's exactly as complex as it needs to be. It was written FOR USE BY IT'S AUTHOR, for solving problems, not as part of some nefarious plan to confuse nitwits like yourself.

    And it happens to be a comparatively simple, elegant language. Assembly or C++ would give you an aneurysm.

    ReplyDelete
  42. Sry to say it but ur a n00b. CS is hard an will probably always be. If you seriously want to learn to code you will have to work hard, there is no way around it.

    ReplyDelete
  43. See also http://norvig.com/21-days.html I'm not alone with that opinion.

    ReplyDelete
  44. Take a look at QT and the QT Quick platform. Since you already know JavaScript somewhat, that's an easy way to get into cross-platform but still native stuff.

    Also take a look at Seed for GTK+. It's JS, too.

    ReplyDelete
  45. To use your example: C is like being given a language so you can genetically code exactly the vegetable you want. You seem to be looking for a language that lets you only select from existing vegetables that other people have created. Yours is easier to make a salad with, but you will never create a new vegetable. Computer programming is hard. Here's a very famous article from 1986, called "No Silver Bullet" that is still true. It explains why it's hard and it has nothing to do with any language you use.

    http://www.cs.nott.ac.uk/~cah/G51ISS/Documents/NoSilverBullet.html

    ReplyDelete
  46. Maybe programming's not for you. C is not and was never hard for me. Maybe you're just no good at it? Leave it to the pros.

    Actually, C might be the simplest language that I know. There's very little syntax. It might be a bit low-level, but what were you expecting? To just write `make cool program' and the computer does all the work? Don't be lazy. You have to describe the steps to achieve a solution (which is not like knowing the genetic sequencing of a tomato, but specifying how you'd go about growing one or buying one).

    Also, "natural language" programming languages have been tried before and they all suck. WYSIWYG programming languages have been tried before, and they all suck.

    Lastly, your dismissal of C as a language "created by PhDs" and "masked by academic complexity" shows how little you really know about it. C was created for practical purposes. It was one of the first widely used programming languages that was practical. Academics were and still are using languages that are far more difficult to use (Google "Standard ML" or "Lisp").

    ReplyDelete
  47. To borrow your shopping analogy: What you are looking for is the selection of frozen pizza on aisle 3.

    If you are selecting ingredients you already have worked out further from just mere preferences (taste, requirements). You have some basic understanding of the machine (cooking process). You have gone through programs (recipes), the internal workings of you have some insight to, now. You mix-and-match those while shopping, because you can sketch the program there on the fly, while shopping, and see if it'll hold. It's only possible because you can abstract something general about all programs (recipes), and you have trust that the blind spots will somehow manage.

    Programming is like anything else we people do.

    Now, I'll head out to play guitar under a tree. They really ought to make a guitar for the rest of us...

    ReplyDelete
  48. Maybe you're just not getting the proper tuition. You don't need to be a C expert to write basic functions.. at all. If you're not doing kooky things with arrays and functions, then the syntax is pretty simple. Perhaps you just can't program- no shame on you. http://www.codinghorror.com/blog/2007/02/why-cant-programmers-program.html

    ReplyDelete
  49. Sorry, I meant,

    http://www.codinghorror.com/blog/2006/07/separating-programming-sheep-from-non-programming-goats.html

    ReplyDelete
  50. Dunno if you are learning ObjC for iPhone development. If so then check out PhoneGap http://www.phonegap.com/ which is app development using HTML5, must lower bar for entry.

    ReplyDelete
  51. Why do you assume "natural language syntax" to be the holy grail? Just how many years does it take to master a natural language? How many years of trying to grasp the English language are required before you can write a readable novel?

    By contrast, becoming proficient, and able to write pretty much arbitrarily complex programs in C, can be learned in, oh, say, a year or two. And even then, the syntax of the programming language is the easy part. The hard part is that software *is complicated*. A chef doesn't need to understand the genome of a tomato, no. And a Photoshop user doesn't need to understand the source code used to build Photoshop.

    And natural languages would be just as difficult to grapple with if you were to use them in the way we write programs: as a one-way conversation in which you hold one hugely long speech describing what you want, after which the listener walks off to carry out your instructions. Human language seems easier to you because 1) you've cheated and spent decades practicing it already, and 2) we typically don't care that details are left out or are left ambiguous. Most of what we write or say can be misinterpreted, but we typically hazard a guess, and if we're wrong, no big deal. If your computer guesses wrong about how to execute a piece of software, it's game over. Try doing your writing in English, under the constraint that *nothing* must be ambiguous, and *everything* must be well-specified. And see if that's any easier than the C language.

    ReplyDelete
  52. Stephan.Schmidt said it perfectly. You don't learn to program by learning how to type out stuff (hell, most editors are so complete these days you hardly have to do much typing at all), programming is learning how to model business requirements as system components and machines.

    They do make things that allow you to create simple programs using diagrams, FYI. It removes the need to know syntax, and it will show you perfectly that your problem is lack of infrastructure building experience, not syntax writing.

    ReplyDelete
  53. Try some Ruby and You'll never look back. It has a great leader in Matz and a great community:

    5.times { puts "Ruby is the shizniz" }

    ["foo", "bar", "moo"].each { |item| puts item }

    2 very simple examples, but most code in Ruby is short, to the point and very beautiful.

    ReplyDelete
  54. You can't program like shopping for the same reason you can't write like shopping. Say you were writing a piece of fiction and had a place for a young male character. Harry Potter is a young male character, so how about him? Let's just drop him in there. Aside from the army of lawyers who would beat you to death, there are some major problems here.

    First, you can't just "drop him in" unless he already has dialogue that will fit. If the character in your story doesn't go to the same school, have the same friends, and do the same stuff, you won't have a whole lot to choose from. His dialogue depends on his universe, and you can't just put him into a new universe that has nothing in common and expect him to make sense.

    You could try to write new dialogue for the character, to make Harry Potter your own. The problem there is that now you're writing from scratch, and that's HARD, right? In fact, writing Harry Potter is EVEN HARDER than writing your own character, because you've got to deal with the preconceptions about the character shared by his legion of fans. He's not a clean slate that you can freely twist to fit your narrative. You might find that using Harry Potter comes with a lot of baggage, and while you got "a character" "for free", it was ultimately more hard work to do it that way than simply coming up with your own.

    In programming, there are absolutely times to steal your own Harry Potter. I have components and libraries that I use and reuse in almost all the projects I do. Knowing when to do this is one of the biggest differences between a good and a bad programmer. The times where that's going to be *enough* to solve my problem are few and far between, though, because otherwise I'd be pretty much limited to solving the same problem over and over again.

    To get to a world where you could just "shop" your program into existence, your Tomato would have to be robust enough to meet everybody's needs in every situation. It would need to be able to do anything a tomato can do, and behave as expected in any tomato-related interaction, at least well enough to meet every user's needs. We quite simply can't do that, and I don't just mean from a computer science perspective. We don't even know enough about tomatoes.

    Teaching your computer from scratch may seem like the "hard way" to program, but the truth is that for most problems it's easier than modelling enough of the universe to take your approach, even counting all that extra effort on your part.

    ReplyDelete
  55. Please don't try to compare programming - a profession that some people spend 4 years in university to learn and study - to buying a tomato in a grocery store. If you are not prepared for C it just means that you don't have the background for it. Programming is not meant to be like buying tomatoes.

    ReplyDelete
  56. I want to cure cancer, they should just make medical science like grocery shopping.

    ReplyDelete
  57. Sounds like you wanted to make a quick buck making iOS apps but realised it requires too much effort.

    Why else would you start with Objective-C? There are tons of clearer languages to start you off.

    Programming is a skill, you learn through practise. It's like complaining that cooking is difficult. You learn to cook. Of course, unlike cooking, programming isn't given enough attention at a young age, it really should.

    ReplyDelete
  58. coding might be hard FOR YOU, because you're not smart enough in the right areas. Lack of desire to learn math in school is a good indicator that the programming mindset is not your cup of tea. Unfortunately, the complexities of what you see behind the computer screen are sometimes extremely complicated, and in order to deal with this we need tools which are sometimes very complex. There are simpler environments you may play with, but it appears you do not understand the frame of reference. Sometimes also there are various performance/complexity tradeoffs that need to be made, and if the environment is simplified to the point of intelligibility by simpletons, well, it won't *work*.

    ReplyDelete
  59. There is historical context here.

    C is portable assembly. It is meant as a simplification layer to the assembly code, that compiles directly to machine code specific to the processor that it is being run on.

    It does not have any of the bells and whistles of higher level languages (python, ruby, etc) because it is meant to be the absolute minimum set of features (and thus abstractions) between code and assembly/machine.

    Shopping (or cooking with ingredients) is a poor model for C programming because C is more along the lines of building as much as possible (within reason, ultimately many things have to be system calls on multi-user machines with protected memory spaces) yourself.

    If you want a different abstraction model, start with a language that is designed for the programming style you want. From your post, it seems that you want a higher level language. I'd suggest python or ruby.

    If you want something along the lines of natural language processing, you have a serious problem in that parsing natural language into something machine accessible is one of the most difficult problems in computer science. It is more or less the holy grail.

    ReplyDelete
  60. Does this mean your Fart App won't be hitting the App Store any time soon?

    ReplyDelete
  61. Have to agree with the general 'you're an idiot'-themed comments. This anti-intellectual 'if X is hard, then there's a problem with X' attitude is a cancer on education and rationality that seems to get only worse as time goes on. Actually, you just happen to be someone who is incapable of the precise, rigorous, organized thinking that programming requires. Don't sweat it too much, you're probably very good at other things---and please don't blame it on C.

    ReplyDelete
  62. Programming is hard. Let's go shopping!

    ReplyDelete
  63. There are plenty of other languages that are easier and more human-readable: python, java ect. The problem is that generally these types of languages will run slower or less optimized than something more low level like C.
    Imagine you speak French. From what I hear it does not take very much effort to translate to Spanish, as the languages are very similar. You could compare this to programming in something like assembly - there's little time for the computer to understand what you meant.
    Now try to learn some strange alien language...actually lets be really extreme and use binary. You now need to talk in binary. The process will be long and complicated, very hard to do. You could compare this to using a more high level language that is more easily human readable.

    It's not a perfect example, but the general idea is true. A language must either favor human comprehension or computer comprehension. And since we ARE writing these things for computers - it will be more efficient to put in a form that computers like.

    ReplyDelete
  64. I've been programming for nearly 20 years and I can say that I agree - programming *should* be easier. On the other hand, you guys in the comments are nucking futs. Arrogant coders vs. the clueless in an epic battle of pointlessness.

    ReplyDelete
  65. This is what objects are for. Umm here is one I made early style of development. It does 90% of what I want. Lets inherit it and add the other 10%

    ReplyDelete
  66. I think you are looking for something similar to runrev. The syntax is far different - more english like, easy IDE. And the community, documentation etc. is more no-programmer (by education) friendly. So go and check it: http://www.runrev.com.

    ReplyDelete
  67. Before simplifying C, I think we should worry about teaching programmers social skills. :)

    ReplyDelete
  68. Go with Python. It is the best "first" programming language to learn because it is very simply and direct, while it is still a real programming language with great libraries.

    I know the exact problem you're talking about, so I wrote a book aimed at kids or complete beginners of any age, which is free to read online: http://inventwithpython.com

    ReplyDelete
  69. I'm fairly sure if you take the time to really learn how to program, you will later come back to this blog post and feel embarrassed at the ridiculousness of what you have written.

    ReplyDelete
  70. Wow... You are complaining that the way developers abstract binary data into a human readable language is inefficient, just be glad they bothered to do so...

    People used to code in binary, 1's and 0's (base 2)... That would have had people like you running outside and crying tbh. Your notion of you should pick up a language like Objective-C, start with a big complex concept and work down is rather absurd.

    You have to learn the easier concepts before you can understand the more complex concepts, you do not build a house and magically think the house into existance, you have to learn how to make the bricks, build the house' frame etc... In otherwards like all things, you have to learn to walk before you can run. And tbh your experience in HTML/CSS is not really that much of programming, it is not Turing-complete and as such is more web development than programming.

    Dunno thats just my 2cents...

    ReplyDelete
  71. Programmers are to Programming as a mechanic is to a car. I can change the oil in my car, drive it, even explain the principles of the internal combustion engine to my child. However, I can't rebuild the engine from scratch without pulling out the manual and spending hours reading it, making mistakes and probably cursing a bit. It is far easier for me to hire a mechanic with that knowledge already who is trained in it.

    Programming is no harder than it has to be given the limitations of the computer itself. Almost anyone can become a programmer, but it will require a manual, hours of work, and probably a lot of cursing.

    The point is, both require a skill and expertise. It is insulting to both people to degrade their position as a specialist class that want to prevent non-initiates as they have "little interest in simplifying it as it devalues their own knowledge". I would argue the opposite is true. We produce books, many of them, in an attempt to explain how to write code effectively, efficiently, and in as simple a way as possible.

    The inflammatory portion of this article is the implication that we have no interest in simplifying computer languages for personal gain. Much like a physicist trying to explain the workings of the universe to a layman, and then the layman complains it is too complex and must be simpler. So it is with computers and computer languages, a layman fails to understand the complexities involved until they learn the issues involved.

    ReplyDelete
  72. I can appreciate that Calculus II isn't going to prepare you well for designing an application.

    I would have thought an Advanced Journalism degree would have covered journalistic responsibility though. I can't help believing that it takes an extreme level of naivety to assume the difficulties you encountered were due to an area of understanding you had no good appreciation of. Surely some of the basic precepts of journalism say that you must research the subject before reporting on it. Was your research limited simply to trying it for yourself? I can't believe you found anyone of any experience in the area who would have supported what seem to be wholly and ridiculously simplistic opinions of the subject.

    Applying some intelligence to the whole situation it seems difficult for me to avoid the conclusion that this was merely a publicity stunt to raise awareness of your name. As they say "All publicity is good publicity!" They never seem to say the same about integrity strangely enough ;-)

    ReplyDelete
  73. You are doing it wrong. You are looking at it from bottom up where you should be looking at it top to bottom. Learn the big picture first and then the details.

    Jesus just take a beginners class in CS instead of complaining about..boho...the syntax is too hard. The syntax would make a lot more sense if you saw what the hell you were doing in the first place.

    ReplyDelete
  74. Why are legos so damn hard to manipulate into a fun contraption? Legos need improving

    ReplyDelete
  75. Sorry, didn't have time to read all the troll comments above, so don't know if this has been said already:

    Objective-C is about the worst possible language you could have chosen to start learning to program. I am computer science graduate and programmer with 15 years experience, and I would not invest valuable time learning that obscure and old fashioned language.

    If you are building iOS apps there are plenty of other frameworks to try:

    Open Frameworks (C++),
    Phonegap (JavaScript)
    Unity (JavaScript, C#, Boon)
    Corona (Lua)
    AIR (ActionScript)

    Any of these are better suited for a non-programmer building his or her first app.

    ReplyDelete
  76. we choose to go to the moon in this decade and do the other things, not because they are easy, but because they are hard, because that goal will serve to organize and measure the best of our energies and skills, because that challenge is one that we are willing to accept, one we are unwilling to postpone, and one which we intend to win, and the others, too.


    you'll never make it to the moon, dude.

    ReplyDelete
  77. Years ago when I was first entering college, a first-year roommate of mine had received as a graduation present a subscription to the journal Science. He wrote a letter to the journal complaining that their "articles" seemed to be written in an intentionally obscure style, and that perhaps they should take hints on how to produce a magazine from Scientific American.

    I hope one day you learn enough to be as embarrassed about what you just wrote as my friend ultimately was at having done that.

    ReplyDelete
  78. Hi. I agree with the premises that programming is unnecessarily difficult to learn, and that people who are familiar with programming concepts dramatically underestimate how opaque they are to newcomers, and often forget how painful it was for them to learn in the first place.

    However, I also urge you to read this memo by noted computer scientist Edsgar Dijkstra, entitled "On the foolishness of 'natural language programming'". It is short, non-technical, and very illuminating. http://www.cs.utexas.edu/users/EWD/transcriptions/EWD06xx/EWD667.html

    For my money, here is the most important sentence: "Instead of regarding the obligation to use formal symbols as a burden, we should regard the convenience of using them as a privilege: thanks to them, school children can learn to do what in earlier days only genius could achieve." Natural language is powerful because it can express any idea, but that means it can easily express nonsense, and sow confusion as easily as clarity.

    I first started learning C when I was thirteen years old, and had been writing things in BASIC for 8 or 9 years. I found it tremendously frustrating, because it was so much harder for me to do things in C than it had been to do the same things in BASIC. I would make mistakes in my program that would cause completely crazy things to happen. My code was much longer. C didn't have any of the nice shortcuts that BASIC had. I was able to learn BASIC just by reading the help files that came with my interpreter. How do you draw a line on the screen? Oh, just write LINE X1,Y1,X2,Y2,COLOR. Learning C this way was impossible. How do you draw a line on the screen in C? The documentation had no answer, because the question is not well-posed. It depends on an awful lot of factors, and the burden is on the programmer to figure those out and come up with a solution that will work for their program.

    Can programmers do better at providing tools to people that allow them to build the things they want to exist? Of course, always. There are some kinds of problems that are pretty well-served already, as a matter of fact: look at things like Game Maker, or Stencyl, or Multimedia Fusion, or even Processing. Those tools are giving people the power to create things that they could not have done otherwise, and so in my view, are obviously doing good in the world.

    Learning those tools is an order of magnitude easier than learning C, because they have, built-in, concepts that are easy to map onto the thing you want to build. They already kind of speak your language. It isn't really because the notation is less obscure. Many of them have drag-and-drop programming tools to make it simpler to create syntactically correct programs, and to see the range of possibilities; but then, many programming languages have tools to help with these problems too (brace-matching and autocomplete come to mind).

    Anyway, I guess my point is that Objective-C is hard to learn because it has lots of stuff in it that is not talking about your problem, which is only natural because it is a language designed to solve every problem. There are two solutions that I know of: learn the tools to solve every problem so that you can build the tools to solve your own, or find a tool that already can be used to solve your problem, and use it. Can the learning process be improved? Almost certainly, though of course the student will always have to want to learn. Can there be more and better tools to make things easier? Of course, but this is a hard problem for which we still don't have a great understanding of how to solve effectively, a lot of the time. Still, lots of people are trying. I'm one of them.

    ReplyDelete
  79. I think that you have a fundamental misunderstanding of programming: computers are like dominoes, how you lay them out determines how they fall. If you want to just vaguely tell someone else to lay them out in roughly this kind of pattern, that's fine. There are actually programming languages quite a bit like that. But this isn't an argument against the ability to get down there yourself and set up the pieces just the way you want them.

    Which is what you tried to do by learning C first.

    The reason that C has the complexity it does it because that complexity is required for the tasks that people seek to do with it.

    You won't understand many language choices as a beginner programmer because, frankly, you have none of the experience required to even know what makes a programming language useful or not. I've been working at this for years and still every so often I come across a new situation where suddenly a part of the language specification makes sense, because to be able to do this particular kind of thing, you actually do need that complexity.

    The problem with 'natural language' is that it's ambiguous - as anyone who even begins to work in fields like mathematics, logic, science, or philosophy knows. Many computer programs that I write require a specificity far beyond what I could achieve in normal English.

    You say that you took introductory calculus, so can you imagine if the entire class had been unable to use mathematical symbols and instead had to resort to English words and terminology the entire time? Not just rely on English words, but be completely unable to give them more definite meanings particular to the class.

    This is what you're asking for not even in programming languages in general, but in a programming language specifically meant to work at a low level with a high degree of specificity.

    If you want to learn something where you need to know less about how to program or where there is less requirement that you actually think about what you're trying to say to the computer, I would recommend that you learn a scripting language like Python.

    Or really anything besides C.

    ReplyDelete
  80. And chocolate should be free. Good luck with that.

    ReplyDelete
  81. Yes, 50 years of language development is wrong because you can't be bothered to learn that there are techniques beyond the language that also need to be understood. An advanced degree in Journalism does not give you the ability to say this should be easier. Go get a degree in Computer Science and then we can talk.

    By the way, there are fourth generation languages (4GL) where you can drag and drop shapes on the screen. You connect the wires and things happen. The problem is that they are never expressive enough.

    Think about the symbolic languages used by the Mayans and Ancient Egyptians. No one uses those anymore because it is easier to express ideas using an alphabet and language structure.

    ReplyDelete
  82. I picked up C when I was ten. Since then, I've learned 35 programming languages. Generally, I learn a new syntax in less than four hours.

    This is not hard. You want hard? Try becoming fluent in South Korean in 63 weeks. By the way, I did that too.

    ReplyDelete
  83. Well, a lot of people have given good reasons why programming is so difficult to learn, and there are a couple shitty reasons, eg "I understand this, therefore you just aren't trying hard enough."

    That being said, people are always working to make everything more accessible, and new languages are always coming out that are more natural (see python.org). I don't think you really need advanced mathematics to understand programming (I have the same level of math that you do, as do most electrical engineers that graduated from Purdue). But the main problem is that due to the logic-based processing that modern computers use, you have to be very precise with a computer (although sometimes it seems like computers only respond to frustration and anger). There is only one computer that pseudo-understands the English language, and that's Watson. But, as processors and other hardware become more powerful, computers will become more accessible and useful to the average person, as we can see from the current trend, having gone from punch cards to blog posts in just a few short decades.

    (and seriously, try Python. The biggest problem with C is that its known to be a bitch. Trust me, I know.)

    ReplyDelete
  84. Learn to write clean code and it will make you a clearer thinker and a better writer of English.

    ReplyDelete
  85. Education is irrelevant. You are either a programmer and have no problem picking up new languages and concepts or you are not. There is no middle ground.

    ReplyDelete
  86. Just a point of clarification, HTML and CSS are not and would not be considered programming languages by anyone who is an actual paid software engineer. 'Gluing' JavaScript together to get a job done gives you the equivalent programming experience of a software engineer the first year they got access to a computer(probably around 8 or 9 years old).

    There are plenty of scripting languages out there for people like yourself, with no programming experience, but to think you can jump into one of the most powerful programming languages with no formal training or even understanding of how to program and get anything of not accomplished without a few months of work is just naive.

    ReplyDelete
  87. You can use Python.
    Thanks.

    ReplyDelete
  88. For fuck's sake...

    There is so much wrong with this post. You're coming at the whole problem from the wrong direction, for a start. There's some assumption that because you're an intelligent individual then you must be able to learn to program with ease. That is phenomenally naive. First mistake.

    Second mistake is to use Objective-C. Presumably that's because you though "O KEWL I CAN MAEK IPHONE APPZ", but in the process of doing so you unwittingly chose the most awful descendant of a particularly awkward language.

    "I am a proficient HTML/CSS developer and can glue enough javascript together to solve almost any problem that has presented itself."

    So why are you finding it so hard to use C? Javascript syntax *is* C syntax.

    ReplyDelete
  89. > However, I can’t but help that C is a syntax which refuses scalable learning and hides behind overly complex system.

    Apparently English is overly complicated for you too, huh?

    C isn't a syntax. C is a language. It has a syntax. And you can't 'refuse scalable learning'. You can make it difficult, or impossible, or easy. And what the fuck is 'scalable learning' anyway? It's a phrase in desperate search for a meaning.

    As a bonus, it wouldn't 'hide behind overly complex system'. It would be 'behind an overly complex system' or 'behind overly complex systems'. But no it wouldn't, because that also doesn't mean anything.

    Look, if you went to college as a journalist, and this is the best you can do with English, I shudder to think what you're going to do with Objective C.

    ReplyDelete
  90. People spend years in school studying to become doctors, or engineers, or lawyers. They spend thousands of hours in study and practice and research.

    But for some reason you expect to walk in and be able to write iOS applications using Objective-C on a system with [literally] thousands of APIs and classes and functions with little to no effort?

    And while we're on the subject, why would anyone spend years studying something like journalism? Surely all one needs to do is grab a few paragraphs from here and there and learn enough "natural language" words to wire them together...

    ReplyDelete
  91. "You don't learn to program by learning how to type out stuff (hell, most editors are so complete these days you hardly have to do much typing at all), programming is learning how to model business requirements as system components and machines."

    This is more Software Development. Programming is more the act of taking those models of business requirements and implementing them.

    ReplyDelete
  92. "On top of that, if every would-be chef needed to know the genetic sequence of a tomato before he or she constructed a meal, they’d probably never get around to the cooking. In fact, they’d probably never become a chef in the first place, because they, naturally, would not have been a very good geneticist."

    By extension then, your argument says that no one is a programmer because of the daunting task of writing it all. But that's simply not true. Many many people program proficiently. The next time you'd like to flex your journalist-degree-muscles, make sure that your analogies actually make sense.

    ReplyDelete
  93. I suggest you try Smalltalk first, only 6 keywords. Objective-C is get's some of it's constructs/syntax from it.

    Or better yet try Ocaml - only joking!

    ReplyDelete
  94. This thought that programming is intentionally difficult to protect 'old school' programming jobs is ridiculous. Grow the f** up. Learn and practice if you want to good at anything; grocery shopping and programming included.

    ReplyDelete
  95. I'm GLAD that C is no longer the most popular language. I was getting sick of having to think one machine word at a time.

    The only things C abstracts away are the registers.

    ReplyDelete
  96. Given your admitted skill with HTML/CSS, you should seriously consider looking at ColdFusion. The creators developed it as the most rapid way to output content from a database, it was built as a tag based language so that it looked just like HTML.

    Originally owned by Macromedia, it's coming up on it's 10th iteration and its second since Macromedia merged with Adobe. It really makes difficult things very simple. Since it's built on the JVM, you can also run it side by side with Scala, Groovy, Clojure, and Java itself.

    ColdFusion also has extensive hooks for .NET objects, Exchange, Google Maps, Apache Solr, and more.

    ReplyDelete
  97. I'd be a doctor instead of a software engineer if it just weren't so darn hard!

    ReplyDelete
  98. You thought that you would find programming easy, a skill which people spend years of their lives and $thousands learning, because you know what you want the end result to be? It's been a long time since I read of such arrogance.

    A good programmer can become effective in a new language (of the same class) in a few hours to a couple of days, because syntax is by far the easiest part.

    "...learning C shouldn’t have to be a bottom up affair. I want to start with the big ideas and make my way down"

    Well you can't. That's not how reality works.

    "I can’t help but think a language founded by PhD’s suffers from the ‘shield of complexity’."

    That's incredibly offensive. There have been tens of thousands of new languages since, and very few are as popular. This is because C is among the best. Why do you think Apple, who have a clear interest in seeing as many good Apps in their store chose Objective-C in the first place?

    You don't seem to realise that the language you describe is a product that would make you a multi-millionaire... yet for some reason the huge conspiracy of academics is too strong for anyone to create it.

    "Can the complex branches of C be condensed into a series of objects which can be strung together using natural language?"

    That's what C is (for a given value of 'Objects').

    "I think so, but for the moment it’s far beyond my ability."

    You recognise you don't have the skill to do it. Why do you think you have a better ability to judge it's feasibility than the thousands of programmers and scientists who have worked on the problem for 40 years?

    ReplyDelete
  99. There is no short cut. Put in your 10,000 hours (or don't).

    Most developers get paid six figures precisely because the discipline demands so much. Learning the syntax of a language is the easiest part. It takes much more effort to grok the underlying concepts.

    I think you may have given up too soon. Everything (walking, talking, reading...) is difficult before it becomes easy. Give it another go with Python or Ruby.

    ReplyDelete
  100. LOL objective-C.

    Another aspiring mactard.

    Maybe you should've chosen a project that gave you the freedom to program in a language better suited for your abilities, rather than forcing yourself to learn a garbage language for the sole reason that you want to make garbage apps for a closed environment.

    You don't really want to program, you want money I imagine, and you think programming will give you access to the open wallets of the mindless masses who religiously purchase the latest iShiny.

    I think an earlier poster phrased it best when he said "Fuck you!".

    ReplyDelete
  101. Hey Chris,

    It's nice to hear that someone new is venturing deeper into this territory. One thing you should probably realize is that C (and Objective-C in many ways) is basically one step above Assembly, which is one step above byte-code. This is almost at rock-bottom, really close to the guts of the machine. Thus, it's probably not a reasonable expectation that C could be more comprehensible than it already is. FYI, I really enjoyed Anthony's reply even though it seemed a little sassy here and there. I would suggest taking other people's recommendations and trying a higher level language such as Python or Ruby. These behave a little more intuitively.

    ReplyDelete
  102. All programming, when you have the goal of a useful product, is hard, no matter what language you do it in.

    The fact that it is hard does go some way to protecting our jobs, but many billions of dollars in research have been spent in trying to make it easier, and it's much easier than it used to be (the internet was a distant dream when I started).

    As someone who regularly deals with software specs written in English by non programmers - natural language does not make it any easier, in fact, makes it harder, as most NL is riddled with ambiguities.

    The biggest problem is that non programmers do not have the experience in the rigorous thought process required to produce a software spec that is not full of holes and contradictions.

    If you think you can make it easier, you are going to have to master the art as it currently stands first.

    Trying to tackle it from the other side just aint gonna work.

    The emergence of Word, Excel, Publisher etc on desktop computers did not create a new generation of literary geniuses, brilliant statisticians, or gifted graphic designers - for the most part, it just meant that more people could make more crap with greater speed than ever before - the gifted ones can make do with a pencil.

    The language does not really matter, most working programmers can start turning out code in a new language in a few hours - is how you think about it that matters, that is hard, and requires years of practice.

    That being said, trying to learn programming on Objective C is just nuts...

    ReplyDelete
  103. Learn C instead of saying it's too difficult... Maybe you're just too bad.

    ReplyDelete
  104. What you're asking for would indeed be neat, but it's, well, awfully hard to create. Nobody's managed yet. People have tried, from Hypercard to more. It's really not becuase the geeks don't WANT to make it easy they want to keep it geeky -- plenty of computer scientists and geeks get fascinated by trying to create a programming environment that's powerful and flexible but still as easy as possible, often using the approach you suggest of putting together building blocks. It's just that, well, it's not easy to do that.

    There has been some limited success in creating such a programming environment in a very limited domain (rather than general purpose), I'm thinking of image processing or sound processing.

    ReplyDelete
  105. A non-programmer thinks programming is hard.
    News at 10.

    ReplyDelete
  106. string programming = "hard";

    if(programming == "easy")
    You would have a job;
    else
    You have to work like everyone else to learn it.

    ReplyDelete
  107. if you think C is hard, try this: http://en.wikipedia.org/wiki/Brainfuck

    ReplyDelete
  108. I'm not a programmer by trade. I work in other parts of science, but you really can't get away from programming at this point. I don't have a PHD or even a BS in CS, but by some act of god I managed to learn how to program. I've had to learn various scripting languages, real languages, and of course dabbled in HTML/CSS.

    HTML/CSS != programming

    I think a lot of programmers/readers began laughing when you whined about programming being too hard, and then polished your advanced degree from Berkeley. It is the same mental sigh we gave every time we heard you whine about your paper in psych while we studied for biochem. It really does reinforce our idea that you really can't hack it on our side of the fence.

    This article was was intellectually insulting even to a non-professional programmer. Programming isn't hard necessarily, you just have to be wired for logic. You are lazy, stupid, or both.

    ReplyDelete
  109. Honestly you may find more success in leveraging the talents of others instead of trying to master a craft in a matter of a weekend. Think about what you are really trying to accomplish. Maybe it is an iPhone app, but before you embark on your journey to the promise land ask yourself what skills do you best posses and can apply to the goal. Chances are you'll find your sweetspot somewhere more related to the promotion and evangelism of your vision. Find others to fill the skillset gap. Think of it this way. If everyone tried to become a pilot before traveling how many people do you think would actually go anywhere or for that matter even try?

    ReplyDelete
  110. Using your analogy to cooking.

    1) HTML/CSS is like instant noodles, chose your favorite flavor, boil water, add and you have ready dish.
    2) HTML/CSS whit JavaScript is just the same as point 1, but you add your own ingredients into it for better taste.
    3) Python and other hight level language, you get most of ingredients chopped and ready. Chose what you need, prepare anything that is not ready and then cook .
    4) C and other low level language. Go to grocery store buy all, necessary ingredients. Go back to kitchen, prepare them (wash, cut, make noodles from flour, eggs, water, etc. ) then cook.
    5) Assemblar. Go to field, cut down corn. Take corn, go to mill, make flour. Yey We have first ingredient. Lets prepare next. Etc.


    It's the same difference then between You and Chef. Even if You have the same ingredients, You won't make as good dish as the Chef, or maybe You even make something inedible.

    So pleas, change Your way of thinking or stay with Your instant noodles.

    ReplyDelete
  111. ObjC is possibly one of the worse languages to learn. There are many cleaner languages. This post is miss leading.

    ReplyDelete
  112. I didn't read all comment (I'm already in late...) so someone could already say that...
    First, you forgot that programming is a job which is taught. You said you have an advanced degree from Berkeley in Journalism, great, but there is nothing to do with programming. It's like saying "I'm a farmer, why is so complicated to become a singer ?".

    Programming is not so hard if you really learn it. Some people can learn by them self, others need a teacher to learn in the good way. I say "in the good way" because everybody can follow some tutos and get working a little piece of code, that doesn't mean there are programmers...

    Second, You said that coding should be like picking ingredients for a meal. But you miss something again.
    I can cook some meal (steak, chips, rice, potatoes, salads, etc...) but I'm not a chef. Becoming a chef need talent, it's far more harder to simply follow a recipe...
    In fact, a great part of coding is choosing the ingredients (libs, frameworks, languages used, etc...), but if you are not a chef, you'll fail the cooking and get something... humm... probably not eatable.

    Finally, you complain about C's complexity, but you forgot that C is close to hardware. Most of complex languages are closes to hardware. That's may be the hardware fault ? A language close to hardware have to interact with it, if hardware is complicated, language is complicated. Want an easier language ? Try high level languages like ... Javascript ?

    PS : Don't forget that everyone is different, some are scientist minded, other are literature minded (as I'm not English, I'm not sure that this sentence is understandable...), etc... You can't learning everything easily... Even in the same domain. A biologist may not be able to become a nuclear physician easily. That doesn't mean it's hard, that mean it's hard to him.

    ReplyDelete
  113. grocery stores...programming...that comes to my mind: http://en.wikipedia.org/wiki/Chef_%28programming_language%29

    ReplyDelete
  114. Hello,

    I also "can glue enough [words] together to solve almost any problem that has presented itself". Am I therefore a journalist ? No. Then why would you be a computer scientist just by gluing enough javascript ? Don't you know that there are universities and schools where people spend years to learn their job, which can be computer scientist just as journalist ?

    ReplyDelete
  115. Are you a journalist ? It's your job ? I am a developer, it's my job. Stay in your place, I stay at mine. Developper is a difficult activity that requires many years of study. Try a week and say "it's too hard" is very easy ! I never tried to write a newspaper artcile as you do when you work, but I think it's difficult. But I don't shout that it should be easier !

    Sorry for my poor english, I'm a french guy.

    ReplyDelete
  116. The purpose of C is not to let you code your little whatever application. C is a language thouight for engineers, to provide powerful features and top notch performance. Deal with it. There are plenty of easy to learn programming languages, so when you complain about C, you are actually saying "I don't want that other people, like for example engineers, use languages I'm not able to understand", and that's, for me, is to despise the very job of software engineers.

    ReplyDelete
  117. Programming is an art more than a skill.
    Even if you DO learn to program with the most commonly used libraries, its takes years of practice and learning to write really efficient, readable and reusable code.

    Objective-C in a week?? That's like trying to write a book in day. And I'm not exaggerating.

    Try to hire developers who have worked on Cocoa and objective-c.

    ReplyDelete
  118. When learning a new programming language, it's important to have something exciting to attack. I would suggest Project Euler.

    :-)

    ReplyDelete
  119. This article made me think of Inform 7 as well. The only problem is that Inform 7 code is an absolute nightmare to write. Parsers are just not at the point where they can understand natural language right now, so Inform 7 has to fake it. It's incredibly frustrating to write the same idea many different times, using valid English grammar, and have it be rejected by the interpreter because Inform 7 is not really natural language. Even short, simple sentences will trip it up. And unlike languages like C and Python, there's very little documentation or help available for learning the syntax, because it's "just like English". The documentation gives simple examples of how to do simple tasks; trying to do anything more than the very basic requires you to trawl the web for other people's source code to dissect and analyze. This is the result of people who had the same thought as you: create a 'natural programming language' that compiles down to a more formal language (Inform 6, or C), and it will be easier for beginners to understand. And of course, Inform is much simpler than C, since it is a domain-specific language. Any version of this for C would be inherently more difficult to create and to write. If you're committed to this idea, then I challenge you to try programming in Inform 7 for a few weeks, publish a short game, and tell us if you still feel the same way.

    We are not on a path of increasing complexity at all. For the vast majority of people, Python is easier to write than C is easier to write than Assembly is easier to write than machine code. jQuery and Coffeescript are easier than straight-up Javascript. But yes, programming IS a skill that requires some effort on your part to learn. HTML and CSS are easy because they're so limited; to express a much wider number of ideas, like in C, requires a more complex language. Even Python has more limitations than C, and I say this as someone who loves Python and finds writing C more than a little distasteful.

    ReplyDelete
  120. And just to be snarky, I would like to point out that any natural language code written by "Uncompetative" would not compile, even if the parsers could figure out how to parse correct English correctly.

    ReplyDelete
  121. I am a French engineer in computing science and I completely agree Anthony’s point of view. Cryptic languages are a nonsense: C, C++, C#, Java and so on.
    Some doubt? Just have a look to the well known Computerworld’s joke: http://www.gnu.org/fun/jokes/unix-hoax.html
    Any serious programmer should have read this book by Dr Bertrand Meyer http://www.amazon.com/Object-Oriented-Software-Construction-Book-CD-ROM/dp/0136291554
    A list of item to think about:
    - C (for Cryptic) based languages was created to be readable for compilers, not for humans
    - Complexity is better than simplicity
    - The ego of developers is a problem
    - “My development language is better than yours” (of course I use it)
    - What is a specification?
    - Too many programming languages? No, I guess we can lose a lot of effort and money to create a new language and compiler.
    - All developers know abstract data types
    The major advantage of the C language is to use keys of our keyboard we would never use otherwise! You can imagine a new e-bay category: second-hand C developer keyboard (keys &#{[|@°%µ§?} need to be replaced)
    I can hear your thoughts:
    - "Hey stupid frog! Which programming language do you use?"
    I use VB.NET because I think it is the “less worse” language. (Eiffel language is the best for me, but not usable in industry for now)

    You are not alone Anthony. It is easier for professionals: write a windows and web program to manage car rentals. A few technologies to know? (.NET framework, Windows client (XP to W7), Windows 2003 to 2008r2, TSE to RDS (Citrix like for non Microsoft users), IIS (web server), HTML/CSS javascript, AJAX, SQL servers (2005 to 2008r2), Transact SQL, security for all of these products, WPF, replication, reporting services + SAP Crystal Report…
    Don’t worry! A language for each product (slightly or completely different), it makes our life easier and we guarantee our software bug-free (free to wait a more mature science).

    Nota : HTML5 specifications will be completed in 2014 !

    -- Jerome

    ReplyDelete
  122. Your main objective, to plead for the coming of a more natural language for "normal people", is interesting.

    However, you unfortunately added childish and gross statements. You are a journalist and I am not. If I were laughing at your profession without knowing your constrains, what would you think of such an attitude? That's what you did with the creators of the "C" language: you do not understand why it is designed this way, you do not know what their constrains were and, yet, you did not hesitate to blame those people as vile scientists trying to jealously keep all that power for themselves. Either you were trying to create some buzz at their expenses, either it was, forgive me for telling the truth, downright stupid.

    Programming is complex because it manipulating 0 and 1 to create the rich digital environment we have today IS complex and not because we try to add complexity or because we jealously refuse to share this power. At worst, it may be because we are not ready to sacrifice our week-ends and invest thousands of hours and probably more (we're not "just" talking about a compiler) into the development of a simple, portable, programming platform. Or maybe because we are already too bothered trying to make our own tasks easier before we engage in trying to make it easier for the rest of you. Or maybe because you want something that is not possible (reducing the size of the API without sacrificing power) or because it cannot exist until computers learn to understand human language (a more natural syntax).

    So, rather than throwing premature, arrogant and disrespectful appreciations on a field you do not understand, why don't you try to write on this blog an example of what tool you would like to have? Maybe it will inspire some of us.

    ReplyDelete
  123. This is why many schools teach their programming curricula with languages with minimal syntactic issues, e.g. Scheme or Racket. More importantly, a small subset of Scheme (looking awfully like the lambda calculus---though students need not know this) is *semantically* also simple to understand. If you reach out a bit, you will find languages that might suit you better.

    ReplyDelete
  124. Guess what, lots of things are hard and can't be dumbed down for the masses to pick up in a week. If you want to learn to do something you need to learn patience and practice. You basically want to go off and run a triathlon before you have even learned to crawl.

    Programming is hard.
    Physics is hard.
    Advanced math is hard.
    Playing a musical instrument is hard.
    Writing a novel is hard.

    These are not things you are going to pick up and master in a week. You have to put a lot of hard work into learning new skills. What you are basically whining about is as ridiculous as if I expected to be able to pick up a guitar and be better than Jimi Hendrix.

    Also, if you are surprised by the negative comments maybe you should have thought harder before you insulted an entire field that people have devoted decades of time to mastering.

    ReplyDelete
  125. It interests me that a journalist is complaining about what boils down to syntax.

    Do you write articles without an expectation that you should understand grammar?

    Do you believe the complexity of grammatical rules brings nothing to writing?

    ReplyDelete
  126. What you're asking for is already given to you. I'm afraid that it can't get any more simpler than it already is.

    What you're asking for is like asking to make Calculus much more simpler for everyone to digest. Unfortunately, it already is simple enough.

    ReplyDelete
  127. Non-programmers not being able to program has nothing to do with the language. http://bit.ly/l43rxp

    ReplyDelete
  128. http://gamasutra.com/view/news/35148/Opinion_Designers_Are_Descriptive_Programmers_Are_Procedural.php

    This Gamasutra Article explains that you are a designer in search of a programmer, the work you need done isn't free.

    ReplyDelete
  129. Chris, you have to understand that programing is a real job. Not a simple hobbie for a lot of people who had transform this in their work.

    I'm a professional developer, I've studied during 6 years to do as well as I can my job. You can't just say "I want to learn a programming language" as you can say "I want to learn how to make apple pies".

    There are a lot of things to understand in each language to use it correctly. Keywords, behaviors, grammar, good practices and a lot of others things like why and how each point composing each terms I have write.

    If I want to be a reporter, I will begin by learning the basics and after I will take a lot of time to understand each things as I can. Ok, it will be boring but it's a job not a hobbie.

    In France, we've an expression about this type of situation. We speak about a sheep with 5 legs. The most known example is when you want about a webdesigner to be an HTML integrator and a web developer. Each one is a job, nobody knows how to do each one perfectly or correctly. As you when you hope to learn programming.

    Friendly,
    Math, from France
    (excuse my english please)

    ReplyDelete
  130. If you think C is hard, maybe you should try its grandfather assembly, or its grandfather Binary.I learned c++ in college and initially found it really easy. The syntax may be weird at times, and sometimes i may have gotten annoyed, but the hardest thing to do by far was actually make code work correctly.

    I would actually argue that programming languages are easier the way they are then a more English like syntax. If you make a language too English like, it takes 5x as long to write foo(x);

    Please understand this, programming is another language just like French, Spanish, or German. The biggest difference is that you are talking to a computer instead of a person. Because of this, you can't really translate between English and Computer. The C language and all languages like it are so popular because they work well and get the job done.

    One last thing i have noticed as i have programmed: I like languages that leave everything open to me, like pointers and such. To me, its harder to code when you don't have access to all the tools. A programmers job is easier with languages like C than it is with languages that are easier to read.

    Personally, I think the C languages are right were languages need to be. They are efficient and both readable at the same time. If code gets a little confusing, that's what comments are for. If a coder comments his code correctly, any other coder should have no problem reading his code. I started coding with Alice, Gamemaker, and Lego Mindstorms. Those are beginner coding platforms and they taught me the basics behind how code works. C is a language for professionals, not for beginners.

    Programming is not designed for the masses because its not exactly an easy thing to learn. Programming takes a different mindset to do, you have to understand what happens to the computer when you tell it so do something with code. If you wan't to learn programming, you either pick a language that is really easy to learn as has very limited features, or you pick a language that takes years to master but has everything available to you.

    ReplyDelete
  131. You're obviously not a programmer, and not much of a journalist either.

    You should seek a job with the FOX network.

    ReplyDelete
  132. Learning French or Mandarin or Zulu should also be easier. But is isn't.

    ReplyDelete
  133. "I am a proficient HTML/CSS developer" and i stop reading the shits that "developer" like you can write. HTML/CSS is not programming language and the fact that you can make for cycle in javascript dont make you programmer. Programming is about solving problems that you just write them in some syntax. And if you cant do that well then best of luck in your life. Have you ever try learning some other language then English? You will get the same problems when trying to write in C/C++ VB or any other programming language.

    ReplyDelete
  134. lern2python

    Also, not a bad post ;3

    ReplyDelete
  135. Why can't everyone fly planes? Why can't everyone be doctors? Why can't everyone do everything themselves?

    Funny, at 30 years old I am back at University, learning C++ and not really finding it that difficult, it just seems that programming in general and understanding code suits my particular skillset. If the same cannot be said for you, try something else perhaps?

    ReplyDelete
  136. Ugh. So many people making programmers look like assholes here. "Only a genius like me is worth to write code." "Anyone who's not a moron could pick up Objective-C in an hour or two." "Don't use Objective-C, use Python, even though it won't work on the platform you're writing for."
    C strikes me as a hastily thrown together language - not purposefully obscure, but not well designed for learning either. Products like the iPad, or a game like Portal 2, surely put a lot more effort into looking at how people instinctively interact with technology. If C had gone through a longer period of R&D, they might have found a way to deal with issues like 'if (a = b)' not doing what it looks like it does.

    ReplyDelete
  137. Brave of you to post this piece.

    Many years ago and with no prior programming experience, I thought I could pick up a couple of books on C++ and get to know the language.

    It didn't happen. It mainly didn't happen because I lacked context. Sure, I could understand there was a difference between ++i and i++. But not why there was a difference.
    In fact I'm still not sure I understand why :)

    Programming is not necessary difficult, but it does require that the concepts are understood. Start with an easier language and don't be afraid to cast about a bit before you find one your comfortable with. Do simple stuff first.
    Even learning Excel macros helps. You can record a macro in Excel and then examine the code that was generated.

    Buy books. Language help tends to be for reference. I.E. it will tell you the syntax and use, but not why you should use it. Books will help, multiple books on the same subject will help more as one author may utter the dreaded "beyond the scope of this book" just where it starts to get interesting.

    If you want to learn, make yourself a little rule and try to stick to it:
    "I will only copy and paste code into my project if I can understand what it is doing and why".

    Join some of the many forums around the web that cater for the language your learning..

    Lots of other posters have already said that programming requires great detail because computers are dumb. Your grocery analogy would be more accurate if shopping for groceries required the shopper to understand in detail how those groceries got on the shelf in the first place. And if you try low level languages, probably the genitic make-up of each vegetable or fruit.

    Good luck

    ReplyDelete
  138. Try a version of Basic, which was what got me through the fundamentals of programming when i was 11.
    The brilliance of the language is that it reads almost like plain english.

    C or even C++ is basically the same, just with other words for the functions. It has been condensed, a bit too make typing it up faster.

    If you don´t have a lot of patience getting started, I´d also reccomend the Starcraft 1 or 2 Editor, the scripting bits in particular, to get you off on a running start.

    MadMatty

    ReplyDelete
  139. What IT needs is a common ID source (a bit like barcodes), no language will simplify anything, what can greatly simplify things is a rich dictionnary that can evolve, and for that having numbers type IDs to which associated names can change is key, hearing "language" one always hear "grammar, syntax, structure, rules", but in the end the key thing is the dictionnary, and a flat administrative "adress" space for objects. IT needs to get out of the stupid boring AI dreams in order to get simpler, that is basically having to write less lines for the same thing, but writing these lines will always be complex, doing anything simple is never easy.
    More on this, only in French for now :
    http://iiscn.wordpress.com/about/

    ReplyDelete
  140. > Make a simpler programming language.
    Assuming, please wait...
    * simpler -> simpler than the currently simplest
    * simplicity -> inverse of complexity
    * complexity (programming language) -> number of operators
    * currently simplest -> TinCan (1 operator)
    * simpler (operators) -> 0 operators
    Assumptions complete. Making a language that is like TinCan but has zero operators...
    Operation finished in 0.0 seconds. Language syntax is as follows:

    >_

    ReplyDelete
  141. Now, I'm not a programmer, so I'll leave the language-based arguments to better minds than myself.

    What I take issue with is your assertion that a chef would 'naturally' not be a good geneticist.

    ReplyDelete
  142. I'd look at your grocery store analogy for a moment.
    Your ingredients are your libraries, methods, functions, and maybe programs that others have already written.

    Writing/cooking something following a recipe someone else has provided is easy. This is what you will normallly do when you go shopping. If you are a more talented cook then you may tweak recipes. Substitute ingredients.

    It takes an exceptional cook to be able to start from an idea of a dish and perfect it into a recipe. This is what programmers are doing.

    I understand enough about programming to know that I am not a talented programmer.

    ReplyDelete
  143. It's all Smalltalk.

    ReplyDelete
  144. I guess what you whnat is a domain specific language like HTML and CSS. Domain specific language is a language that is design to solve only one type of problems.
    HTML solves only one problem, it lets you create a structured text with hyperlinks.
    CSS also solves only one problem, it lets you select an element inside of HTML document and style it.

    These languages have a tiny level of abstraction.

    C is designed to create an abstraction above assembly language. It lets you express instructions and store data in human readable way. The domain for this language is pretty unspecific and that's why complex.

    ReplyDelete
  145. "C" & "C++" are deliberately obscurantist to an alarming degree.
    This engineered geekism costs the world billions of dollars each year in "leaks" that unlock doors for criminal burglars.
    "C" should have been shot at birth as a deliberately fabricated abortion.

    ReplyDelete
  146. Nice provocative post and good comments, but no, C or Objective-C programming can't be "like picking ingredients for a meal" or playing with Lego bricks, just to use another metaphor.

    Simply because it's a powerful tool requiring time to learn and hard work to master, as well as an humble attitude to approach the task, as Dijkstra told.

    ReplyDelete
  147. It's painful reading the sheer level of naĂŻvety in the above posts.

    As a professional programmer, I spend 90% of my time thinking about how I can make problems easier to solve / think about.

    The reality is ; abstracting the world is not a simple problem, and programming is an attempt at it.

    ReplyDelete
  148. Getting very tired of hearing people who are not good at programming wanting the languages to be made simpler. sigh. I find myself wondering if this attitude is related to the "everyone gets a participation prize" mentality in the education system.

    ReplyDelete
  149. Perhaps it's a Javascript developer thing? I started in Javascript, moved to PHP, Actionscript, C#, Java, C++, C... the last 4 were a breeze simply because I love C-based languages.

    Or maybe it's an Objective C thing. From what little I know, Objective C is pretty weird IMO.

    ReplyDelete
  150. "Michael Kingsford Gray said...
    "C" & "C++" are deliberately obscurantist to an alarming degree.
    This engineered geekism costs the world billions of dollars each year in "leaks" that unlock doors for criminal burglars.
    "C" should have been shot at birth as a deliberately fabricated abortion. "

    Ramblings of a small mind. This is equivalent to saying that guns kill people, when the real killers are other people.

    ReplyDelete
  151. Building software is hard: you have to get a lot of things right: specs, architecture, design, code, testing, usability, process, graphics, ...
    and all this must be maintainable, flexible to change, cheap, and be ready for yesterday. And it must be built by humans with emotions and egos...

    I agree that building applications should be like cooking, a little of this, a little of that, mix all that up, and there's your software. But the cookbook approach is not always appropriate, you don't want a nuclear plant, or a plane, to run on a software recipe.

    The cookbook approach would certainly be possible for simple data management applications, which is a high percentage of applications. We're going to see it in the near future, you have my word on it...

    ReplyDelete
  152. Just simply maybe, if it's too hard, just maybe you shouldn't be coding...

    ReplyDelete
  153. May be you should have stayed in Journalism. C was invented in 1970's and any sensible newbie who wants to code will stick to python/ruby or the like. If you are still itching try C# or Java. Leave C/C++ to grownups...

    This sentence irked me a lot:
    "I can’t help but think a language founded by PhD’s suffers from the ‘shield of complexity’. In other words, those who know it have little interest in simplifying it as it devalues their own knowledge."

    ReplyDelete
  154. Hi you are partly right and wrong in your blog. Right because you said programming need to be simple. The wrong part is programming language needs to be simple. Well I am a fanatic in the sense I try to use as much as tools as possible. I hate to write lines by hand. I always feel things should be auto-generated unless its the real logic.

    But at the end of the day i find that i am using most of my day finding tools which does the trick and i write very less amount of code.
    I code in java, and I also do web gui development. I reported lots of bugs and possible enhancements to Aptana studio to make it easy as dreamweaver and a good IDE for javascript. But I finally realized that I am the one who has to find logic to write program. It might take 2 minutes extra to write 10 more lines but it takes almost about an hour to think of logics to code. So I learnt that coding is not necessarily going to be easy even if the IDEs became intelligent or you use a higher level language.

    There is one more thing. If you think C is a complicated language then you are wrong. Its rather oversimplified which is its problem. For example for even string manipulations you need to use arrays of characters. So to make language simple to use you need higher level language not a simple language. C is dead simple. Again to use a language IDEs can help a lot to learn it, C has a big problem that such IDEs are not available.

    ReplyDelete
  155. Your tomato analogy is way off. There are several years of learning about tomatos that you don't realize you have. You already know how to analyze the ripeness of a tomato. You already know to remove the stem from the tomato if it is still attached. You know that it requies a relatively sharp knife to slice it correctly. You also know a how a tomato reacts to different methods of cooking both in flavor and texture/consistency. You know that garlic is often paired with tomato, but chocolate is not. Without realizing it you, have extensive knowledge of the tomato API.

    Now go watch an episode of "Worst Cooks in America" and see how horribly wrong things go for people who have not leared the various food APIs that you seem to think are so easy. Cooking well requires knowledge, skill and talent and so does programming. If you don't make any effort to acquire the knowledge and don't have the talent then neither of those activities will work out for you.

    ReplyDelete
  156. "I can’t help but think a language founded by PhD’s suffers from the ‘shield of complexity’. In other words, those who know it have little interest in simplifying it as it devalues their own knowledge."

    Fortunately, neither Kernighan, Ritchie, or Thompson had PhD's in computer science. You should try a language that was designed by a committee of computer scientists.

    ReplyDelete
  157. I believe these comments have gotten away from the really core issue summed up by one line” We need a programming language for the rest of us” I believe this with my entire core and for three simple reasons. Frist and most important, language has taken us from tree dwelling apes to the most dominant species on the planet. Second there is no question that computers are the future and that interacting with them is the most important skill of future generations. Third simply describe tasks still take a lot of code to solve.

    Language is important. Language is the bases of communication. Languages are based on each other to form truly complex relationships. The process of creating a language is sometimes magical, sometimes wonder, and sometimes horrible, having built a few I would know. My belief is that most languages surfer from the same problems. The major one being that a language is used to express your intentions but most popular languages of the day fail to do this for the common user. My intentions are no longer to write to a console, to build libraries, or perform mathematics. My intentions are to create web content, consume web content, etc. This is not to say that today’s languages don’t handle this case, they do and well, mainly by building libraries programmers have to consume. This is the root of the issue! At this point is no longer about the language and all about the library. Libraries are often large, complex, hard to use. The point and case of this is that I know dozens of programing languages but without their library’s they are meaningless. As well to make things even more stupid most libraries are just rewrites of each other in their language but often are implement differently to conform to the restrictions of the language.

    Computers are the future and anyone that doubts that has never truly been lost in digital land before. Although most people don’t believe so communication is a two way street both parties need to make an effort. We can’t simply solve this problem by waiting for singularity, when all computers will rise up and understand us, a much better path begins with us trying to meet computers part way.

    Simple tasks become lost in the digital world. Let’s look at me teaching my friend to program for the first time. All she wanted to do was rename a few dozen files, a simple task. Yet I had to teach her about IO, File System, Regex, Strings, and the list goes on, not necessarily simple topics.

    So what can we conclude? That programing is hard, well not really. The open line of “We need a programming language for the rest of us” is a statement that opens up a can worms as seen by these posts with most commenting on one languages or another. But as I have outlined here I don’t feel one language over another solves this issues. We should instead be thinking about how to make libraries more like the language, or language more like the libraries, thinking about how to bring the web into languages with the same amount of kick ass as we have come to expect from the console, thinking about a language that meets computers and humans half way.

    ReplyDelete
  158. After reading this post,I must say that C is the most beautiful language of all times.If you start learning programming and you talk about computer programming,you should start with C because this is the real language.Fast in performance,very much like low level languages.It gives you the feel of real programming.

    ReplyDelete
  159. For the part where you are comparing vegetables and preparing meal, as IT engineer student I'd say this is the exact way it is. All these C, Objective-C are high level language - a tomato. The machine language, ASM, or even lower - transistors, the silicon, this is the structure and molecules of a tomato. Nobody 'cooks' using the machine language nowadays. Everyone takes a tomato like Objective-C and efficiently writes their application. But same like in cooking, first of all you have to learn how to cut the tomato and what ingredients to use with it in order to accomplish what you want to 'cook'. And that requires practise and proper tools to 'slice' it. Anyway, I hope you got my point.

    ReplyDelete
  160. I know I am echoing but Python is most definitely a language you should check out. I am a computer scientist who understands the need for C/C++ and lower level languages, but admires how Python was written and loves using it because I feel it is much more maintainable and humanly readable (plus the standard library is pretty well designed)

    ReplyDelete
  161. Well thats why it takes 4 years in a college to learn C and then you can write device drivers with it.
    C was never supposed to be simple it was a the next milestone after assembly. Some poeple dont call it a high level language they call it mid level language

    Having said that what problem do you wan to solve I will be surprised you need C for your work, once you get into it there are bigger problems like memory management and task scheduling and they need understanding of the OS.

    So why not stik to VB or one of the toy languages made by MS for playing.

    Dont do .net it will be difficult for you..

    Further I would suggets you should talk to some people who know about language design before you say C is difficult, once you know enough about things like OS, algos and so on it is a powerful language and if you cant or dont wanna learn these things then play with a language with higer degree of abstraction

    ReplyDelete
  162. 1. Objective-C and C are two completely different languages.
    2. If you are making an iPhone app, there are utilities that allow you to build them in a .NET language like VB which is easier.
    3. C is tough to work with for someone who only knows javascript and does not understand programming. This is a case of using the wrong tool for a problem. It would be like using a screwdriver as a hammer. You can try to hammer the nail with the handle, but you would be much more effective and efficient if you just use a hammer. I found VB to be a good starting language but now I am fully a C# fan. It took four years of college and 1+ years of actual industry experience before I even began to tackle C (as well as assembly). The other posts are right in saying that if all you want is a simple little business app, C is not the right language and Objective-C is probably not right either.

    ReplyDelete
  163. Wow, so many comments. If you like the grocery shopping analogy approach to programing, look at any "language" not as a language, but a recipe for a meal.

    Just with cooking, I can get sweetness from a bunch of different sources; wine, honey, sugar cane, derivatives of fruit and vegetables, etc..

    The "language" of cooking is the understanding of the nuances and effects of each ingredient. Knowing the ingredients in a recipe is not the same as knowing the context of the ingredients in the recipe.

    ReplyDelete
  164. Lol...This article is idiotic.

    No wonder you find programming impenetrable.

    As a 20+ year software engineer, I don't know what is more insulting. That you think programming is intentionally obfuscated, or that you appear to be suggesting that programming at it's core is easy, but for language syntax.

    So by your "logic", given 10 monkeys, 10 typewriters, and 15 minutes, they should be able to pound out an article at LEAST as logical and insightful as the one you wrote.

    As so many others have written, the world is full of pursuits requiring great skill/knowledge and experience, which address both the necessities and wants of human existance. Surgery for example, is a pursuit that addresses a necessity, while the ability to play a piano concerto, addresses a want.

    The thing they have in common is that BOTH require years of learning and experience to be good at them. Yet, there are no simpletons suggesting publicly, that either are "artificially difficult", or should be made easier, so as to be accessible to the lay-person, who is either too lazy, time-constricted, or just doesn't posess the ability to learn the skill.

    After reading this article, it strikes me that maybe journalism is "artificially difficult", if this article is the best that someone possessing an advanced degree, from a renowned university, is capable of writing.

    ReplyDelete
  165. This seems like a tone-deaf person complaining about Bach's musical notation ... I think it's noble to try to achieve something against your handicap, but if you assume this kind of life, you should only report breakthroughs, otherwise it will only be just one of a the billion pitiful reports on self-delusion.

    ReplyDelete
  166. I'm not a journalist, so I don't know how to write good news. It's your job.

    You'r not a programmer, so your don't know how to code. It's my job.

    Sound logic, no?

    ReplyDelete
  167. you ae clearly writing an iphone app. you know html, css and javascript. then, stick to what you know, and write a web app using those technologies. don't use a steam powered drop hammer to crack a nut, and then complain that the drop hammer needs a 4 year apprenticeship and a couple of days of setting up when the nutcracker you just squeeze.

    plus... c IS simple, if you can break your problem down in to REALLY simple parts. i learnt to code on 68000 ASM, and so now i seriously love .NET :)

    ReplyDelete
  168. C is a very low-level language, a thin wrapper around assembler. It's not intentionally hard, it's hard because you're talking almost directly to a computer, and computers are stupid. You need to spell everything out for them.

    JavaScript is easy because it makes enormous sacrifices, mostly in terms of performance and type safety, in order to be easy.

    I'm comfortable with C and other statically-typed languages, but Objective-C is total gibberish to me. If I took the time to learn the syntax, like others have said, I would find that it's the easy part.

    Regardless, Objective-C is a niche product with niche applications that requires a niche (Apple) mindset. I doubt many lessons about programming can be derived from its use, especially if the only other language you know is JavaScript.

    ReplyDelete
  169. I felt the same way in uni, just the other way around. I learnt Java first and then C. I had no idea what I was doing in Java. While working with C it all started to make sense. I wish I learnt C first so that I understood the fundamental architecture and the hardware mapping that happens in all program execution better.

    ReplyDelete
  170. Why couldn't God make genetic coding easier? I want my laser eyes dammit.

    ReplyDelete
  171. Many of the programmers on here have in programming skills what they lack in social skills or an awareness that all things change.

    You are quite right to suggest that there needs to be a better way, but most of the guys on here are horse and buggy engineers, they can't see the car coming or the telephone or anything else the real world might need. They are the guys most of the company hates, because they cost a lot of money, always stop anything new where they can and generally live in a vacuum. Corporate and education programmers. They have invested in what they know and see no reason to make it obsolete, unless it obfuscates their job and somehow makes them more "invaluable" to a corporate world that would happy like to live without them.

    But someone will do what you want - there is always someone who doesn't follow the mob.

    That's how we have got as far as we have, otherwise we would all still be punching cards and writing assembly.

    Hang in there with your learning and pay no heed to those who would claim to be better. Those who are better at something have no reason to broadcast it.

    ReplyDelete
  172. Absolutely right!! Times are over when people are interested in what type of code you write, as long as it's clean and commented, the simpler the language the better a programmer enjoys their work!

    ReplyDelete
  173. A related article.

    Programming with Natural Language Is Actually Going to Work November 16, 2010

    http://blog.stephenwolfram.com/2010/11/programming-with-natural-language-is-actually-going-to-work/

    ReplyDelete
  174. thanks for writing this article, with all those in-depth answers I'll know how to point to for the next whining guy, those contains great explanations and references…

    oh, and for a deliberately obfuscated language, look at this list http://en.wikipedia.org/wiki/Esoteric_programming_language

    those where meant to blow your mind more than doing anything useful

    i'd recommand
    http://en.wikipedia.org/wiki/Malbolge
    for complexity

    and
    http://en.wikipedia.org/wiki/Piet_%28programming_language%29
    for neat and graphical (not in the way you want).

    ReplyDelete
  175. Believe me, I learned C and C++ on my own in 2 years, Yes I am familiar with templates, Exception handling, function objects, pointers, binders, containers and iterators as well as features on OOP supported in C++ such as polymorphism(compile-time and run-time), inheritance, encapsulation and abstraction. Further I like the C/C++ syntax more than, say, any natural language. I dont have any advanced degree in maths or computer science. People have to accept that programming is not everybody's cup of tea and stop complaining about languages being to hard to learn. Instead if you find it difficult, move to something else. Its just like asking : "If the military can have huge warcrafts, why cant we have jet fighters ?"

    ReplyDelete
  176. @ Tim B
    "abstracting the world is not a simple problem, and programming is an attempt at it. "

    This is the common sentence that reflects a common problem with IT guys thinking : IT doesn't "abstract" or "model" the world at all !! (except maybe for climate modeling software and the like)
    What IT does is that it WRITES some ARTEFACTS that constitute part of the world, and especially part of humans interaction environement THAT IS ALL !! No "modeling" at all there, WRITING

    ReplyDelete
  177. The ability to code isn't something everyone is entitled to. If you can pick up a measure of proficiency through training, huzzah for you. If not, move on to something else you are good at. I'm tone-deaf & would give my right arm to be able to belt a tune, but if I can't make it past a certain point I'm not going to demand an entirely new system of music to suit my level of aptitude.
    If you want a simpler programming language, go write one.

    ReplyDelete
  178. I agree, I've been attempting to teach my self how to program for years with not much luck. Takes me hours to figure out a problem and then the code looks ugly. So I have always wanted a more natural language programming. So I decided to somehow create one, it'll take years or never but I've created ablog about it. I've neglected it because of certain health issues but expect to get back to it soon.http://thegreatproject.wordpress.com/

    I've got just the basics right now but check it out if you like.

    ReplyDelete
  179. There's a whole slew of easy languages out there... Ruby for example... And when it comes to mixing and matching, Microsoft .Net and Java are world knows platforms for that purpose... Even Objective C is powered by a grand barrage of libraries... So what are you talking about? C is a language made for huge projects (100,000,0 lines of code), and it fulfills the objective. I don't think C or other programming languages are unnecessarily complicated. Pascal, QBasic, and Java have been languages of choice in academia for ages.

    ReplyDelete
  180. "C is a language made for huge projects (100,000,0 lines of code)"

    What ? C is C, its main characteristic is providing you almost direct access to memory locations, at your own risk, that is all.
    Besides, there is absolutely nothing to be found in any new computer language or syntax, the key point is the dictionary and the necessary shared IDs flow to be able to make it evolve, as discussed below for instance :
    http://groups.google.com/group/comp.lang.lisp/browse_thread/thread/1b182a31305bf0b9#

    ReplyDelete
  181. Or to be more precise, any new computer language is another concept in this dictionary, important for sure, but not necessarily more or in anyway "above" others, and improvments or rewriting can occur there as in other parts.

    ReplyDelete
  182. @Daniel D

    "Many of the programmers on here have in programming skills what they lack in social skills or an awareness that all things change."

    From a guy to obtuse to see that he is responding in the same manner as those he tries to accuse of lacking social skills, I find your lack of SELF awareness and grasp of hypocrisy, hilarious.

    "You are quite right to suggest that there needs to be a better way, but most of the guys on here are horse and buggy engineers...they can't see the car coming or the telephone or anything else the real world might need."

    More ineffectual whining. Yeah .Net, LAMP technologies, AJAx, JQuery, Web Services, etc. are so 1960's. The fact that .Net languages,Java and web technologies are light years removed from ASSEMBLY obviously proves that developers are a dynamic bunch accustomed to constant change in our industry.

    At first, I suspected that you might possibly be a programmer, but your lack of knowledge about what's actually going on in the field makes that suspicion implausible. If you really WERE a developer, you would know that languages are constantly changing, and getting "easier", and that although there are a few dinosaurs who refuse to get with the program (pun intended), most of us embrace change and are constantly learning and upgrading our skill sets. Otherwise, as you ironically stated, we'd all still be programming in ASSEMBLY and punching cards.

    "They are the guys most of the company hates, because they cost a lot of money..."

    Naked jealousy is all this is. I suspect, not unlike hospital janitorial staff grousing about "arrogant" and expensive neurosurgeons living in their "ivory towers".

    "...and somehow makes them more 'invaluable' to a corporate world that would happy like to live without them."

    Lol...Ok, I get it. You are probably some kind of "manager" whose annoyed because programmers are not like the clerical staff, or widget makers that you can underpay and threaten with job loss, because there are 10,000 people in line to do their jobs.

    Ha! I'll bet that even YOUR employment is at best tenuous, and you yourself are eminently replaceable.

    You could make a very nice bourdeaux or Pinot Noir with all of your sour grapes. :-)

    Oh, and I am not fooled for a second by your attempts to imply that you're a developer. No self-respecting developer would heap the scorn on his profession and colleagues as you have...Unless of course, he was one of those "horse and buggy engineers" you spoke of, who couldn't keep up with the pace of change, and was either run out of the profession, or is of marginal value in todays developer market.

    "Those who are better at something have no reason to broadcast it."

    Right. All the developers and engineers here "broadcasting" their opinions, are just as mystified by programming as the article writer.

    The point, if you would take a minute to use your logic-challenged comprehension, is that some pursuits are HARD/DIFFICULT/COMPLEX, and that inherent complexity can only be abstracted away, only so much. It's stupid to complain that something that's inherently hard to do, is hard to do.

    We don't read any silly articles complaining that brain surgery, or flying a plane is too hard. Yet, we should just quietly accept this devaluing of our talents and profession from the likes of a journalist, and someone like you?

    Please. Next time, you'd do better to just write "I agree", instead of spewing a nonsensical rant.

    ReplyDelete
  183. I believe these comments have gotten away from the really core issue summed up by one line” We need a programming language for the rest of us” I believe this with my entire core and for three simple reasons. Frist and most important language have taken us from the tree dwelling apes to the most dominant species on the planet. Second there is no question that computers are the future and that interacting with them is the most important skill of future generations. Third simply describe tasks still take a lot of code to solve.

    Language is important. Language is bases of communication. Languages are based on each other to form truly complex relationships. The process of creating a language is sometimes magical, sometimes wonder, and sometimes horrible, having built a few I would know. My belief is that most languages surfer from the same problems. The major one being that a language is used to express your intentions but most popular languages of the day fail to do this for the common user. My intentions are no longer to write to a console, to build libraries, or perform mathematics. My intentions are to create web content, consume web content, etc. This is not to say that today’s languages don’t handle this case, they do and well, mainly by building library’s programmers have to consume. This is the root of the issue! At this point is no longer about the language and all about the library. Libraries are often large, complex, hard to use. The point and case of this is that I know dozens of programing languages but without their library’s they are meaningless. As well to make things even more stupid most libraries are just rewrites of each other in their language but often are implement differently to conform to the constants of the language.

    Computers are the future and anyone that doubts that has never truly been lost in digital land before. Although most people don’t believe so communication is a two way street both parties need to make an effort. We can’t simply solve this problem by waiting for singularity, when all computers is rise up and understand us, a much better path begins with us trying to meet computers part way.

    Simple tasks become lost in digital world. Let’s look me teaching my friend to program for the first time. All she wanted to do was rename a few dozen files, a simple task. Yet I had to teach her about the IO, the File System, Regex, Strings, and the list goes on, not necessarily simple topics.

    So what can we conclude? That programing is hard, well not really. The open line of “We need a programming language for the rest of us” is a statement that opens up a can worms as seen by these posts with most commenting on one languages or another. But as I have outlined here I don’t feel one language over another solves this issues. We should instead be thinking about how to make libraries more like the language, or language more like the libraries, thinking about how to bring the web into languages with the same amount of kickass-ness as the console.

    ReplyDelete
  184. @Jamie

    Ok, for the most part I get what you're saying, but couldn't this be said about most of life's complex necessities?

    Example. Everyone over a certain age drives a car. Shouldn't diagnosing and fixing engine problems be "easy"? How about building a automobile engine "for the rest of us"? Or an airplane that the "rest of us" can easily fly?

    What about law? Surely you'd agree that in this overly litigious world, society could benefit from making the practice of law "accessible to the rest of us". Right?

    So my question is why MUST the profession of programming/software engineering/development be commoditized, and made accessible to the masses, but not other things that are as necessary, if not more to living in today's world?

    Seriously, I'd like to know?

    Lastly, I disagree with those who state that programming isn't hard. Programming requires the ability to think on a level of precision, abstraction, and exactness, not widely attainable by the masses. And that's just understanding the language concepts (syntax, object orientation etc.). Add analysis, architecture and design to the mix, and you might as well be trying to teach astrophysics.

    Most people get by fine being unable to program, and it generally doesn't cost them an arm-and-a-leg when that inability is an impediment to some task they're wanting to accomplish. Unlike the budget-busting, job-loss causing, bankruptcy-inducing, potential of an unexpected major auto repair, or legal trouble.

    With so much more good that could result from directing this simplification effort towards other fields/professions, I can't help but feel that there are ulterior motives and an agenda at work.

    So I ask again, why programming?

    ReplyDelete
  185. Excellent post this is a great help to others…

    ReplyDelete
  186. I am a seasoned developer with over 30 years of programming experience and have seen languages come and or evolve. I am amazed how many comments to this post defended the status quo and the obscurity of programming technologies. They fail to see how the implementation models most languages use create cognitive friction that is unnecessary and does not serve anyone. Seriously” How do obscure models and conventions like “delegates”, “Lambda expressions”, “singletons” to borrow a few from C#, make my life as programmer better?

    Statements like (and there ere many of them) "..an absolute beginner naively lacking any historical context for the craft he is learning" in my view are just mental masturbation and don't see the opportunities to make their craft easier, more accessible, and allow me to focus on what really adds value – solving problems and crafting solutions. They also miss the more important opportunity of making the products and services that are the result of applying programming much friendlier for the customers that have to use them. When programming languages are created to more closely match the real world cognitive models of humans, they will better serve everyone, including the poor users that have to use the products in which they are used. Recommended reading: “The Inmates Are Running the Asylum: Why High Tech Products Drive Us Crazy and How to Restore the Sanity” by Alan Cooper.

    ReplyDelete
  187. Kudos, Chris, on generating such a discussion. Thanks for posting. A successful blog post to be sure.

    I've been a software developer for over ten years, and I'm surprised at the majority of these comments. David Heinemeier Hansson, who created Ruby on Rails, created Rails to take the pain of development away and make programmers happy. He felt the same way you do and became incredibly influential in the process. You are in good company. I agree, the industry has a long way to go towards lowering the barrier of entry into programming.

    ReplyDelete
  188. Interesting read! I am one of those PhDs that you talk about. We do make things prohibitively complex, it is true. And there is a reason for this.

    We always get a few 1st-year students that are in your position; a depth of self-taught web and perhaps something like VB (which is jokingly referred to in-department as 'Venereal Basic'), who find the C assignments surprisingly difficult. But, initially anyway, these students tend to write appallingly badly structured and inefficient programmes because they are taking a top-down view of the problem, and ignoring what's actually happening at the core level (registers, memory, pointers, commented code, goto statements and loops). So, it's really quite beneficial to teach people the long way from the bottom up - understanding the dirty fundamentals first as it were is very handy for developing a broad understanding of the problems involved and making better programmes at any level.

    But - I think you're onto something with the natural language approach. I think that was actually the design intention behind C - to break down logical statements IF the thingy is TRUE then...DO this - with some extra brackets and things. But you're talking about a higher-level still - then you open a big can of worms because English is logically ambiguous - an English statement can mean several different logical expressions. Which one do you choose? And can you decide bases on context or something still more complicated? Perhaps you have a toolkit of different pre-defined expressions, and the user drags them into place?

    http://www.twitter.com/capnramses

    ReplyDelete
  189. This course is amazing!! At least, for people like me who need grammatical explanations to function. I’m working through French in 3 months and it’s been amazingly helpful in figuring out what’s going on in the language.

    ReplyDelete
  190. Look into MIT's Scratch project. It's designed for kids to build web applications and even takes a Lego-like approach to ensure that things don't fit together unless they are supposed to go together. It's been enormously successful. I the "rest of you" will be able to pick it up considering 7 year olds do and 13 year olds are starting online companies with it.

    ReplyDelete
  191. This "article" is so worthless and pathetically preposterous that I feel vaguely nauseous.

    "C is a very low-level language, a thin wrapper around assembler."

    No it is NOT.

    Repeating this non-sens again an again does not make it true.

    But peoples who believe that make buggy code and vulnerable linux kernels (think null dereference).

    ReplyDelete
  192. ... You should go back to play with your cars toys...

    ReplyDelete
  193. We are anonymous.
    We are a legion.
    We do not forgive.
    We do not forget.
    Expect us...

    An0nyw0us

    ReplyDelete
  194. C, C++ and Objective-C are some of the worst languages in the planet. Anyone who uses those languages and seriously considers academic education of today to be helpful for those $20,000+ dollars and on is the saddest, biggest and most pathetic people that disgrace this planet. C++ has too many useless tools overlayed on top of a highly-simple structure. C itself is the nazi-ancestor of C++ and Objective-C is a language that only mentally ill retards or hopeless, foolish humans would ever logically and realistically consider. Those and Java is pretty horrid as well. If you want a good and REAL programming structure then you need to start from the ground up like a REAL programmer and work with bare bones computer science algorithms, machine opcode and low-level languages that aren't half-ass like C++ and so on.

    ReplyDelete

Twitter

Recent posts