The Programming World Needs a New Language

by James R. Stoup Apr 25, 2006

Most programmers only know three languages, the one they learned first, the one they use at their job and the one that’s their favorite. Every other language is just filler. (If you are lucky then those last two might be the same.) And while a programmer’s favorite language rarely changes, the same cannot be said about the one he or she uses at work. Of course there are many factors that effect the language to be used, some are industry specific, some are more powerful than others and some have that flavor-of-the-month quality about them. However, there is no universal language that works well in every instance.

Now, there are many Java programmers (I have met several) who would take issue with that last statement. These programmers feel that Java is the end-all, be-all solution. Well, they are wrong. Java is not the answer to every prayer. In fact, it really isn’t even all that powerful of a language to begin with. In making itself easier to use than C++ it also lost a good deal of the sheer power that C and C++ provide. This isn’t a bad thing in many cases. After all, there aren’t too many programmers that need all of the functionality that C/C++ offer. (Hey, we all don’t write operating systems) Some situations call for a less powerful language that is easier to understand and easier to use.

Your average programmer is at least familiar with four to five different languages, even if he only uses one or two regularly. Most probably use C/C++, Java, Python, Perl or Visual Basic. And Lisp, can’t forget that one. After all there are still people out there who use it. (And it is making a comeback of sorts these days). By the way, I just mentioned some, not all, of the more popular languages. So, if you would, please don’t send me hate mail if you are an irate Fortran coder or Pascal fanatic. I know I left off plenty of languages from my short list. And I am sure that your language really deserves the top spot and you are more than prepared to send me pages of reasons why. Please don’t bother. This isn’t a popularity test for programming languages. Nor is this an attempt to prove which language is the “best” or most powerful or most widely used. I am not personally backing any language because that isn’t the point of what I am trying to say.

The point is that no one language is the perfect fit for every scenario. Java is widely used, and easy to pickup, but lacks the complexity to create really dynamic systems (try coding an operating system in Java and you will see what I mean). Lisp is amazingly powerful, only it is hard to use and lacks a strong presence in the market. The language that is closest to being one-size-fits-all is C++. You can write an OS with it, you can use it for the web or for almost any other project imaginable and it is in widespread use. Now, it won’t be easy sometimes, and the code will be ugly (and long) but if you had to do it, it could be done. Other languages could do certain things better or in less code, but C++ will do it all, albeit painfully. (anyone who has ever needed to use Typedef understands what I am talking about).

Why does it matter? Why do I bother to bring up all these issues? Because I think it is time for a new language. A better language. A higher level language, so that the complexity of writing code can be decreased. In the end, it all comes back to complexity. The more complex a program the more lines of code are written. The more code there is the more bugs there are. That means more documentation, more testing and longer production cycles. These problems all make writing good programs very hard. And as a consumer, I want the applications I buy to be the best possible. And they won’t be if the programmers who wrote it spent most of their time fixing bugs instead of trying to make a better program.

Two of the most powerful programming languages, C and Lisp, are decades old. They were old when Jobs and Wozniak founded Apple. It is time for a new language to replace these aging work-horses. As Apple continues to update OS X, and as they look forward to OS 11, they should consider the benifits of a new language. Releasing a new OS with new features once a year, every year, would definately help to distance themselves from the competition. Programs are only going to get more complex as time goes on, we can’t still rely on technology half a century old. It is about time we came up with new ideas for this new world we find ourselves in. After all, you don’t think the system Captain Picard uses on the Enterprise was written in Java do you?

