Technology Review - Published By MIT
Advertisement

New Languages, and Why We Need Them

Creators introduced the programming languages that they hope will revolutionize computing.

By John Pavlus

Monday, July 26, 2010

smaller text tool iconmedium text tool iconlarger text tool icon

Creators of two dozen new programming languages--some designed to enable powerful new Web applications and mobile devices--presented their work last week in Portland, OR. The reason for the gathering was the first Emerging Languages Camp at the O'Reilly Open Source Convention.

Go getter: Rob Pike, an engineer at Google, and inventor of the language Go.
Credit: James Duncan Davidson

The designers included hobbyists eager to flex their development muscles, academics hoping to influence the next generation of computing, and researchers from corporations like Microsoft and Google who want new tools to address evolving applications and infrastructure.

In dense 20-minute presentations, designers shared details of their embryonic languages. What all the designers had in common was a desire to shed decades-old programming conventions that seem increasingly ill-suited to modern computing--a desire shared by the tech industry at large. "There's a renaissance in language design at the moment," says Rob Pike, an engineer at Google and codesigner of Go, a programming language being developed at the company. "And the biggest reason for it is that the existing mainstream languages just aren't solving the problems people want solved."

One of those problems, of great interest to large enterprises like Google as well as Facebook and Amazon, is how to manage the exploding complexity of distributed, multicore computing platforms like data centers and cloud networks. Google's Go language was unveiled in late 2009 for this purpose as an alternative to C++, which, according to Pike, does not allow programmers to easily take advantage of modern parallel computing architecture. "C++, which is the main systems language at Google and a lot of other places, is essentially 20 years old now," Pike says. "Many of the things we understand now about hardware and networking--and how they're changing software design ideas--haven't had a chance to affect the design of that language."

Story continues below


On Google's scale, Pike and his teammates found that C++ limited productivity by taking minutes or hours to compile. (Compiling is the process in which human-readable source code is batch-translated into binary "machine language" that a computer's CPU can execute). Go reduces redundancies in the compiling process, which means that "programs can be ready to execute in a matter of seconds," says Pike. Pike doesn't think that Go will push aside C++ as a dominant language; "we just thought it needed some competition," he says, but adds that Go is already being used on "real projects" internally at Google.

Another evolving area of computing concerns programs running on mobile devices linked in "ad hoc" wireless networks. AmbientTalk, an experimental language presented by Tom Van Cutsem from Vrije Universiteit Brussel in Belgium, explores a new paradigm called "ambient-oriented programming," which departs from traditional distributed computing in two main ways. First, it does not rely on central infrastructure. Second, it assumes that network connections are volatile and unpredictable (as is usually the case with mobile devices passing in and out of range with each other). According to Van Cutsem, "AmbientTalk is smart enough to buffer messages so that when the connection drops, they're not lost, and when the connection is restored, it sends the messages through as if nothing happened."

Comments

  • Every generation says the same thing
    One person's complexity is another person's solution.   For example, in pursuit of cross-platform support, Java has proven quite productive and has been neither static nor stale in its evolution.   C++ to Objective-C, they too are industrial strength languages requiring skilled programmers.   

    I wish the Go language team the best but I think they'll be climbing the same hills, crossing many rivers and facing many of the same issues that have been solved already.   When systems run reliably across platforms, that's progress.   Java continues to prove invaluable to many developers across many platforms. 

    Where I personally see opportunity for productivity is in higher level tools for allowing non-programmers/designers to express their user ideas and UI prototypes as a specification for professional programmers to start from.   And not just screen builders but real interface builders with simulation modes.  One of the best examples was the original NeXT Interface Builder.  It was definitely a step in the right direction.  

    So there is still plenty of room to enhance and evolve the current generation of IDEs.  Again, it really depends upon where you believe developer productivity and quality intersect.  




    Rate this comment: 12345

    rslove
    07/26/2010
    Posts:1
    Avg Rating:
    4/5
  • Stealing names
    I might feel more sympathetic for Google's Go if they did not stoop to stealing names.

    As Rob Pike knows, I had a programming language called Go! long before Google did. And they refuse to change their name.

    Well, I will not forget. And nor should Technology Review.
    Rate this comment: 12345

    fmccabe
    07/26/2010
    Posts:1
    Avg Rating:
    3/5
    • Re: Stealing names
      is your language alive and well somewhere?  Why not put up a link to it.
      Rate this comment: 12345

      dnmurphy
      07/26/2010
      Posts:2
      Avg Rating:
      4/5
    • Re: Stealing names
      1) G and O are the first two letters of Google.
      2) "Go!" is different from "Go".
      3) Go is also the name of a famous game which predates Go! by thousands of years.  The Google developers probably want to make a comparison:
         * Go (the game) allows players to indirectly control large areas of the gameboard using a few playing pieces in subtle ways; while
         * Go (the language) allows programmers to indirectly control many internet-linked machines using a few commands in subtle ways.
      It's a bunch of hype, of course, but they are entitled to it.
      4) How can "Go" be stealing your thunder when you haven't got any thunder?  Would you be content if Go's website put a link to a Go! website?  You should, because it could only help you.  Right now, Go! is dying a slow agonizing death.
      Rate this comment: 12345

      dmm
      07/28/2010
      Posts:253
      Avg Rating:
      3/5
  • compile times
    If compile times are the issue as purported, then thats a compilers fault not a language/syntax fault.

    Are these level 3 or level 4 languages?

    It sounds like level 4 to me, dealing with abstract concepts, like python in a type-insensitive manner.

    I doubt their languages will have half the power a C program will but it will be easier to write with them on specific issues.

    C is extensible so incorporating parallel processing could be simple with additions to the language.

    I dont see a need to constantly create new languages just because people cant be bothered to extend it. C was entended several times based on demand and seeing as its the best control language ever invented, why dont people just ask for it to be extended again. Not so hard is it?

    I dont like type-insensitive languages like python myself. It certainly doesnt help determinism by adding a layer of "who-cares" to a language. But for fast prototyping where it should remain and never be used passed revision 0.9 it seems qualified.
    Rate this comment: 12345

    mattgroom
    07/26/2010
    Posts:199
    Avg Rating:
    2/5
    • Re: compile times
      I agree with you there. The main argument they presented for the Go language is that compile times are non-existent. Call me crazy, but I think large companies will favor efficient code over more code (which is where the productivity factor comes in). Besides, what excuse will programmers have to goof off if their programs don't need to be compiled anymore?
      Rate this comment: 12345

      rsanchez1
      07/26/2010
      Posts:136
      Avg Rating:
      3/5
      • Re: compile times
        Most mainstream companies will favour systems where quality code can be developed quickly and bug free, with few or no unknown side-effects, and which is adequately performant for their particular need.  They will also consider how easy it is to recruit reasonable people to do the coding.

        Anyway, when you can change and recompile in seconds the tendency is to use the compiler to catch your errors instead of focusing on well thought out code.
        Rate this comment: 12345

        dnmurphy
        07/26/2010
        Posts:2
        Avg Rating:
        4/5
  • programming as a video game?
    I don't think this idea will get young kids interested in programming. They'll assume programming will be video games, and when they get down to the nitty-gritty of modelling data and designing algorithms to work with that data, they'll be disillusioned and move on to another video game.
    Rate this comment: 12345

    rsanchez1
    07/26/2010
    Posts:136
    Avg Rating:
    3/5
    • Re: programming as a video game?
      Yes, just like kids that want to be architects and engineers play with Legos & Lego Mindstorms find out its not all Legos and don't want to be architects and engineers anymor, or kids that play flight simulators and driving games lose interest in planes and cars when they find out reading is involved, and kids that want to be doctors find out its not playing "Operation". 

      /end irony
      Rate this comment: 12345

      JFrazer1
      08/18/2010
      Posts:4
      Avg Rating:
      5/5
  • Need correct programs
    The next evolutionary stage will be a methodology and language(s) to design and implement correct programs. Probably a very high level formal specification language and a related implementation language.  Programs must be correct by construction, not tested and hacked until sort of works.  Daily software updates is massive Fail.
    Rate this comment: 12345

    Randall.Ne...
    07/26/2010
    Posts:1
    Avg Rating:
    5/5
    • Re: Need correct programs
      I'll second that.  Software is in a very early state of evolution. It is so full of problems that as a practical matter most development time is consumed in resolving problems in the supporting software (e.g. Windows) and of course our own mistakes.  I speak from 40 years of programming experience.  We do desperately need reliable software to move on in robotics and many other practical fields such as security.
      Rate this comment: 12345

      TooMany
      08/01/2010
      Posts:79
      Avg Rating:
      4/5
  • Why I Hate All Computer Programming Languages

    That's All I Want to Do

    I hate computer languages because they force me to learn a bunch of sh!t that are completely irrelevant to what I want to use them for. When I design an application, I just want to build it. I don’t want to have to use a complex language to describe my intentions to a compiler. Here is what I want to do: I want to look into my bag of components, pick out the ones that I need and snap them together, and that’s it! That’s all I want to do.

    I don’t want to know about how to implement loops, tree structures, search algorithms and all that other jazz. If I want my program to save an audio recording to a file, I don’t want to learn about frequency ranges, formats, fidelity, file library interface, audio library interface and so forth. This stuff really gets in the way. I just want to look into my bag of tricks, find what I need and drag them out. Sometimes, when I meditate about modern computer software development tools, I get so frustrated that I feel like screaming at the top of my lungs: That is all I want to do!

    You can read the rest of the article at the link below if you're interested in the future of computer programming.

    Why I Hate All Computer Programming Languages
    Rate this comment: 12345

    Mapou
    07/26/2010
    Posts:211
    Avg Rating:
    2/5
    • Re: Why I Hate All Computer Programming Languages
      The problem is not the language.  The problem is that no one can agree on how to do things one way, so you wind up with multiple ways to do similar things to platforms or devices that have different interfaces, using multiple "standards".  In many cases, patents require designers to implement things differently, so that they don't violate someone elses patent.  In others, even the same person can't decide whether to use one method or another, because they each have advantages in different situations.  And finally, everyone seems to think he/she has a better way of doing things, so invents a new language or a new interface.  The only solution, other than people actually trying to cooperate, is a dictatorship of sorts, usually set up by monopolies.  If you want to see the results of that, watch the movie "Brazil".
      Rate this comment: 12345

      sorgfelt
      07/27/2010
      Posts:12
      Avg Rating:
      4/5
      • Re: Why I Hate All Computer Programming Languages
        I see your point. However, I don't think we need a dictatorship to force people into doing things a certain way. The reason that there are so many ways to write software is that programming is still at a primitive stage.

        We don't yet have the proper metaphors to describe computer applications and we still have not figured out what the fundamental building blocks of software are. When we do, then all computer languages will become obsolete because we will have found the holy grail of computer programming. In turn, this will change the way we build the hardware.

        In my opinion, we are still at the Babbage and Lovelace stage. But that will change soon enough.
        Rate this comment: 12345

        Mapou
        07/27/2010
        Posts:211
        Avg Rating:
        2/5
    • Re: Why I Hate All Computer Programming Languages
      This isn't, in the foreseeable future a really achievable goal.  Nor, should it be one we're after.  In the days of VB and script kiddies, it's already too easy for people to string together applications with tons of security vulnerabilities.

      If you'd like the computer to do things for you, maybe you should try learning one of its many languages.

      Just because you think something that's exceedingly complex should be made more watered down in order for it to be approachable to you doesn't mean it should be.

      Programming has taken quite a few evolutionary turns and modern languages provide most of the groundwork needed to create functional, security minded applications with little work already.  However, pretending like you should be able to code just because you have an idea is akin to pretending like you should be able to invent without actually knowing anything about the underlying physical components of the invention.
      Rate this comment: 12345

      mrdanpsmit...
      07/28/2010
      Posts:2
      Avg Rating:
      5/5
      • Re: Why I Hate All Computer Programming Languages
        However, pretending like you should be able to code just because you have an idea is akin to pretending like you should be able to invent without actually knowing anything about the underlying physical components of the invention.

        This is precisely my point. In the future, there will be no coding. All the low-level coding will have been done and it will be neatly and efficiently stored in a vast and easily accessed repository of reusable components. The complexity will be there but it will be hidden. Programming will consist almost entirely of clicking, dragging and dropping.

        The only reason that this has not yet been done on a large scale is that the boomer geeks have shot computing in the foot in the last century with their Turing cult. Soon, the boomers will all retire or pass away and the computer will be reinvented by the next generation of geeks. Finally we will have a new type of computer with a new software model, the way it was supposed to be in the first place. And then the second computer revolution will make the first one pale in comparison. Future generations will ask, what were they thinking?
        Rate this comment: 12345

        Mapou
        07/28/2010
        Posts:211
        Avg Rating:
        2/5
        • Re: Why I Hate All Computer Programming Languages
          In the future, there will be no coding. All the low-level coding will have been done and it will be neatly and efficiently stored in a vast and easily accessed repository of reusable components. The complexity will be there but it will be hidden. Programming will consist almost entirely of clicking, dragging and dropping.

          As a software engineer by trade, I can tell you that programming is only a small part of what I do. Much of my time is spent communicating with the client, trying to figure out what their requirements are and how best to implement them, and then making revisions based on their changing requirements, et cetera.

          As far as reusable components, of course I use them! Do I write my own graphics rendering code or windowing system? Of course not, that would be idiotic. But no, I mainly use a language (which I and my fellow engineers find clear and consise) to connect them, rather than dragging and dropping, for the simple reason that no one has ever managed to create a drag and drop method of coding that really works. Go ahead and design one, and if it's a better mousetrap the world will beat a path to your door. But you're STILL going to have to deal with defining the business rules, narrowing requirements, backwards compatibility, optimizing performance...all that stuff that isn't strictly related to integrating components.

          What you're describing is a future where all the code that needs to be written has been written. The problem is that as technology advances, older code becomes stale. The tool set available to a DOS programmer was insufficient when GUIs became popular, and current technologies aren't a great match for cloud computing. Perhaps nanocomputing will bring its unique challenges that are best solved with new approaches.

          The only reason that this has not yet been done on a large scale is that the boomer geeks have shot computing in the foot in the last century with their Turing cult. Soon, the boomers will all retire or pass away and the computer will be reinvented by the next generation of geeks. Finally we will have a new type of computer with a new software model, the way it was supposed to be in the first place. And then the second computer revolution will make the first one pale in comparison. Future generations will ask, what were they thinking?

          You seem to have a lot of hostility towards the software engineer, the one who gave you the platform on which you rail. I'm curious if you feel similarly towards other trained professionals, such as doctors and architects.

          The truth is that every worthwhile new software development project is either something that's never been done before, or is an improvement over something that already exists. Invention and human creativity is part of the process, like it or not.

          Now if machines ever achieve something like human intelligence, all of this obviously goes out the window. Until then, I will continue to ply my trade as a C++/C#/Flash programmer.
          Rate this comment: 12345

          scotchfast...
          07/29/2010
          Posts:3
          Avg Rating:
          4/5
          • Re: Why I Hate All Computer Programming Languages
            First off, as a software engineer by trade, I can tell you that programming is only a small part of what I do.

            I, too, am a software engineer. I have been programming for over 20 years and I can assure you that I have pretty much seen it all. I have witnessed how computer scientists turned programming into a complete mess, a veritable tower of Babel.

            Much of my time is spent communicating with the client, trying to figure out what their requirements are and how best to implement them, and then making revisions based on their changing requirements, et cetera.

            I predict that, in the not too distant future, middlemen like you and me will not be in the picture. People will construct their own applications.

            As far as reusable components, of course I use them! Do I write my own graphics rendering code or windowing system? Of course not, that would be idiotic. But no, I mainly use a language (which I and my fellow engineers find clear and consise) to connect them, rather than dragging and dropping, for the simple reason that no one has ever managed to create a drag and drop method of coding that really works.

            It is because our current software model sucks. It was created by mathematicians for mathematicians. These people see the world strictly as a collection of functions, algorithms and Turing machines. The proper metaphorical framework, however, should come from the observation that a computer program is really a behaving machine. As such, the correct metaphors should come from psychology, not mathematics. We should be thinking in terms of things like sensors and effectors, stimuli (actions or events) and responses (reactions). Above all, timing should be an essential and fundamental part of our software model. The Turing machine, by contrast, has nothing to say about time at the fundamental level other than the stipulation that everything happens sequentially, which is cr@p, of course.

            Go ahead and design one, and if it's a better mousetrap the world will beat a path to your door.

            That's what I have been doing for a while but nobody is going to reinvent the computer on a dime in one's spare time. Our entire approach to designing, programming and building computers must be rethought and that takes money, lots of it.

            But you're STILL going to have to deal with defining the business rules, narrowing requirements, backwards compatibility, optimizing performance...all that stuff that isn't strictly related to integrating components.

            Well, I disagree. I believe that every possible program can be built from a small number of low level building blocks. We just need to identify what those building blocks are and we need to come up with an efficient way to organize them into an open-ended component repository in such a way that they can be easily reused in creative ways by almost anybody with a computer.

            What you're describing is a future where all the code that needs to be written has been written. The problem is that as technology advances, older code becomes stale. The tool set available to a DOS programmer was insufficient when GUIs became popular, and current technologies aren't a great match for cloud computing. Perhaps nanocomputing will bring its unique challenges that are best solved with new approaches.

            A huge tree-like repository of components on the internet can hold almost everything that anybody will ever need. The entire thing can be automated so that new components can be inserted at their proper location within the tree. There is every reason to suppose that new complex applications can inherit lots of stuff that were created for older ones. We can reconnect old components in new ways to create completely new functionality. This is not as far fetched as some may think. Nature teaches us that living organisms share a huge amount of very ancient genes.

            You seem to have a lot of hostility towards the software engineer, the one who gave you the platform on which you rail. I'm curious if you feel similarly towards other trained professionals, such as doctors and architects.

            Well, I am a programmer, as I said, and I have nothing against programmers per se. But I do have something against elitism because elitism is a dangerous, liberty-choking, progress-stifling phenomenon historically associated with human behavior.

            The truth is that every worthwhile new software development project is either something that's never been done before, or is an improvement over something that already exists. Invention and human creativity is part of the process, like it or not.

            I am not arguing against creativity. I am, however, arguing that there is a different and infinitely better way to be creative than writing traditional code. I call it composition. I defend the thesis that programming can and should be 100% compositional in nature.

            Now if machines ever achieve something like human intelligence, all of this obvious goes out the window. Until then, I will continue to ply my trade as a C++/C#/Flash programmer.

            This is kind of funny because I use C# in my own AI experiments. I hate it but I have no choice.
            Rate this comment: 12345

            Mapou
            07/29/2010
            Posts:211
            Avg Rating:
            2/5
            • Re: Why I Hate All Computer Programming Languages
              No matter how components are connected, whether through a hypothetical drag-and-drop mechanism or a textual language, there are still business rules that have to be developed. There are all kind of thorny UI issues to nail down, many of which seem trivial until you're faced with them. There's determining how to handle errors and there's optimization. These problems are instrinsic to the process.

              Code is a way of telling a computer how to handle input. There may be other ways of constructing programs besides writing code by hand, but at the end of the day, you're still going to have to develop data structures and rules. And these rules will need to developed in some low-level language that's flexible enough to satisfy the unique needs of the client. There's no getting away from if-then logic, at least not until computers develop their own ability to reason.

              I'm reminded of a lecture given by Adam Ierymenko (http://video.google.com/videoplay?docid=4675248677792173154#), in which he discusses evolving algorithms and their practical applications. He points out that if you tried to evolve something like accounting software, your fitness function would be more complicated than the software itself.

              Given the toolset that you imagine, I think you'd end up replacing the programmer with someone who looked an awful lot like a programmer.
              Rate this comment: 12345

              scotchfast...
              07/30/2010
              Posts:3
              Avg Rating:
              4/5
              • Re: Why I Hate All Computer Programming Languages
                Code is a way of telling a computer how to handle input. There may be other ways of constructing programs besides writing code by hand, but at the end of the day, you're still going to have to develop data structures and rules. And these rules will need to developed in some low-level language that's flexible enough to satisfy the unique needs of the client. There's no getting away from if-then logic, at least not until computers develop their own ability to reason.

                I don't disagree. However, the goal of the compositional approach to programming is not to get rid of the designer but to make programming easy and fun. Consider that an if-then logic statement is nothing but a sensor connected to an effector. This is easily done in a compositional environment by connecting one component to another. In the end, it's just clicking and dragging.

                The beauty of the compositional approach is that it is extremely easy for the designer to engage in what-if experiments because he or she will be given a collection of compatible effector components to play with.
                Rate this comment: 12345

                Mapou
                07/30/2010
                Posts:211
                Avg Rating:
                2/5
    • Re: Why I Hate All Computer Programming Languages
      So .... you want to be a priest but you don't like to pray.
      Rate this comment: 12345

      calypso
      07/29/2010
      Posts:1
      Avg Rating:
      5/5
      • Re: Why I Hate All Computer Programming Languages
        No. I want to transform programming from a primitive cottage industry to an automated, component-based activity that everybody can participate in.

        As an aside, it has become increasingly obvious to me that most of the people who object to my ideas are those who are either afraid of becoming obsolete or who are under the elitist delusion that their skills and expertise are irreplaceable and indispensable. Well, I've got bad news for you. In the end, every profession will be assumed by machines and the machines will be orders of magnitude better than you. Sorry.
        Rate this comment: 12345

        Mapou
        07/29/2010
        Posts:211
        Avg Rating:
        2/5
        • Re: Why I Hate All Computer Programming Languages
          If everyone will be replace by machines, what's even the point of making programming accessible to everyone? In fact, just make a robot capable of programming and that robot will make programming accessible to everyone.

          You: "Robot, I'm feeling kind of bored today. Can you make me a Bomberman game but with <random specs here>?"
          Robot: "No problem boss."

          Where that would have taken hours, plus all the time spent learning a given programming language, in today's world, the robot will have it done before lunch.
          Rate this comment: 12345

          rsanchez1
          07/30/2010
          Posts:136
          Avg Rating:
          3/5
          • Re: Why I Hate All Computer Programming Languages
            In my opinion, robots will have brains that work like pretty much like human brains, with artificial neurons and all that other stuff. Sure, their brains will be faster than ours but what's easy for humans will be even easier for robots. There is no reason to make things hard for the robots. Efficiency pays.
            Rate this comment: 12345

            Mapou
            07/30/2010
            Posts:211
            Avg Rating:
            2/5
      • Re: Why I Hate All Computer Programming Languages
        Calypso, that remark made my day. ;-) It easy to point out the failings, much, much harder to fix them.

        In spite of Mapou's touted 20 years of experience, I think he has failed to understand the purpose of programming languages and why they can never be eliminated. You cannot have a solution without an accurate statement of the problem. The pupose of the programming language is to transform the statement of the problem into the solution. The ease and accuracy with which the statement is translated into the solution is one measure of the language. While packaged solutions or components help they cannot eliminate the need for programming nor it's mathematical nature. Rigor is the only salvation from error.

        Indeed I agree that we have a long way to go. In 1971 I attended a conference in which there was a session discussing "automatic programming". If such a goal is even meaningful, I think we are little closer now than then.
        Rate this comment: 12345

        TooMany
        08/01/2010
        Posts:79
        Avg Rating:
        4/5
        • Re: Why I Hate All Computer Programming Languages
          Not at all. The real purpose of a programming language is to provide a way for an application designer to describe the problem using a prescribed syntax and vocabulary that the language compiler can parse.

          The goal of the compositional approach to programming, by contrast, is to allow the designer to construct an application in an intuitive manner that does not require a linguistic description. Why? Because construction is infinitely better than description.
          Rate this comment: 12345

          Mapou
          08/02/2010
          Posts:211
          Avg Rating:
          2/5
    • Re: Why I Hate All Computer Programming Languages
      I think that you've hit the nail on the head.
      Programming is about transforming requirements - what you want to do - into "code" that the computer can execute.

      The challenge is to come up with "better" ways of expressing requirements - more "natural" ways - more "precise" ways.  Once we've accomplished that, then we set up frameworks to insure that the "requirements" are both met and enforced.

      Based on the nature of your requirements, you'll use different programming "languages" (tools, environments, etc.)  A Business Guy has very different requirements than a Technical Guy - so they will probably use different tools... but the requirements of each must be met in a single application.
      Rate this comment: 12345

      john.reyno...
      07/31/2010
      Posts:1
      Avg Rating:
      4/5
      • Re: Why I Hate All Computer Programming Languages

        Yes and this is one of the reasons that a universal component repository must be organized as a huge component tree. An application designer will be interested only in the branches that are related to the app's requirements.
        Rate this comment: 12345

        Mapou
        07/31/2010
        Posts:211
        Avg Rating:
        2/5
  • Always a beginner
    People seem to have a need to create a new language, when all they really should do is simply write a new class of methods and add it to an existing language.  For those that just got their computer science degree, they have a driving need to prove that they can use what they learned by writing a new language and/or compiler.  What this does to me as a programmer is to make sure that I never get much better at my job, because I am always starting over from the beginning.
    Rate this comment: 12345

    sorgfelt
    07/27/2010
    Posts:12
    Avg Rating:
    4/5
    • Re: Always a beginner
      I agree!  AmbientTalk's volatile connection management algorithm is essentially a hard coded algorithm just like any other language's built-in sorting algorithm.  What if I don't think the built-in implementation of quicksort is adequate or in the case of AmbientTalk, the volatile connection manager?  Does the language provide a clear, easy way to describe, i.e. code, my own solution?  That's where the power of a language comes from--the ability to easily build classes and class libraries to accomplish whatever you need to.  That is why C++, Java, and C# have been so successful.  The languages themselves provide fast and easy to understand ways of handling data structures and manipulating data.  C# provides nice ways of handling lists and dictionaries.  Java has great ways of handling listeners, etc.  Each of these, though are building blocks rather than prefabricated complete solutions.  Of course, it is nice to just "use" a predefined AES implementation, but it's also nice to know that the language also supports the ability to code up my own.
      Rate this comment: 12345

      gaddio
      07/29/2010
      Posts:1
      Avg Rating:
      5/5
    • Re: Always a beginner
      If everyone thought this way, we'd still be at Fortran!
      Rate this comment: 12345

      rsanchez1
      07/30/2010
      Posts:136
      Avg Rating:
      3/5
  • Multi-dimensional aspect oriented diagramming
    I personally would prefer to see a UML like programming environment with an aspect orientation that can import and export ontological structures. Punctuation as structure is non-intuitive and error prone. Multiple inheritance, polymorphism and type mapping should be as automated as possible. Any errors should be reported and be allowed correction during execution with automated logging and source code modification as appropriate.
    Rate this comment: 12345

    cemery50@h...
    07/28/2010
    Posts:8
    Avg Rating:
    3/5
  • First things first
    Can somebody please just fix the stack overflow problem with C?  You know, the one that allows all these viruses?  Hello?  Are any of you computer scientists listening?
    Rate this comment: 12345

    dmm
    07/28/2010
    Posts:253
    Avg Rating:
    3/5
    • Re: First things first
      If anyone would've actually bothered to look at the go project's homepage, that problem is mentioned in like the fourth sentence about the language.

      "… concurrent
      Go promotes writing systems and servers as sets of lightweight communicating processes, called goroutines, with strong support from the language. Run thousands of goroutines if you want—and say good-bye to stack overflows." - From golang.org
      Rate this comment: 12345

      mrdanpsmit...
      07/28/2010
      Posts:2
      Avg Rating:
      5/5
  • Old owl own tale
    I used to be a decent COBOL programmer that made applications for his own business, then came MS and rotted my mind with "easy cloudy programming" that never worked well enough and it wasn't even easy. After that I tried C, Perl and Python (nice) and failed or got bored before any good ideas came to see the light, Windows G Interface gave me the nightmares. It can be that I never spent a dime in a good book, or that Alzheimer's 'non-language' began to show, but I made a good deal of effort every time.  Maybe it will be "easy programming" the day hardware becomes more like human reasoning instead of machine language binary adding. It looks like teaching a mechanical adding machine how to talk by the sound of the keys.  My 2 cents… or was it 3?
    Rate this comment: 12345

    open4biz_i...
    07/28/2010
    Posts:6
    Avg Rating:
    3/5
    • Re: Old owl own tale
      The Japanese did lots of development a couple of decades ago about plug and play languages. Where you would just plug in pieces of code (a picture)and they would interoperate without problems. I do not know how far they came with that, all I do know is the task was formidable. I suppose in hind-sight though the problem still exists or we would have wide-spread use of them.

      We do have limited environment plug and play languages, like mathematical models you glue together that perform tasks.

      I suppose you could try doing it yourself. Make a small computer program, then make some small building blocks and glue them together to make your original program.

      Its not as easy as it sounds. One of the difficulties youll face is how the building blocks communicate to each other. That and youll always have unique program code... I dont think that one has ever been solved.

      The concept of re-usable code does not actually eliminate the need to create more code.
      Rate this comment: 12345

      mattgroom
      07/29/2010
      Posts:199
      Avg Rating:
      2/5
  • Something completely different
    Go just looks like another tired rehash of C. It is time C was completely retired. Don't these language designers have any more imagination that this. Give us something new based on sound principles to make life easier.

    C was not even good when it came out - it was well predated by languages like ALGOL and LISP. Now that hardware technology can cope with anything, fast CPUs, large memory, it's time we buried the limitations that were built into C.

    Mind you computer architectures need revamping as well. Get away from the old RISC vs CISC debate and design decent computers. We need to get back to the ideas of Bob Barton and Alan Kay. That way we might finally get to the future of computing. C-think is now crippling this industry.
    Rate this comment: 12345

    ijoyner
    07/29/2010
    Posts:2
    Avg Rating:
    4/5
  • As you note
    Computer architecture is behind the times, and it will be easy to create a C++/P (Parallel C) language.

    However our operating systems/devices are not truly optimised to work in parallel. The process is likely going to be an evolution of both language and architecture over the next 10-30 years.

    I personally believe sequential programs still have a major place in our world, and to be honest every program run on a normal computer should be sequential, and run on a separate cores.

    A parallel C program could be like the following pseudo code:

    {pragma parallel start}
      outputtext {"sdasdf"}
      {pragma parallel}
      outputtextxy {"ewrwt",10,10}
    {pragma Parallel end}

    Notice even this could be difficult if both outputs write to the same area, which one has precedence. This can be easily resolved with precedence order running from low/top to high/bottom. Solved.

    People are trying to bypass this by having the compiler work out which pieces are parallel and which are not, a highly effective concept should it work. Though it does suffer from the "impossible to test every variation" problem i believe for the majority of programs it could work fine.

    I believe todays programmers are trying to align programs to run on multiple cores...i do not hold that view.

    I believe its best that the operating system allocate cores to individual programs. It reduces overhead and thus speeds things up considerably. And should a program crash the clean up is considerably easier.It is also more deterministic this way.

    By making a program truly parallel across multiple cores, requires extensive crash prevention, device exception policies, preemptive across multiple cores. The data is likewise distributed to multiple cores. All this sounds like hell to me, let alone its implementation.
    Rate this comment: 12345

    mattgroom
    08/01/2010
    Posts:199
    Avg Rating:
    2/5
    • Re: As you note
      You claim creating a parallel C/C++ would be easy. Why has it not been done to this stage then? In fact, it would be incredibly hard. It is incredibly hard in any imperative programming language because of the assignment statement. This is because you can't reorder the evaluation of assignments without changing the semantics of the program, apart from the many other problems with assignment.

      Then as far as imperative PLs go C and C++ are terrible examples of these, C++ being one of the most horrendous messes ever created. That's why I say, we need a total rethink of programming and computational models. I'm hardly original in this, it's just a shame it's still relevant in 2010 and one of the major roadblocks to progress is C itself and its cult status (Bob Barton noted the cult phenomenon about FORTRAN). C is just such an old and flaky language - it's disgraceful that this has become the basis of current programming practice.

      I've just been rereading John Backus "Can Programming be Liberated from the von Neumann Style?":

      http://www.stanford.edu/class/cs242/readings/backus.pdf

      I also suggest a study of "Structure and Interpretation of Computer Programs" (SICP) by Abelson and Sussman for many of the issues in programming languages.

      http://mitpress.mit.edu/sicp/full-text/book/book.html

      Note, they teach assignment really late in the piece and then note its problems, quite the reverse of most teaching of today.

      Yes, we need new languages and by that I mean NEEEEEEWWWWWW languages, not just another C-based rehash.
      Rate this comment: 12345

      ijoyner
      08/01/2010
      Posts:2
      Avg Rating:
      4/5
      • Re: As you note
        If you are looking at single operators and assignments (for only the present) you will find it impossible. For example you can never make this statement parallel, y=mx+c. Except deriving future values concurrently. Which is where the difficulties lie. Parallel data assignment statements like a[0]..a[10]+=1 are done in parallel easily (in super computers). These are used extensively in programming for instance you wish to modify an array of values by the same amounts. I see this as easy to do in a (normal computer) parallel language notation extension like i suggested. It would also be easy in a (normal)compiler extension.

        c++ is exactly the same as c (they both derive chip code), except conceptually you require less programming to achieve similar goals in repetitive code problems. All languages (eg x86)produce the same on chip code per se, just some make the chip code faster than others.

        If you say we require a new language you are missing the point...

        Its not the language at fault but the underlying architecture.
        Rate this comment: 12345

        mattgroom
        08/06/2010
        Posts:199
        Avg Rating:
        2/5

Log In

Forgot your password?     Register »
Advertisement

Videos

How to Redesign Life
Sponsored by
More videos »
Technology Review September/October 2010

Current Issue

The TR35
Our annual selection of the world's top innovators under the age of 35.
Advertisement
Advertisement
Subscribe to Technology Review's daily e-mail update. Enter your e-mail address

TECHNOLOGY RESOURCES
Advertisement
MIT Massachusetts Institute of Technology © 2010 Technology Review. All Rights Reserved.