Comments

  • Oh, yes. We need *another* programming language. Why didn’t I think of that? How many came out last year alone?

    We can’t rely on technology half a decade old. Really? Those Roman acqueducts still work, you know.

    Aurora77 had this to say on Apr 25, 2006 Posts: 35
  • @Aurora77, that was “half a century”, but I agree with your point. There are thousands of languages out there- the “best” ones will rise to the top because of that capitalist one-two punch of natural selection and the market.

    Programming languages are not the cause of bugs.

    Devanshu Mehta had this to say on Apr 25, 2006 Posts: 108
  • ” Java is widely used, and easy to pickup, but lacks the complexity to create really dynamic systems (try coding an operating system in Java and you will see what I mean).”

    All things considered, an operating system is not very dynamic.  The reason Java isn’t good at a general purpose operating system is 1. No one wants to do a rewrite of their OS, 2. The JVM is still somewhat buggy even after 5 versions, and 3. Java doesn’t have easy hooks to general low-level hardware access.  Java is, actually, *extremely* good at creating “very dynamic” software—it’s one of the things it excels at over C++, which is difficult to get beyond relatively “static” software.

    Besides, why is it important to write the operating system in the same language in which you write the applications?  My guess would be that it isn’t.

    Finally, I’d like to say that the LAST thing Apple needs right now is ANOTHER esoteric, Mac-only language.  Objective C is bad enough and drives away plenty of developers.  Anything less popular would kill the platform if it became “preferred”.  I’d suggest going the other way—adopt C# lock, stock, and barrel.  It has many of the advantages of Objective C and Java, has the biggest software company in the world behind it, and will open up the Mac to growing libraries of sample code, domain-specific code, and training programs.

    booga had this to say on Apr 25, 2006 Posts: 19
  • C and Lisp are still with us because they’re powerful languages that have evolved into mature, stable, well & widely supported tools. In the meantime literally hundreds of “next-big-thing” languages have come and gone.

    Why the turnover? Because there are tradeoffs. To get the virtualization & memory management of Java you trade off local optimizations. To get the down-to-the-metal ability of C & C++ you lose protection. To get the legibility of your favorite verbose language you lose terseness. The more abstract your language is the less efficient it becomes, the more specific it goes the more effort is required, etc.

    But in spite of all of these we’ve seen a dozen new languages gain wide popularity in the past 20 years, and indeed Apple already supports Java & Javascript (yes, completely unrelated but for some boneheaded marketing naming!)  & Perl & Python & even the latest-trendy languages like Ruby.

    Heck, Apple alone has already developed or adopted <a href=“http://www.google.com/search?&q=apple+dylan”>Dylan</a>, Squeak, AppleScript</a> and <a href=“http://www.objc.info/about/”>Objective-C. There’s 4 “next-gen” languages right there from one company right there! And lets not forget Hypercard, which was arguably a breakthrough “everyone’s programming language” abandoned by Apple a decade ago.

    No, jumping from language to language is not a panacea. It means Coders spend too much of their time learning new languages and making newbie mistakes. It means ever more elaborate, and unreliable, hacks to reuse old APIs & libraries. It makes bugs and bad documentation as a way of life and versioning a nightmare.

    Lets use what we’ve got already, well. And if the perfect language is someday written take advantage of it, but until this marvel is released lets just do do the best possible with appropriate tools and a good understanding of them, not wasting our time hoping for a deus ex machina to make it all perfect for us.

    maggard had this to say on Apr 25, 2006 Posts: 5
  • Whups - something odd going on there with ExpressionEngine. Previews & posts differently mangled text, eats A**pleScript references.

    Heck, Apple alone has already developed or adopted

    Dylan

    Squeak

    <a href=“http://www.apple.com/applescript/”>AppleScript</a>

    and

    Objective-C

    There’s 4 “next-gen” languages right from one company right there! And lets not forget

    Hypercard

    which was arguably a breakthrough “everyone’s programming language” abandoned by Apple a decade ago.

    maggard had this to say on Apr 25, 2006 Posts: 5
  • Saying no-one has yet invented the perfect, one-size-fits-all language is an inherently flawed idea, on the grounds that there is no such thing. 

    Does your toolbox have just one tool in it?  Do you own only one screwdriver?  Or, in fact, do you have a multitude of tools, because *different situations require different tools*?

    A programming language is just a tool.  Each language has strength, weaknesses, benefits and drawbacks for each and every application you could possibly write.  That is why there is not, and IMHO never will be a ‘perfect language’.

    A good programmer should master multiple tools, and choose the best one for each job.

    mungler had this to say on Apr 25, 2006 Posts: 16
  • I program every day (professionally) in C/C++ and Objective-C.

    I used to write Newton software (again, professionally) using NewtonScript.

    I think C++ and Objective-C are fine for writing Macintosh applications. I don’t really understand why they offer Cocoa Java. Nor do I understand why .net has bastardized versions of C++, Java, and VB.

    We need another language like I need a hole in my head.

    If I was going to learn another language, I’d probably pick Perl or Python and use them for scripting. Currently I do a certain amount of scripting in AppleScript and unix shell scripts.

    I could learn Java, but I don’t see the point since I’m mostly interested in writing desktop apps (and that’s what I do).

    Dylan seemed cool, but they really sold it wrong to the development community.

    soft_guy had this to say on Apr 25, 2006 Posts: 21
  • The article mentions but does not explain why the other languages are not to the task of today’s programming needs. For example, the article mentions Python but dismisses it without explaination. Python is very powerful, readable, productive, mature, self consistent and can easily tie into high performance C/C++ libraries using SWIG.  It can be used like a glue language for lower level high performance code.

    For example,  with Python you can call the OS optimized OpenGL libraries almost function for function from Python. This means you don’t have have special documentation for Python as you would for Java with a 3D library. There is tons of OpenGL example code out there that was written in C that can be very easily made to work with Python. Only minor changes are necessary.

    PyObjC allows replacement of Objective-C for Cocoa programming and it works better than Objective-C. Python is definitely the best language I have seen for programming a Mac.

    Any time you create a new language it takes years for it to become mature enough to use for serious work. This includes developing the language and the support libraries. Languages like Python have been through that and I think offer any benefits you may want in a brand new language. (Ruby may be similar, I just have never used it).

    poss had this to say on Apr 25, 2006 Posts: 1
  • I hope you’re not suggesting that Apple design it - have you ever used Applescript?

    I sort of agree with Poster #2 - languages are not the cause of bugs.  Or rather, they’re not the main cause.  Lack of discipline and thinking is the main cause.  I programmed for almost 20 years in assembler language, using strict structured programming methodology, and the code was pretty bug-free.

    Chap Harrison had this to say on Apr 25, 2006 Posts: 2
  • I too thought the article’s omission of C# was curious.  I think Mac people have been “thinking defensive” about Microsoft for so long, they dismiss the idea that they might invent something good.  C# as a language, and .NET as a runtime environment, are really quite excellent technology.  The runtime is not as dynamic as Objective-C & Cocoa, but it more than makes up for it in terms of shallow learning curve, excellent (albeit not free) developer tools, and support for many languages sharing objects transparently.  You people complaining about Microsoft “bastardizing” languages with .NET, you really need to study it a bit—hey, even try using it—because your criticism sounds suspiciously uninformed.

    I would really be surprised if Apple didn’t have at least some plan up their sleeve to take advantage of .NET languages and architecture in a coming OS version.

    norville had this to say on Apr 25, 2006 Posts: 2
  • I think a lot of you have misinterpreted James’ article. His point was that we do need a better, newer standard language which will be forward compatible with whatever the future throws at us (including starships and holodecks) and I wholeheartedly agree. He is merely pointing out the very obvious fact that programming could, and can, be a hell of a lot easier and efficient than it currently is

    Luke Mildenhall-Ward had this to say on Apr 25, 2006 Posts: 299
  • Luke—No, I think most got his point, and disagree on two points: 1. the assertion that Apple needs a new language instead of using one of the plethora of better choices than C++/ObjC that are out there now, and 2. any single language can ever be unequivocally “best” or ever “better” than others.

    And the fact is that two of those mentioned in the comments would do quite nicely—Python, which was dismissed out of hand, and C#/.NET which was inexplicably omitted ENTIRELY!  Even RealBasic has real potential.

    There is definitely no need for a brand-new language, just different thinking at Apple.  The leftovers from NeXT with their ObjectiveC and their XCode nee ProjectBuilder (how shall I put this politely) “difficult” IDE are really starting to hold Apple back.  (Not to mention that they still haven’t gotten rid of a lot of the silly NeXT-isms still lurking with text editing and selection.)

    booga had this to say on Apr 25, 2006 Posts: 19
  • Computer scientest and essayist Paul Graham has some interesting thoughts on what computer programming languages will be like 100 years from now in his essay The Hundred-Year Language.

    stko had this to say on Apr 26, 2006 Posts: 1
  • An end by any other means is…yup, it is the same thing. Every language tries to solve or improve upon a problem in its own peculiar way.

    I have developed applications from assembly, C, C++, Java, and now migrated to higher level development systems (G - NI LabVIEW, for one) because they offer the developer fast turn-around time. That is very important, if not, critical. I have no time to develop control widgets (in my work) using Java or C or C++. I can do it but WHY?

    Let’s not start a rant pitying one’s preferred development language. It probably fits them fine for the end result and that is just peachy for me.

    If I may, yes keep inventing new languages. There would not be Java, PHP, Perl, nor Python today if tireless coders had not have the will nor the obsession to dream that someday their creations will make a difference - or perhaps make them zillions someday…;) If it improves what I’m doing then well, I will learn it and use it.

    Cheers fellow coders!

    Robomac had this to say on May 04, 2006 Posts: 846
  • Page 1 of 1 pages
You need log in, or register, in order to comment