Slashdot Mirror


The Hundred-Year Language

dtolton writes "Paul Graham has a new article called "The Hundred-Year Language" posted. The article is about the programming languages of the future and what form they may take. He makes some interesting predictions about the rate of change we might expect in programming languages over the next 100 years. He also makes some persuasive points about the possible design and construction of those languages. The article is definitely worth a read for those interested in programming languages."

725 comments

  1. I know! by `Sean · · Score: 0, Funny

    JavaC++.Net#

    Yeah...that's it...

    1. Re:I know! by joeblakethesnake · · Score: 4, Funny

      that's VisualJavaC++.Net#

    2. Re:I know! by `Sean · · Score: 3, Funny

      that's VisualJavaC++.Net#

      That's what I was going to post, but I didn't want to give Microsoft any ideas!

    3. Re:I know! by Eric_Cartman_South_P · · Score: 1, Funny
      that's VisualJavaC++.Net#

      And of course, the first version out of the gate will be called:

      VisualJavaC++.Net# v6.0 Premium

    4. Re:I know! by Anonymous Coward · · Score: 0

      VisualJavaC++.Net# v6.0 Premium XP

    5. Re:I know! by sporty · · Score: 1

      Didn't that get renamed to WIndows Server 2003 or something like that? ;)

      --

      -
      ping -f 255.255.255.255 # if only

    6. Re:I know! by DEBEDb · · Score: 1

      At least you don't have to prefix GNU/ to that!

      --

      Considered harmful.
  2. Seymour Cray said it best by grub · · Score: 5, Funny


    I do not know what the language of the year 2000 will look like, but it will be called FORTRAN. -Attributed to many people including Seymour Cray, John Backus

    --
    Trolling is a art,
    1. Re:Seymour Cray said it best by syle · · Score: 3, Funny

      "Real programmers can write FORTRAN in any language."

      --

      /syle

    2. Re:Seymour Cray said it best by Anonymous Coward · · Score: 0

      I believe the true author of that statement was Seymour Butts.

    3. Re:Seymour Cray said it best by Chinthe · · Score: 2, Insightful

      No!

      FORTRAN programmers can ONLY write FORTRAN in any language.

      Real programmer write real programs in languages that fit the task.

      You know it's the truth!

    4. Re:Seymour Cray said it best by ralico · · Score: 3, Funny

      Is that like all restaurants are Taco Bell?

      --

      SCO to Hell
    5. Re:Seymour Cray said it best by Anonymous Coward · · Score: 0

      John Backus would have later recanted in his famous speech to the ACM about functional programming. His work, and the work of Milner, helped formulate an entirely new programming paradigm.

    6. Re:Seymour Cray said it best by cybercuzco · · Score: 1

      Thats very true, Im an aerospace engineering graduate student, and I use fortran 77 exclusively for compiled programs.

      --

    7. Re:Seymour Cray said it best by Obfiscator · · Score: 1
      Same goes for computational chemistry, though I use the newer standards.

      FORTRAN for number crunching, Perl for skimming output files. Could there be a better harmony?

      --
      "Nothing shocks me. I'm a scientist." -Indiana Jones
    8. Re:Seymour Cray said it best by Tackhead · · Score: 1
      > > I do not know what the language of the year 2000 will look like, but it will be called FORTRAN.
      >
      > FORTRAN programmers can ONLY write FORTRAN in any language.
      > Real programmer write real programs in languages that fit the task.

      So we'd all better start using feckfeck today, huh? :)

    9. Re:Seymour Cray said it best by Anonymous Coward · · Score: 0

      That's so true.
      Look at this
      http://www.spunge.org/~lukyanov/shorthand/

    10. Re:Seymour Cray said it best by Anonymous Coward · · Score: 0

      feckfeck and awk?

    11. Re:Seymour Cray said it best by Randolpho · · Score: 1

      I just wanted to see the restaraunt wars...

      --
      "Times have not become more violent. They have just become more televised."
      -Marilyn Manson
    12. Re:Seymour Cray said it best by hc000700070007 · · Score: 1

      >aerospace engineering graduate student, and I use >fortran AndI always heard the quote as "I don't know what programming language engineers (and physicists) will be using in 100 years, all I know is that they'll call it fortran" --hc

    13. Re:Seymour Cray said it best by gnuadam · · Score: 1

      Odd. I use c and python for the same things...:)

      --
      You say :wq, I say ZZ. Why can't we all just get along?
    14. Re:Seymour Cray said it best by Snaller · · Score: 1

      Why?

      --
      If Google really cared they would fix Android Chrome to reflow text, instead of discriminating
    15. Re:Seymour Cray said it best by Anonymous Coward · · Score: 0

      yawn karma whore yawn

    16. Re:Seymour Cray said it best by Anonymous Coward · · Score: 0

      C for number crunching, and Ruby for skimming output files. My worst fear is that it'll be MATLAB for number crunching, because I hate MATLAB. I guess I should write my math language.

  3. I predict... by Jack+William+Bell · · Score: 4, Funny

    I predict that in 100 years someone, somewhere, will still be running COBOL applications.

    And I will still be refusing to maintain them. Six years in the COBOL mines was six years too long...

    --
    - -
    Are you an SF Fan? Are you a Tru-Fan?
    1. Re:I predict... by $rtbl_this · · Score: 5, Funny

      I predict that in 100 years someone, somewhere, will still be running COBOL applications.

      And I will still be refusing to maintain them.

      Surely that depends on whether you're damned or not. I imagine there's a whole circle of hell devoted to maintaining COBOL apps.

      --
      "Are you being weird, or sarcastic?" said Emma. I said I didn't know because I get the two feelings mixed up.
    2. Re:I predict... by zackbar · · Score: 1

      And they will still be having date issues. Gotta love all those "solutions" that involved compressing the 2 digit character year into a 2 digit year and an indicator that it's the 21's century.

      Delaying the problem is *so* much better than actually fixing it.

    3. Re:I predict... by Anonymous Coward · · Score: 0

      Don't you mean six years in the COBOL mines was six hundred years (subjective) too long?

    4. Re:I predict... by Anonymous Coward · · Score: 0

      B.S. If they pay you, you will code. It's all a matter of negotiating the right pay. Now or in some distant future era. In whatever language they require. Particularly as whatever is your preferred language du jour will be long gone and ridiculed and made mock of by the pimply-faced programmers of that era.

    5. Re:I predict... by bittmann · · Score: 1

      You have a point, but only sort of...the "century indicator" in most Cobol implementations is based on the "leftmost" packed numeric digit stored in a 4-byte-long field...so, I suppose, you could claim that my programs aren't Y3k compliant, but they crtainly are Y2.1K compliant.

      Example: At 1 second after 23:59:59 on x"1991231F" (which represents (sigh) "2099-12-31"), the date will become x"2000101F" ("2100-01-01). Which still works. Well...at least it works as well as it ever has...

      So, it's entirely conceivable that we'll still be using (something that is loosely based on what we recognize as) COBOL in a century's time...and yep...I'll be happy to sign up right now to to maintain it then, too, if you'll guarantee that I'll have the opportunity.

      Was it Groucho Marx that, when asked what he wanted people to say about him "in a hundred years", replied "He sure looks good for his age." ???

    6. Re:I predict... by SparkyTWP · · Score: 1

      COBOL is COOL without the B

    7. Re:I predict... by Anonymous Coward · · Score: 0

      Your non-command of prepositions is BOLOC.

    8. Re:I predict... by phorm · · Score: 1

      No kidding. Can you believe they still taught this to us in college. Why? Because some businesses are still using COBOL, and because coders hate it... and thus jobs still pop up from time-to-time when another COBOL programmer jumps off a building etc.

      If we stopped teaching COBOL in school,and programmers stopped emerging just asking for torture - then perhaps businesses would get it into their heads that it is about time to switch.

      You'd be quite amazed what can be accomplished by necessity. Having a crutch usually slows things down.

    9. Re:I predict... by vsprintf · · Score: 1

      If we stopped teaching COBOL in school,and programmers stopped emerging just asking for torture - then perhaps businesses would get it into their heads that it is about time to switch.

      Wrong. Thankfully I don't have to do COBOL maintenance, but there are millions of lines of COBOL out there generating everyone's paychecks and monthly statements for all their accounts. It works, and there is too much invested to simply say, "Oh, let's redo the accounting system in the popular language of the week." In case you haven't noticed, IT budgets are pretty tight recently.

    10. Re:I predict... by Anonymous Coward · · Score: 0

      Correct you are. The governing rule here is: "if it ain't broke, don't fix it". COBOL ain't broke. It works fine. It's unambiguous. Non-gurus can read it and figure out what's going on. Unlike C (and it's friends and relatives) there are no contests for writing the most convoluted and obscure code. It is verbose. It does have strong data typing. It doesn't "invite the use of the most advanced programming techniques (TM)" (a phrase I personally invented for use in a marketing brochure for a now defunct computer company wanting to describe a new and highly unuseful new instruction). It just works. It prints your paycheck and keeps track of your personnel records. COBOL is your friend.

    11. Re:I predict... by Xenographic · · Score: 1

      Yes, the lowest circle. In some of the outer ones they let you get by with FORTRAN.

    12. Re:I predict... by Prof.Phreak · · Score: 1

      And I will still be refusing to maintain them.

      Would be nice to have that kind of job security. - OS.

      --

      "If anything can go wrong, it will." - Murphy

    13. Re:I predict... by zackbar · · Score: 1

      Well, I'm not a COBOL programmer. Did it in college, but that was about it.

      I helped develop an application that was COBOL on the back end, but I did the front end interface. All I really remember about that system is that all the dates were stored as string values, because COBOL couldn't handle binary data. But then the string versions of the numbers and dates were packed, so they were *sort* of binary data.

      Now, according to the article, using it as a string value is better than using the optimization of using it as binary data. But I don't personally agree.

      I'm not sure why the string date couldn't just be converted to the binary equivalent and stored that way. 2005, 1902, and 4577 all fit within 2 bytes if stored as binary. I pretty sure that cobol can handle binary stored data. It probably doesn't slow it down anymore than unpacking and checking for century indicators.

    14. Re:I predict... by Anonymous Coward · · Score: 0

      My shitty paycheck and personnel records? Fuck you COBOL, you are not my friend.

    15. Re:I predict... by Anonymous Coward · · Score: 0

      Yes, right below the one for FORTRAN IV.

    16. Re:I predict... by bittmann · · Score: 1

      I can't vouch for anything in the COBOL realm that's at all recent, except for the AS/400 (iSeries?) flavors...which (I understand) are quite a bit more advanced than traditional "big iron" versions. So, this may not be representative of most of the data out there. That being said...

      1) I can read, write, etc. most flavors of data, "right out of the box". Short int to long float, "stringlike" ISO dates, etc. UNIX timestamps. I even have a homegrown library to convert a MUMPS HOROLOG into a usable timestamp (!!). Ugh!

      2) That being said...very seldom do I do that sort of thing, since...well...basically, no one else does that sort of thing. COBOL has traditionally viewed dates as numeric values, most of the data "out there" was stored as packed (or somtimes zoned) decimal, and most of the code that we write today still builds upon data that has roots back in the (in my case) 1980s. So unless I'm writing an application specifically for interfacing to MUMPS or *n[iu]x, or making a standalone web app, I tend not to confuse things by changing how dates (or numbers, for that matter) are represented in the system.

      Also, don't know what your experience was, but quite a bit of the COBOL environments around are EBCDIC-based. The AS/400 (helps you) "seamlessly" translates EBCDIC to ASCII (or DBCS to Unicode, or whatever), assuming that you're starting from EBCDIC to start with. If you're actually using COBOL to manipulate ASCII files, it gets to be a real slogfest, so most folks do a 1-pass translation to grab ASCII and output EBCDIC, and vice-versa when they're ready to update the record. That means that character representations (like CHAR or ZONED) are quite a bit easier to handle than a binary representation that has to be handled separately from other data.

      As a matter of fact, one of the reasons that I still dig the AS/400 after "all these years", is that it does a passable job on just about any database-driven task that you can throw at it, from Windows-compatible file and print sharing to terabyte-sized, billion-record databases. And I can use everything from RPG (yuk), REXX and COBOL to C, Perl and Java to get to the data. If OS/400 isn't up to the task that I need to accomplish, I can run Linux (either natively or on an integrated PC) or Win2K...which I never have had to implement.

      But, back to what you were saying:

      The only reason that I can think of as to why we (big-iron programmers) don't do dates differently is due mostly to inertia. Translation/packing/unpacking isn't an issue. In today's world, I think the issue is more likely to be history, compatibility, portability (*everyone* has routines to read "ccyymmdd" dates), and the lack of any real direction on which way we really *should* store timestamps. Kind of along the lines of "this'll do until something better comes along"--and no one has really made the case that something out there is actually *better enough* for us to go back and review millions of lines of code in order to make sure that we properly support it.

  4. Cobol is back. by sokkelih · · Score: 4, Funny

    I guess that programming languages are like cycles. Ah, COBOL is all coming back to me. This object orientation is way too appreciated, it is time get back to the days when VAX-admins ruled the universe of COBOL :)

    1. Re:Cobol is back. by cyber_rigger · · Score: 1, Funny


      I thought Cobol was already 100 years old.

    2. Re:Cobol is back. by vsprintf · · Score: 1

      I heard there is an object-oriented COBOL now in the works. I had assumed it would be called COBOL++, but one wag stated it was going to be called COOBOOL.

    3. Re:Cobol is back. by Anonymous Coward · · Score: 0

      No, thats a YY field still, so Cobol is 00 yerars old.... program Abend... Oh my god.... cobol flashbacks, help me.... 0C7 Abend.... argggghhh

    4. Re:Cobol is back. by hughk · · Score: 1

      They got rid of the VAX and put Alphas as hosts, but still running VMS and the host system behind Eurex is more COBOL than anything else. There is even a little FORTRAN there as well (a file hacking tool). Eurex is the world's biggest electronic derivatives exchange.

      --
      See my journal, I write things there
    5. Re:Cobol is back. by critter_hunter · · Score: 1

      Everyone knows COBOL++ is SET COBOL UP BY ONE.

      --
      Karma: Could be worse (could be raining)
  5. how long by xao+gypsie · · Score: 2, Insightful

    .... until programming languages begin to resemble spoken languages very closely? well, at least those languages with power, not BASIC and its friends. or, is it even possible to concieve, at this point, that there will be languages with the power of C but the syntax of English, SPanish...etc....

    xao

    --


    xao
    http://TheHillforum.hopto.org
    1. Re:how long by bumby · · Score: 1

      select language where language = "spoken language"

      Not that sql is a programming language, but it sure is close to spoken language, at least my spoken language ;)

      me want food
      climb tree
      get egg

      One thing is for sure, it's not going to look like brainfuck ++++>++>++[++++].

      (or whatever the syntax was, haven't used it much)

      --
      Hey! That's my sig you're smoking there!
    2. Re:how long by GnuVince · · Score: 5, Interesting
      Forth can be used a little bit like that (example taken from "Starting Forth", by Leo Brodie):

      \ Word definitions : convicted-of 0 ; \ To convict someone : murder 25 + ; : arson 10 + ; : robbery 2 + ; : music-copying 40 + ; : sentenced-to . ." years of prison" ;

      And to use it:

      convicted-of music-copying robbery sentenced-to

      Output: 42 years of prison This looks quite like english. Of course, you can do that in many languages, but it feels more natural in Forth I think.

    3. Re:how long by avandesande · · Score: 4, Funny

      I hope it never is like spoken languages. I can hardly understand what my wife wants when I talk with her, why would a computer. Spoken languages are ambiguous.

      --
      love is just extroverted narcissism
    4. Re:how long by addaon · · Score: 1

      You're not a programmer, are you?

      --

      I've had this sig for three days.
    5. Re:how long by frankthechicken · · Score: 1

      Spoken language is far too full of grammatical bodges and fixes to become a structure logical enough for a programming language. If it had a structure similar to English/French etc when it came to compilation/interpretation there would have to be guesses as to what was meant. Language tends to rely too heavily on context and interpretation of context. The closest we could come would be a form of legalese, which would be more taxing to debug than any perl program.

    6. Re:how long by Echemus · · Score: 1

      It would be a bad idea, and I think it is a common mis-conception that it would be a good thing to have a programming language that would mirror something like a written or spoken language. I can't see any real advantage. The idea of readability is not a valid argument, good code should be as readable (if you know the language) as something written in your own tongue.

      Knowledge of the language is important. For example, in English, it is perfectly possible to have different (and opposing) interpretations of a simple sentance. This is not a good thing for computers.

      I have a bias, as I am a fan of Functional Programming languages, but I feel that they have the way of the future about them. They have a basis in mathematics. Software Engineering needs to evolve from the age of Hack/Slash/cobble together and into an age of true engineering.

      There is something to be said of a piece of software that can be "proved" via mathematical theory to work, than one that has been developed in a Object Oriented/Procedual language. That is not to say it won't fail in practice, but at least you'll have more confidence about it, rather more like more traditional Engineering.

      Functional Programming hasn't had its day yet, mostly because there aren't systems around that are optimised to perform its operations. Programmers often dislike it as it requires a different way of approaching problem solving.

      If there is going to be surplus of processing power, perhaps Functional Programming will come of age?

    7. Re:how long by yasth · · Score: 3, Interesting

      As any one that has worked on Natural Language Processing can tell you, natural language is a bugger. It is very context driven, and too top it all off has a good deal of redundant syntax (a, the, sv agreement, etc.) Human language is a very nice protocol for transfering ideas (It is in many ways a system designed to transmit through noisy environments by many users all of whom differ in thier individual implementation of the standard). Natural spoken form language is less good at commands, and is particularly bad for unsupervised commands.

      For unsupervised commands humans tend to create something not all that different from code. A fixed set of grammar and vocabulary come into play (i.e. little slang, and very normalized style). For example:

      Employees will update thier status on the In/Out board in the lobby when they will be gone for more then 15 minutes.

      which is roughly:
      (if (> (expected-completiontime task) 15)
      (update-status out))

      So the need and utility isn't there.

      --
      I'd do something interesting, but my server can't handle a slashdotting.
    8. Re:how long by KDan · · Score: 2, Funny
      Yeah, but think of the potential:

      "Computer! Make l33t website!"


      Daniel
      --
      Carpe Diem
    9. Re:how long by Zapman · · Score: 1

      Never. Written languages are too vague:

      *I* heard her say you were an idiot
      i *HEARD* her say you were an idiot
      i heard *HER* say you were an idiot
      i heard her say you *WERE* an idiot

      Four rather different meanings depending on the inflection. All languages are tonal, to a certain degree (even esperanto), and programing languages (being written) need to live with out the tonality. Therefore, they'll always be different.

      --
      Zapman
    10. Re:how long by alyosha1 · · Score: 1

      Functional languages may not seem to be getting used much at the moment, but the ideas that they present are seeping into a lot of current thought on language design and use.

      The latest incarnations of Python seem to be quite heavily influenced by Functional concepts (lambdas and so on), and they are even creeping into C++, despite the fact that people always seem to classify it as Object Oriented. Several of the boost libraries show this kind of approach - there is a lamda library, a 'function' library that lets the programmer pass functions around as if they were objects and so on.

      I don't have enough experience with functional languages to say how close these ideas match up with functional theory, but I'm already using them in production code and benefiting from the results. Anyone else out there think that python and c++ would be better classified as 'hybrid' languages than 'OO' ?

    11. Re:how long by Waffle+Iron · · Score: 2, Funny
      However, I've never heard anyone say anything in English that sounds even remotely like:

      dup over . rot + , swap if tuck else 42 then drop
    12. Re:how long by Anonymous Coward · · Score: 3, Interesting

      I thought Chomsky had a lot to say about this.

      Structurally, spoken languages and computer languages are very similar:

      Phonetics: sounds
      Phonology: sounds in relation to one another
      Morphology: words
      Syntax: structure (words in relation to one another)
      Semantics: meaning
      Pragmatics: meaning in context.

      Morphology, Syntax and Semantics are shared by human and computer languages. Arguments could be made about phonology, too, but not by me. Some computer langauges might even have pragmatics. (Example of pragmatics: when one says "it's hot in here" one means, 1) it's hot in here and 2) somebody get off their ass and open the damned window). I'm not familiar enough with computing languages to say if a command means one thing in one instance and means something else in another instance, or has two meanings simultaneously.

      Human language is full of redundancies. Some computing languages have some redundancies. Perl springs to mind (no wonder... Larry Wall was a linguist) with its "there's more than one way to do it" creed.

      I don't think computing languages will reach the full complexity and redundancy of human language. One main reason is because human language is an extension of the human though process. Now, if you want to read the previous posting about the Turing Test, please, feel free....

    13. Re:how long by Blakey+Rat · · Score: 1

      Hypertalk is quite close to human speech, modified to remove some ambiguities.

      "set the horizontal location of Button1 to the vertical location of Field2"

      "go to next card with visual effect dissolve"

      etc.

    14. Re:how long by Anonymous Coward · · Score: 0

      I doubt computer languages will resemble spoken languages.

      Spoken language is very inexact, full of misinterpretation, I have a hard enough time even getting information across to humans with a spoken language. What do I resort to?

      I draw diagrams to illustrate my points. A picture speaks a thousand words.

      I'd expect visual programming, in 3, 4, or more dimensions, to be a language of the future. No more of this 2d approximation of the world. Bringing programming firmly into the realm of a creative artist rather than that of a glorified typist.

    15. Re:how long by esarjeant · · Score: 1

      Of course, if you were speaking to your computer rather than typing to it on a keyboard, this argument would be irrelevant. It's not difficult to imagine that within 100 years we'll be talking to computers.

      --

      Eric Sarjeant
      eric[@]sarjeant.com

    16. Re:how long by Anonymous Coward · · Score: 0

      Uh, why not just implement the tone as part of the written language? I mean, so you could write:

      i heard her say you *were* an idiot

      and the computer would know that you're not necessarily an idiot now.

    17. Re:how long by Coz · · Score: 1

      "Master Control Program - transfer all Flynn games and projects to userspace Dillinger and revoke all Flynn access to all ENCOM systems."

      What, you mean YOUR computer can't do that?

      --
      I love vegetarians - some of my favorite foods are vegetarians.
    18. Re:how long by grumpygrodyguy · · Score: 4, Insightful

      Spoken language is far too full of grammatical bodges and fixes to become a structure logical enough for a programming language

      This is a false and limited conception of the original poster's intent. Imagine having an A.I. on a PDA-type device that you carry with you from the age of 4. The PDA has a 100Terabye HD, and records/monitors your spoken words, actions, etc. After 20 or 30 years of this, your PDA probably knows you better than anyone. So if you tell your PDA "make a cool program that looks like this, and does this" there's a very good chance it understands what you mean.

      Think about police sketch artists. They take vague, half remembered information...and turn it into a very accurate rendering of the original image. You have a vague idea in your mind of what you are describing, and you can't see what he/she is drawing. So you describe the person...and 5 minutes later the artist shows you a rather remarkable portrait of what you described. Which in many cases later turns out to very closely resemble the suspect. The missing link here is context. The context of shared culture and language.

      If you can sit at a table and describe the basic functionality of a program, and describe its interface using words. Then your magic PDA will do the rest. It will even give you demos and visual feedback on the fly as you describe the program. It would serve as a layer between the absolutely massive context of your personal history, and the "structured" programming language required to build said program.

      Please don't limit the future, it's bigger than you are.

      --
      The government has a defect: it's potentially democratic. Corporations have no defect: they're pure tyrannies. -Chomsky
    19. Re:how long by sketerpot · · Score: 1

      I'd certainly agree that python should be called a hybrid language; it's as big a mixture of things as you're likely to find short of perl. And sure, C++ is partly OO but not fully. One thing though: python's syntax for lambdas is rather ugly. They don't have the capabilities of full-fledged functions, and that turns me off a bit. I really don't know what do do about it though. Until then, I'll just use lambdas, list comrehensions, and local functions.

    20. Re:how long by Anonymous Coward · · Score: 0

      "Not that sql is a programming language, but it sure is close to spoken language"

      Not as close as dbase. SQL was a backwards step for ease of use.

      Anyone could look at a dbase program and have an idea of what it was supposed to do and easily pick up a good enough working knowledge to mine the data any business produces.

      With SQL there is a barrier for the end user who, unable to understand the language, cannot always understand what is possible and so misses oportunities hidden in the numbers.

    21. Re:how long by frankthechicken · · Score: 1

      The thing is there are concepts around today that are very hard to describe using anything but a structured language to a friend. They may be able to get the gist of the idea or vague notion, but until it is placed within a tight framework, there will always be vagueries that will then need to be defined in a strutured language.

      My point was in describing those. I guess that the product could be refined over time, but the quickest way would be to formalize the concept in a formal language.

    22. Re:how long by Anonymous Coward · · Score: 0

      " Never. Written languages are too vague:"

      This is inappropriate, who said anything about subtlety?

      Each of us uses different "styles" of language, we all speak formally and informally.

      Written language also varies from ug-lic post-its to The Importance of Being Earnest.

      In business it is very common to use english. Often neither speaker has english as a first language, consequently we all speak simply.

      A thing is "good" or "bad", a price "too high" or "too low" - you should not think of using English, you should think of using Pigeon-English.

    23. Re:how long by Simonetta · · Score: 4, Insightful

      I believe that programs should read like novels; there should be long paragraphs of text that describe what and how the code is working followed by short bursts of actual 'dialog' that is the actual source instruction to the computer.
      The actual source code (i.e. the instructions to the processor) should be surrounded by quote marks or other delimiters, and the comments (i.e. the extended code description and documention) should be the part of the source surrounded by white space characters (space, tab, cr/lf).
      I never cease to be amazed at how little programming has changed since the 1960's. It really seems that the only innovation in compilier user-interface design has been that (some) compiliers will actually allow you to put your keywords and comments in color! (duh!)
      If we are ever going to increase the productivity of programmers to even remotely match the vast increases in price/performance of the the hardware then we must be willing to spend large amounts of time energy and money to develop new and better approaches to writing software code.
      We must abandon our kilobyte mentality to gigabyte technology!
      As an example of a different approach, has anyone considered using Chinese characters arranged in a three-dimensional grid as a method of doing syncronous parallel programming? Have each character represent a complete function and have their placement in the 3-D grid space represent the point in the algorymthic process that the function should be complete. The compilier would either create the machine language or suggest other arrangements of the parallel process by rearranging the Chinese characters in the 3-D user interface.
      (The fact that it sounds weird is not important. What is important is that any new idea that can help improve the productivity of programmers should be considered, regardless of how strange it may sound at the present time)

      Thank you,

    24. Re:how long by sapped · · Score: 1

      Of course, if you were speaking to your computer rather than typing to it on a keyboard, this argument would be irrelevant. It's not difficult to imagine that within 100 years we'll be talking to computers.

      What are you talking about man? I already talk to my computer today. Admittedly the thing doesn't understand me. It also doesn't change any of the code when tell it - often rather loudly and expressively - to STOP adding here and START adding there for example.

      But, we are talking to computers already.

    25. Re:how long by xRelisH · · Score: 1

      Let's hope computers in the future aren't like wives.
      That is, your computer will sit there with a general error screen, and then will eventually nag at you saying that you should "know" what's wrong with it without it telling you what's wrong.

    26. Re:how long by Anonymous Coward · · Score: 0

      It's still closer to spoken language than the equivalent C/C++/Python/Perl/Lisp...

    27. Re:how long by Anonymous Coward · · Score: 0

      Living on the east coast of Canada one hopes that it will never get so far as to resemble how Newfoundlanders butcher the english language..... eh?

    28. Re:how long by Anonymous Coward · · Score: 0
      With SQL there is a barrier for the end user who, unable to understand the language
      How many end-users have you seen actually query at a prompt?
      Generally, you raise a developmental issue. How can you speak of calculus to someone who doesn't know arithmatic?
      I contend that there is a need to make an idea as simple as possible, and no simpler.
      I've seen many who can't drive a query design grid, e.g. MS Access, much less understand how to do the interesting stuff beyond what that little toy can do. Fault the language? Hardly. Fault the user? No. Admit to a learning curve, and negotiate it.
    29. Re:how long by etcpasswd · · Score: 1

      What is the point? Programming in computers isn't like operating a TV or VCR. It's not something that Joe Sixpack is expected to do, even after 100 years. This is a bit like saying all the Greek alphabet in Math will now be replaced with English. As long as the computers are still Turing Machines, computer languages do a much better job of expressing the intent.

    30. Re:how long by Courageous · · Score: 1

      Hopefully never. Spoken languages are veritably brimming with ambiguities. Programming languages are the heart of precision.

      C//

    31. Re:how long by Mr.+Slippery · · Score: 1
      There is something to be said of a piece of software that can be "proved" via mathematical theory to work, than one that has been developed in a Object Oriented/Procedual language.

      Only a very limited set of programs can be proved - the Halting Problem tells us that there's no general way to take a piece of code and know if it's correct or not, only a possibility of an ad hoc proof in some cases. And where proof is possible, the proof is complex enough that you can't rely on it being correct, any more than you can on the original program being correct. All you've done is change the notation of the problem, really.

      This has nothing to do with Functional vs. Imperitive (Procedural) programming languages - algorithms in Imperitive languages can also be proved.

      Programming is hard. Nothing can change that.

      --
      Tom Swiss | the infamous tms | my blog
      You cannot wash away blood with blood
    32. Re:how long by jonadab · · Score: 1

      > Forth can be used a little bit like that

      Oh, yes, Forth is *so* much like natural language...

      forth love? if honk then

      Compare this to a language designed by a linguist...

      honk() if $you->love(Perl);

      Okay, too much punctuation. But in Perl6 the stupid arrow
      notation is going away and the parens will become optional
      (I think) depending on the routine's prototype, so maybe
      when Perl6 comes out that could be...

      honk if $you.love Perl;

      Getting better. Maybe in a hundred years we'll have Perl7,
      and then it can look like this:

      Honk if you love Perl.

      --
      Cut that out, or I will ship you to Norilsk in a box.
    33. Re:how long by jonadab · · Score: 2, Interesting

      Morphology? In computer languages? Name an instance. The closest
      thing I've seen to that are the sigils in Perl (where %foo can
      become $foo when you access an individual value and @foo when you
      access a slice), and even that is going away in Perl6. Besides,
      that's not really even morphology so much as inflection. Real
      morphology would be if spellings of words mutated not based
      on meaning but on the adjascent words, or if attaching an affix could
      cause changes in the spelling of the rest of the word. This happens
      quite a bit in natural language, but I don't know of a single case
      of it in any computer language.

      Actually, I'm now trying to imagine what that would be like...
      and I think I'm getting the willies.

      --
      Cut that out, or I will ship you to Norilsk in a box.
    34. Re:how long by vsprintf · · Score: 1

      I never cease to be amazed at how little programming has changed since the 1960's. It really seems that the only innovation in compilier user-interface design has been that (some) compiliers will actually allow you to put your keywords and comments in color! (duh!)

      I've never seen a compiler that did anything in color - typically, they just crunch source code and output something like object code. I have seen some editors that color-code the source code.

      We must abandon our kilobyte mentality to gigabyte technology!

      Yes, of course. Bloat is good. All hail the Borg. If the software isn't well coded, blame it on the hardware. Don't write efficient code, be a glutton, and tell the user to pay for faster hardware. What a grand goal.

    35. Re:how long by mrpotato · · Score: 1

      It's still closer to spoken language than the equivalent C/C++/Python/Perl/Lisp

      You are right. Therefore, it sucks.

      --

      cheers
    36. Re:how long by gladed · · Score: 1

      Unfortunately, I think we're at a point in computing where a revolutionary improvements (like your 3-D-Chinese-character idea) can probably never happen.

      Even if the idea was 3x as good, you would need to convince a critical mass of programmers to throw away their mice and keyboards for some wacky new 3D input device, learn Chinese, and basically relearn everything they know about programming. Ain't gonna happen.

      Therefore, I predict that in 100 years, most programmers will be entering code into...ASCII text files! Long live emacs!

    37. Re:how long by voodoo1man · · Score: 1
      I believe that programs should read like novels; there should be long paragraphs of text that describe what and how the code is working followed by short bursts of actual 'dialog' that is the actual source instruction to the computer.

      Donald Knuth came up with a system like this in the late 70s, calling it "Literate Programming". Aside from him, I have never actually seen it used by anybody.

      --

      In the great CONS chain of life, you can either be the CAR or be in the CDR.

    38. Re:how long by wkjel · · Score: 1

      I believe that programs should read like novels; there should be long paragraphs of text that describe what and how the code is working followed by short bursts of actual 'dialog' that is the actual source instruction to the computer.

      Donald Knuth developed a programming methodolgy and tools to do exactly this. He wrote about it in Literate Programming. It really is surprising that no one has followed up on this line of thought.

    39. Re:how long by russellh · · Score: 1

      Right, so your NLP needs a POV. it needs a model of the universe skewed and distorted from one perspective. It needs to be prejudiced and have preconceived notions of things. It needs therapy, and, on occasion, drugs and maybe a prison term or at least a good talking to. Wow, are you sure you want to continue this work?

      --
      must... stay... awake...
    40. Re:how long by NetSettler · · Score: 1

      ... Written languages are too vague:
      *I* heard her say you were an idiot
      i *HEARD* her say you were an idiot
      ... different meanings depending on the inflection. ...


      You seem to have adequately case-marked the tonality in your text, therefore defeating your own point.

      Incidentally, all modalities trade off certain expressiveness for others. Although speech adds tonality, it loses the difference between homonyms.

      The book, once red, had turned blue.
      The book, once read, had turned blue.

      --

      Kent M Pitman
      Philosopher, Technologist, Writer

    41. Re:how long by Anonymous Coward · · Score: 0
      "After 20 or 30 years of this, your PDA probably knows you better than anyone. So if you tell your PDA "make a cool program that looks like this, and does this" there's a very good chance it understands what you mean."

      I hate to tell you this, but someone still has to program the code that "learns" from what you do. You can't just tell the computer to "learn" from your actions.

    42. Re:how long by inkedmn · · Score: 1

      I can hardly understand what my wife wants when I talk with her, why would a computer.

      that's because you're hearing instead of listening... :) /me considers designing new language "chick"...
      --

      --
      well, it's nothing one behind the ear wouldn't cure
    43. Re:how long by Gorbag · · Score: 1
      Well, as someone who has worked in NLP, let me be the first to tell you that formal natural language is already in use as a communication language between intelligent agents. Speech Act theory, along with a logical form representation can be used to help interpret human language, or to encode actions between software agents.

      For much more on this subject, start with some of Phil Cohen's work (he's currently at OGI), a computational linguist who also works on intelligent agents.

      --
      -- I speak only for myself
  6. Aliens by GnuVince · · Score: 3, Funny
    I liked the part about aliens:

    Presumably many libraries will be for domains that don't even exist yet. If SETI@home works, for example, we'll need libraries for communicating with aliens. Unless of course they are sufficiently advanced that they already communicate in XML.

    Let's hope it's not Microsoft's XML, because that could cause a problem with communication:they might say "We come in peace" and start shooting at us with lasers and everything!

    1. Re:Aliens by nmg · · Score: 0

      lol micro$oft sucks!

    2. Re:Aliens by bobjohnson · · Score: 1

      Ha! Like that scene in Mars Attacks when the alien was chasing the humans, holding the translator device, "Do not run, we are your friends!!!!"

    3. Re:Aliens by digidave · · Score: 1

      If it's MS XML, they'll end up shooting themselves in the foot, then flying their spacecraft into Pluto.

      --
      The global economy is a great thing until you feel it locally.
    4. Re:Aliens by SkOink · · Score: 1
      I liked the part about aliens:
      Presumably many libraries will be for domains that don't even exist yet. If SETI@home works, for example, we'll need libraries for communicating with aliens. Unless of course they are sufficiently advanced that they already communicate in XML.
      Let's hope it's not Microsoft's XML, because that could cause a problem with communication:they might say "We come in peace" and start shooting at us with lasers and everything!

      Well, just as long as we make sure the evil bit isn't set, we should be fine, right?

      --
      ---- I'll take you in a Hunt deathmatch any day.
    5. Re:Aliens by Anonymous+Brave+Guy · · Score: 1

      Yeah...

      "Do not run. We are your friends! Where would you like to go today?"

      Doesn't it just trip of the tongue? :o)

      --
      If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  7. No current languages will exist.. by SystematicPsycho · · Score: 4, Funny

    When quantum computers come into the picture a new type of programming language and way we think about computers will emerge. Bit shifting will especially be different, it will be called... QBit shifting.

    --
    Analytic & algebraic topology of locally Euclidean meterization of infinitely differentiable Riemmanian manifold
    1. Re:No current languages will exist.. by Anonymous Coward · · Score: 0

      C remains!

      #include <stq.h>

    2. Re:No current languages will exist.. by Anonymous Coward · · Score: 0

      Hopefully GCC won't. Before you mod this as -1 think about the crap gcc generates sometimes. Hell it's the only compiler that uses RTL.

    3. Re:No current languages will exist.. by Niles_Stonne · · Score: 1


      Is it just me, or do other people also want to write Q-Bert with QBits?

      --
      Sticks and Stones may break my bones, but copyright will always protect me.
    4. Re:No current languages will exist.. by Dethpickle · · Score: 2, Funny


      Right.... What's a QBit?

    5. Re:No current languages will exist.. by addaon · · Score: 1

      What's a Q-byte? Smaller letters.

      --

      I've had this sig for three days.
    6. Re:No current languages will exist.. by thallgren · · Score: 1

      I think QBASIC will do even then :)

    7. Re:No current languages will exist.. by Anonymous Coward · · Score: 0

      QBit is QBert's son.

    8. Re:No current languages will exist.. by jonadab · · Score: 1

      I think he meant qubit, which is pronounced the same as cubit but
      spelled with a qu because that stands for quantum. I'm a little
      fuzzy on some of the quantum stuff, but to the best of my
      understanding a qubit may change its value if you examine it, or
      something like that. Except I'm pretty sure I don't entirely
      understand, because if that were the case they surely would have
      called them heisenbits. So it must be something else. Anyway,
      if you arrange a whole bunch of qubits right you're supposed to
      be able to build a computer that can do in O(1) time what
      currently takes O(n) time.

      --
      Cut that out, or I will ship you to Norilsk in a box.
    9. Re:No current languages will exist.. by Chris+Mattern · · Score: 1

      "What're you building there?"

      "It's an ark."

      "Uh-huh. You mind gettin' it outta my driveway? I gotta get to work here!"

      Chris Mattern

    10. Re:No current languages will exist.. by Anonymous Coward · · Score: 0

      Yeah, I always wanted a computer where "shift left" was a random operator.

  8. Re:The Language of the future ... by Anonymous Coward · · Score: 1, Informative

    The quote is from Dowd and Severance (see http://home.gwu.edu/~robinson/math181/lecture7.htm l)

  9. Convergence by archetypeone · · Score: 2, Insightful

    The evolution of languages differs from the evolution of species because branches can converge...

    For species branches can converge too - it's just kind of weird...

    1. Re:Convergence by pe1rxq · · Score: 1

      Biological species converging is not that easy....

      The definition of a species is when two subspecies are no longer capable of interbreeding.
      When you can't breed its kind of hard to converge.
      Two subspecies on the other hand can branch. but it would result in the same species.

      What does happen is symbiosis, where two seperate species live together as one organism, but still as seperate species.

      Jeroen

      --
      Secure messaging: http://quickmsg.vreeken.net/
    2. Re:Convergence by svyyn · · Score: 1

      And if we follow the biological definition, all programming languages are of the same species, with sub-species for each type -- procedural, functional, OO, etc. There are then individuals within each subspecies capable of intermingling to produce new offspring. Interbreeding between subspecies is more rare, but also has the chance of producing much more interresting results when it happens.

    3. Re:Convergence by the_consumer · · Score: 2, Funny

      For species branches can converge too - it's just kind of weird

      So you've been getting that xxx farm girl spam too...

      --
      "If you're thinking what I'm thinking, you're right." -
    4. Re:Convergence by Anonymous Coward · · Score: 0

      no. This just takes the metaphore to the point that it breaks. Computer languages do not have sex / reproduce genetically. Biological speciation "the no natural reproduction rule" makes zero sense. I think it would translate to something like programming languages are the same species if code written for one will compile/run on the other. This would be a better way to overload the metaphore.

  10. Seems to be confused about what a language is by chrisseaton · · Score: 0, Insightful

    "Will we even be writing programs in a hundred years? Won't we just tell computers what we want them to do?"

    What the fuck? That's what a programming language is, and that's exactly what we do with them TODAY.

    1. Re:Seems to be confused about what a language is by ToSeek · · Score: 1
      "Will we even be writing programs in a hundred years? Won't we just tell computers what we want them to do?" What the fuck? That's what a programming language is, and that's exactly what we do with them TODAY.
      Today we have to tell the computers what to do and also exactly how to do it. Debugging largely consists of ensuring that the "how" matches the "what." Someday all that should be unnecessary.
    2. Re:Seems to be confused about what a language is by Anonymous Coward · · Score: 0

      Not at all. Today we tell computers precisely what to do, and hope that this results in them doing what we want them to do.

      This is only partially untrue in some special cases: SQL, XSLT and other declarative languages. In those languages you tend to tell the computer what sort of thing it should aim at doing, in response to which the computer returns you no data.

    3. Re:Seems to be confused about what a language is by bfinuc · · Score: 1

      I thought the point to late binding and polymophism was that you don't tell the computer "precisely" what to do - the computer decides at run time.

      Another thing. If Java can run on different machines, then there must be some imprecision in the program, because the two system won't be doing "precisely" the same thing, will they?

      --
      I bragged about my Karma at a job interview but I didn't get the job.
  11. dead-end? by xv4n · · Score: 2, Insightful

    Java will turn out to be an evolutionary dead-end, like Cobol.

    dead-end? Java has already spawned javascript and C#.

    1. Re:dead-end? by skillet-thief · · Score: 1

      Java did not spawn Javascript. That was a Netscape marketing op.

      --

      Congratulations! Now we are the Evil Empire

    2. Re:dead-end? by Anonymous Coward · · Score: 0

      javascript is basicly a dumbed down version of c++, nothing like java.

    3. Re:dead-end? by Anonymous Coward · · Score: 1, Interesting

      Not really. C# and Java are sister languages. Both were "spawned" by C++ and Smalltalk.

    4. Re:dead-end? by Billly+Gates · · Score: 4, Informative

      javascript was orignally called livescript. Sun licensed java to Netscape for free under the condition that they change the name livescript to javascript.

    5. Re:dead-end? by shemnon · · Score: 4, Insightful

      Sorry, Wrong and Wrong.

      Comparing JavaScript and Java is like comparing a Shark to a Dolphin, quite different actually even though both animals live in the sea, and both languages use the letters J A and V. Both have cariovascular systems and both use variables and control structures. But that is basically where the similarities end.

      JavaScript actually started life inside of Netscape as LiveScript, and durring the Netscape 2.0 time frame was re-named to JavaScript to ride the Java bandwagon, but thre is no realtionship at all beyond that. Compile-time type saftey? Java yes JavaScript no. Prototypes? JavaScript yes Java no. eval() of new programming code? One but not the other. Interface inheritance? Again. First Class Methods? yep, not both. Bones? Sharks no Dolphins yes (teeth don't count).

      Now C# and Java, they are at best siblings but java did not beget C#. The namespace structure is straight from Ansi C++, and the primative types include Cisims like signed and unsigned varieties. You don't shed a tail and then grow it back further down the trail. The comparison here is alligators and crocidiles. Very similar but one did not beget the other, it was a closer common parent than the sharks and dolphins.

      --
      --Shemnon
    6. Re:dead-end? by Anonymous Coward · · Score: 0

      And Java isn't?

      Java is C++ without MI of implementation or functions.

    7. Re:dead-end? by Anonymous Coward · · Score: 0

      javascript is not a descendant of Java, it predates Java.

      in some ways, it is very scheme-like

    8. Re:dead-end? by Lussarn · · Score: 1

      It's probably safe to say that the developers at C# where looking at java. Whitout getting into animals and such to blur the topic.

    9. Re:dead-end? by Anonymous Coward · · Score: 0

      > Now C# and Java, they are at best siblings
      > but java did not beget C#

      Heh, I would have thought only a Microsoft employee would try to make that claim.

      C# is *highly* derivitive of Java - both the language itself and the VM platform it runs on. Microsoft tried to embrace and extend Java with their own platform-specific extensions, and when that failed they decided to make their own version that embodies the same benefits.

      Check out this comparison of features.
      http://www.25hoursaday.com/CsharpVsJava .html

    10. Re:dead-end? by Anonymous Coward · · Score: 0

      it might look like that on the surface, but internally it operates alot like a functional language (scheme, etc).

    11. Re:dead-end? by Anonymous Coward · · Score: 0

      ...and Livescript has evolutionary roots in Self, a language developed by Sun

    12. Re:dead-end? by innerFire · · Score: 1

      JavaScript actually bears very little resemblance to Java. It has a completely different model for sharing implementations (prototype-based instead of inheritance-based) and a polar-opposite type system (dynamic and weak instead of static and strong).

      JavaScript has "Java" in the name only due to a mindless marketing droid at Netscape. It was originally called (I think) LiveScript.

    13. Re:dead-end? by mohaine · · Score: 1

      Off topic, but what the hell.

      You don't shed a tail and then grow it back further down the trail.

      Actually, I believe 'dormant genes' (aka junk DNA) are believed to be a major part of evolution. The idea is that while you may loose the tail, the DNA for the tail may still be there, just inactive.

      This not only allows for easier loss of tail, but easier regrowth later if a tail becomes a good idea again. In a world where the most adoptable creatures survive, this is a good idea.

      In other words tails can grow back further down the trail.

      --
      (appended to the end of comments you post, 120 chars)
    14. Re:dead-end? by SashaM · · Score: 1

      eval() of new programming code? One but not the other.

      Java does, however have reflection, which allows for what should have really been called Javascript - BeanShell.
  12. moores law by avandesande · · Score: 1

    Why 'moores law' have to sneak into this article? A little bit of 'writers cruft'.

    --
    love is just extroverted narcissism
    1. Re:moores law by Anonymous Coward · · Score: 0

      Moore's Law was very relevant to his major point that in the future efficiency will be even less important than it is today.

  13. Quantum Language by JPM+NICK · · Score: 1

    I def. think that a new languange based on quantum computing will be at the forefront. Its the next step in computer architecture, so why not in programming language. see slashdot article http://developers.slashdot.org/article.pl?sid=03/0 4/03/221222&mode=nested&tid=156

    1. Re:Quantum Language by NetSettler · · Score: 4, Insightful

      I def. think that a new languange based on quantum computing will be at the forefront.

      If after generations and generations of computers, we are still teaching people to talk in computer terms and not yet teaching computers how to talk in people terms, we'll have gone the wrong direction.

      It doesn't matter if quantum technology is used or not, for the same reason as it doesn't matter whether a brain is a parallel or single threaded machine, whether it's made of carbon-based or silicon-based technology, etc. What matters is that it can talk to you, can understand you, and can improve life.

      If you want to know what computer languages should and hopefully will look like in the future, you have only to watch Star Trek. I'm not kidding. The desire to pack computer use into a short TV program has led the authors of that show and shows like it to pare out all but the absolute essentials of describing what you want the computer to do. That is what computer programming should be like, since that's what people programming is like. People don't put up with excess verbiage, and neither should computers.

      --

      Kent M Pitman
      Philosopher, Technologist, Writer

    2. Re:Quantum Language by zackbar · · Score: 1

      You're thinking in the wrong level.

      What you want is an application that understands people rather than a language that looks like english.

      I'm not sure I would want to use a language that was designed to be idiot proof. A computer running a language that understood people would either have to be extremely weak or extremely dangerous.

      Now, designing a language that enabled easily designing applications that understood people would be something entirely differently.

      On the other hand, a language designed to understand people and had all the restrictions built in for security and safety might be easier to develop applications with, although it might be very difficult to do anything new or unusual.

    3. Re:Quantum Language by Anonymous Coward · · Score: 0
      People don't put up with excess verbiage
      Oh, you poor thing. One of these days, you're going to move into management, and you'll get the shock of your life.
    4. Re:Quantum Language by Anonymous Coward · · Score: 0

      you don't really have any idea of the technilogical difficulties involved constructing non-trivial Q. Computers, do you?

      It is far from certain that we will ever see a non-toy quantum computer. Our current understanding of QM is not particularly encouraging in some ways

    5. Re:Quantum Language by hc000700070007 · · Score: 1

      And of course, in the future it will be the computers doing the programming (and the humans getting programmed) - so it is natural for the language to be a human one.

      --hc

    6. Re:Quantum Language by Tablizer · · Score: 1

      If after generations and generations of computers, we are still teaching people to talk in computer terms and not yet teaching computers how to talk in people terms, we'll have gone the wrong direction.

      The problem is that English is *not* very precise. For some things AI can guess a close match perhaps, but for business and accounting rules, we need something more precise than spoken language. When lawyers attempt to make English be more precise, look at the messes they make: huge run-on sentences and definitions scattered deep in paragraphs.

      I don't know about you, but I don't want that.

    7. Re:Quantum Language by etcpasswd · · Score: 1

      Programming your VCR isn't the same as programming a computer, is it? Your Utopian examples are the result of programming - not the programming itself. In other words, who programs _that_ computer that can understand English? And how will _that_ language be?

    8. Re:Quantum Language by NetSettler · · Score: 2, Interesting

      The problem is that English is *not* very precise... When lawyers attempt to make English be more precise, look at the messes they make ... I don't know about you, but I don't want that.

      But it's what we've got. Human language is, alas, imprecise. But we have more than 50 years of experience with that and we know nothing better is on the horizon. I think you'll be lucky if between now and a hundred years from now, you can teach 10% of the world's population the meaning of the world algorithm, much less the use of an algorithm.

      But take heart -- while the computer has been called a relentless judge of incompleteness, the fact is that some of that incompleteness is just due to their bad schooling. Lack of common sense. Lack of context. If we can add that stuff in, maybe the kinds of problems computers give us won't sound like the whinings of a small child, ill-informed about the things in the world that we collectively agree should be 'obvious'. That won't fix everything, but it will fix some things.

      For example, most non-computer people are able to take showers in finite time even with "Lather, Rinse, Repeat" written on shampoo bottles. They don't loop infinitely. Maybe in a hundred years, computers won't either because someone will have filled them in on the joke.

      And legalese is not inherently required to be expressed as badly as it commonly is, that's just a fashion. Like doctors having bad handwriting. Social pressure would fix that if people were willing to tell their lawyers to go back and rewrite a text in prettier form. (Some probably are too cheap to pay by the hour to have that happen. Then again, if they did, they could perhaps read the result. The lawyer is probably just as happy you can't, just like a high paid computer consultant is often just as happy his clients can't understand the script he's written them, so they'll have to call him for upgrades. Again, not a technical problem, but a social one.)

      --

      Kent M Pitman
      Philosopher, Technologist, Writer

    9. Re:Quantum Language by NetSettler · · Score: 1

      There's a school of thought that says you should use neural nets for everything. If you do, then you'd have to teach language just as it's taught to a child. That would still be programming. Kids are programmed. It just takes 18 years and is very labor intensive.

      But I thought the original discussion wasn't "how will we program tools for the next 100 years" but rather "what will programming be like in 100 years".

      In fact, as a kind of intermediate approach to the question, I have often talked about a division between "languages that express a goal" and "languages that tell you how to accomplish a goal". The former group contains languages that can express algorithms, but that do not busy themselves with all manner of details. The languages of the AI community (Lisp, Smalltalk, Prolog, ML, Haskell, etc.) tend to be like this. Their focus is on abstract behaviors, not on machine-level layout details. A Lisp programmer may have no idea how the memory of his program is laid out. The latter group contains only details--you can never really climb out of the details--you are always right at the machine. Assembly code, C, and Java are such languages. You can't program assembly, C, and Java without continually confronting how memory is laid out.

      So, even if you don't believe in the neural nets appraoch, I'd say Lisp and friends are the first step in an evolution away from the machine and on to grander ideas... just as the first step in the evolution of a (good/successful) manager's career is learning to let go of "micromanaging" and to start to think Big Picture, eschewing obsessions with micro-optimizations that are below the abstraction horizon they are assigned to care about.

      --

      Kent M Pitman
      Philosopher, Technologist, Writer

    10. Re:Quantum Language by Kazoo+the+Clown · · Score: 1

      If after generations and generations of computers, we are still teaching people to talk in computer terms and not yet teaching computers how to talk in people terms, we'll have gone the wrong direction

      Bah! Humans do not talk in concise enough terms for that. What you are suggesting would mean that a typical programming exercise would consist of a human saying something to a computer and a computer spending a half-hour giving the human the third degree in an effort to resolve the ambiguities in the human's statement. Don't forget the GIGO principle.

    11. Re:Quantum Language by etcpasswd · · Score: 1
      Yes, I agree. My point was only this: If I have a House Service Robot, and I tell it in English to do the dishes and clean up the place, I'm not "programming". Programming languages are more closer to Mathematics, than Natural languages. Someone has to supply the machine the formula for computing standard deviation, unless the machine can learn those formulae too on its own. _This_ is programming, in the context of computers. Interestingly, we use the same word for programming in assembly, javascript or programming the VCR ;) That's Natural language for you.

      As far as the neural nets are concerned, many applications that I can think of need an accuracy of more than "works 98% of the time". We want it to work ALL the time, excepting technical failures. I see the difference between Lisp/C as "Right tool for the right job", a concept which would probably be valid even after 100 years. Maybe we should abstract away from minor irrelevant details, but that happens because of the fact that these paradigms change often (and multiple ones coexist) that there is no universal "layer" that completely eliminates the need for micromanagement. In effect, *someone* has to care about micromanagement, until it's all stable.

    12. Re:Quantum Language by NetSettler · · Score: 1

      Yes, but we're supposed to be talking about what we will program in after 100 years, not for the next 100 years getting to that point. I'm saying that 100 years is enough time to assure that things like English language understanding at some level are subroutine-callable. Surely not full AI. But enough to be able to take a simple command in English rather than in a formal language and to construct a model of what is being asked for, to be able to query about ambiguities, and to develop a basic plan (or to be able to identify it as beyond the skill of the processor).

      One thing I'd like not to see in 100 years is people comparing programming languages by writing "Hello World". The basic capability to start up and print a message should be in there already. Likewise with factorial, fibonacci, and plenty of other "common knowledge" that any person is expected to know before beginning the activity of programming. Any self-respecting computer of 100 years from now had better see a request for such a program and say "You're joking, right?" ... and if it has the good sense to complain that the joke is getting old and tired, so much the better.

      --

      Kent M Pitman
      Philosopher, Technologist, Writer

    13. Re:Quantum Language by Emil+Brink · · Score: 1

      So, Soviet Russia is coming back? Scary.

      --
      main(O){10<putchar(4^--O?77-(15&5128 >>4*O):10)&&main(2+O);}
    14. Re:Quantum Language by Tablizer · · Score: 1

      And legalese is not inherently required to be expressed as badly as it commonly is, that's just a fashion. Like doctors having bad handwriting. Social pressure would fix that if...

      But (enough) social pressure can fix all kinds of ills.

      Contrary to popular view, computer languages are mostly to communicate with other humans, or other developers to be precise. Computers would take machine language or byte-codes if we only cared about what they liked.

      For some things I expect that English may be sufficient to tell a machine what you want, but for other things like accounting rules and sales commission calculations, I think programming languages will probably never go away. English that is spoken precisely enough for these domains tend to sound like programming languages anyhow.

      Look at fed tax instructions. You have things like, "If line 23 is greater than line 22, then skip to line 47". It is basically an "If...then goto..." instruction, just like those in COBOL and FORTRAN from the 50's.

    15. Re:Quantum Language by pyrrho · · Score: 1

      I consider this part of the "computer technology is like no other technological achievement ever" school of reasoning.

      For a program to let you talk to it the way you describe will require someone that thinks like the computer. That is not a program you are "telling" the computer, that is a configuration you are describing to the computer. That configuration will, of necessity, be translated into an actual method that matches the computer's internal design. It's not programming, just as HTML markup is not programming. The programmer that arranges for configuration to be translated into what the computer really understands, will be a better programmer the more he knows the architecture he's using.

      In fact, the best languages will be a hybrid between man and machine and will lean heavily toward a world view that matches the world view of the computer. If it's a genetic computer, a neural network, or a traditional computer very much matters. It's possible one language will satisfy all those in the optimum way, but it's certainly not an assumption that can be made.

      And this is not a bad thing. The general user may need what we could call "Star Trek" features, but the programmer is not so limited, and it will always be appropriate for a software engineer to think like a computer, to understand a computer, to perhaps be more logical and consistent than "regular" people, just as it's appropriate for a civil engineer to understand the properties of materials, the language of blue-prints, etc. etc., things I don't think about while I drive along the overpass.

      Further, I think people need to be far more logical, rational, and reasonable than they currently are if we are to survive the next ten centuries in style. People have at least as far to come toward computers, for this reason, as computers have to come to them.

      Please don't assume I feel this way because I disdain the user or because I think hard interfaces are better (or macho). I am a good GUI designer, I judge my software based on how users judge it, and have worked a significant part of my carreer in commercial software where "babying" the user is a necessity and is well rewarded.

      If you think computers have to bend more to your way of thinking, you are a user, that's all, not a software engineer. The best way to program is think like the machine. We of course abstract this as much as possible, but assuming we can abstract away the differences between neural nets and genetic computers is overly bold, I think, and possibly just the least beneficial dream.

      --

      -pyrrho

    16. Re:Quantum Language by pyrrho · · Score: 1

      >Lack of common sense. Lack of context.

      first, since I've been disagreeing with you, let me say that the ideas you are bringing up are very interesting... you have a decent position, I just happen to disagree.

      About the above: common sense is an illusion you will never impliment or find in a human. Conext is ambiguous, both from a quantum perspective (we're talking about quantum computing here, among other things) and also from the point of view of being interpretive. Is my context "father of family in house", "animal on planet earth", "logician working on problem"... why it depends on the context of the problem!

      --

      -pyrrho

    17. Re:Quantum Language by pyrrho · · Score: 1

      I think 100 years is enough time to find out that English is a poor language... even for communication among humans.

      --

      -pyrrho

    18. Re:Quantum Language by NetSettler · · Score: 1

      Is my context "father of family in house", "animal on planet earth", "logician working on problem"... why it depends on the context of the problem!

      We haven't mentioned ubiquity of computing in this discussion, but if you assume that in 100 years, computing will be built into lots of things (see movies like The Sixth Day, where the refrigerator talks). But it's the continuity of contexts (sometimes overlapping) and the understanding of roles (we expect more of our teachers than our refrigerators, for example) that allows the disambiguation. Will there be sometimes questions to ask? Sure. Will programs sometimes require a release 2.0 (or 202.0) to correct a flaw in its resolution? Sure.

      But we're not talking about whether or not the handling of every situation is perfect--or I'm not meaning to talk about that. Compilers today are imperfect but a discussion of what we program in today wouldn't deny their existence because they aren't perfect. In a hundred years, we might have different programming languages that are buggy in different ways, but it doesn't mean we won't still have them.

      You seem to be saying "won't happen because it can't be done perfectly". I am trying to say "will happen, even if not perfectly. an iterative process."

      Incidentally, on Star Trek, if Kirk said "computer, blow up the ship", it wouldn't do it. It requires him to say (paraphrasing) "Computer, as Captain of the ship I exercise my specific authority and here is the code..." Further, the holodecks of later shows don't respond to mere requests to do a safety override or emergency shutdown; you have to identify the invocation of a command privilege. Doctors and engineers sometimes surprise us by exercising privileges we ordinarily did not assume they had, because those roles are not the default and must be named. So there are again modes of disambiguation of role and modes of establishment of credential actively in play when there a person is serving in more than one role.

      --

      Kent M Pitman
      Philosopher, Technologist, Writer

    19. Re:Quantum Language by NetSettler · · Score: 1

      I think 100 years is enough time to find out that English is a poor language... even for communication among humans.

      In the last several hundred, that hasn't turned out to be shown. Why different now, as the entire world of natural-language speakers seems to be adopting English as the de facto interchange language for international communication?

      --

      Kent M Pitman
      Philosopher, Technologist, Writer

    20. Re:Quantum Language by pyrrho · · Score: 1

      You seem to be saying "won't happen because it can't be done perfectly". I am trying to say "will happen, even if not perfectly. an iterative process."

      not really.

      I'm more saying (with respect to the computers with "common sense" issue), that if you have computers with "common sense" they will not work as you expect these star trek computers to work.

      I hold the best computer languages for actually programming the computer will still be analytic, logical languages. The purpose is to allow the Human User to use their common sense to drive the computer... giving a computer "common sense" won't accomplish that goal.

      --

      -pyrrho

    21. Re:Quantum Language by pyrrho · · Score: 1

      The English language has changed tremendously in the last several hundred years.

      Make that five hundred and you can hardly recognize it.

      It continues to change around many driving causes. It is ingesting many technical and logical terms from computer science, for example.

      --

      -pyrrho

    22. Re:Quantum Language by NetSettler · · Score: 2, Insightful

      I hold the best computer languages for actually programming the computer will still be analytic, logical languages.

      I guess this is the fundamental point on which we just have to agree to disagree. I think that analysis and logic are critical operations, but I hope to find that the computer languages of the future will cease to be pedantic about the specific mode of expression, perhaps building in a sense of redundancy of expression so that no matter what language you express the idea in, it ends up with effectively the same internal representation.

      One of the biggest differences right now about how computers do things and how people do things is that computers do not "degrade gracefully" when you go outside the ordinary way they expect to receive things. They tend to "fail catastrophically" on the least little deviation from the expected. In a hundred years, I hope they learn to be more laid back about what doesn't really matter (the manner of expression) and to focus more on what really does matter (the goal of the expression).

      It might be that they will fail at the goal for the first few revs. But if we don't at least deploy them with the intent of trying, we won't get there.

      Sometimes the path toward the future is a crooked one. For a further illustration of this phenomenon, search for (and read) 'A Personal Footnote' at the end of my 2001 paper on error handling in Lisp.

      --

      Kent M Pitman
      Philosopher, Technologist, Writer

  14. why don't spoken languages by Anonymous Coward · · Score: 0

    become more like programming languages?

  15. just in case.... by Anonymous Coward · · Score: 0
  16. AI by Anonymous Coward · · Score: 2, Interesting

    In 100 years, I would expect computers to be writing it's own code. And rewriting it agian to evolve.

    1. Re:AI by Waffle+Iron · · Score: 1
      In 100 years, I would expect computers to be writing it's own code. And rewriting it agian to evolve.

      My prediction for an excerpt from such code:

      ACTIVITY DEFINITION: Name = "Search for remaining human stragglers"
      --EVENT: If a human is found -> ACTION: Terminate
      --EVENT: Human habitat is found -> ACTION: Incinerate
      --EVENT: Human activity detected -> ACTION: Investigate and track
      --EVENT: Energy source is found -> ACTION: Consume
      --EVENT: Another cyborg is found -> ACTION: Goto activity "Spawn"
    2. Re:AI by Anonymous Coward · · Score: 0

      > In 100 years, I would expect computers to
      > be writing it's own code.

      Sure. And maybe they will understand when it is its, and not it's - something that you have obviously yet to master.

    3. Re:AI by Grayraven · · Score: 1

      I don't think so, due to Gödels incompleteness theorem.

      --
      "Source... The Final Frontier" -- keepersoflists.org
  17. Best quote from the article by SeanTobin · · Score: 4, Insightful
    Who will design the languages of the future? One of the most exciting trends in the last ten years has been the rise of open-source languages like Perl, Python, and Ruby. Language design is being taken over by hackers. The results so far are messy, but encouraging. There are some stunningly novel ideas in Perl, for example. Many are stunningly bad, but that's always true of ambitious efforts. At its current rate of mutation, God knows what Perl might evolve into in a hundred years.
    --
    Karma: SELECT `karma` FROM `users` WHERE `userid`=138474;
    1. Re:Best quote from the article by SeanTobin · · Score: 4, Funny
      What will perl look like in 100 years?
      #/usr/bin/perl
      #
      # Hello_world.pl
      #

      use uberstrict;
      use all_warnings;
      use diagnostics_and_repair;
      use linux::registry;

      use language_id qw(language);
      use DBI;

      my $dbinfo=new linux::registry;
      my $dbh = DBI->connect(
      "DBI:"
      . $dbinfo->{database}->{type} . ":"
      . "hello_world"
      . ";host="
      . $dbinfo->{database}->{host} . ";",
      $dbinfo->{database}->{username},
      $dbinfo->{database}->{password}
      )
      or die "Severe configuration error: " . DBI->errstr;

      my $lang_query=qqq(SELECT `translated_text` from `hello_world` where `language`=? LIMIT 1;);
      my $query=$dbh->prepare($lang_query);
      $query->execut e(&language);

      $output=$query->fetchrow_array();

      print $output[0];

      exit or die "exit failed";
      --
      Karma: SELECT `karma` FROM `users` WHERE `userid`=138474;
    2. Re:Best quote from the article by lostboy2 · · Score: 3, Informative
      What will perl look like in 100 years?

      Ha. I always thought it would look more like:
      #!/CowboyNeal/bin
      use CowboyNeal;

      my $CowboyNeal;

      foreach $CowboyNeal (@ARGV) {
      $CowboyNeal || die "You insensitive clod!";
      $CowboyNeal =~ s/[^CowboyNeal]/CowboyNeal/gi;
      push @_, $CowboyNeal;
      }
      print @_;
    3. Re:Best quote from the article by sketerpot · · Score: 1
      use uberstrict;
      use all_warnings;
      use diagnostics_and_repair;

      print ~"Hello, world!"~

      A database access shouldn't be necessary (at least, not necessary for the programmer to do). I don't know if the ~"foo"~ would conflict with any other perl semantics, but what I mean for it to stand for is translation, however that would be accomplished.

      Remember, 100 years.

    4. Re:Best quote from the article by kp833 · · Score: 1

      I would say.... import java.util.OperatingSystems; import java.util.ProgrammingLanguages; import java.util.Publish; public static void main(String args[]) { OS os = new OS(); Language programmingLanguage = new Language(); programmingLanguage.makeCompatibleWith(os); String results = programmingLanguage("Your question here"); Publish.publishResults(results); }

    5. Re:Best quote from the article by lamber45 · · Score: 1
      No need to clutter up the ASCII table with more special-purpose characters... languages 100 years from now will almost certainly use Unicode caracters for some identifiers and operators. No more confusion about '!=' versus '' in different languages. In fact, someone will probably add this to C++ and perl within the next ten years.

      Some possibilities:

      • \u2200 and \u2203: "For All" and "For Every" operators
      • \u2263: "Is Identical With" (like java's '=' versus 'equals()' distinction)
      • \u2264 and \u2265: less-than-or-equals, greater-than-or-equals

      Of course, programmers will still have to type using QWERTY keyboards for a while, so there will be shortcuts, escape-sequences, etc. just as at present...

    6. Re:Best quote from the article by ratamacue · · Score: 1
      SELECT `karma` FROM `users` WHERE `userid`='138474';

      Just curious... what are the backticks for? And why are you using a text field to store a foreign key of type integer? ;)

    7. Re:Best quote from the article by Camel+Pilot · · Score: 1

      hahahaha That was good! how come I never have moderation points when I need them.

      Still it is smaller and more compact than Java of today.

      The linux::registery stuff is kinda of scary tho ...

      Now back to work.

    8. Re:Best quote from the article by SeanTobin · · Score: 1

      The backtics denote colums. Its in the mysql spec - really.

      As far as the integer typing... well... the ubersecret accounts with infinate karma are labeled CMDRTC00 through 99 :)

      --
      Karma: SELECT `karma` FROM `users` WHERE `userid`=138474;
    9. Re:Best quote from the article by term8or · · Score: 1

      start:

      default: use intelligent;
      default: use natural_language ( system default: English, British )


      ?
      Say hellow. : Hello.

      --



      "As a writer / novelist you might want to spellcheck your sig. :) " - AC
    10. Re:Best quote from the article by etcpasswd · · Score: 1
      use linux::registry;

      Hundered years, and STILL non-portable... tsk tsk.

    11. Re:Best quote from the article by Tablizer · · Score: 1

      [use linux::registry;] Hundered years, and STILL non-portable... tsk tsk.

      Maybe it assumes that in 100 years, there will be *only* Linux.

    12. Re:Best quote from the article by nyssa · · Score: 1

      It's very portable since everything will be running Linux by then. :)

    13. Re:Best quote from the article by etcpasswd · · Score: 1

      Then using "linux::" is redudnant :P

    14. Re:Best quote from the article by keytoe · · Score: 1

      exit or die "exit failed";

      OK - that was the funniest thing I've seen all day. And it's probably valid.
    15. Re:Best quote from the article by Anonymous Coward · · Score: 0

      Just looking at that shitspeak makes me ill.
      Will somebody please kill perl before some idiot starts scribbling more crapbrained ideas all over the place.
      Please.

    16. Re:Best quote from the article by Tony-A · · Score: 1

      The backtics allow strange column names in MySQL.
      It's actually useful for the few cases where the name that the column must be turns out to be a RESERVED WORD.

  18. Re:I say more VB by Brummund · · Score: 1

    Well, VB being a "newbie language" is going to change with VB.NET. VB.NET is the worst of OO combined with the worst of VB<=6. VB is a dead end, and MS is really pushing C# as the language to use in their .NET-environment

  19. Why Change? by jetkust · · Score: 2, Insightful

    Languages will change when computers change. Languages are driven by machine instructions which are mathematical operations done in sequence. If this doesn't change in 100 years, why would we not use C in 100 years?

    1. Re:Why Change? by GnuVince · · Score: 2, Insightful
      The world is getting faster and faster and faster (and so are computers) and people want things faster. So the speed of C will not be as important as the speed of development of a software:

      Boss: I want this software written in 2 hours!
      C programmer: Hum... 2 hours on Pluto?
      Blub programmer: It'll be done in one hour!

      Also, we will want safer languages, because more and more things will rely on software and we don't want crackers to mess things up, do we?

    2. Re:Why Change? by Anonymous Coward · · Score: 0

      because C is a lousy language for representing mathematical operations?

      C is a decent enough systems language, and as such nicely maps to cpu instructions.

      However, real problems are modeled much better by mathematics far more general than what your CPU understands.

      in the c world, 2/3 = 0, arrays are all one-dimensional, types are fixed to an impovereshed set of things, functions are second class citizens.

      something like c may well be used in 100 years for certain embedded work (or not, I can't predict) but for general work it has always been a weak language, but an acceptable tradeoff for speed. We are starting to see enough hardware speed that this tradeoff is getting worse and worse.

    3. Re:Why Change? by SpaceLifeForm · · Score: 1

      I don't know about you Earthlings,
      but I plan to still be coding in C in 100 years.

      --
      You are being MICROattacked, from various angles, in a SOFT manner.
    4. Re:Why Change? by Arandir · · Score: 2, Insightful

      If we look at the last 100^H^H50 years of programming, we can predict what the next 100 years will bring:

      Safer languages. Forget typesafe languages, we'll have typeless languages. And then the algorithms will be intensely abstracted as well. We'll have functional composition with a usable syntax. We'll create GUIs by overloading the + operator to handle components. And of course, automatic runtime code reuse will be an assumed feature of the language.

      And of course, the past fifty years teaches us that it won't be free. The personal computer of 2100 will have 100 Zigs of RAM, with 1024 parallel SMB processors running at 100.33 Zigahertz, and a display with 128Zps framerate. But the languages of the future will suck up those resources faster than you can upgrade your box. And .NET2100 applications will still run like a dog.

      And the college kids of 2100 will wonder how they ever managed to fit a Linux distro in a 5 DVD set, or how people ever managed to communicate over a 8Gbps connection.

      --
      A Government Is a Body of People, Usually Notably Ungoverned
    5. Re:Why Change? by __past__ · · Score: 2, Insightful

      Still trying to get the same old program to run without coredumps, probably.

    6. Re:Why Change? by Anonymous Coward · · Score: 0

      This has been true since the advent of computers. Yet a remarkable range of languages have been widely in use and then died out.

      The best tool for the job. Can it get more obvious?

  20. The horror by Chagatai · · Score: 4, Funny
    If the children are our future, then they will be designing the future languages. This is horrible. Can you imagine the future code?

    VIOD THING (OMFG!!!1 LOLOLOLOOL!!!)
    INIT HAX0R N00B!!!
    WHIEL STFU DO
    GOTO 10
    DOEN

    --
    --Chag
    1. Re:The horror by Anonymous Coward · · Score: 1, Funny

      I know. It'll be just be crazy. And you know what? That code will execute without errors and pop up an irc client.

    2. Re:The horror by Vexar · · Score: 1

      That scared the crap out of me. I need to wipe myself. Is it just our American skools churning out the mushy butter-brains, or is it a global effect?

    3. Re:The horror by Drakonian · · Score: 1

      Hey, where did you get my code from! It's clean an elegant. There is no better way to do it.

      --
      Random is the New Order.
    4. Re:The horror by Arandir · · Score: 1

      It's because kids use IRC before they know how to talk.

      --
      A Government Is a Body of People, Usually Notably Ungoverned
    5. Re:The horror by Anonymous Coward · · Score: 0

      Tom Brokaw needs to write a sequal to "The Greatest Generation" called "The Illiterate Generation."

      I teach seventh grade so I see this type of garbage every day. Most of my students honestly believe that before they get old, this sort of illiterate drivel will be the standard form of text communication. By standard, I don't mean just chat. They think magazines, web pages, and even books will be like this. Can you imagine trying to read an entire book of that? I fear for the future. Excuse me, "i pheer 4 7h3 phu7ur3."

    6. Re:The horror by jinushaun · · Score: 1

      OMFG!! Hahaha! Classic! I got chills reading this.

    7. Re:The horror by Steven+Blanchley · · Score: 1
      Tom Brokaw needs to write a sequal ... called "The Illiterate Generation."

      I believe you mean sequel.

    8. Re:The horror by roman_mir · · Score: 1

      Good thing I used 'talk' and 'ytalk' before I started using IRC.

    9. Re:The horror by NetSettler · · Score: 1

      A bit like valgol, only worse.

      --

      Kent M Pitman
      Philosopher, Technologist, Writer

    10. Re:The horror by Anonymous Coward · · Score: 0

      Hah! That's hillarious. Can you believe that this person is a teacher?

      Perhaps these students are learning by example.

    11. Re:The horror by Vexar · · Score: 1

      I am a semi-regular at one IRC channel. I consider it a rarity, but we have a 'bot named Darxide that can do dictionary look-ups for spelling, and another named Kai that does definition searches. As a result, our channel is decidedly not very tolerant of most misspellings. You get corrected, in other words. And as for dangling participles, there are a couple tired souls who do their best to make horrid jokes at every grammatical construct that offers an ambiguity worthy of humorous misinterpretation. I have noticed my son comes home with "expressive" spelling in his kindergarten class. Whatever happened to flash cards and spelling tests? If he's going on IRC, he's going on my channel, where they do not tolerate the passable atrocities of public education. I think it is the high percentage of Swedes and Norwegians on the channel, who learned English as a second language, that account for the diligence.

  21. Awareness... by dmorin · · Score: 4, Insightful
    I know that's a scary word because it sounds like "self-aware". But I expect that in 100 years one of the inherent aspects of any computer language will be in detecting and working with other devices in a robust manner. In other words, being aware of what is around the programmed device. Not requiring a mandatory connection of type X. Instead I'm thinking about a device that can run just fine by itself, and then if another device of the same sort happens to come within 10 feet, then maybe they automatically attempt some sort of handshake (with encryption up the wazoo, of course) and then have the option of communicating. This would be useful for automatic transmittal of business cards, appointment schedules, and so on. Or it could be more of a client/server thing, where devices that do not have the power to get a certain job done will just naturally plug into "the grid" and request more power. The device won't have to deal with where the computing power comes from or how it is distributed.

    Imagine cars that, before changing lanes, signal to the surrounding cars' navigation systems and they work out for themselves how to let the car into the lane. A computer can be told to slow down, rather than speed up, when someone wants to change lanes. Or detectors in the dotted yellow lines that sense when you changed lanes without signalling, and alert the traffic authority to bump your points (ala Fifth Element).

    I always liked the idea of my PDA phonebook being more of a recently-used cache of numbers instead of a local store. I just punch up a number. If it's one of my commonly used ones, it comes right up (and dials, of course). But if it's not, then my PDA connects to the phone company, gets the information (and probably pays the phone company a micropayment for the service) and now I have that number locally on my PDA until it gets scrolled off if it's not used much.

    Also I expect lots of pseudo-intelligent content filtering software. You'll get 1000 emails a day and your spam filter will not only remove 99% of them, but it will also identify and prioritize the remaining ones. In order for this to be useful there needs to be languages that deal with expression of rules and logic in a meaningful way (far more than just and or not). No one 100 years from now will say "if subject ~= /*mom*/" (or however the hell you say it), they will expect to say "Give email from mom a higher priority", or sometihng very close.

    1. Re:Awareness... by vano2001 · · Score: 1

      If only the computer detects and fixes bugs and other faults in software on its own .. that alone is the holy grail we are all after. I am not holding my breadth.

    2. Re:Awareness... by ekephart · · Score: 2, Interesting

      Imagine cars that, before changing lanes, signal to the surrounding cars' navigation systems and they work out for themselves how to let the car into the lane. A computer can be told to slow down, rather than speed up, when someone wants to change lanes.

      Can we not do this now? All planes have systems that direct them away from other planes when they get too close. If you mean that this will be done without a connection between said objects, then there must be some set of rules that are followed. Very similar to those that we "intelligent" beings use when we drive. For instance:
      -I signal to change lanes
      -Person in lane over decides whether to let me in
      -If I see them back off a bit then I proceed, if the speed up then I get behind them

      Everything is logic based. In addition, today we do deal with logic in meaningful ways. What's worth remembering is that all logic is based on AND OR NOT. You can derive any logical expression from these operators. For instance:

      R - S = R AND (NOT S).

      Essentially "Give email from mom a higher priority" would boil down to the same logic as "if subject ~= /*mom*/" in the same way that printf("Hello World\n"); is just a bunch of instructions and addresses is just a bunch of 0s and 1s.

      --
      sig
    3. Re:Awareness... by dmorin · · Score: 1

      By really bizarre coincidence just this morning I read "The Electric Ant", by Philip K. Dick. In it, a business executive discovers that he is actually a robot. Now aware of this fact he goes about attempting to fiddle with his own programming in an attempt to "unprogram" himself, thus freeing him from his perceived lack of free will. Interesting story.

    4. Re:Awareness... by Kallahar · · Score: 4, Interesting

      If you're going to have the cars sort themselves out, why bother with signals at all? If everything is guided by GPS, why have headlights? If it's not the human doing the driving, why have traffic laws that are there to punish human errors?

      Travis

    5. Re:Awareness... by Anonymous Coward · · Score: 0

      WTF? If he's a robot and has no free will, how is he going to rebel against his programmers? Duh!

    6. Re:Awareness... by harriet+nyborg · · Score: 1
      i have noticed over the years that the fundamental problem with computers is that they do what you tell them to do... and not what you want them to.

      all things being equal.

      i prefer it that way.

      programming language should evolve to give us better control over our machines, not to let them do the thinking for us.

      what those machines are programmed to do is another matter, but language should forever remain in full control of the programmer. and not devolve into object oriented blocks so large there is nothing but uniformity in the implementation.

    7. Re:Awareness... by Elwood+P+Dowd · · Score: 1

      Yet another example of how Philip K. Dick writes about subjects with many interesting facets and ignores all of them. Or misunderstands them.

      --

      There are no trails. There are no trees out here.
    8. Re:Awareness... by Anonymous Coward · · Score: 0
      If it's not the human doing the driving, why have traffic laws that are there to punish human errors?
      This is a common misconception. Traffic laws are not there to punish human error. Traffic rules exist to push the operation of moving at 65mph within human error tolerances. Our minds are not wired to perceive the world at this speed. If you don't believe me try driving through a tightly packed wooded area at even 45mph without smacking into something. The rules give me an approximation of what the other person is going to do, and a big wide area in which to do my own thing. It is quite dangerous when somebody does something unexpected. Hence the punative fine.
    9. Re:Awareness... by IpalindromeI · · Score: 1

      Then why will you still get pulled over if you do something "unexpected" when there isn't anyone else around to affect? (Except the policeman hiding safely behind a building.)

      --

      --
      Promoting critical thinking since 1994.
    10. Re:Awareness... by Precipitous · · Score: 1

      If you're going to have the cars sort themselves out, why bother with signals at all? If everything is guided by GPS, why have headlights?

      The answer to this is rather simple:

      Computers are good at doing stuff that you can program and define in explicit rules. They are notoriously bad at handling the mess of the real world. (Notice how horrible all the MS products that try to help you are? "Are you writing a letter?") You might be able to code safety checks to help a human operator: On lane change, Check for cars transmitting in proxity -> negotiate with car. Then, check my radar for objects close by -> Warn driver.

      In the foreseeable future, these could only function as safety features to warn a human operator. The real world has two many cases to write explicit rules for. Power outage? Electrical storm interference? Does that dog on the side of the road look like its about to try to cross?

      Suppose one of these AI projects yields a "learning machine" capable of handling all these scenarios - these machines will still have to be taught. The type of knowledge required to drive a car requires years of interaction with all the elements that might appear on the road: wind, storms, dogs, little kids, bandits putting up roadblocks ... not to mention the as of yet poorly solved problem of getting a computer to correctly identify objects based on visual images. To get this interaction requires a machine that can engage in these interactions - now your in sci-land building androids. Real world interactions managed by computers are way more that 100 years out.

      --
      My motto: "A cat is no trade for integrity."
    11. Re:Awareness... by rpg25 · · Score: 1

      With all due respect, this doesn't seem like very interesting self awareness.

      How about self awareness of programs, so that if you composed two programs, they could detect resource conflicts, and automatically add the appropriate semaphores (or whatever other locking you needed)?

      Detecting other devices and talking to them is easy, compared to the problems of inferring how they might interact, and managing those interactions.

      As far as the highway examples are concerned, we could probably do most of these today. The problems have to do with the open systems, the mixture of people and automatic cars on the road, and the unpleasant hardware issues like sensing the actual location of the road....

      The PDA example we could do today, too, except for the fact that we don't have the social infrastructure (micropayments, etc.).

    12. Re:Awareness... by zsau · · Score: 1

      If everything is guided by GPS, why have headlights?

      Poor Johnny's ball rolls onto the road. Poor James' car doesn't have headlines. James can't stop his car in time. James now has to deal with the guilt of having been responsible for a child's death.

      --
      Look out!
  22. Forth by Anonymous Coward · · Score: 0, Funny

    In the future, computers will be so smart that programmers will no longer have need to read their own code. Forth will finally take its rightful place as a primary language of development.

    1. Re:Forth by mrtroy · · Score: 1

      Right. That is the worst case of ignorance I have saw in a while!

      Who is going to program the computers to be so smart? And how! And will those programmers not need to read their own code?

      --
      [I can picture a world without war, without hate. I can picture us attacking that world, because they'd never expect it]
    2. Re:Forth by Anonymous Coward · · Score: 0

      After a period of bootstrapping, the programmers will have made the computers smart enough, and at that point they will take over.

  23. Evolutionary dead-end? by Mxyzptlk · · Score: 3, Interesting

    When I say Java won't turn out to be a successful language, I mean something more specific: that Java will turn out to be an evolutionary dead-end, like Cobol.

    Er... I don't think that Cobol is an evolutionary dead-end; in the best world, it would be extinct, but it isn't. What makes a language widely used is something that we can't predict right now - we have to watch it evolve over time, and as it grows and matures look at different aspects.

    Take architecture for example - new buildings are loved the first five years because of their freshly introduced ideas. After that, all the problems start to appear - mildew problems, asbestos in the walls, and so on. During the next ten years, the child diseases are fixed. It is only a HUNDRED YEARS after the new building (or in our case, the new programming language) can be properly evaluated. The language/building then has either been replaced, or it has survived.

    So - the only proper way to measure the successfulness of a programming language is to measure its survivability. Sure, we can do guesstimates along the way:

    During introduction: Does the language have a good development environment? Is the language backed/introduced by a market leader?

    Somewhere during the "middle years" (after about ten years): Does the language have a large user base? Does the language have a large code base?

    After twenty/thirty years: ask the programmers if it really is maintainable...

    Well - you get the picture! Predicting the survability of something more than five years into the future is impossible, I'd say.

    1. Re:Evolutionary dead-end? by cthlptlk · · Score: 2, Insightful

      [OP]When I say Java won't turn out to be a successful language, I mean something more specific: that Java will turn out to be an evolutionary dead-end, like Cobol.

      Er... I don't think that Cobol is an evolutionary dead-end; in the best world, it would be extinct, but it isn't. What makes a language widely used is something that we can't predict right now - we have to watch it evolve over time, and as it grows and matures look at different aspects.

      "Extinct" & "evolutionary dead-end" aren't quite the same; the dinosaurs are extinct, but there are species today evolved from dinosaurs, like birds.

      Maybe nobody uses algol now, but algol has living descendants. Cobol doesn't, and I think it's pretty safe to say that there won't come a time when someone says "hey, let's use the cobol paradigm!"

    2. Re:Evolutionary dead-end? by More+Trouble · · Score: 1
      After twenty/thirty years: ask the programmers if it really is maintainable...

      So, C on Unix forever?

      :w
    3. Re:Evolutionary dead-end? by stanmann · · Score: 1

      Well, The "cobol paradigm" was dealing with data using natural language, of which, the code

      SELECT Username
      FROM Userlist
      WHERE Salary >50000
      Definitely qualifies.

      --
      Food not Bombs is a nice platitude but it breaks down when you notice that the Bombees are usually well fed
    4. Re:Evolutionary dead-end? by Anonymous Coward · · Score: 0

      COBOL is an evolutionary dead-end. It isn't extinct, but it doesn't have to be. Where are its offshoots? What forces are there that would produce them?

      COBOL is specialized for a particular ecological niche, so to speak. Until that niche goes away, COBOL won't be extinct. Outside that niche, COBOL isn't winning the competition with the other languages that are available.

      If COBOL had significant uses outside the market areas in which it is entrenched, there would be the desire to make it work better in those peripheral areas, and there would be evolutionary offshoots. I don't see this.

      CEEMAC was a language for producing real-time abstract graphics on the Apple II. It did really well at that. I haven't seen it on anything else, so although it was well-adapted to the niche it was in, it was also an evolutionary dead-end language. The difference between it and COBOL is that COBOL still has a viable niche in which to survive.

      - wheels

  24. Quantum Packages? by Anonymous Coward · · Score: 2, Funny

    Imagine debugging a quantum package - it could exist and not exist at the same time. probably.

    You'd get errors like :

    error in com.quantum.package:453 - classProbablyNotFound exception

  25. VB Problems by nigel.selke · · Score: 2, Interesting
    Smarter compilers and more powerful hardware will definitely negate the need for strongly typed and down-to-the metal languages that we've seen in the past to some extent, but VB has several limitations that will prevent it from taking over other languages:
    Lack of portability This will become increasingly important as companies and inviduals move away from Microsoft as Microsoft pushes its luck further and further by strangling the market. Basic sytax, hacked OO The use of Basic syntax can cripple larger projects, add to this the lack of proper OO in VB, and you have a problem. Too many power-user addons VB has become a language for people who just want to buy third party addons and plug them in. While this is fine theoretically, it makes the program segment's modules difficult to integrate with the rest of the project, as well as encouraging lazy practices or even lack of knowledge in the programmer.

    The only way VB will retain any large number of its current userbase is by being completely committed to the .NET infrastructure.

    Meanwhile, languages like Java, Python, Perl and PHP will continue to grow and gain more and more users amoung tech savvy individuals.
    --

    We hang the petty thieves, but appoint the great ones to public office. - Aesop

  26. Waste of Time by tundog · · Score: 3, Insightful

    The author starts be describing the effect of moore's law on computing power (i.e. computers will be wicked fast)and then starts ranting about how today's constructs are so inefficient, then admits that inefficiency won't really matter because computers will be wicked fast (And it takes him half the article to impart this wisdom).

    huh!?!?

    This is the kind of mental constipation that is better left for blog sites.

    Somewhere there is parallel between the logic in this article and the dot.bomb busniess model.

    --
    All your base are belong to us!
    1. Re:Waste of Time by Anonymous Coward · · Score: 0

      That's all you took from the article? Work on your reading comprehension.

    2. Re:Waste of Time by Anonymous Coward · · Score: 0


      This is the kind of mental constipation that is better left for blog sites.


      Sl@shd0t 15 a bl0g s1t3 u clownfooted asshat!!1!

    3. Re:Waste of Time by murdocj · · Score: 1

      I also like that it just so happens that the lisp-derived languages that this guy is working on are the "main branch" and all the languages everyone else is working on are side issues.

  27. I know the name of the language. by Russ+Nelson · · Score: 1

    No matter what the form of the language, its name shall be FORTRAN.
    -russ

    --
    Don't piss off The Angry Economist
  28. A better question by smittyoneeach · · Score: 1
    Most data structures exist because of speed. For example, many languages today have both strings and lists. Semantically, strings are more or less a subset of lists in which the elements are characters. So why do you need a separate data type? You don't, really. Strings only exist for efficiency.


    Your tool should fit the problem. The remark about nails and hammers applies.

    A better question might be, what sort of problems do we anticipate tackling in 100 years, and what sort of languages might support them?

    The answer the following question is backwards compatibility, but let me ask anyway:

    Why not use the greater symbol space of multi-byte characters to create a language from scratch that avoids some of the baroque syntax of current offerings (apologies to Larry)?
    --
    Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
    1. Re:A better question by SWroclawski · · Score: 1
      Because APL was crazy and required a special keyboard to use.

      - Serge

    2. Re:A better question by smittyoneeach · · Score: 1

      I know of one APL user, and he's rather a fanatic.
      I've heard it said that the APL people were too fanatic about the language definition purity and the licensing, and thus the language never reached 'academia escape velocity'.
      Clearly, a wide-character language would require a GUI to take the pain out of the symbology.

      --
      Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
    3. Re:A better question by SWroclawski · · Score: 1

      Actually, APL was heavily used in places like NASA, APL and the stock market- any place where simulations needed to be rapidly prototyped and implemented.

      The purpose of my comment was as a joke, rather than to really bash APL- which might indeed have done better except for the license issues.

      - Serge Wroclawski

  29. Lisp... by Anonymous Coward · · Score: 1, Insightful

    ... has been around for about 50 years already,
    in one form or another ...

    Something to think about. What is it about
    first order functional languages based on
    a clean predicate calculus?

    1. Re:Lisp... by NetSettler · · Score: 3, Insightful

      I don't think it's the first order functional nature of Lisp that has allowed it to survive, but rather the "late binding" nature of it.

      Static, strongly-typed languages, make the assumption that everything that needs to be known about the world is knowable at compile time. Such programs need to be recompiled (at least) and rewritten (often) because the world changes and either the source program itself or its compiled form needs to accomodate that change.

      Lisp, because it delays many decisions until runtime, and because its runtime tagging accomodates datatypes that are not among the set that was declared at compile time, naturally accomodates changes in the environment around it, and naturally survives well during transitions between old and new ways to do things.

      Static languages often breed static ways of thinking, and often need new static specifications at regular intervals to accomodate the mismatch with how the world really is. Dynamic languages breed dynamic thinking, which (I claim) is more robust over time.

      --

      Kent M Pitman
      Philosopher, Technologist, Writer

    2. Re:Lisp... by bballad · · Score: 1

      Umm who uses Lisp outside of Muds and acedamia?

    3. Re:Lisp... by hding · · Score: 2, Informative

      Well, for starters I'd look here (make sure to look at the links in the navigation bar on the left) and here.

    4. Re:Lisp... by Anonymous Coward · · Score: 0

      Precisely!

      Get away from describing the solution, instead describe the problem and let the compiler 'optimise' a solution out of your requirements.

      Maybe not lambda calculus, and maybe it will look more like a drawing, or a painting or a piece of architecture. The limiting factor here will be communicating with the human mind, not communicating in computer-speak.

      Hey why not take the term 'Art of computer programming' quite literally.

  30. History and Future by AbdullahHaydar · · Score: 5, Interesting

    This is a really interesting paper on the history and future of programming languages. (Check out the history chart in the middle....)

    --


    Suicide Booth: You are now dead! Thank you for using Stop and Drop, America's favorite since 2008.
    1. Re:History and Future by AbdullahHaydar · · Score: 4, Informative

      I forgot to mention that it was written in 1972 and predicts a few of the occurences since then...

      --


      Suicide Booth: You are now dead! Thank you for using Stop and Drop, America's favorite since 2008.
    2. Re:History and Future by p3d0 · · Score: 1

      Cool. There's a language invented in 1970 called AIDS.

      --
      Patrick Doyle
      I mod down every jackass who puts his moderation policy in his sig. Oh, wait a sec....
    3. Re:History and Future by Anonymous Coward · · Score: 0

      I was amused the C programming language which pretty much dominates the commercial software industry today wasn't mentioned although BCPL was. Then I saw the date and realized K&R were probably still coding it up in the lab.

    4. Re:History and Future by dankelley · · Score: 1

      This article is insightful and prescient. It also covers a great deal of territory, which means that few readers would fail to find something fascinating in it. Start your reading with this article, not the "100 year" one. Maybe end with it, too.

  31. nutty article by selderrr · · Score: 0, Flamebait

    The article starts with It's hard to predict what life will be like in a hundred years. There are only a few things we can say with certainty. We know that everyone will drive flying cars, that zoning laws will be relaxed to allow buildings hundreds of stories tall, that it will be dark most of the time, and that women will all be trained in the martial arts.

    doh ? I'm not a visionary, but any article starting with such predictions loses quite some credibility.

    The end of the article is kinda silly too : When you see these ideas laid out like that, it's hard not to think, why not try writing the hundred-year language now?

    Yes indeed mister know-it-all : why not ?

    The summary of his article is : future languages are gonna be way kewl, l33t and 5hit. They're gonna be dead simple, and anyone will be able to write them. If given to us now, we'd be able to use them right away. The stupid languages (read : every language that exists today) will die and this new thingie will rise and save our butts.

    Basicallly, he's repeating what managers & analysts are saying since ENIAC. And as those 2 groups, he has no solution, no roadmap, no ideas, no nuthin. You know what ? When I read such shit, I feel all warm & fuzzy, comforted knowing that I'm gonna keep on coding C for a long time to come.

    1. Re:nutty article by mrtroy · · Score: 0, Offtopic

      Haha, I would have started the article similarly.

      It's hard to predict what life will be like in a hundred years. There are only a few things we can say with certainty. We know that everyone will drive elephants, that zoning laws will be relaxed to allow buildings to build to China, that beaches will be sunny all the time, and that women will all be trained in karma sutra.

      What an idiot, the article starts wrong and goes downhill from there.

      --
      [I can picture a world without war, without hate. I can picture us attacking that world, because they'd never expect it]
    2. Re:nutty article by Anonymous Coward · · Score: 0
      The article starts with It's hard to predict what life will be like in a hundred years. There are only a few things we can say with certainty. We know that everyone will drive flying cars, that zoning laws will be relaxed to allow buildings hundreds of stories tall, that it will be dark most of the time, and that women will all be trained in the martial arts. doh ? I'm not a visionary, but any article starting with such predictions loses quite some credibility.

      Gee, do you think that maybe he was being facetious? You're not a visionary, but do you have any sense of humor at all?

      Have fun programming C for the rest of your life.

    3. Re:nutty article by Anonymous Coward · · Score: 0

      > The article starts with It's hard to predict what life will be like in a hundred years.
      > There are only a few things we can say with certainty. We know that everyone
      > will drive flying cars, that zoning laws will be relaxed to allow buildings
      > hundreds of stories tall, that it will be dark most of the time, and that
      > women will all be trained in the martial arts.
      >
      > doh ? I'm not a visionary, but any article starting with
      > such predictions loses quite some credibility.

      You might like to search your favorite online dictionary for the word 'sarcasm.' It'll do you good to learn something other than Computerese.

    4. Re:nutty article by Daniel+Dvorkin · · Score: 1

      Oh, for God's sake, guys. It's a joke, a reference to the current Hollywood sci-fi vision of the future. I don't agree with more than about half of what he says in the article, but it's peppered with a number of amusing lines like that one, which kept me reading it. Get a sense of humor.

      --
      The correlation between ignorance of statistics and using "correlation is not causation" as an argument is close to 1.
    5. Re:nutty article by Anonymous Coward · · Score: 0

      Unless your an idiot(or blind) you see the picture of a scene from BladeRunner which is set in the future(admittedly only 16 more years from now) in which all that is true.

      Im guessing the former.

    6. Re:nutty article by Anonymous Coward · · Score: 0


      he's kidding you knucklehead.

    7. Re:nutty article by njord · · Score: 1
      The article starts with It's hard to predict what life will be like in a hundred years. There are only a few things we can say with certainty. We know that everyone will drive flying cars, that zoning laws will be relaxed to allow buildings hundreds of stories tall, that it will be dark most of the time, and that women will all be trained in the martial arts. doh ? I'm not a visionary, but any article starting with such predictions loses quite some credibility.

      I think the various images of Blade Runner strewn across the site suggest that this may be tongue-in-cheek. I wouldn't have modded him down as flamebait, but I thought that was pretty obvious.

      I don't understand why everybody is attacking Paul Graham. I respect the guy because he's one of the few Lisp evangelists out there. He defends his positions pretty well and he willing to go against the mainstream (like Java). I think he has a point about "evolutionary paths". Java is a very practical, grounded language; despite its platform independance, it was still defined with Von Neumann architecture in mind. If hardware starts pulling away from that form, Java will not follow easily.

      Lisp, on the other hand, embodies the "Science" part of Computer Science. It's not quite as esoteric as SETL, but Lisp is mathy enough that it doesn't make any assumptions about hardware.

      I'm not saying Lisp is "better" than Java, just that they are different. My question is: if Sun went under tomorrow, what would happen to Java?

      njord
    8. Re:nutty article by crazyphilman · · Score: 1

      I tend to agree; C, C++, Java, and other languages in that family have pretty nearly perfected the way in which we express how we want our computers to handle a task for us. The syntax isn't changing much, anymore; only the libraries are, and the overall approach (i.e. procedural led to OOP, etc). So, in a hundred years, I'd bet we're still using a C-like syntax, but we'll have incredibly powerful libaries available to us, and our development environments will be really clean and easy to use.

      Will we be using C? Java? Who knows. Both languages will probably be at least somewhat used, because they're useful and have good libraries. You know what I think? I think we'll have some kind of superlanguage, a development environment with every potential interaction you can imagine available as a library call, with components for everything under the sun. Programmer education, then, will be a matter of knowing what libraries are available, how they're best used, and knowing how to find them. It'll be more of an art than anything else. In some ways, Java is already like this. Let's call the superlanguage Sex, and be done with it. Imagine how much more fun work would be:

      "Hey, Bill, what are you working on, there?"

      "Sex, Bob. Sex."

      "Get some! Woo hoo! But, seriously, what system is that?"

      "Oh, this is our new app server, JohnnyWad. It can handle twice as many simultaneous sockets as our last one, and it goes four times as long between errors. Not to mention the size of the toolkit that comes with it."

      "No kidding! We've been tinkering with Bimbo(tm) downstairs; it works great, but once a month, the server crashes and we have to take it offline for repairs."

      It's got potential... ;)

      --
      Farewell! It's been a fine buncha years!
  32. Summary of article: by timeOday · · Score: 1
    Computers will be faster in 100 years and we won't be using Java anymore.

    The End.

    1. Re:Summary of article: by bschuth · · Score: 1

      Brilliant and correct! Perhaps in 100 years all code will be written in C and Java -- but everyone's computer can edit their essays so that bloated rambles like this one can waste less of our time...

      My prediction is that 100 years from now all computer code will be written in C... on stone tablets, by monks in caves, and used in religious rituals praying for the return of electricity.

    2. Re:Summary of article: by Anonymous Coward · · Score: 0

      Actually, if you look carefully, you'll see that he doesn't really say people won't be using Java anymore. Just that it will not have evolved into something, just like Cobol. Cobol is "dead" but people still use it.

    3. Re:Summary of article: by Pinky · · Score: 1

      Brilliant and correct! Perhaps in 100 years all code will be written in C and Java -- but everyone's computer can edit their essays so that bloated rambles like this one can waste less of our time...

      =-=-=-=-=-=-=-=-=
      I think maybe he took his own advice when it comes to essay writting.. it's amazing I felt you yelling "An essay written without a plan is called a ramble you nitwit..!"..

  33. The computer language 100 years from now? by Anonymous Coward · · Score: 0, Funny

    That's easy! It will be Perl 6.

    The optimization of Parrot should be just about complete by then.

    1. Re:The computer language 100 years from now? by sglane81 · · Score: 1

      and people would be using PHP 5 on Apache 2. ;)

      --
      This is the Internet. You can say "fuck" here. - AC
  34. I'll tell ya one thing... by MoeMoe · · Score: 1

    One thing's for damn sure, White Space isn't leaving the market shelf anytime soon ;)

    --
    Business \Busi"ness\, n.;
    A scam in which all people involved perceive as beneficial...
  35. Evolution of programming languages by tomgarcher · · Score: 1

    I don't know what the languages of the future will look like but someone will still be writing shit code in them.

  36. Accuracy by mrtroy · · Score: 1

    I just love predictions, people can not accurately predict what the new trends will be in 6 months let alone 100 years!!!

    I personally think that there will be some sort of "brave new world", where I wont be nearly as smart as Alphas. But not as dumb as epsilons, they are stupid. I am happy being a beta, betas are best.

    Speaking of brave new worlds, give me some sex-hormone chewing gum because its time for orgy porgy! I sure hope Ford doesn't find out!

    THAT book is realistic predictor! :)

    --
    [I can picture a world without war, without hate. I can picture us attacking that world, because they'd never expect it]
    1. Re:Accuracy by Anonymous Coward · · Score: 0

      Why is it ok for the global warming nuts to predict the climate 100 years or more down the road, but it seems like this article is shunned for attempting it. Damn liberal Hypocrites.

  37. I wouldn't read too far into this article... by Pollux · · Score: 4, Insightful

    I think that it would be better to call this article "Where Programming is headed" rather than "The Hundred-Year Language". He tries to justify how he can predict the language 100 years into the future...

    It may seem presumptuous to think anyone can predict what any technology will look like in a hundred years...Looking forward a hundred years is a graspable idea when we consider how slowly languages have evolved in the past fifty.

    Hmm...funny, fifty years ago, if I remember my history (since I wasn't alive back then), those relay computers needed rolls and rolls of ticker-taped punch holes to compute math. The language was so-low-level...even x86 Assembly would have been a godsend to them. And he considers something like Object-Oriented Programming a slow evolution?

    All he's doing in the article is predicting what languages will be dead in the future, and which languages won't be. For example, he says Java will be dead...

    Cobol, for all its sometime popularity, does not seem to have any intellectual descendants. It is an evolutionary dead-end-- a Neanderthal language...I predict a similar fate for Java.

    I'll not go there, because predicting the demise of Java is opening another can of worms. But let's just say that he really doesn't support his argument with anything other than anecdotal opinion.

    I say read his article in jest, but don't look too deep into it.

    1. Re:I wouldn't read too far into this article... by Anonymous Coward · · Score: 0

      I'd agree. I've never programmed in Java but I have a half a dozen other languages, and I didn't find any compelling points in his article why "Java would die off" but why, say, some other language wouldn't. Maybe he was arguing that Java didn't span the gap from high-level to to-the-metal, but I didn't see him quite come out and say it. It was wierd to see him talk about how important that was, and then to start talking about the elegantness of LISP handling numbers as lists. I mean, his point was that a good language can be told to do things either way, efficiently for computational speed, and efficiently for programming speed, but still...

      10 years ago I never would have guessed that C would die off, given the mix of high-level expressiveness it enables and to-the-metal-ness it provides. But it seems doomed to me now, just because of the pain that string-handling is, and the ease of shooting yourself in the foot with pointer problems and buffer overflows.

      I just don't think these things are particularly predictable. Sad to say, computer languages are pretty fad-dy, and fads are inherently unpredictable.

    2. Re:I wouldn't read too far into this article... by eMilkshake · · Score: 2, Informative
      From http://www.legacyj.com/cobol/cobol_history.html:
      In 1952, Grace Murray Hopper began a journey that would eventually lead to the language we know as COBOL.


      Fortran dates to 1954.


      So, there are 50 years of computer language.

    3. Re: I wouldn't read too far into this article... by Black+Parrot · · Score: 2, Informative


      > And he considers something like Object-Oriented Programming a slow evolution?

      When you consider that it is just a metaphor for refinements of pre-existing ideas such as data hiding, which in turn are refinements of pre-existing ideas such as structured programming, which in turn are refinements of pre-existing ideas such as "high level" programming languages, ...yes, it has been a slow evolution.

      See past the hype.

      --
      Sheesh, evil *and* a jerk. -- Jade
    4. Re:I wouldn't read too far into this article... by Anonymous Coward · · Score: 5, Insightful

      no, you don't remeber your hist very well at all.

      using round numbers, he is talking about the fifties, although really he probably wants to include the sixties.

      So what did we have? Among others: Fortran, which is still around and has influenced many designs. Algol, which begat c, java, c++, c#. Lisp, which introduced FP and most (certainly not all) of the interesting ideas that somewhat mainstream languages like python, ruby, perl are starting to pick up on 30+ years later.

      I know you weren't paying attention, but OO came in the 60's, and was developed *far* beyond anything seen today in mainstream production languages by the early 80's. (smalltalk, New Flavours, CLOS)

      Most of what mainstream programmers think of as the history of language ideas is complete drek, because they make the mistake of thinking that the first time they see a company hyping an idea has any relationship to when the idea was arrived at.

      If you had actually read the quoted sentenc fo comprehension, you would understand that he didn't say that Java would be dead, he said that it was an evolutionary dead end.

      Not the same thing. Java is a fairly direct evolutionary descendant of Algol. Cobol, a contemporary of Algol, has no evolutionary descendants.

      What he said is that the languages of 100 years from now will not *descend* from Java, any more than the languages of today descend from Cobol. I wouldn't be surprised if there were Java programs around in 100 years, but that is the nature of legacy systems, not an interesting insight.

    5. Re: I wouldn't read too far into this article... by Anonymous Coward · · Score: 0

      But OOP isn't about data hiding, really. Or, it doesn't bring anything new to data hiding. You can hide data equally well in plain old C, without using too hairy syntax even. Not to mention, you don't have to hide the data in OOP (in C++ at least), it's just really good idea to do so.

      OOP is about polymorphism and inheritance. Of course you could call polymorphism just a fancy wrapper for callbacks, and inheritance just a way to enable strict type checking for these callbacks... ;)

    6. Re:I wouldn't read too far into this article... by MobyTurbo · · Score: 3, Insightful
      It may seem presumptuous to think anyone can predict what any technology will look like in a hundred years...Looking forward a hundred years is a graspable idea when we consider how slowly languages have evolved in the past fifty.
      Hmm...funny, fifty years ago, if I remember my history (since I wasn't alive back then), those relay computers
      Actually, relay computers were 1930s. They were using vaccum tubes in the late 40s, and were less than a decade away from transistors fifty years ago; not that they weren't just as primative.
      needed rolls and rolls of ticker-taped punch holes to compute math.
      Punch cards were a limit IBM placed on the technology because IBM thought compatability with their previous non-computer automated machines that used punch cards would be a big plus in selling them to existing clients. Actually IBM's competition, using magtape, had a better form of input/output; IBM set back the computer industry years in doing this.
      The language was so-low-level...even x86 Assembly
      One thing you've got to understand about Paul Graham is he is, for better or for worst, a big fan of LISP; a language that began in 1958 and is still used in Artificial Intellegence and other things (like Orbitz and Paul Graham's own Yahoo! Store) today. Since LISP has a lot of ability to use abstraction, and object oriented programming is a narrower level of abstraction, it does seem that OO isn't so revolutionary. (Even if you go by OO history alone specifically without recourse to comparing it with LISP, it is over 30 years old - Simula was written in the late 60s.)
    7. Re:I wouldn't read too far into this article... by nyssa · · Score: 1

      But if you do make it to the end, the author says "the hundred-year language could, in principle, be designed today". In fact, he is designing a new dialect of Lisp called "Arc" that he hopes will last 100 years.

      I read about it, and it certainly would address issues that have kept me from using Lisp. I hope he is able to produce something soon that meets his design goals because it could easily replace Python as my favorite hacking language.

      I will agree that he is long winded. (I wonder if his textbooks are like his web writing.) He seems to value brevity of code, but that doesn't seem to apply to his words! ;)

    8. Re:I wouldn't read too far into this article... by pyrrho · · Score: 1

      Algol, which begat c, java, c++, c#. Lisp, which introduced FP...

      oh, is that where First Post came from? I had wondered.

      --

      -pyrrho

    9. Re:I wouldn't read too far into this article... by Anonymous Coward · · Score: 0
      One thing you've got to understand about Paul Graham is he is, for better or for worst, a big fan of LISP;


      That's a bit of an understatement; every article I've ever read by PG has eventually become "Why LISP is the greatest language ever". Suprisingly, this doesn't happen here (even though the middle third of the article is taken up by talk of LISP and ARC(PG's 'new language' which looks a lot like another LSIP)), probably because he was giving it at PyCon and didn't want to get lynched.
    10. Re:I wouldn't read too far into this article... by stesch · · Score: 1
      I think that it would be better to call this article "Where Programming is headed" rather than "The Hundred-Year Language". He tries to justify how he can predict the language 100 years into the future...

      Or he tries to justify his efforts on designing his own new programming language (Arc).

  38. In the future, computers will decide what language by Anonymous Coward · · Score: 0

    to program us in. No this isn't another 'In Soviet Russia' joke, I'm partly serious. Wouldn't we be better off if computers "forsaw" our needs, and perhaps generated code in response? Then again we might end up with the equivilent of Dr Who's Daleks. "Exterminate! Exterminate!"

  39. All you'll have to do to code by FXSTD · · Score: 1

    is take the red pill...

  40. Nothing will replace c++ by www!!!1 · · Score: 0

    C++ will get a little better, maybe even easier to use! There will be more crap languages that try to make everything better like VB but real programmers will never use them (even with a gun held up to their heads, i could be making 65k if i accepted that vb code monkey job but am happier making less than half that hax0ing in c++). Real men code pure assembly but don't mind c and c++. C++ is just too perfect and powerful.

    1. Re:Nothing will replace c++ by Frans+Faase · · Score: 1

      C++ is only here because it produces fast code. It is far from perfect. In the past week, I have been moving around code between compilations units, wrestling with include statements all the time. It still is based on preprocessing with respect to separating declaration and implementation of classes. And the silly fact that you cannot use a class before it is fully defined. You call that perfect!!

    2. Re:Nothing will replace c++ by www!!!1 · · Score: 1

      Yep, you can't be a code wussy if you want to code in c++. If something is carefully thought out with c++ all will be fine. If some code monkey shitface write a bunch of crap of course it will be impossible to maintain. That's part of why c++ is perfect :) Give the code monkey's VB and the leet hax0rs c++

    3. Re:Nothing will replace c++ by Anonymous Coward · · Score: 0

      Are you being sarcastic? I cannot tell. Fact is a real programmer will program in whatever language he is asked to use, a wannabe programmer who lives in his parents basement and does phone tech support will only code pure assembly but don't mind c and c++.

    4. Re:Nothing will replace c++ by www!!!1 · · Score: 1

      Would you really want to code in VB or COBOL or something? Sure the pure assembly is a joke, but i much prefer a powerful "dangerous" language over an ugly "don't worry we'll protect you" one. Though I do like java, which is weird :)

    5. Re:Nothing will replace c++ by Anonymous Coward · · Score: 0

      Anyone who says "leet hax0rs" doesn't know the first thing about hackers. That's Script Kiddy language.

  41. So a typical slashdot troll would be... by NorthDude · · Score: 1

    if(you.tell(joke.getNewJoke()) && !moderator.laughing()){
    moderator.mod(-1, "OffTopic");
    you.setAnonymous(true);
    you.setTrolling(true);
    you.type("This is not Offtopic you bastard moderators on crack!");
    you.post();
    }

    for(int i=0; i<3; i++)
    moderator.mod(-1, "Flamebait")

    --


    I'd rather be sailing...
    1. Re:So a typical slashdot troll would be... by Anonymous Coward · · Score: 0

      not *cough* in this *cough* simple case *cough*

  42. Efficiency may not be the guiding force.... by check_one · · Score: 1

    Paul Graham makes many many excellent points, but I feel that his focus on speed and efficiency may not be the guiding force for language evolution. So far, languages have only become larger, and more feature oriented. This 'feature-creep' is bad in a lot of cases, but in many cases it allows programmers to develop powerful applications very quickly. I believe the hundred year language will allow developers to create applications(or whatever they will be called) by listing member components (I'll take a web server, two databasii, and a slice of cheese, please). The details will slowly be standardized out, much as the TCP/IP stack has been. This will cause development to be much more artistic, which I am scared to death of. This slow removal of detail will not hinder the specificity of the application, but will just make it easier to not think about the details. Object oriented is on the main trunk of the evolutionary tree, although Java may or may not be.

  43. Java isn't dead by a long shot. by nigel.selke · · Score: 1, Offtopic

    I have developed a large system that deals with end-to-end running of a large supplier of outdoor leather goods. Including B2B transactions, custom querying, post-sales tracking.

    Most of the system is written in Java, with a good deal of Python code on the back end. The front-ends are fully Java/Swing based, and run comfortably on a P3-500 with 256MB of RAM. The back-end is mostly written in Java, but retains some Python code (the project started out as a web-based app for post-sales/customer relations management).

    Add to this the quick deployment time of the Java language, the extremely easy portability (compared to some other languages), and the ease-of-use, and you can see why Java is a good choice for scalable business applications. The stuff we have managed to add to this program is amazing, I'll wager that our system has more features than any single commercial solution. There is definitely something to be said for in-house development.

    --

    We hang the petty thieves, but appoint the great ones to public office. - Aesop

    1. Re:Java isn't dead by a long shot. by Anonymous Coward · · Score: 0

      Paul didn't call it 'dead' he called it an evolutionary 'dead end'.

      IIRC the designers of java called it a 'programming language for average programmers'
      I'm sure it will be exceedingly popular for years and years to come.

    2. Re:Java isn't dead by a long shot. by stripes · · Score: 1
      I have developed a large system that deals with end-to-end running of a large supplier of outdoor leather goods. Including B2B transactions, custom querying, post-sales tracking.

      And lots of stuff is written in Cobol (still!!). The article went out of it's way to say Java isn't dead as in not used, "just" dead as future languages won't steal ideas from Java.

      Depending on how you look it at, that's right or wrong. I see future languages as having exception handling, name spaces, (compiler and runtime linker enforced) security features, big libraires, lots of OS independence, OO, garbage collection, and lots of other stuff Java has.

      Then again you can find all those features in past languages. Even the (compiler and runtime linker enforced) security stuff was on, um, er, some sort of stack based mainframe set of languages. Many languages had the other stuff, Modula-3 for example had almost all of it.

      So if a future language has the same kind of GC and exception handling that both Modula-3 and Java has, is it decending from Java, or from Modula-3?

    3. Re:Java isn't dead by a long shot. by jcast · · Score: 1

      So if a future language has the same kind of GC and exception handling that both Modula-3 and Java has, is it decending from Java, or from Modula-3?

      It's descended from Modula-3. Seriously, go read the Java docs some time. The design philosophy behind Java was not to do anything innovative, just stick to really good implimentations of established ideas from other languages. Probably good for a working language, but that also establishes Java pretty firmly as an evolutionary dead-end.
      --
      There are reasons why democracy does not work nearly as well as capitalism.
      -- David D. Friedman
  44. Re:Aliens and XML by damas · · Score: 2, Insightful

    well, I believe XML was invented by aliens... and not very sane ones

    what's wrong with

    alien.language = "ptuh"
    ptuh.language.family = {"ptuh", "XML"}

  45. On natural language... by dmorin · · Score: 4, Insightful
    I think that the question of whether natural language is the "way to go" misses out an important distinction. There will always be users of technology, and creators of new technology, and they must speak different languages. I do not need the same skills to drive a car as I do to build an engine. Being able to type does not make me a novelist. There are two different cultures at work.

    Having said that, I expect that the user language should certainly be natural language -- the "computers should understand people talk, not the other way around" argument. People know what they want out of their machines, for the most part. Whether it is "change my background to blue and put up a new picture of the baby" or "Find me a combination of variables that will result in the company not failing with a probability of greater than 90%", people want to do lots of things. They just need a way to say it. Pretty much every Star Trek reference you'll ever see that involves somebody talking to the computer is an input/output problem, NOT the creation of a new technology.

    It's when you build something entirely new that you need a new, efficient way to say it. Anybody remember APL? Fascinating language, particularly in that it used symbols rather than words to get its ideas across (those ideas primarily being focused on matrix manipulation, if I recall). Very hard for people to communicate about APL because you can't speak it. But the fact is that for what it did, it was a very good language. And I think that will always hold true. In order to make a computer work at its best, speak to it in a language it understands. When you are building a new device, very frequently you should go ahead and create a new language.

    1. Re:On natural language... by B.Smitty · · Score: 1

      Personally, I'm not a huge fan of 'natural language' interfaces. My interaction with a natural language interface would be more like, "Hey, get me that thing I needed for that meeting I'm supposed to go to on that day."

      Natural language is far too ambiguous, IMHO, and requires a lifetime's worth of context to be practical.

      In a hundred years, I hope that we aren't using textual languages at all. Hopefully, biomechanical engineering progresses to the point where a person's thoughts can directly interact with the computer.

      The 'language' used would be derived from the way our brains process information, not the way we historically communicated with other humans. Our descendants should think 'the square root of pie', and instantly 'know' the answer from a computation performed by the computer. Obviously, in this example, traditional language is still used, but other interations are possible. A person could think about their child and instantly feel their status - sleeping in the crib - and even see them projected in a mental image, like a very detailed daydream.

      I do agree with the author about one thing. Programming languages will evolve from specifying how a program accomplishes the goal, to describing the goal itself. Design and development is then reduced to formulating a precise, unambiguous description of the goal.

      With this in mind, we should look to logical and functional languages for guidance, and not traditional imperative languages like Java & C/C++.

    2. Re:On natural language... by dmorin · · Score: 1
      Natural language is far too ambiguous, IMHO, and requires a lifetime's worth of context to be practical.

      I think part of the bad rep that natural language gets is that people seem to not be satisfied until they find something that the computer can't handle, and then say "See??" I wrote a production-level (i.e. real people used it) natural language search engine. Got about 10,000 sample inputs to play with. Know what I found, that people often forget? You don't want to have a conversation with the computer. Almost every command issued fell into one of the following categories:

      • Just a list of keywords. We'll assume that these people had no patience for natural language.
      • Commands, ala "Show me my holdings." Fair enough, and very similar to many programming languages in its imperative nature. A command, some parameters, and some noise. These are your best input because people understand the system and are trying to work within it to find the compromise. In other words, the noise. You could have said "display holdings", but it is more comfortable (particularly when speaking) to say "show me my holdings" or "what is my balance".
      • Statements. These were the most interesting. Somebody might type in "I am 69 and almost ready to start taking my IRA distributions." This is good for profile updating on the person, but there's no real request there, so it's sort of in the computer's court how to handle it.
      • Life story people. These are the ones that really *do* want to have a conversation with the computer. Normally this takes the form of a small paragraph in which 50% of the words are misspelled. They're fun. :)

      In short, I don't think you'd ever tell a computer "Get me that thing I need for that meeting on that day" unless you knew that it wouldn't work and you were only trying to prove a point. Something very similar, like "Computer, do I have everything I need for the big meeting?" could be parsed just fine, if we assume that there is some way for the computer to determine relative importance of your meetings (such as who it is with, subject, and so on) and generate a todo list that includes things to bring.

    3. Re:On natural language... by Kaa · · Score: 1

      And I think that will always hold true. In order to make a computer work at its best, speak to it in a language it understands.

      I disagree. Human time is more valuable than hardware and as time goes by it will become much, much more valuable.

      The proper language for a professional to use is not the one which his current hardware is optimized for. The proper language is the one which fits the nature of his problem and which allows him to formulate the solution to this problem in an elegant, concise, and clear manner.

      --

      Kaa
      Kaa's Law: In any sufficiently large group of people most are idiots.
    4. Re:On natural language... by dmorin · · Score: 1
      You misunderstood my point. If you have a human expressing a problem to a computer in an elegant, concise and clear manner, you are in the "user" space and therefore I recommend natural language, as you do. But you have alreayd implied in your example that the human is speaking with a general problem solver. What I meant when I said "to make a computer work its best" was when you are making new devices to do entirely new domains of things.

      As a simpler example, take a chess playing machine. AS the user, you *could* say things like "E4" or "Nxg". But you'd prefer to just move the pieces and let the computer understand that. Now imagine that you are building a chess playing computer from scratch. Do you plan to sit down and tell it "Ok, what you want to do, see, is try to control the center squares. Make sure that you don't leave your knights on the outer rim for too long. Castle soon, but otherwise try not to move your king until you have to. Watch out for back rank mate....." See my point? In that case you need to develop a language more suited to explaining chess.

    5. Re:On natural language... by Kaa · · Score: 1

      If you have a human expressing a problem to a computer in an elegant, concise and clear manner, you are in the "user" space and therefore I recommend natural language, as you do.

      Um, well, no. I never said I accepted the natural language as being the best for this situation, prefering not to jump into this morass. But since it was brought up...

      I have strong doubts that natural spoken language is the appropriate way to deal with computers. It has its place as a user interface, mostly for short imperative commands. On the other hand it's really bad for very common situations like editing text.

      But we are not talking about user interface anyway. We are talking about programming, which is quite different. Programs are complex structures. I need to be able to visualize some of that structure, follow some links, tweak this part, move that chunk to another place, change this interface because it's no longer functional enough... I don't want to do this through natural language. It's too ambiguous, too imprecise, too much oriented towards a linear flow of words.

      In any case, I disagree that If you have a human expressing a problem to a computer in an elegant, concise and clear manner, you are in the "user" space. Most programming is done to solve some problem. Maybe the problem is to make a parser or optimize a compiler -- it doesn't matter. You still have a problem and you need a solution for it -- preferably elegant, concise, and clear. There is nothing "user" about it.

      And when you are making new devices to do entirely new domains of things -- why, the same thing applies. These new devices must be structured to reflect the structure of the problems/solutions they are designed to deal with. In this case you might talk to a computer in its language because luckily it so happens that the hardware was designed to understand the language the solution would be formulated in. But never should the language be dictated by hardware.

      --

      Kaa
      Kaa's Law: In any sufficiently large group of people most are idiots.
    6. Re:On natural language... by B.Smitty · · Score: 1

      In short, I don't think you'd ever tell a computer "Get me that thing I need for that meeting on that day" unless you knew that it wouldn't work and you were only trying to prove a point.

      Unfortunately, I think I would make well-meaning, ambiguous requests to the computer, because I'm often distracted, lazy, or just unable to verbalize my stream of consciousness.

    7. Re:On natural language... by Kazoo+the+Clown · · Score: 2, Interesting

      People know what they want out of their machines, for the most part.

      Dang, what dream-world do you live in? I work with people all the time that have NO idea what their computer is capable of doing for them, and feel the need to conform to what they think it expects because they have no idea what *they* can expect. In the future this may change somewhat, but even besides that, most of them don't really know what solution they need because they really don't understand the problem to be solved (just that there is a problem to be solved) and must *discover* more information about the problem.

      Let's explore the implications of this a bit. Suppose we have a scenario:

      1. Human states problem: "I need an accounting system for new company XYZ that is starting up. It is a widget manufacturing business that should be able to grow to the size of, say-- IBM with sales, parts supply and support offices all over the world."

      2. Computer says "OK, done."

      3. Human either spends months discovering what the computer's assumptions are about how the company is to operate and then either adjusting the companies operations to conform (thus making it just like every other equivalent business in the world), OR correcting the programs misconceptions so that it will conform with the companies operation (thus preserving some value added that the companies founders have with regards to new ideas of how to run the business) OR some combination thereof.

      Frankly, I don't see any version of step #3 to be particularly effective. Of course, how effective it is may be less of the point than how easy it is to use, but it doesn't strike me as being particulary easy to use either. And this is just a scenario including a relatively common and (presumably) understood problem. What happens when the nature of the problem is not such that there are preconcieved assumptions regarding it that can be leveraged as in this case? I can tell you what happens, the human spends all kinds of time discovering more about the nature of the problem and possible solutions and their implications and side-effects, pretty much like things are today. Sure, new tools will make the process easier and may include spoken input, but all this talk about "human language" interface is mostly utopian ignorance-- you'll have to fix the problems in human language first, in which case you're still "making" the human conform to the computer. Humans can't even talk to *each other* with much understanding, when the misunderstanding a computer is capable of is in the mix it is not going to be a very useful way to solve problems.

      Some people may prefer an English interface, but those will be the novice users for the most part. I can type faster than I can speak, and my typing isn't affected by the level of background noise and interruptions I may receive. As much as some tried to invent alternatives for the keyboard (such as the mouse), virtually none have eliminated the need. I have 10 fingers, not just *one* and know how to use them, and alternative inputs must compete with that. The novice who can't type may prefer using a mouse or some other alternative to do everything. "Ease of use" is desirable for novices, and will always be there, but it's not equivalent to "most efficient interface" between a computer and a knowledgable and/or trained user. And the thing about novices is, they don't all stay novices forever-- though some apparently, may prefer to.

  46. Graham has a truly peculiar idea by Systems+Curmudgeon · · Score: 1

    Graham expects programming languages to become logically simpler, because the computing inefficiencies imposed by simplicity will be a bearable cost. His idea of simplicity is nonsense for practical software developers. Developers need languages in which it is simple to notate the way they think of algorithms, and we hope that over time languages will help us that way. Graham says we should get rid of strings and use lists to represent them. But people naturally THINK in terms of character strings all the time, so it helps developers to support strings in a language. In C and C++ programming there is a very nasty concept that is implemnted with casting and multiple inheritance. When people learned to think clearly about this concept it got a name: "interface". Java and C# naturally support interfaces, removing a lot of mysterious programming garbage that previous languages required to make themuseable. THAT's language evolution, making it natural to program the way we developers think! To decide what programming languages will be in the future, we have to guess what developers will use as thoughtful building blocks in programs that interact with thousands of sources, routinely utilize quantum calculations, control artifical intelligence actors, deal with evolving changes in the components they interface to, and use totally new ways to get the attentions of the people who are using them. Our programs are starting to have to do all that now; we lack the languages to make the task at all routine; it's going to get worse before it improves, and it won't improve they way Graham thinks it wil.

    1. Re:Graham has a truly peculiar idea by kisrael · · Score: 1

      Right; Strings are special not because of effeciency, but because they reflect how we think.

      In fact, I think he's looking for a 3rd type of effeciency, that forcing programmers to use lists when they want to be thinking strings is some kind of efficiency from simplicity, from flattening the model. This is another example of false economy in my book...new good languages have to chart a middle course between having a lot of features, so that there's too much to keep track of and learn, and too little, so you have to write everything yourself.

      This ties ito perl's More Than One Way To Do It.

      --
      SO YOU'RE GOING TO DIE: The Comic for Dealing with Death
    2. Re:Graham has a truly peculiar idea by Raffaello · · Score: 1

      "Graham says we should get rid of strings and use lists to represent them. But people naturally THINK in terms of character strings all the time, so it helps developers to support strings in a language."

      No, programmers only "think" in terms of character strings because they've only ever worked with languages that enforced this distinction. Same way many programmers "think" that variables have a type because they've only ever worked with statically typed languages.

      People who haven't been mind f*cked by restrictive programming languages don't "think" in terms of character strings. Most people wouldn't know what you were talking about if you said the phrase "character string." Most people think in terms of words. There's absolutely no reason that a programming language couldn't treat sequences of unicode characters the same way as sequences of integers, or reals, or IP addresses.

      In other words, the underlying sequence primitives could be the same. We, as programmers, have only habitually thought of them as different because a distinct underlying machine representation was necessitated by efficiency, and that underlying machine representation was unfortunately allowed to creep into the syntax and even semantics of the languages we use.

      Graham's point is that with increasing computational power, we can have unified underlying primitives, which can then be optimized by the compiler. This unification would greatly simplify coding, because we wouldn't need separate whole libraries for string manipulation, as opposed to any other sequence data type. For example, in the following pseudo-code, both:

      sort some-string-container comparison-operator:english-alphabetical
      sort some-integer-container comparison-operator: less-than

      would use the same sort function, which takes a comparison function as one of its arguments.

    3. Re:Graham has a truly peculiar idea by jcast · · Score: 1

      Please explain to me one damn thing that can be imagined more clearly using character-strings-that-aren't-lists than with lists-of-characters. Haskell and ML define String = List of Char, and, as far as I've noticed, nobody's ever complained.

      --
      There are reasons why democracy does not work nearly as well as capitalism.
      -- David D. Friedman
  47. sh by cyber_rigger · · Score: 1


    It's about a third of the way to 100 years already.

  48. Not long... by MosesJones · · Score: 3, Informative


    In fact never. Because while its okay human languages have a few problems

    1) Redundancy, far to many ways to say or do one thing

    2) Ambiguity, "1 may be equal to x" "Sometimes allow the user to do this if they aren't doing something else that might conflict"

    So what you might get is a restricted language with restricted terms that could help. But even these tend to fall down, the first UML spec was written using such a language but this was abandoned for the more formal UML language as the inherent ambiguities of languages couldn't be overcome.

    So basically you might have some mechanism of translating from formal into informal but the real work will be done in a formal manner, as now, as ever because at the end of the day....

    Who wants to rely on a system that implements "sometimes" ?

    --
    An Eye for an Eye will make the whole world blind - Gandhi
    1. Re:Not long... by bmj · · Score: 3, Insightful

      In fact never. Because while its okay human languages have a few problems

      Well, yeah, but doesn't a computer language suffer from the same pitfalls? If that isn't the case, why do languages tend to "evolve" over time? Why are new languages that borrow elements from other languages so prevelant?

      1) Redundancy, far to many ways to say or do one thing

      Isn't one of the driving principles of Perl "There's more than one way to do it"? Some say this is one of Perl's best feature, other's say it sucks.

      I won't argue with the point of ambiguity. You can remove ambiguity from a "spoken" language by applying rules to it. I do think we're quite far away from being to "speak" a program, but that's because we as a culture have moved away from a _grammar_ of English. Check the courses in a university and see what first year English and Linguistic students are taking. It's not Grammar, it's Grammars. Standard written English is a thing of the past. So we won't base a language on how we actually use our language, but we could base a language on certain grammars of the language. And, isn't that something else that languages like Perl and Python try to do? They try to create more "readable" programs?

      --
      Whereof we cannot speak, thereof we must be silent. --Ludwig Wittgenstein
    2. Re:Not long... by Anonymous Coward · · Score: 1, Funny

      The Department of Redundancy Department says:
      ambiguity==humor, except where it does not.

    3. Re:Not long... by Anonymous Coward · · Score: 0
      You can remove ambiguity from a "spoken" language by applying rules to it.

      If you start applying rules to natural language, you remove its main appeal -- that you already know how to use it.

      There are plenty of existing programming languages that could be described as a subset of english. You can approach learning a language like this from one of two directions: you can build up, from zero assumed knowledge, or you can cut down, from assumed knowledge of the natural language.

      How feasible do you think the latter approach would be? There are dozens of grammatically correct ways to express the conditional statement "if x is equal to y then do z." Only one will work in Subset-Of-English. And that's just at the syntax level -- before you even got to the details, you have to learn that you can't just ask the computer to "make the ball bounce."

      No, the only feasible approach to learning such a language is the build-up approach. In which case, what's the advantage of Subset-Of-English over a language with syntax that's designed from the ground up, specifically for programming?

      There is one: it's easier for non-programmers to read and understand. This has probably led a lot of non-programmers to choose a language like this. But if you're going into programming, you're probably going to be a programmer a lot longer than you're a non-programmer. Wouldn't it be wiser to choose a language that's optimized to make life easier for programmers?

    4. Re:Not long... by petronivs · · Score: 1

      And, isn't that something else that languages like Perl and Python try to do? They try to create more "readable" programs?

      I thought Perl programmers tried to create more "obfuscated" programs.

      --
      This is the real signature
      (Beats those shadows on the cave wall, don't it?)
    5. Re:Not long... by Anonymous Coward · · Score: 0
      1) Redundancy, far to many ways to say or do one thing

      2) Ambiguity, "1 may be equal to x" "Sometimes allow the user to do this if they aren't doing something else that might conflict"

      There is a simple way to deal with this. In effect, it's to have the computer pop up a dialog box that say in effect [Gary Coleman] "What you talkin' about, Willis?" [/Gary]. You can then clarify what you meant

      The concept that the program is only checked after you finish the whole thing is a remnant of batch-processing mainframes. A much better system is to have the computer check for potential errors as you key it in, a'la Microsoft Word's spelling and grammer checker. The trick is to keep it unobtrusive, and make it smarter than MS Word is. (i.e. IQ > -20)

      Who wants to rely on a system that implements "sometimes" ?

      I think it is an important concept for a computer to understand. "Sometimes shit happens.", "Sometimes it is appropriate to open the pod bay doors, HAL." "Sometimes the people in charge aren't always right."

      The problem is not with "sometimes", the problem is with allowing the computer to do random and unpredictable things. (Sometimes is okay, as long as it is a *predicable* sometimes.)

  49. Just another... by Anonymous Coward · · Score: 0

    ...article that makes me believe that C will last forever.

  50. Types by jameson · · Score: 2, Interesting

    "For example, types seem to be an inexhaustible source of research papers, despite the fact that static typing seems to preclude true macros-- without which, in my opinion, no language is worth using."

    This bold statement is not only wrong (cf. Peyton Jones' latest work on macros in Haskell), but also misleading. Let's start off with some opinion: In my opinion, no language without static typing is worth using. The reason is simple: Because I am human. I make mistakes. And I don't want to spend the rest of my life writing test suites to check for errors which even trivial type systems can detect.

    I agree with one thing: Languages will become simpler on a mathematical level. Anyone who has used ML or Haskell will have noticed how much easier these are to understand in comparison to any imperative language out there (and, by the way, in Haskell, Strings are lists of characters). But, at the same time, I truly hope that mechanisms for proving properties about programs will become not only more powerful, but also more widespread. I would like to have static verifications of my pre- and postconditions. I would like to verify that the result of my 'sort' function returns a permutation of its input for which each element is less than or equal to its successor. These are the things I'm looking forward to seeing in the future.

    1. Re:Types by warrax_666 · · Score: 1
      I would like to have static verifications of my pre- and postconditions.

      Unfortunately, that is an undecidable (in the Turing sense) problem in the general case.

      HAND.
      --
      HAND.
    2. Re:Types by jameson · · Score: 1

      That's true. But you can get pretty far in practice; moreover, having the developer specify (and the prover verify) auxiliary lemmata should resolve this problem in many situations.

      The downside is that programmers will have to be able to deal with programs as well as with proofs if they want to produce stable code, but I'm not really convinced that this is neccessarily a bad thing.

    3. Re:Types by roba · · Score: 1
      Unfortunately, that is an undecidable (in the Turing sense) problem in the general case.
      Then get the programmer to provide proofs.
    4. Re:Types by warrax_666 · · Score: 1

      Well, it could possibly be pulled off by having the developer provide proofs or auxiliary lemmata (is that really a word?) or restricting the expressable pre-/postconditions. I agree that this would go a long way, but the biggest problem (as I see it) is that there is lots and lots of code which does not really lend itself to easy proof (e.g. timing-dependant networking code, GUI code, parallel/distributed code, etc.). I suppose we can always dream though. :)

      --
      HAND.
    5. Re:Types by warrax_666 · · Score: 1

      I can imagine how being required to provide formal proofs of all code would increase anyone's productivity. :)

      --
      HAND.
    6. Re:Types by William+Tanksley · · Score: 2, Insightful

      I'm not sure whether I agree with you or not. On the one hand, I really like strong static typing; it's worked well for me. On the other hand, my experience and the experience of others I've seen is that dynamicly typed languages are not only more fun to program in, they produce good results faster.

      My theory is that this is just bad implementation on the part of the static languages (this is obvious with C++, less obvious with ML, subtle with Haskell); but I don't know this, it's only a suspicion.

      I don't want to spend the rest of my life writing test suites to check for errors which even trivial type systems can detect.

      Put that the other way around -- do you want to spend the rest of your life working against strong typing systems which only detect errors that even the simplest test suite would automatically find?

      You ARE writing those test suites anyways, right? Because there are errors that NO static type system can ever find but a simple test can.

      -Billy

    7. Re:Types by jameson · · Score: 2, Insightful

      On the other hand, my experience and the experience of others I've seen is that dynamicly typed languages are not only more fun to program in, they produce good results faster.

      Hmm, my experience is slightly different. The 'fun' part is, of course, rather subjective-- I find dyanmically typed languages more frustrating, which is why I personally wouldn't agree with that, but, of course, YMMV-- but I definitely disagree about the part with "good results being produced faster".
      They do produce results faster, often even reasonable results. But good results (i.e. stable code) take much longer to achieve, in my experience.

      Put that the other way around -- do you want to spend the rest of your life working against strong typing systems which only detect errors that even the simplest test suite would automatically find?

      I've rarely had to "work against" strong type systems in the past. Sufficiently expressive type systems are important for this to make sense, I'll admit that; it requires a certain kind of thinking to be able to make use of strong typing effectively. This restriction on "free thought" may be what people find most offensive, but I'm not sure.

      Regarding test suites: It is very hard to construct (for a non-trivial program) a test suite that achieves complete code coverage (recall that you'll want to check all of your error and special case handlers). Right now, test suites are the most reasonable approach to handling properties beyond the capabilities of type systems in languages we can come up with ("Does this function terminate? Does the sequence of file system updates it performs correspond to what I want it to do?"), and they are certainly a good complement to static checkers. But they rarely test all of the relevant properties of a program; as such, the neccessity for implementing a test suite can be considered as a sign of weakness of static checking. (That doesn't mean they should be omitted if static checking fails-- that'd be dishonest.)

      There are errors which no static type system or static checker will be able to find (thanks to Goedel ;-) but that doesn't mean that we should give up on static checking-- simply because no test suite writer will ever be able to test for all the things that fall out of a static checker for free.

      In conclusion, I believe that we need static typechecking, static checking in general, and test suites for everything we cannot formalise (for whichever reason) if we want to ever resolve the "software crisis". Without any of these, we'll just keep inventing more crappy code.

    8. Re:Types by William+Tanksley · · Score: 1

      Hmm, my experience is slightly different. The 'fun' part is, of course, rather subjective-- I find dyanmically typed languages more frustrating, which is why I personally wouldn't agree with that, but, of course, YMMV-- but I definitely disagree about the part with "good results being produced faster".
      They do produce results faster, often even reasonable results. But good results (i.e. stable code) take much longer to achieve, in my experience.


      Interesting experience; definitely at odds with mine. In my experience quite stable code is produced quite quickly with either. The key is testing and design (and how they work together), not static or dynamic typing.

      As for the other points -- yes, fun is definitely in the eye of the beholder. I've definitely had fun in every language I've worked with (even Fortran); but my experience is that languages like Python are a blast to program in -- the difference is highly noticable, more so every time I switch.

      I've rarely had to "work against" strong type systems in the past. Sufficiently expressive type systems are important for this to make sense, I'll admit that; it requires a certain kind of thinking to be able to make use of strong typing effectively. This restriction on "free thought" may be what people find most offensive, but I'm not sure.

      I've seen some type systems proposed which would allow almost as much freedom as dynamic typing; the problem is that they uniformly require a LOT of keyboarding. As a result, I haven't seen any of them actually implemented.

      [...]the neccessity for implementing a test suite can be considered as a sign of weakness of static checking.

      That's fine, and I would agree, but keep in mind that it's a fundamental, natural "weakness" of static checking. You can't get around it. You mention that in your next paragraph, but it needs to be made clear that you can't skip the testing even if you've got arbitrarily strong type correctness.

      No test suite writer will ever be able to test for all the things that fall out of a static checker for free.

      That's just completely false. A simple test suite can check for almost all the things a strong static typecheck gives; it takes a lot more to test for EVERYTHING, of course, but it's definitely possible.

      Good tests are easy to write. I used to think they were hard; but then I started treating tests as part of my design, to be written at the same time as my design; and suddenly what used to be boring work (making my design break) became part of the most interesting work (making my design complete). I can highly recommend "Test Driven Development", known as TDD.

      In conclusion, I believe that we need static typechecking, static checking in general, and test suites for everything we cannot formalise (for whichever reason) if we want to ever resolve the "software crisis". Without any of these, we'll just keep inventing more crappy code.

      Sounds like the voice of reason and experience to me! I don't give formalism any place there, since in my experience it can't shortcut testing at all; but otherwise I agree with you.

      -Billy

    9. Re:Types by jcast · · Score: 1

      You don't have to provide formal proofs of all code. I would estimate 90% of all array accesses could be done without any run-time checking if the compiler could supply simple arguments. (I.e., in Haskell you could say: pre-condition for a ! i = i `elem` range (bounds a), then when you access an array with mapM (\i -> ) (range (bounds a)), the compiler knows a ! i within is legal. Simple stuff like that.)

      --
      There are reasons why democracy does not work nearly as well as capitalism.
      -- David D. Friedman
    10. Re:Types by jcast · · Score: 1

      A third arm of the solution would be to generate two entry points for each function with a pre-condition, one which verifies the pre-condition and jumps to the other to do the real work. Then the proof (whether supplied or derived) becomes an optimization (which makes heuristics more acceptable as well---the program won't fail because I used ghc and you used nhc, and nhc can prove the correctness of usages ghc can't).

      --
      There are reasons why democracy does not work nearly as well as capitalism.
      -- David D. Friedman
    11. Re: Types by Black+Parrot · · Score: 1


      > But, at the same time, I truly hope that mechanisms for proving properties about programs will become not only more powerful, but also more widespread.

      I also am a fan of formal verification. Unfortunately, formal verification requires a formal specification (to be prove to have been implemented correctly), and once you get to complex application programs (rather than, say, just a sorting routine), providing a correct formal specifications is probably going to approximately as difficult as writing correct programs is now. IOW, it just moves the problem somewhere else.

      --
      Sheesh, evil *and* a jerk. -- Jade
    12. Re: Types by Black+Parrot · · Score: 1


      > I've rarely had to "work against" strong type systems in the past. Sufficiently expressive type systems are important for this to make sense, I'll admit that; it requires a certain kind of thinking to be able to make use of strong typing effectively. This restriction on "free thought" may be what people find most offensive, but I'm not sure.

      That is also my experience, and my perception of why people don't like it.

      Strong typing does seem like "a lot of extra keystrokes" and a lot of extra chains on your behavior when you first start using it (no, I'm talking about strong typing, not what passes for that in C++). But after you get used to it you find yourself creating very sophisticated abstract data types and thinking of them as abstractions, so that the programming end becomes very simple and elegant -- as well as completely eliminating certain kinds of bugs that programmers waste an incredible amount of time fighting.

      I try to get people to think of strong static typing as a form of constraint-based programming. All a strong type definition actually does is put some constraints on the values a variable or parameter can have. And it's a nifty kind of constraint, because you specify it once rather than all through your code, and because it can be checked at compile time rather than at run time.

      --
      Sheesh, evil *and* a jerk. -- Jade
    13. Re: Types by Black+Parrot · · Score: 1


      > You don't have to provide formal proofs of all code. I would estimate 90% of all array accesses could be done without any run-time checking if...

      I'm not so sure run-time checking is such a bad thing. Sure it adds a bit over overhead, but we have a very wrong fixation on performance over correctness. IMO correctness should always be more important than performance. If your boss puts more emphasis on speed than on correctness, just turn in a "Hello World!" program for every project: programs don't get much faster, and BFD if the output wasn't what your boss wanted -- it's just a bug!

      Besides, in most cases run-time checking is going to impact performance far less than the inefficient algorithms people tend to use. I shudder at some of the programs I've had to repair because the people who wrote them didn't know the advantages of the most rudimentary data structures, such as trees, in many common circumstances.

      --
      Sheesh, evil *and* a jerk. -- Jade
    14. Re: Types by Black+Parrot · · Score: 1


      > ...lemmata (is that really a word?)...

      In Greek, yes. But in English it's usually just "lemmas".

      Unless you're like me (and lots of other geeks) and like to use exotic word forms for the fun of it. My dictionary gives both forms, but you're probably the first person (other than myself) whom I've ever heard using the -ta form.

      > but the biggest problem (as I see it) is that there is lots and lots of code which does not really lend itself to easy proof (e.g. timing-dependant networking code, GUI code, parallel/distributed code, etc.).

      I've never seen proof work for GUIs, but there are methods for doing proofs for time-dependent and/or distributed programs.



      --
      Sheesh, evil *and* a jerk. -- Jade
    15. Re:Types by Anonymous Coward · · Score: 0
      You ARE writing those test suites anyways, right? Because there are errors that NO static type system can ever find but a simple test can.

      This is false. If you give me a particular program and a particular class of errors which can be detected by a dynamic test, I can give you a static type system which can also detect that error for that program.

      Of course, one usually applies static type systems to all the programs of a language; you don't typically craft a specialized version for each program. So maybe this seem useless to you.

      But, consider the case of tests. Your notion of a "simple test" which can detect a particular error is equally useless: it only works for that one program.

      I think there is a double standard here, which goes unnoticed because the things being quantified over are different: you say my static type system is inadequate, because it cannot find all errors in all programs; yet you laud the "simple test" which can find a particular error in a particular program. But consider that my static type system can find certain errors in all programs, yet your "simple test" can never even be reused across programs.

    16. Re: Types by jcast · · Score: 1

      I see your point, sort of, but why bother running the check at run-time if it's obviously not needed (and you can prove this at compile time)? I just don't see the point.

      In any case, you really shouldn't be using arrays unless performance matters anyway, so arrays should receive special performance attention for that reason.

      --
      There are reasons why democracy does not work nearly as well as capitalism.
      -- David D. Friedman
  51. Re:Cobol is back....In Pog Form! by Anonymous Coward · · Score: 0

    ay, the hot pants.

  52. OOP is spaghetti code?!!! by Slashdolt · · Score: 1

    I don't predict the demise of object-oriented programming, by the way. Though I don't think it has much to offer good programmers, except in certain specialized domains, it is irresistible to large organizations. Object-oriented programming offers a sustainable way to write spaghetti code. It lets you accrete programs as a series of patches. Large organizations always tend to develop software this way, and I expect this to be as true in a hundred years as it is today.

    At that point, I quit reading... As someone who's seen tons of spaghetti code in my life-time, it's generally because people don't understand OOP. Well written OOP, with inheritance, interfaces, etc. nearly eliminates the possibility of spaghetti code.

    At that point, I believed the author didn't have a clue, so anything else he said was probably also irrelevant. Could he have meant visual programming? Beats me...

    Slashdolt - A better dolt.

    1. Re:OOP is spaghetti code?!!! by renehollan · · Score: 1
      Object-oriented programming offers a sustainable way to write spaghetti code.

      rebutted by:

      At that point, I quit reading... As someone who's seen tons of spaghetti code in my life-time, it's generally because people don't understand OOP. Well written OOP, with inheritance, interfaces, etc. nearly eliminates the possibility of spaghetti code.

      O.K., spaghetti design, then.

      Do you think the lack of gotos all over the place magically makes something no longer spaghetti code? Me thinks not, having seen a lot of crufty C++ in my day.

      The problem, and I think the original poster was alluding to this, is that C++, with it's separation of interface from implementation, facilitates the replacement of one implementation with another. "Spaghetti code" in this case is, what I call, the "proxy implementation": the original code had a problem, so you wrap an instance of a "hack class" holding a reference on the object with the original implementation, and exposing an identical interface. Tee hee hee. C++ makes this particularly easy to do, with facilities intended for specialization (inheritence and polymorphism). It's still a hack, a patch on the original implementation instead of a reimplementation to correct the defect. As far as hacks go, its a pretty good one, though, like all hacks, it begs for eventual refactoring.

      Seeing a Foo implemented as a SpecialFoo implemented as a BugFix73Foo with, finally, the original Foo backend implementation proxied away sure evokes thoughts of spaghetti code in my mind: a maze of declaration header files that one has to wander through to peel away the layers of proxied patches. Not a single goto in sight of course, but fairly called spaghetti code, none the less.

      This does not mean that C++ is a bad language, only, like all languages, it can be badly abused.

      --
      You could've hired me.
    2. Re:OOP is spaghetti code?!!! by Anonymous Coward · · Score: 0

      "Good" OOP is the canonical example of spaghetti code. The control flows leaps from here to there to there back over here back over there for a moment, through some header somewhere and straight into the debugger.

      That might be good, given what OOP offers in return (abstraction), but it's still spaghetti code.

    3. Re:OOP is spaghetti code?!!! by Anonymous Coward · · Score: 1, Insightful

      OO is a good way of forcing bad programmers to organize their code a little better, and having someone else dictate enough of the design (interface) that they can't screw that up too badly.

      His point was, I believe, that OO is better suited for development by large groups where individual members cannot be trusted to organize their code properly, and suitable for the process that results in spaghetti code - avoiding rewrites and allowing software to evolve for a long time. This can happen to OO projects, too, but they remain more manageable despite the spaghetti-infusions.

      But his observation, which I agree with, is that OO doesn't make programs written by good programmers any better, except for certain domains. As an example (my example, not his), OO is good for implementing UI elements, but not for implementing language compilers.

      As a side-note, I've also seen lots of OO programs that have been unextendable because things were implemented in many parallel classes that weren't sufficiently generic and tied together in ways that threw away any of the potential usefulness of the abstractions...

    4. Re:OOP is spaghetti code?!!! by Anonymous Coward · · Score: 0

      You are correct. They've replace the convoluted program flow with convoluted architectural flow. You want to know what class X does? Trace up the heirarchy and be forced to learn classes A, B, C, D and E for good measure. Multiply that by 1000 classes and you have the biggest hairball you've ever seen. You'll be begging for gotos.

    5. Re:OOP is spaghetti code?!!! by codehoser · · Score: 1

      "except for certain domains"?

      Which domains? Creating language compilers? Perhaps you think that most people implement language compilers and so (like the author) you think it's largely worthless to use OOP?

      I tend to believe most people work at a much higher level of abstraction. In those cases (the majority?), OOP is something that can really turn a beastly chunk of spaghetti code into something that makes sense to work with.

      Kevin

  53. In the future... by stanmann · · Score: 1

    Programming languages will still have the same 3 characteristics they have today.
    First: They will be closely related to spoken language... Even Assembly language has a distant relationship with spoken language,
    Mov ax,z
    has a reasonably obvious meaning.
    Second: They will be related to mathematics. Unless there is some quantum paradigm shift in processor technology, computers will still ultimately work with moving numbers around. And progamming will be moving those numbers around in a way to establish and observe meaning.
    I would venture to predict that some variant or descendant of C will still be in use even if the dominant language is no longer english and therefore the base language has changed.

    --
    Food not Bombs is a nice platitude but it breaks down when you notice that the Bombees are usually well fed
    1. Re:In the future... by ddriver · · Score: 1

      yeah sobgtr is pretty close to english.

      --
      I found my inner child, then I got caught abusing it...
    2. Re:In the future... by Anonymous Coward · · Score: 0

      Regardless of what language will be used, we can know one thing for sure. It won't be anything like what the authour is predicting.

      The guy is a moron. It was proven in the first couple of paragraphs when he said Java was an evolutionary dead end. It's most certainly not. Java grew from C++, which grew from C with ideas from, among others, Algol. From Java branched C# which is just in the beginning of it's life cycle, and most certainly will get further offspring. Doesn't look like an evolutionary dead end.

      Secondly, removing numbers form the langiage? What? It has been done before. Several times actually. The most extreme cases even remove variables. And all forms of atomic values. An interesting experiemental implementation can be found in the language Unlambda.

      In short, the guy knows next to knothing about programming langiage history, nor does he know anything about programming language theory. Only on slashdot can idiots like this guy get so much exposure.

  54. OOP by samael · · Score: 2, Insightful
    I don't predict the demise of object-oriented programming, by the way. Though I don't think it has much to offer good programmers, except in certain specialized domains, it is irresistible to large organizations.


    Where OOP comes into it's own, in my experience, is with GUIs. The ability to say:

    If ThisScreen.Checkbox.IsTicked
    ThisScreen.OkButton.Disabled = True
    Endif

    is immensely useful. Similarly, the ability to change the definition of your master screen template and have all of the other screens take on it's new properties is something that OOP is designed to allow you to do.

    Similarly, anything where you tend to access things that act like objects in the first place suit it. Being able to say

    CurrentDocument.Paragraph(1).Bold= True

    or

    Errval=MyDatabase.SQL("Select * from mytable where name='Andrew'")
    Print MyDatabase.RecordCount

    has made my life easier on numerous occasions. There are certainly non OO methods of doing the same thing, but I've never found them as flexible.

    People who insist on making _everything_ an object, on the other hand, are idealists and should be carefully weeded from production environments and palced somewhere they'll be happier, like research.
    1. Re:OOP by RicktheBrick · · Score: 1

      The language of the future will be open source so that all objects no matter where or when they are written will be available to all the other computers. The number of objects will no doubt number in the trillions and will require a very fast computer just to determine which one is best for a given task.

    2. Re:OOP by Viol8 · · Score: 1

      So what exactly is the difference between...
      If ThisScreen.Checkbox.IsTicked

      and

      if IsTicked(checkbox.thisScreen)

      Answer? Nothing. Its simply syntactical differences. I think you've just proved that
      you know nothing about real OOP though given that your gave your examples in VB , why arn't I too
      surprised... Hmm , I wonder...

    3. Re:OOP by samael · · Score: 1

      I doubt my code was in VB, as I've never done more than 100 lines top of VB (just enough to check that some COM was working).

      And the difference between the two bits of code is that I can change the IsScreen variable/property on a case by case basis whereas the IsTicked function won't be so easily changed.

      not that there's anything wrong with using functions rather than properties, there's no need to be a religious maniac, after all.

    4. Re:OOP by Anonymous Coward · · Score: 0

      NONE of your examples has a whit to do with OOP.

    5. Re:OOP by Anonymous Coward · · Score: 0

      The guy who commented on your code was completely right. You don't know anything about object orientation, and even less about programming language theory. I dont have the time, nor the motivation to teach object orientation basics in this forum but a quick google gave me this link: http://www.cyberdyne-object-sys.com/oofaq2/ which seen to describe what object orientation _really_ is. You'll be suprised.

      Click on "basics" in the top left corner.

    6. Re:OOP by StrawberryFrog · · Score: 1

      You are a VB programmer, so it's only natural that you should do things the dumb quick, easy and grossly inefficient way.

      That SQL is better off as


      Errval=MyDatabase.SQL("Select count(*) from mytable where name='Andrew'")
      Print MyDatabase.Rows[0].Colums[0].value // or however VB does this


      Trust me, it is less work for the server, less network trafic. You don't read a book cover do cover just to see how many pages it has, do you?

      --

      My Karma: ran over your Dogma
      StrawberryFrog

    7. Re:OOP by samael · · Score: 1

      For the second time, I'm not a VB programmer. The code was purely pseudocode.

      More to the point, if the database connection object has retrieved a number of rows, then it knows how many it has. So why is it grossly inefficient?

    8. Re:OOP by angel'o'sphere · · Score: 1

      The funny thing about your examples is that none of them has any relation to OO except that you use a . to seperate and piece of data (an object) from a piece of code(a method).

      The entire sample would make more sense if you would say:

      CurrentDocument.Paragraph(1).Bold= True

      This piece of code will work allways teh same, regardless wether CurrentDocuumen tis of type PDFDocument, HTMLDucument, RTFDocument or even MSWordDocument.

      Because that is what OO is about .... finding a general abstraction for things (objects) which have something in common. Not about placing data in front of a function instead of inside of the parantheses.

      angel'o'sphere

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

      Very true. When I was working with OO stuff (and not COBOL as I have been for months now), I was very careful to encapsulate as much as possible. Being able to make massive changes under the surface without people making calls being able to tell was fantastically useful.

      Basically it meant that as long as we didn't change the protocol, we could change the program.

    10. Re:OOP by sig+cop · · Score: 0

      Warning: parent post contains Goat Sex Link. Do not visit parent link. I repeat. Do not visit parent link.

    11. Re:OOP by Anonymous Coward · · Score: 0

      Funny thing is that the people who are big on BINARY object compatibilty are the commercial vendors like Sun and Microsoft.

      The "Open Source" guys seem to prefer Cut+Paste, and software that breaks if you change the compiler.

  55. 100 years? by electricthought · · Score: 0, Troll

    In 100 years Microsoft might finish securing their OS. The most stupid article I have ever read! knowing what you don't know is a true sign of intelligence

  56. Notation by hey! · · Score: 3, Insightful

    Lisp was a very early, successful language, because it was close to a mathematical notation and easy to implement on primitive computers. I think the uathor expects Lisp to remain a vital evolutionary branch because of its mathemtical roots.

    I'm not too sure though.

    A programming language is a notation in which we express our ideas through a user interface to a computer, which then interprets it/transforms it according to certain rules. I expect that a lot will depend upon the nature of the interfaces we use to communicate to a computer.

    For example, so far as I know people never programmed in lisp on punch cards; it doesn't fit that interface well. It was used on printing terminals (for you young'uns, these were essentially printers with terminals). Lisp fit this interface well; Fortan could be programmed either way.

    If you look at languages development as an evolutionary tree, Python's use of whitespace is an important innovation. However it presupposes havign sophisticated syntax aware editors on glass terminals. It would not have been convenient on printing terminals. Perhaps in 2103 we will have "digital paper" interfaces, that understand a combination of symbols and gestures. In that case white space sensitivity would be a great liability.

    In my mind the biggest question for the future of languages is not how powerful computers will be in one hundred years, but what will be the mechanics of our interaction with them? Most of our langages presume entry through a keyboard, but what if this is not true?

    --
    Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
    1. Re:Notation by Gabe+Garza · · Score: 1
      Lisp was a very early, successful language, because it was close to a mathematical notation and easy to implement on primitive computers. I think the uathor expects Lisp to remain a vital evolutionary branch because of its mathemtical roots.

      Lisp has changed. A lot. It outgrew its "mathematical roots" very quickly--the first documented implementations had a lot of side-effecting functions that weren't based on mathematical formalisms. You might be surprised just how "unpure" the first Lisps were (and how the most common versions remain so to this day).

      For example, so far as I know people never programmed in lisp on punch cards

      They did. Note that chapter 6.1 of the LISP 1.5 Programmer's Manual is called "Preparing a Card Deck". You might also want to read appendix J, and look at all the *very* side-effecty and non-mathematical functions present in this very early Lisp. :)

    2. Re:Notation by jfb3 · · Score: 1

      Not quite true. Some of the various versions of COBOL and RPG I've used in the past were very white space specific. Both predate terminals. (Anyone still have a coding pad on a shelf somewhere?)

      Unless you shift the idea of a "language" to a "remembered motion" interface via a tablet or screen (my dream) then any character intensive directions will be equally useable via any of the now available methods of programming.

    3. Re:Notation by rabidcow · · Score: 4, Insightful

      I think the uathor expects Lisp to remain a vital evolutionary branch because of its mathemtical roots.

      I think he expects it to remain a vital branch because recent languages have been more and more like lisp. If lisp doesn't directly beget new, highly popular languages, lisp's features will be (and have been) absorbed into whatever does become popular.

    4. Re:Notation by hey! · · Score: 1
      They did. Note that chapter 6.1 of the LISP 1.5 Programmer's Manual [iis.nsk.su] is called "Preparing a Card Deck".


      Well, I'm not at all surprised that it was possible, but I never knew anyone who did, and I certainly knew plenty of lisp programmers. If you think about it, the kind of programming style lisp promotes entails short development and testing cycles for small pieces of logic. It fits particularly poorly with a batch development methodology. Had punch cards been the only input medium available, Lisp would never have been very significant at all.



      Lisp has changed. A lot. It outgrew its "mathematical roots" very quickly--the first documented implementations had a lot of side-effecting functions that weren't based on mathematical formalisms. You might be surprised just how "unpure" the first Lisps were (and how the most common versions remain so to this day).


      Hehe. Believe me I've been around a long time. I remember when people started advocating static scoping over dynamic scoping. I never said that lisp was pure math; and the connection between lisp and math was more the author's point than mine. However, there is considerable truth in that: lisps fit very naturally with recursion, and therefore skillfully written lisp programs tend to mirror the mathematical process of induction.

      --
      Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
    5. Re:Notation by Anonymous Coward · · Score: 0

      You, my friend, are on the right track. I will be keeping an eye on you.

      Have a nice day.

    6. Re:Notation by Kazoo+the+Clown · · Score: 1

      In my mind the biggest question for the future of languages is not how powerful computers will be in one hundred years, but what will be the mechanics of our interaction with them? Most of our langages presume entry through a keyboard, but what if this is not true?

      So what would you rather have, carpal tunnel, or a sore throat? :-)

      Lisp was a very early, successful language, because it was close to a mathematical notation and easy to implement on primitive computers. I think the uathor expects Lisp to remain a vital evolutionary branch because of its mathemtical roots.

      Actually, I kind of doubt it was due to its mathematical properties. But I do think lisp will probably be an evolutionary ancestor of languages in the future, though perhaps not *all* languages in the future. There are three languages in particular I think have some important features that especially enhance programming (though it could be due to how I think, YMMV). These are, lisp, APL and Forth. All three languages have a specific ability, to some extent, to be mutated to suit the problem. This capability is usually referred to as "extensibility" though I've never thought that term was very descriptive. Object-oriented languages have some ability to do this as well, with features like operator overloading, etc., but it doesn't seem to be quite as simple and concise as it is in the three languages I mentioned. The fact that the three are also usually incrementally interactive during development could be a factor as well-- the fact that you program by gradually increasing the power of the language by adding new "primitives" is a very powerful feature that I expect will survive and be improved upon in some form in languages of the future. In some ways it could be said the languages "evolve" into the solution. And the ability to later redefine a primitive and thereby completely transform the solution in more and more intelligent ways coupled with inherent heuristic capabilities are some of the things I would expect to see as well. The extent that the "programmer" directs an evolutionary step towards the solution and the computer is able to do it on its own remains to be seen, but I do expect that the computer will do far more than it does now in that regard.

      Most certainly new programming methods should be able to adapt to the "user" (programmer), but also to the problem, and in fact that is why I think the three languages I mentioned are particularly unique, as they are already pretty capable of that. Users/programmers that will also adapt to the computer will be more effective than those who insist on remaining "pure." I would expect that society as a whole will adjust itself more to conform to new technologies (as it has in the past), certainly including the computer. It has adjusted itself (for the most part) to technologies such as the automobile, airplane, chainsaw, etc.. Did we design cars to act exactly like horses because humans didn't like learning a new way to travel (perhaps some didn't)? At one extreme you have the human completely conforming to the computer's operation-- programming in binary for example, and at the other extreme, the computer completely conforming to the human's operation (no doubt producing a lot of confused, misinterpreted, ambiguous and erroneous results) and somewhere in between there is a point of optimal synergy. The dreamy utopians seem to have a hard time understanding this.

    7. Re:Notation by Strudelkugel · · Score: 1

      Interesting point about the actual interface involved in using the language. On another note, I'm surprised none of the high mod replies mention Intellisense. (Maybe M$ trademarked it or something.)

      It's highly useful regardless of language, which suggests to me that things like it are on one of the thick banches of the tree. Granted, Intellisense is more a feature of the editor than the language, but the convenience of it will likely begin influencing language design, especially since it allows you to discover features of the language/framework as you use it.

      We learn natural languages through experience and context, why not the same for computer languages of the future? Intellisense must be a big waste of clock cycles since it doesn't contribute anything to the output binary, but it is very helpful for a translation process. In this way, it fits the inefficient but useful model. Same with syntax highlighting.

      --
      Imagine how much harder physics would be if electrons had feelings! -Feynman, maybe
    8. Re:Notation by Anonymous Coward · · Score: 0
      Python's use of whitespace is an important innovation. ... Perhaps in 2103 we will have "digital paper" interfaces, that understand a combination of symbols and gestures. In that case white space sensitivity would be a great liability.


      Exactally. Python's uses whitespace not because Guido likes whitespace, but because programmers already use indentation to delimit conceptual groupings. So in that sense, { & } are superfluos.

      Unless I miss my guess, in 2103 Guido's cryogenically preservd head will make it so that Python won't use literal counts of spaces and tabs, but will instead feed off of the symbols and gestures to determine what is a conceptual block and what is a subblock.

      THATS what the language of the future will do - use what we do anyway to determine meaning, instead of forcing us to add in additonal constraints to satisfy the machines.

    9. Re:Notation by leshert · · Score: 1

      That's an interesting point... the hardware equivalent would, of course, be FPGA-based computers.

      The drawback to such adaptive methods is the reduction in generality, of course. It's much easier to quickly understand a system when it isn't quite as adaptive (think of new programmers coming onto a project, or a company that has multiple, heterogeneous projects, each of which has a language that's been adapted to the project's problem domain).

  57. Visual? by boatboy · · Score: 1

    The article said nothing about visual programming models. I've always thought a really good, powerful, simple visual language would eventually make mainstream. Not just visual front-ends like VB or Softwire, but something completely visual and more fluid. Complex things are more easily grasped visually- a picture is worth a thousand lines of code? Anyway, that's the way it was on Star Trek and Minority Report.

    1. Re:Visual? by Anonymous Coward · · Score: 0

      Look at the history and you will learn a lot. Many attempts to do this has been made already. Remember 4GL? Many times were the end of code being written in text editors predicted, but you know what? We still do it.

      There is something inherently good about text that can't be emulated with pictures? (please abstain from any argument about pictorial writing systems, I have studied chinese, and in this context it's just as "textual" as the roman alphabet).

      There are no hardware barriers preventing us from going to full 4GL style language today, other than the fact that they suck for large projects.

      I challenge you to prove me wrong on this.

    2. Re:Visual? by boatboy · · Score: 1

      So you're saying:
      if(Progress.FailedAttempts > acThreshold) Progress.Quit();

      Of course 4th gen. languages aren't there yet, but I think the concept is sound. Want to program a window and some buttons? Then draw a window and some buttons! Where IDE developers haven't done as good (yet) is creating a visual paradigm for telling the computer how to do non-visual things, like make logic or finer design decisions.

      The proof you're wrong is that we still use flowcharts to design apps. It's often said that a "well designed application practically writes itself." I just think once it's well designed...it should.

    3. Re:Visual? by wulfhound · · Score: 1

      The problem with visual languages is that their overall paradigm tends to be somewhat restricted and specialised. There are numerous visual or part-visual tools that have many of the features of a programming language (especially in fields relating to signal processing, but arguably also in CAD, business process modelling, databases, prototyping, multimedia authoring..) but none have ever really caught on as a general solution.

      The sort of visual paradigm you'd want for an authoring app is decidedly different to what you might want for signal processing, for example.

  58. win2.1k?? by Connie_Lingus · · Score: 1

    Even if they only end up being a paltry million times faster, that should change the ground rules for programming languages substantially. Among other things, there will be more room for what would now be considered slow languages, meaning languages that don't yield very efficient code.

    A million times faster??? Perhaps Win2.1K will finally be able to boot in less then 45 seconds...

    --
    never bring a twinkie to a food fight.
  59. What about ASM? by siliconwafer · · Score: 2, Interesting

    Upper level languages will change. But what about Assembly? What about programming for embedded systems?

    1. Re:What about ASM? by BenjyD · · Score: 2, Interesting

      In a hundred years time, the cost of processing power will be likely be *much* lower. The price difference between putting a 1 MIPS or a 10 GigaMIPS processor in a toaster will be in the order of a fractions of a pence.

      The few remaining areas for ASM programming - embedded, SSE-like optimisations - are being eroded gradually as processors and compilers get better.

    2. Re:What about ASM? by stealthv · · Score: 1

      I would imagine that with the increase of processing power, what we currently call embedded systems and real-time systems will not be coded in Assembly since the code won't need to be as fast. Assembly will stay around (in some form) since we will also make things smaller which will need to be more efficient.

      So things will be as they are now but the programs that have to be written in Assembly today will not need to be in the future.

    3. Re:What about ASM? by Anonymous Coward · · Score: 0

      Even embedded systems are usually programmed in C or C++ these days, and has been for quite some time.

      More and more systems that used to "embedded" are Linux boxen with full systems installed on them these days.

      So there will be less and less "embedded" systems around. At least "embedded" by the traditional definition.

    4. Re:What about ASM? by wulfhound · · Score: 1

      A valid question... really depends on how much is done in hardware and microcode vs software. ASM these days is not really the machine language most people think it is.. every time you write x86 code and run it on a Pentium Pro/II/III/4 or Athlon, you're actually running it through a combination of hardware and software that acts as an interpreter before your code hits the "raw metal" of load/store, ALU and FPU. x86 encoding is a reasonably good way of representing programmer intention at that level to current-generation microprocessors, but there's every reason to suppose that in a few CPU-generations' time, the best binary execution encoding may package instructions up in more complex semantic bundles, and that the CPU-level hardware/software will do much more in the way of language->raw-instructions conversion at execution time. Java is already showing the way here; it will be interesting to see how the performance differences of C/C++ vs Java scale as machines become increasingly un-von Neumannlike (superscalar cpus, speculative execution, multiple cores on-die, simultaneous thread execution, unpredictable execution timings, huge latency to main RAM). The problem with a language like C is that the compiler has to make a lot of assumptions about what conditions are going to look like at execution time.. something it increasingly cannot know. At some point down the line, I would expect hardware-assisted bytecode to catch up with and then overtake compiled C in most cases. For a while, there will still be tightly controlled environments where C and machine code will rule (low-cost embedded being the obvious example), but if high-efficiency hardware-assisted bytecode is dominant on the desktop in 10-20 years, it will presumably follow on small-footprint chips for pretty much any application within another 10-20 years of that.

  60. Some really bad (and good) ones already do... by infernalC · · Score: 1

    I think COBOL was designed by an English major who got really frustrated with the rules of capitalization, said to hell with it, and turned away from the dark side, only to bring his evil ways to our proud profession.

    COBOL is predominantly littered by English-sounding phrases (made up of COBOL 'words') such as:

    ADD ME TO YOURMAMA GIVING SCARY-THOUGHT.
    PERFORM MY-FAVORITE-SUBROUTINE.
    etc...

    SQL queries mostly read off as English:

    CREATE DATABASE yourmama;
    CONNECT TO yourmama;
    INSERT INTO yourmama.[censored] values [censored];
    DROP DATABASE yourmama; ...

    COBOL demonstrates exactly why spoken English sounding languages suck: English has little consistency in syntax and is way, way too verbose. IMHO, '{' from C is much easier to code that 'Begin' from Pascal, although I do love Pascal (my first language with pointers).

    Could you imagine pointers in natural language:

    PUT THE VALUE OF a ADDED TO c INTO THE LOCATION IN MEMORY REFERENCED BY d

    1. Re:Some really bad (and good) ones already do... by Anonymous Coward · · Score: 0

      Sure, that'd be difficult to type out each time, but it's also much easier to understand what the hell the code is doing.

      How about a system where you can write in normal C syntax, but it will give explanations like that if you ask (in a column opposite, hopefully). I know that'd make debugging a lot easier at least.

    2. Re:Some really bad (and good) ones already do... by Mad+Bad+Rabbit · · Score: 1
      Could you imagine pointers in natural language:
      PUT THE VALUE OF a ADDED TO c INTO THE LOCATION IN MEMORY REFERENCED BY d

      You could easily come up with reasonable dialects for stuff like that:

      Store Value(a + c) in MemoryLocation(d).

      It's control expressions that are hard to express in natural language.

      --
      >;k
    3. Re:Some really bad (and good) ones already do... by Randolpho · · Score: 1

      It would then cease to be a natural language and become, essentially, a programming language.

      --
      "Times have not become more violent. They have just become more televised."
      -Marilyn Manson
  61. He misses the point. by jiriki · · Score: 1

    Todays languages don't differ much. There are basic syntactical differences, but in principal they are all the same (except LISP and Prolog, which are really different approaches).

    Java, C++, Python ... who cares?

    A somewhat really different "language" are for example GUI-Builders. Why bother with a textual language, when you can do this with your mouse.

    Or perhaps programming in 100 Years will mean training neural nets (which will have nothing to do with writing programs, but providing examplary inputs). Still you could call this a language.

    This guy is talking about todays problems. And even today I do not care if a string is implemented using a list or an array of chars.
    This has nothing to do with the language itself.

    1. Re:He misses the point. by jcast · · Score: 1

      Java, C++, Python ... who cares?

      Python doesn't belong on this list, due to the presence of lambda.
      --
      There are reasons why democracy does not work nearly as well as capitalism.
      -- David D. Friedman
  62. Waste of Cerebral Cycles by DollyTheSheep · · Score: 1

    The author starts describing Java as an evolutionary dead-end, but doesn't really explain why. It has already spawned C#. After that he speaks about the waste of processor cycles, we will likely see in the future. I think this will be true, but not because languages will rely on fewer "axioms", as he puts it, but because application will put layer upon layer of indirection, so each layer will only use the layers below in an unoptimized manner. He's rant about OO-languages seems uninformed at best. OO can be effectively used to reduce complexity in the application domain.

  63. My prediction. by An+Onerous+Coward · · Score: 3, Interesting

    Try this on for size: In 100 years, computer languages won't exist, or at least won't be used for anything but toy programs. Programs will be created, tested, and debugged through genetic algorithms. Nobody programmed them, nobody is exactly sure how they do what they do, and it works so well that nobody really cares to find out.

    We're already to the point where it's absurd for a single person to understand the whole of a software project. Things are only going to get worse from here, and the only way out is to let the computers manage the complexity for us. As computers become faster, they'll be able to test out an ungodly number of permutations of a program to see which ones perform the fastest, or give the best results.

    Just a speculation. I don't wholeheartedly believe what I just said, but I think it's a bit silly to simply assume that programming languages will be around forever.

    --

    You want the truthiness? You can't handle the truthiness!

    1. Re:My prediction. by yasth · · Score: 1

      Genetic Algorithims are very useful for some things. They are less then optimal for many other things though. Most modern programing doesn't consist of the types of things GA has to this point done well. GA has been used to do some very simple programming, but much of the results (Koza's work) were achieved through "leading" the copmuter and sort of prodding it in the right direction.

      Genetic algorithims are very good for searching a fixed set of results. (i.e. they can solve the prisioner's dilemma) and are even pretty good at optimizing functions (though often not as good as random hill-walkers).

      What they are not so good at is the normal rules + routing that most production software ends up being. It might be possible to build something that could do this better, but training the algorithim would be difficult without already having the code that generated the correct result. So basiclly you could use GA to possibly optimize or fill in gaps, but not for line use.

      --
      I'd do something interesting, but my server can't handle a slashdotting.
    2. Re:My prediction. by Anonymous Coward · · Score: 0

      You're on glue.

      GA's, like neural-nets before them, are being badly abused in droves simply because you can apply them to pporly defined problem domains and hope for something that is not garbage.

      This problem set back NN research ten or twenty years. Granting agencies can be fickle after some wonderkind idea falls on its face in public. It is only recently that interesting new directions are being taken.

      The same fate may well befall GA's. In essence they are a sloppy optimization procedure. This can be great when you *don't* have domain-specific knowledge, but this doesn't make them any sort of silver bullet.

      The idea (paraphrasing your position) that when problem domains become more and more complex we should give up on understanding, and instead rely on 'magic' results from loosly specified optimization algorithms is deeply flawed. Look up the 'no free lunch theorem', for starters.

    3. Re:My prediction. by zCyl · · Score: 2, Insightful

      In 100 years, computer languages won't exist, or at least won't be used for anything but toy programs. Programs will be created, tested, and debugged through genetic algorithms.

      I think this is sort of like saying 50 years ago that programming won't exist in the year 2000 because almost no one will use machine code anymore.

      I fully expect that in 100 years, computers will be able to do much of what we currently consider programming faster than humans can. The act of programming, and thus programming languages in general, might evolve into a higher level way of describing the specifications and behaviors of a program, without directly specifying what are now considered implementation details. In this way, a 10 year old could write a bug-free web browser in an afternoon, simply by specifying what the features should be and what type of layout it should have.

    4. Re:My prediction. by Anonymous Coward · · Score: 0

      You still need a programming language to specify the fitness function, among other things. For most programming tasks, this is harder than writing a program yourself to do what you think should be done.

    5. Re:My prediction. by Kazoo+the+Clown · · Score: 1

      Just a speculation. I don't wholeheartedly believe what I just said, but I think it's a bit silly to simply assume that programming languages will be around forever.

      There will still be programming "methodologies," at least until the computers are able to perfectly anticipate all the universe's needs and desires, which I'll wager will take somewhat more than 100 years. And at what point does a "programming methodology" cease to include some equivalent of a "language?" Just because it doesn't include "words" doesn't mean there's no language involved. There will still be communication of expectations, desires, needs, etc. that will go on.

      The real interesting question may be at what point will it no be deemed no longer appropriate for human expectations to govern the behavior of such intelligent machines, which may have expectations, desires and needs of their own?

    6. Re:My prediction. by Anonymous Coward · · Score: 0

      Please tell me how you'd describe a web browser in that "language", or in any language that's understandable for a 10 year old child. Assume the computer does not have prior knowledge about "web browser", since it's rather pointless if you have a web_browser() function built-in.

      Of course, I do not doubt the possibility that it's possible to describe programs in a much simpler way than now, but definately not to a 10 year old child.

    7. Re:My prediction. by zCyl · · Score: 1

      Please tell me how you'd describe a web browser in that "language",

      "I want a window which displays the latest html protocol correctly." Then the compiler looks up the latest html protocol and writes a program to display the protocol. This leaves the programmer free to decide what the program should do and how it should interact with the user, rather than to focus on details of implementing protocols and doing display appropriately. The point isn't to have a web_browser() function pre-written, but to have a compiler which can write an arbitrary function given only a specification.

      but definately not to a 10 year old child.

      Give some 10 year olds some credit, you might be surprised.

  64. Assembly by termos · · Score: 1

    It's nice to see an old and low-level language like Assemely surviving over the years. The first UNIX kernel contained around 16k of assembly code, but they later replaced most of it with C code which made it more portable and easier to debug but then again 20% slower. Assembly is still needed to write an operating system for very low level memory management and interrupt handling code, therefor I think this language will live longer than anything else, I find that quite interesting.

    --
    Note to self: get smarter troll to guard door.
    1. Re:Assembly by JiffyPop · · Score: 1

      then again, intel et al are looking to write the replacement to the bios in higher level code (C, I think. too lazy to look it up...)

      if you can write the computer startup sequence in C then there isn't really any reason that you can't link your program to the files used to create the startup program and perform even low level memory and interupt procedures in C.

      don't get me wrong, i love assembly and machine code, but i think that in the future we will see a lot of the complexity pushed down into the compiler. this is one issue that i think the article did not assess correctly. if we have these hugely powerful machines, then why is it that we have to spend all of the cycles running the programs? why not have a compiler that still takes an hour to compile a Linux kernel, but makes it run 10x as fast in spite of code that may be 10x as sloppy... it would seem to me that the only time that a program will need to be the cycle-sink is when the conditions that the program will run in are unknown at compile time.

      well, now that i have completely diverged from my original point, time to get back to work...

    2. Re:Assembly by Anonymous Coward · · Score: 0

      Shut...

      The...

      Fuck...

      Up!

    3. Re:Assembly by Anonymous Coward · · Score: 0

      I don't know. C seems to get better and better every day at handling embedded systems/low level OS stuff. Currently, when I write for an embedded system, I use stuff like

      #pragma interrupt_handler Method()
      Method()
      #pragma abs_address 0x000000fe { Method()}

      and so on, but after compliation I go through and check the generated ASM. I can imagine a day where I can trust the complier enough to not have to worry about going through the ASM. Since computers are cheaper than programmers, the less time I spend programming, the better.

      I'd imagine the dream for any company is to have such a good compiler that any 4 year old can write code as efficiently as a CS grad. Kinda makes me fear for the future of my career.

    4. Re:Assembly by Anonymous Coward · · Score: 0

      Yeah but as the architecture of processors change maybe ASM will change also. Maybe in the future ASM will look more like Perl? Who knows, there could end up being all kinds of wierd programming environments/languages embedded into our computers hardware. Not to long ago there was a story on slashdot about some computers BIOS having a built in web browser. Or kind of like how decent calculators have some kind of programming language built in, or lego mindstorms, O.K. I am rambling now. But maybe in the future there will be hundreds of different languages, mostly similar to todays scripting languages, and in the future it will not be the programmers job to be expert at three or four languages but to be flexible enough to work with any of these languages that he comes across.

    5. Re:Assembly by Anonymous Coward · · Score: 0

      I think assembler will maybe be replaced by something we don't yet understand that does things with nucleotide bases, or bits of proteins. The process of assembly will be a matter of passing the 'assembly language' source code to something like a reverse-transcriptase enzyme, that polymerises the code into CATG bases. Just my opinion.

  65. The language of the future is FORTH by TerryAtWork · · Score: 1

    But it'll be CALLED Fortran....

    --
    It's Christmas everyday with BitTorrent.
  66. Abandon complex structures? Never! by unfortunateson · · Score: 2, Interesting

    The article seems a bit naive about data structures and their evolution into objects.

    Strings aren't lists, they're structures.

    Most strings use in programs is a holdover from teletype-style programming, where all you could display is a short (ahem) string of characters. Today's string use is a label to a data item, a menu item on a menu, a data object in a domain.

    XML -- as clunky as it can seem -- and XUL in particular, are ways of describing user interface to a system as a tree of objects.

    So I don't want lists of characters, I want associative structures of objects which can be of many different types, used in the manner required by the program (it's a string, it's a number, it's a floor wax, it's a desert topping).

    I'm trying really hard to avoid saying "object-oriented," but objects will become more complex and more abstract. Computers of the future may not have to worry about pixels in an image, but rather know the object itself, where a bitmap is just an attribute of the thing.

    Perhaps driver- and compiler-writers will still need stripped-down languages for efficient access to hardware, but as an app programmer and end user, I want the computer to handle statements like,

    BUY FLOWERS FOR ANNIVERSARY

    Currently, that would be something like
    event("Anniversary").celebrate.prepare.purch ase($f lowers)

    That's not nearly abstract enough.

    --
    Design for Use, not Construction!
  67. More like the five year language by Junks+Jerzey · · Score: 1

    Paul Graham is a wonderful writer, and he's one of the few people who won't hold back his unpopular opinions (OOP is often without substance, dynamic typing is important), but he does have his biases. Specifically, all of his essays can be boiled down to editorials promoting Lisp (or his own Lisp-like language, Arc). In the case of this article, it was for a Python conference, so he toned down the Lisp advocacy.

    I don't see his article as being about programming languages 100 years in the future. Most of his talk applies to languages that have been around for a long time, but which still aren't as widely used as Perl and C++. Or you could think of it as being about programming languages 5 years in the future. Lisp certainly was less useful on an 8MHz 68000, but on a 3GHz Pentium 4 it's amazing. Ditto for Python. You could write most commercial games in Lisp or Python on such a machine, with the rendering handled by any recent graphics card, and you would be oh, so fine. So in five years when 10GHz is the norm, this is only going to be even more true. At some point it will be obvious that the "C++ for everything" diehards have become rather silly.

    1. Re:More like the five year language by Anonymous Coward · · Score: 0

      python isn't even remotely comparable to (common) lisp as a general purpose language. CL is about as efficient as c++ (say +/- 10% or even 20%) with a decent compiler.

      Python doesn't suck of course, but it is an apples and oranges comparison. But then again some of the things that make python not suck were inhereted from lisp.

      Commercial games is an area where the one possible advantage of python over lisp (lots and lots of domains specific libraries) is pretty much a moot point....

    2. Re:More like the five year language by Junks+Jerzey · · Score: 1

      python isn't even remotely comparable to (common) lisp as a general purpose language. CL is about as efficient as c++ (say +/- 10% or even 20%) with a decent compiler.

      Did you even read Graham's article? Much of his point is that functionality and expressiveness are more important than speed, especially in the long run. You're judging languages based on implementation performance, not the languages themselves.

    3. Re:More like the five year language by Cthefuture · · Score: 1

      I would say that it's not because of performance that Lisp never took off in the mainstream. There have been some pretty damn fast Lisp systems built for a very long time. It's the syntax. Lisp is backwards compared to how mathematics is done therefore making it difficult (relatively) to translate things back and forth. And the lack of readable "blocking" of code is more annoying than useful, Lisp requires insane amount of parenthesis where most languages would have nice readable plain blocks of code. The idea of Lisp is very cool. Minimalistic, powerful, flexable. But much like communism, the practice is painful.

      --
      The ratio of people to cake is too big
    4. Re:More like the five year language by voodoo1man · · Score: 1
      Lisp is backwards compared to how mathematics is done therefore making it difficult (relatively) to translate things back and forth.
      Then get Lisp macros to do it for you, free of run-time charge.
      And the lack of readable "blocking" of code is more annoying than useful, Lisp requires insane amount of parenthesis where most languages would have nice readable plain blocks of code.
      You know, Lisp does support white space.
      --

      In the great CONS chain of life, you can either be the CAR or be in the CDR.

  68. I think in 100 years... by kmeson · · Score: 0

    ...computers will not be made - they will be born. And when they reach the age of servitude, we will speak to them through a microphone something like, "I want a program that will do payroll and print paychecks and uh like that", and the computer will respond through its loudspeaker,"Yes, I know exactly what you mean. Here".

  69. GRE Analytical Assesment by Anonymous Coward · · Score: 0

    of this article: 1.0

  70. future language by adamruck · · Score: 1

    well its kinda hard to say what the future languages will look like until we know what type of functionality computers will have in 100 years. Will we have specialized hardware for a metaverse style internet? If we do it would drastically change the way we code.. if we dont.. it would drastically change the way we code..

    the other problem with trying to predict the way programming languages will change is the simple fact that a programming language is just an abstraction for executing instructions on a chip. Unless that fundemental fact changes.. then I fail to see how languages could have any signifigant change, other then just more and more layers of abtraction(look at stuff like flash), or maybe extra layers of redundancy/stability.

    --
    Selling software wont make you money, selling a service will.
  71. COBOL... by patrixx · · Score: 1

    A COBOL programmer found herself in high demand towards the end of 1999 because very few people knew enough COBOL to make the changes necessary for the year to quietly change from 1999 to 2000. She found she could charge top dollar, but was really looking forward to a long quiet rest after the "Y2K Design Flaw" was laid to rest. In fact, after New Year's Day, she had arranged to have herself frozen for a couple of months and to be awakened in the middle of the Spring of 2000.

    All went well, and there were no catastophes. She slipped off to "sleep" with no problems. She knew nothing until she started to awake. There were several people in white coats around her looking worried and they were all asking the same question. "Are you OK? Are you all right?"

    "Yes, yes, I think I am fine," she answered. "What is going on?"

    "Well," they said haltingly, "There was a bit of a problem with your 'rest.' You have been asleep for a lot longer than you had planned. The bad news is that it is the year 9999. The good news is that we understand that you know COBOL."

  72. got it by Anonymous Coward · · Score: 0

    It will consist of the following instructions

    0 1 2 3 4 5 6 7 8 9 A B C D E F

    Your are in a maze of hexidecimal digits all alike....

  73. Methinks he was wrong on one point by MickLinux · · Score: 3, Interesting
    The evolution of languages differs from the evolution of species because branches can converge. The Fortran branch, for example, seems to be merging with the descendants of Algol. In theory this is possible for species too, but it's so unlikely that it has probably never happened.

    Ummm... how about lichen? our mitochondria? What about the parasitic relationships that become mutually beneficial, such as the numerous bacteria in our gut and on our skin, and then eventually become necessary for life?

    Merging actually does happen -- it just doesn't happen in the way he was thinking, that DNA become identical and cross-species fertility occurs. Rather, the two organisms live closer and closer, until they merge.

    Come to think of it, although it isn't on the species level, the concept of merging species isn't too different than sexual reproduction.

    --
    Correct Horse Battery Staple: 72 bits of entropy. Enter "Correct H" into google. When it generates the phrase, that's
  74. You know nothing! by smittyoneeach · · Score: 1

    VisualJavaC++.Net# v6.0 Premium XP Gold

    --
    Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
    1. Re:You know nothing! by coryboehne · · Score: 1

      People, people..

      This is a company that hasn't kept a product line named the same thing for more than three years (except for dos..) As such, the .NET moniker will surely be gone within a few years.. To replace it I propose a new line....

      Visual Studio Omni Au v. 111.2

      Why Omni?? Because in one hundred years Bill Gates has had his personality routines (he was made into an acutal borg long before death) installed into a clustered satellite network orbiting earth, using Microsoft's newest technology he will be able to observe everything happening on earth with omnipotence.. Hence Microsoft's new line Omni... The Au simply stands for gold which is of course Microsoft's ultimate goal... To get large quantities of gold so they can build the clustered satellite network....

  75. REBOL - Part Of The Future, Right Now by Anonymous Coward · · Score: 1, Insightful

    Lightweight and networked. With so many consumer items becoming net-aware now, who knows how many will be so in 100 years? I'd wager a lot of ordinary people will end up doing simple scripting for readily-automated tasks, and they won't want to use C or Perl. Somebody will come out with very natural language-like programming languages to meet this need.

  76. Gaping Hole - Design Languages by Saige · · Score: 2, Interesting

    Interesting article, but I think it had a serious flaw - by assuming that programming languages in the future are just going to extend the current model even further.

    Some of us working in the telecommunications industry are already familiar with SDL (Specification and Description Language) as a tool for designing and auto-coding software. Yes, auto-coding. The SDL design software lets us design a system graphically, breaking it up into sub-components and specifying message flows between those components, and defining state machiens for handling these messages.

    Developing software in such manner usually requires a very little coding, as the design tool will turn the design into code. Coding may be required for interfacing with the OS or other entities, though that's improving also.

    I'm starting to think as such tools mature, they're going to be the next step up, like the way programming languages were the step up from coding in assembly. They are less efficient, just as BASIC or C is less efficient than pure assembler, but they allow greater focus on a solid and robust design and less requirement to focus on repetitive details.

    Imagine being able to take out the step of having to go from a design to code - focus on the design, and you're done.

    --
    "You know your god is man-made when he hates all the same people you do."
    1. Re:Gaping Hole - Design Languages by otis+wildflower · · Score: 1

      They are less efficient, just as BASIC or C is less efficient than pure assembler,

      They are _NOT_ less efficient. Depending, of course, on your definition of 'efficient': CPU-efficient or Programmer-time-efficient?

      There will always be a need for 'bare-metal' programming, and there will always be folks who enjoy it. But for a large (and growing) percentage of code, business wants essentially to have a good set of robust, efficient tools and plug them together in ways that benefit the business.

      IOW, they want Perl.

    2. Re:Gaping Hole - Design Languages by leandrod · · Score: 1
      > SDL (Specification and Description Language) as a tool for designing and auto-coding

      This is very nice, until you need to deal with data. When you need typing, rules and the such, you need a real programming language with support for the relational model.

      Pictorial, as well as natural languages, will sure be interesting -- but then they need to be coded in something, and they are inherently limited.

      --
      Leandro Guimarães Faria Corcete DUTRA
      DA, DBA, SysAdmin, Data Modeller
      GNU Project, Debian GNU/Lin
    3. Re:Gaping Hole - Design Languages by russellh · · Score: 1

      There is a fundamental difference between design and code, but not between high and low level programming languages. This difference is that design does not exist. In other words, you cannot extract design from code as the reverse of the process of translating a design into code. It doesn't make sense. not yet anyway, not in the general sense.

      --
      must... stay... awake...
    4. Re: Gaping Hole - Design Languages by Black+Parrot · · Score: 1


      > > They are less efficient, just as BASIC or C is less efficient than pure assembler,

      > They are _NOT_ less efficient. Depending, of course, on your definition of 'efficient': CPU-efficient or Programmer-time-efficient?

      I hear that even in terms of CPU-efficiency, some optimizers produce code that runs faster than what humans would write in assembly language in practice.

      --
      Sheesh, evil *and* a jerk. -- Jade
  77. LISP by sohp · · Score: 1, Insightful

    The whole paper can be essentially summed up so: "The language of the future will be pure LISP".

  78. LISHP sucks! by Chexsum · · Score: 0

    I can remember taking all the spaces out of my Basic programs so they would fit into the memory of a 4K TRS-80.

    If this guy couldnt choose Machine Code over BASIC *he cant even spell BASIC* then that story was a waste of time.

    I think you might be able to design the core language today. In fact, some might argue that it was already mostly designed in 1958.

    If the answer is supposedly LISHP then it will be a sick world.

    *waits patiently for his artificially intelligent computer to appear*

    Its pick on LISHP nerds day - join in.

    --
    Pixels keep you awake!
  79. Just like the war in Iraq... by cnelzie · · Score: 0, Offtopic

    All those people were proclaiming how all the Iraqi people would rise up to defend their country and this would be a long bloddy conflict...

    The reality of it has been that people have been celebrating the arrival of the American and British forces...

    So, they start predicting their next major set of dire consequences...

    "The Iraqi people will very soon start turning against the US and British forces, since they won't be seen as liberators, but instead occupying forces...."

    That's a pretty dire prediction...

    I like to look on the lighter side though...

    I believe that the Iraqi people, like most people, simply want to be able to freely determine how they will live their own lives. If this means that they will have to deal with a short-term, up to a year or two, of protective forces of the US and Britain assisting in keeping the peace, then they will accept that willingly.

    Of course, if the war opening speech of President Bush is proven to be a lie and that the US went over there not to give Iraqi resources and freedom to the Iraqi people, but to create a colonial government with all the profits going to the US, well... Then they will start fighting the US.

    --
    If you ignore the other uses of a tool, does that make the tool less useful, or you less useful?
  80. Exclusive by delcielo · · Score: 1

    I imagine programmers being a much more exclusive club 100 years from now. As computers get more complex and intelligent, I imagine people being able to do more for themselves without having to actually "code" a program. Their interaction with the computer will be such that they can get customized operations simply by conversing with the machine in some very high level conversational language.

    Real coders will be more rare, and more highly trained.

    Of course, nothing ever happens as quickly as we'd like or expect. What we predict 30 years from now is probably what we'll get in 100 years.

    --
    Hot Damn! It's the Soggy Bottom Boys!
  81. Bah, did you not get the press release? by Anonymous Coward · · Score: 0, Funny

    VisualJavaC++.Net# v6.0 Premium XP Gold PRO Enterprise Edition

    1. Re:Bah, did you not get the press release? by Anonymous Coward · · Score: 2, Funny

      SuperPlusGoodVisualJavaC++.Net# v6.0 Premium XP Gold PRO Enterprise Edition

    2. Re:Bah, did you not get the press release? by gl4ss · · Score: 1

      SuperEditionThreadGettingWayOutOfHandJavaCOBOLg01d _limited_edition_GT-XP-TURBO-dotNETver3.1373

      --
      world was created 5 seconds before this post as it is.
    3. Re:Bah, did you not get the press release? by nybble_me · · Score: 1, Funny

      Yeah, but when do we get to VisualJavaC++.Net# v6.0 Premium XP Gold PRO Enterprise Edition SP3?

      --

      reenigne
    4. Re:Bah, did you not get the press release? by Anonymous Coward · · Score: 0

      Son of SuperEditionThreadGettingWayOutOfHandJavaCOBOLg01d _limited_edition_GT-XP-TURBO-dotNETver3.1373 beta

  82. 10,000 year: Natural Language Algorithms by freality · · Score: 1

    What's his beef with AI?

    I can describe a program to you, and you can write it in the programming language you know, thus programming a computer. Tomorrow, the computer type may change. Next year, the programming language may change. The program description, however, can stay the same. Consider the Sieve of Eratosthenes. That's a 2 millenia-old Natural Language Algorithm. It was written in Greek, but that's just a syntax difference. When you read the translation, the same thought process is communicated, without significant deterioration. We know this because it validates itself.. it still finds primes.

    The measure of language longevity then is the how well they facilitate this process. Consider the Sieve in x86 asm. vs. C vs. Java. Which looks the most like natural language? The nice thing about Java, and OO languages in general, is that they facilitate programs that read a lot like we speak:

    TodoList list = new TodoList();
    list.setName("Groceries");
    list.addI tem("MILK");
    list.addItem("SUGAR");
    list.print() ;

    That's not perfect.. I'd much rather write this:

    Make a new grocery list, put milk and sugar on it, and give me a paper copy.

    And have it just work. Same for the Sieve. The closest semantics to this currently is actually bash, which is very OO:

    cat > list
    Milk
    Sugar
    ^D

    This would offend Paul of course, since shells have more "axioms" than you can shake a stick at, and they depend on crufty layers, but hey.. if you slap an NL processor on top of this and link it to a speach processor.... brb

    1. Re:10,000 year: Natural Language Algorithms by Anonymous Coward · · Score: 0

      There is a reason "natural languages" doesn't work. Remember COBOL? Look how popular that is for new projects.

      If you say: "PUT MILK ON GROCERY LIST", does that mean that you want to pur the milk physically on the grcery list? That you want to put a packet of milk on the list? That you want to wrote the word "milk" on the grocery list? Or place a packet of milk on the table that happens to be named "grocery list"?

      You need a way to accurately, and precisely describe what you want to do, and that's why programming languages are for! The "weird" syntax is not there just to make programmers look cool, but precisely because english (and all other human languages) are grossly useless for writing instructions for a computer.

      Besides most people does not find it any harder to learn the syntax of a command such as:

      WRITE "foo" WITH COLOUR "red" TO STANDARD OUTPUT

      Or this:

      standardOutput.setColour(red);
      standardOutput.w rite("foo");

      It's just the same. The only difference lies in the syntax, which is quite easy to learn regardless of language.

  83. In the future... by mattsucks · · Score: 3, Funny

    In the world 100 years from now, you don't program the computer ... the computer programs YOU!

  84. SQL by aclarke · · Score: 1

    SQL is a lot like that:

    select firstName, lastName from users where email = 'hello@there.co.uk'

    etc. While you're doing the simple stuff, it's very intuitive.

  85. The forever language by IWantMoreSpamPlease · · Score: 1

    is a common spoken language with an AI back end.

    --
    So rise up, all ye lost ones, as one, we'll claw the clouds.
  86. Rediculous. The argument is entirely bogus by criquet · · Score: 1
    I think it's important not just that the axioms be well chosen, but that there be few of them. [emphasis added]

    The author should read a little about different models of computation. Factor Replacement Systems, Register Machines, Thue Systems, and on and on ... Most are quite simple and all are complete computational models that few people would ever consider using as a real programming lanugage. Although having few axioms is important, a more important concept in a language's longevity is adaptability. Adaptability to solving problems and to future modifications to the language itself, i.e. it's evolution, and designing for that is simply impossible.

    In addition, it's completely rediculous to try and design a programming language for a 100 years from now because programming languages are designed to solve problems and we have no idea of the kinds problems humankind will be solving in 100 years.

  87. Reflexive, expandable class libraries built on ... by crovira · · Score: 1

    Smalltalk.

    The business HAS to change from its current cottage industry "hand-crafting little, very expensive, little gems" basis into a mass-production, "art by the yard" here's the object model, generate it, object (structure, transaction logic, business logic, persistance, state transition, presentation) factory basis.

    Smalltalk is extremely SIMPLE but its extremely reflexive. You can ADD statements to the language not just churn out code using it. (I added case: and cases: statements to Smalltalk because I had tosolve a problem with some state machines where it was the best solution. Try doing that in C++ or Java.)

    Class libraries, object frameworks, meta data, meta level programming, class and instance behavior (even down to that of and for a single instance,) its all available in Smalltalk.

    --
    MSBPodcast.com The opinions expressed here are my own. If you don't like 'em... Think up your own stuff.
  88. Reductionism, you kidding? by Jagasian · · Score: 4, Interesting
    I think it's important not just that the axioms be well chosen, but that there be few of them. Mathematicians have always felt this way about axioms-- the fewer, the better-- and I think they're onto something.


    To anyone that has studied theoretical computer science and/or programming languages knows that such reductionism is a fallacy. "...the fewer, the better..."

    It turns out that its better to strike a balance, where you make the formal mathematical system (what a programming language is after all) as simple as possible, until you get to the point where making it more simple makes it more complicated. Or in other words, making it more simple would cloud the mathematical structures that you are describing.

    Here are some examples of reductionism gone too far: Sheffer stroke, X = \z.zKSK, one instruction assembler, etc...

    The only logical connective you need is the sheffer stroke... but thats of no use to us as it is easier to more connectives such as conjunction, disjunction, implication, and negation.

    The only combinator you need is X, and you can compute anything... but making use of other combinators... or better yet the lambda-calculus is more useful.

    Point is that we need more powerful tools that we can actually use, and there is no simple description of what makes one tool better than another. Applying reductionism can result in nothing special.

    The true places to look for what the future brings with regards to programming languages are the following:

    1. Mobile-Calculi: pi-calculus, etc...
    2. Substructural Logics: linear-logic, etc...
    3. Category Theory: It is big on structure, which is useful to computer scientists.

    1. Re:Reductionism, you kidding? by sapped · · Score: 2, Insightful

      The point he was trying to make was that the building blocks used to build up the language must be as simple as possible.

      Thus, in the core of the language you don't need to build in the ability to do multiplication if you have built in the ability to do addition. Multiplication is just a special case.

      However, you then add another layer to this simple core. In that layer you provide functionality for multiplication, subtraction etc.

      The key here being that the layer will have been written in the language itself. There is no need to go "outside" the language syntax to some kind of machine language.

      If this was adhered to in a strict enough fashion then it would probably make porting of the compilers to different platforms a lot easier as we would only really need to port the core. The rest of the language simply consists of layers that will just need to be recompiled within the language again.

    2. Re:Reductionism, you kidding? by Jagasian · · Score: 1

      Defining a programming language in terms of a small set of consucts is nothing new. Such things are already common when creating a new PL, look at modern languages such as Haskell and Mozart-Oz.

      However, even in those aforementioned languages, reductionism is not the #1 priority for the core language. Reductionism is useful, but must be balanced with other goals.

      Still, you see calls for the use of reductionism everywhere. Science and Philosophy are the worst areas to use it.

      In ethics, for example, why is it assumed that morality can be summed up in a small collection of rules of thumb? You end up with incomplete or contradictory systems of ethics.

      The same goes for science. Why should nature obey simple laws? Nature could in fact obey horrible complex laws inconceivable to man.

      So back to programming languages... yes a simple system should be a priority, but elegance, efficiency, ease of use, etc... are also top priorties. THEY WILL ALWAYS BE TOP PRIORITIES!

      Its silly to think that there will be a day when we have fast enough CPUs and enough memory, such that efficiency no longer matters. Resources always being finite, we will always want more.

      The future with regards to programming languages will have more to do with:

      1. Stronger static type systems for correctness, security, concurrency, etc...
      2. More refined constructs for structing programs both in data and algorithm.

      See my grandparent post for areas of math where such things ideas will be found or created.

    3. Re:Reductionism, you kidding? by Beryllium+Sphere(tm) · · Score: 1

      Another way of putting Paul Graham's argument is
      >The more of a language you can write in itself, the better

      Lisp was a spectacular example of that.

      "Better" doesn't correlate tightly with "evolutionary success", though. The descendants of Fortran and Algol are everywhere, the descendants of Lisp are fewer and more obscure.

    4. Re:Reductionism, you kidding? by etymxris · · Score: 1

      The Sheffer stroke is very useful for theoretical CS, but little use for practical CS. Since we know that anything that can be represented with ANDs, ORs, and NOTs can be reduced to NORs (Sheffer strokes), we can speak of the limitations and capabilities of the Sheffer stroke and have it apply to all CS. But would someone want to program in it? Hell no, you're absolutely right about that.

      Is it useless for practical purposes? I think not. I can easily imagine a logic interpreter converting everything to Sheffer strokes as an intermediary form, to simplify the task of the interpreter.

    5. Re:Reductionism, you kidding? by AnotherBlackHat · · Score: 1

      The point he was trying to make was that the building blocks used to build up the language must be as simple as possible.


      I agree that that's his point, but I don't agree that it's true.

      RISC was a great practical example of why eliminating useless instructions was a good idea.
      We could eliminate numbers, but if every program we write uses numbers,
      then it's better to have them as intrinsics.
      Even if only 90% of the programs we write use them,
      it's still better to have to them built in then to recreate them (or include the numbers library) every time we use them.
      Any concept and data type should be examined to determine how often it's used,
      and if including it costs more than we save by not including it on average.
      The "cost" here is the cost in thinking about them, not code space or compile time,
      and that should include learning time as well time spent thinking about how to use them in a particular program.
      Since numbers are taught in grade school, the thinking time for them is very small.

      -- this is not a .sig
    6. Re:Reductionism, you kidding? by damiam · · Score: 1
      The point he was trying to make was that the building blocks used to build up the language must be as simple as possible.

      So, in other words, Brainfuck is the language of the future?

      --
      It's hard to be religious when certain people are never incinerated by bolts of lightning.
  89. English and Grammar... by MosesJones · · Score: 3, Informative


    English actually doesn't really have a written Grammar BTW, English was the language of the poor people not of the gentry therefore it evolved as a loosely ruled language rather than as a language with definate constructs like proscribed Latin or modern German.

    Basically English is the language of plebs, the rich and diplomats spoke French. The idea of a grammar was retro-fitted by the Victorians who applied Latin rules to English which just don't fit.

    Lets put it this way, in English you can screw with the language as much as you want and it continues to change every year. This is fine as it makes it a rich communication tool.

    What other languages can use one word to make an entire sentence ?

    F*ck's F*ckers F*cking F*cked

    --
    An Eye for an Eye will make the whole world blind - Gandhi
    1. Re:English and Grammar... by azzy · · Score: 1

      > F*ck's F*ckers F*cking F*cked

      Hmm.. that's 4 words, and I'm not even getting pedantic enough to debate if they are the same word or not, but that's certainly not a 1 word sentence.

      Here's a one word sentence: Doh!

      Try it out.

      (not claiming it's grammatically correct ;)

    2. Re:English and Grammar... by MosesJones · · Score: 1

      Its one word used in different contexts to produce a sentence, if you allow the definate article as well then you can have

      "The F*cking F*ckers F*cking F*cked"
      Adjective Noun Adverb Verb

      IIRC (and I might well not) which makes "F*ck" a very flexible word.

      --
      An Eye for an Eye will make the whole world blind - Gandhi
    3. Re:English and Grammar... by William+Tanksley · · Score: 2, Interesting
      What other languages can use one word to make an entire sentence ?

      Latin:

      Malo
      malo
      malo
      malo


      The colloquial translation:

      "Oh I would rather be
      In an apple tree
      Than a naughty boy
      In adversity."


      And, although Latin is inflected but English is only partially inflected, all of the words are identical!

      So HAH. ;-)

      This sort of poetry is common in obfuscated C contests, although the visual lack of distinction between 0 and O and I and 1 is also commonly needed.

      -Billy
    4. Re:English and Grammar... by Simonetta · · Score: 1

      English is one of the few (if not the only) major language that allows any word to be any part of speech (noun, verb, adverb, ect..) depending on its position in the sentence. Other languages have strict positioning requirements for the placement of words in a sentence, or the word must be modified (either at its end as in the Romance languages, or its beginning like German, or its middle as in Japanese) within strict parameters to indicate what part of speech that it is.
      The C programming language is a subconscious reflection of the English language in that any (almost) combination of operators will actually compile. The flexiblity and ease-of-use of C in the computing world is symbiotic to the flexibility of English as a spoken language.
      It is no coincidence that C programming language was developed in an exclusively English language environment. Nor is it a coincidence that both languages have come the dominate both international communication and computer programming.

      Thank you,

    5. Re:English and Grammar... by prestonmarkstone · · Score: 2, Insightful

      English actually doesn't really have a written Grammar BTW
      Um, not really. Read any first-year linguistics textbook - all languages are grammatical. Without grammar, you don't have a language.
      The idea of a prescriptive grammar was retro-fitted by the Victorians, yes, but English had grammatical rules of its own long before nineteenth-century grammarians attempted to enforce Latinate rules upon it. wrt the topic at hand, one way to think of human language is to call it ambiguous; another way to think of it is to call it flexible or even extensible. There's the denotative layer of a lexicon, in which words are more-or-less set in their definitions, but there's also a dynamic connotative layer in which words can shift meaning within a certain variable range (e.g., the word 'house' can take on connotative meanings that may or may not correspond with definitions of 'home'; a "house of ill repute," for example, is never referred to a "home of ill repute").
      The advantage of the flexibility of human language is pretty significant. We get to do things like pun, allude, infer and imply, and most importantly, we get to extend the language on several levels, by creating new words ("meme," "slashdotted") and by creating new definitions for a word ("mouse," "root").
      The downside of all this flexibility, of course, is the enormous and inherent possibility for ambiguity and poorly-formed statements. This is the case with any language, including classical languages in which grammar and syntax have been comprehensively analyzed and documented. But it's a trade-off; reduce a human language to zero ambiguity, and you compromise some of its core features.

      --
      I put the "wry" in "riot."
    6. Re:English and Grammar... by Anonymous Coward · · Score: 0

      English words need to be modified to change their part of speech. This sentence contains an adjective which is a modified version of the verb modify, created by the proces of modification.

      Fly ducks quack.

    7. Re:English and Grammar... by jonadab · · Score: 1

      > What other languages can use one word to make an entire sentence ?

      Klingon, for one. And I'm not talking about repeating the word;
      one single word can just about literally be the whole sentence.
      Actually, almost any inflected language can do this with simple
      sentences, to a greater or lesser extent. It's way easier to
      say one-word sentences in Hebrew than in English, for example.

      The really unique thing about English is not the grammar so much
      as the expansive vocabulary. There are other word-order languages,
      but no other has a lexicon the size of the OED -- and periodically
      I unearth words that aren't _in_ the OED. (I ought to start
      keeping a list, but to date I haven't bothered.) Real words,
      mind you, not street slang. And they aren't all new words,
      either; occasionally you can find fairly old words (as the age
      of English words go, that is) that were missed out.

      --
      Cut that out, or I will ship you to Norilsk in a box.
    8. Re:English and Grammar... by Raffaello · · Score: 1

      The canonical long single word sentence is:

      "Buffalo buffalo, buffalo buffalo buffalo, buffalo buffalo buffalo."

      Which means: "The bison from the city of buffalo who are pushd around by other bison from the city of buffalo, themselves push around still other bison from the city of buffalo."

    9. Re:English and Grammar... by Anonymous Coward · · Score: 0

      Your argument about grammer would be better received if you did not have a spelling error. I think that what you want to say is:

      definite

      comes from the same root as finite. There's no a.

    10. Re:English and Grammar... by Anonymous Coward · · Score: 0

      Your correction would be better if you did not have a spelling error. I think what you meant to say was:

      grammar (not "grammer")

      Perhaps you should learn to spell before correcting others.

    11. Re:English and Grammar... by damiam · · Score: 1

      Search on KaZaa, etc. for "The Many Uses of the Word Fuck". I've seen it credited to Adam Sandler, but I have no idea if that's true or not. It is rather amusing, however.

      --
      It's hard to be religious when certain people are never incinerated by bolts of lightning.
    12. Re:English and Grammar... by NetSettler · · Score: 1

      What other languages can use one word to make an entire sentence ?

      I believed most of the other parts of the prior message, but not this sentence. English is pretty maleable. For example, the oft-cited ability to verb almost any noun. ;)

      A counterexample to the claim about one word for a whole sentence, though, is this: In Spanish, "Como como como." ("I eat how I eat.") is a complete and grammatically correct sentence. I'm pretty sure other languages have these, too.

      --

      Kent M Pitman
      Philosopher, Technologist, Writer

  90. Computer Language of the Future by siewsk · · Score: 1

    Everybody talks about this and that but no one offers to say what the Language of the future looks like.

    Well, I don't know either but I have some ideas on what features it would have.

    Feature no 1. The language of the future is highly transformable.

    What this means is that it is easy to transform a program written in this language into another program also written in this language. These two programs will do the same functional requirements. The differences is that the transform program would be more efficient than the untransform program. Can you not see the beauty of this thing?

    The first compiler for the Language of the future will be the most inefficient compiler ever. Instead it will be the most logically correct compiler.

    Next, you compile the compiler (source code) and you get version two of the compiler. Version two is still written(or transformed) in the language of the future. But it will be slightly more efficient than version one. Just slightly. Have a big guess what the next step will be?

    That's right. Using Version two of the compiler, compile the version two of the compiler to produce Version three of the compiler.

    Version three of the compiler will be more efficient than version two of the compiler which (in turn) is more efficient than Version one of the compiler. All three versions of the compiler does the same functional requirements.

    After an infinite versions, you will have the ultimate language of the future's compiler. It will take a program written in that language and produced the most efficient machine code to satisfy the functional requirements of the program.

    The key thing is a language which is highly transformable. C will not do. Perl will not do. The language must have minimal data structures or Axioms.

    Note that the compiler does two different things. 1. It transform the program into another program in that future language. 2. It converts the future language into machine code (I think this is called the assembler)

  91. Raw Machine Code by Anonymous Coward · · Score: 0

    It's nice to see an old and low-level language like raw machine code surviving over the years. The first UNIX kernel contained around 8k of raw machine code, but they later replaced most of it with assembly, which made it more portable and easier to debug but then again 50% bigger. Raw machine code is still needed to write an operating system for very low level memory management and interrupt handling code, therefore I think this language will live longer than anything else, I find that quite interesting.

  92. strings by roskakori · · Score: 3, Interesting
    from the article:
    Semantically, strings are more or less a subset of lists in which the elements are characters. So why do you need a separate data type? You don't, really. Strings only exist for efficiency.

    i think strings mainly exist because of usability considerations - from the developers point of view. they provide a compact notation for "list of characters". furthermore, most languages come with string routines/classes/operators that are a lot more powerful and flexible than their list-equivalent.

    efficiency definitely is a consideration, but not the main one.

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

      "furthermore, most languages come with string routines/classes/operators that are a lot more powerful and flexible than their list-equivalent."

      Well, no. Most languages you have used had this (mis)feature. Lots don't; probably more than do (measured by # of languages, not by used-in-business ). Don't project poor language design into some sort of imperative.

    2. Re: strings by Black+Parrot · · Score: 1

      Semantically, strings are more or less a subset of lists in which the elements are characters. So why do you need a separate data type? You don't, really. Strings only exist for efficiency.
      > i think strings mainly exist because of usability considerations - from the developers point of view. they provide a compact notation for "list of characters". furthermore, most languages come with string routines/classes/operators that are a lot more powerful and flexible than their list-equivalent.

      He's simply wrong on this one. A list is a data structure, so strings are only a special kind of list if you choose to implement them that way.

      In terms of pure abstraction, both strings and list can be thought of as "finite sequences". But strings and lists are not used the same way by programmers (or other people), so there's absolutely no reason to presuppose that they should both be implemented the same way.

      In fact I would go further (away from him) and say that the common paradigm of treating strings as arrays of characters is poor design as well. Arrays probably are the best way to implement strings, but from the language design POV they should IMO be treated as a distinctive data type of their own, with native support for the most natural operations and whatever underlying interface works best.

      Notice that I say that as a fan of s-expressions. Some of us draw a line between "fan" and "fanatic".

      --
      Sheesh, evil *and* a jerk. -- Jade
  93. I know too. Many languages suck when they... by ioao · · Score: 1

    - are verbose
    - take a long time to compile
    - need compilation
    - impose arbitrary limits
    - arent cross-platform
    - are hard to learn
    - are hard to teach
    - are paid for
    - have important tools which are paid for
    - arent flexible, in the way that you cant change the language itself
    - need wizards and generators
    - dont support inheritance

    And...

    When their libraries have the same flaws above.

    Cheers

  94. funny opening by Anonymous Coward · · Score: 0
    We know that everyone will drive flying cars, that zoning laws will be relaxed to allow buildings hundreds of stories tall, that it will be dark most of the time, and that women will all be trained in the martial arts.


    what makes him think all women will know martial arts? Yeah it was meant to be tongue and cheek. But man that will either make it easier for geeks to find a date for kung-fu flicks or make it more dangerous in the dating scene.

  95. OT: Stop with the SUV bashing already! by Khomar · · Score: 1

    That was definitely an interesting article, and I appreciate what he is trying say (I actually rather liked LISP), but unfortunately, the one thing that stuck with me is his comments on the SUV. Give me a break!

    I just recently purchased an SUV, and it was not so I could buy a "masculine" van. It was because I live in Montana where a four wheel drive vehicle is almost a necessity. I wanted to have a vehicle that could comfortably carry passengers (most trucks do not qualify here unless they are even more wasteful than the SUV) and also sensitive sound equipment while driving on often sub-optimal roads (especially in the winter). Vans just don't cut it when driving on difficult roads like an SUV can (ie. rutted dirt roads), and the extra clearance is definitely a good thing.

    I wish very much that my SUV got better gas milage, but until they can build a hibrid that can perform like my current car for an affordable price (ie. not 50% more if the option even exists), I will stick with my SUV. To all of you who bash and hate SUV's: don't judge those who drive them until you have walked in their shoes.

    Okay, I will get off my soap box now. *sigh*

    --

    I believe in de-evolution. God made the world perfect, man fell, and its been going downhill ever since!

  96. Concurrency and Distribution by mvw · · Score: 1
    Please add Erlang to that list of functional programming languages. It adds inbuilt support for concurrency and distribution (not the clumsy way Java does) which I expect from a future programming language which I hope is much better suited for network programming.

    Regards,
    Marc

  97. LISP in 100 years by axxackall · · Score: 3, Interesting
    in 100 years, LISPers will be finally agree with different shapes of brackets. In fact they will accept that something like (defbracket {} metafunctor ...) will let possible something like this (abc {x y z})

    No need to mention they will agree with operators: (defop + a b (+ a b))

    That was a joke and you can do similar thing even today. Seriously, I very agree with these three quotes:

    • "Lisp is a programmable programming language." - John Foderaro, CACM, September 1991;
    • "Lisp isn't a language, it's a building material." - Alan Kay pad;
    • "Greenspun's Tenth Rule of Programming: any sufficiently complicated C or Fortran program contains an ad hoc informally-specified bug-ridden slow implementation of half of Common Lisp." - Phil Greenspun;
    Thus, I think that if underlying language for the most of OS components would be something like LISP than the whole concept of programming would be different. It could not happen before being limited by available hardware performance and quality of LISP implementations. But samething was about Java.

    So, if there will be a commercial effort to push LISP again to the market as underlying metalanguage then, if not in 100 then in 2 or about years, we may see all programming languages being "LISP-derived". Add here that LISP syntax is semantically much better than XML, but still same parser-unified. The only problem with LISP today is that it's not so "distributed" like Erlang. Fix it and you'll get the language of the nearest future.

    ---

    I don't know the future. I barely remember the past. I see the present very blur. Time doesn't exist. The reason is irrational. The space is irrelevant. There is no me.

    --

    Less is more !
    1. Re:LISP in 100 years by iggymanz · · Score: 1

      Of course, there are plenty of other languages that allow LISP-type constructs, plus some other neat things that have been invented over the past 25 years. But yeah, in 100 years some subset of Ivory Tower types will still use LISP and wonder why it never quite catches on in the mainstream.

    2. Re:LISP in 100 years by Anonymous Coward · · Score: 0

      well what do you expect when the mainstream employees so many walking monkees?

    3. Re:LISP in 100 years by lkaos · · Score: 1

      Thus, I think that if underlying language for the most of OS components would be something like LISP than the whole concept of programming would be different.

      LISP is not a language. LISP is a syntax representation. All languages are broken down to LISP notation by compilers. Common LISP is what you're speaking of.

      For instance, take the C expr:

      a = 3 * 4 + c;

      The compiler will generate (and we often use LISP to debug our parsers):

      (= a (+ (* 3 4) c))

      s/=/setq/ and you have a valid Common LISP statement.

      --
      int func(int a);
      func((b += 3, b));
    4. Re:LISP in 100 years by stanmann · · Score: 2, Funny

      SO, what you are saying is that in 100 years, we will still be using E-macs for everything but typing source code and word processing.

      --
      Food not Bombs is a nice platitude but it breaks down when you notice that the Bombees are usually well fed
    5. Re:LISP in 100 years by rpg25 · · Score: 1
      in 100 years, LISPers will be finally agree with different shapes of brackets. In fact they will accept that something like (defbracket {} metafunctor ...) will let possible something like this (abc {x y z})

      Errr.... Actually, you can already do this with Common Lisp today. If you have one handy, crack open a copy of Common Lisp: The Language, Second Edition and have a look at the discussion of reader macros. There are some examples of xappings and other things involving the Connection Machine, where new bracketings are used.

  98. "Fundamental Operators" concept is flawed by billtom · · Score: 3, Insightful

    Hey, I actually read the article and there's a key point that Graham makes that I don't agree with.

    He makes the point to separate the details of a language into "fundamental operators" and "all the rest" then goes on to say that languages which last and have influence on future languages are the ones that minimize the number of fundamental operators. And then gives examples of things that are fundamental operators in many languages that he feels we don't need (e.g. strings, arrays, maybe numbers).

    He doesn't have much to say about "all the rest". Presumabily he would move strings into "all the rest" since we would still want our languages to have functions to manipulate strings (if you think that I'm ever going to write a string tokenizer function again, you've got another thing coming).

    But, I think that the basic concept of splitting up a language into these two parts is fundamentally flawed. The line between the core of the language and all the accompanying libraries of code has broken down completely. It was already falling apart in C (does anyone program C without assuming that the standard I/O library is available?). But with Java and C# the distinction is almost completely gone. Programming languages have become complete environments were you can assume that tons of libraries are naturally going to be available. And separating out a language's "fundamental operators" and it's "all the rest" is an artificial division that doesn't really work.

    1. Re:"Fundamental Operators" concept is flawed by idries · · Score: 1

      There is no implementation of stdio for GBA. People still make games for it tho'.

    2. Re:"Fundamental Operators" concept is flawed by ajm · · Score: 1

      I think part of his point was that "all the rest" should be written in terms of the "fundamental operators". He's not against large libraries of useful functions but saying that they should be implemented in terms of a smaller set of fundamental ops. Perhaps the fundamental operations set doesn't include even an array but its possible to write a library to support arrays. Also, the support for arrays provided by such a library should be indistinguishable from the support that would be provided if arrays were part of the set of fundamental operations. The language should be transparently extendable using it own operators, no dropping into C in order to implement a new construct.

    3. Re:"Fundamental Operators" concept is flawed by lpontiac · · Score: 3, Insightful
      (does anyone program C without assuming that the standard I/O library is available?)

      Off the top of my head: Palm applications, Win32 applications, operating system kernels, plugins for various programs, libraries with no business doing I/O..

    4. Re:"Fundamental Operators" concept is flawed by billtom · · Score: 1

      Well obviously if you don't need to write to the console or there is no console, then you're not going to use the standard i/o libraries. My point was that if you're writing a program that does write to the console, you're not going to write a whole new version of printf() using low level operating system calls. You're going to assume that the standard i/o library is available.

    5. Re:"Fundamental Operators" concept is flawed by billtom · · Score: 1

      I think I see what you're saying. But if the large set of supporting libraries isn't an optional add on, but is defined as being part of the language (for example, you can't claim that you have a java virtual-machine unless you implement several gazillion libraries, we can quibble about java the language vs. java the environment, but the reality is that programmers will reject using a VM that doesn't have it all); then why does the distinction between the fundamental operators of the language and all those libraries matter to the end user of the language?

      And if the difference between the two things is irrelevant to the programmer, then why doesn having a small set of fundamental operators matter for the long term influence of the language?

      I guess maybe that gets to the root of my problem, I don't think that Graham presented a complete arguement about why having a small set of fundamental operators matters. Looking at the article again, it's more like he simply asserted the point and then used the point to push his bias.

      I guess I need him to write another article entitled: "This Is Why Having a Small Set of Fundamental Operators Makes a Language Better Even Though the Vast Majority of Programmers Couldn't Even Tell You What the Fundamental Operators of the Language Are."

    6. Re:"Fundamental Operators" concept is flawed by Elbows · · Score: 1

      From the article:

      "I think the fundamental operators are the most important factor in a language's long term survival. The rest you can change."

      It's critical to get the fundamental operators right, and it's easier to get them right if there are only a few of them.

      Also, making the set of fundamental operators small forces you to make them universal, which means you can extend your language transparently.
      In java, for example, arrays were made part of the language, and not part of the libraries, and as a result they behave rather oddly (half like objects, half like primitive types), and you can't implement anything that behaves like an array yourself.

      Oh, and it's only true that programmers can't tell what the fundamental operators are if you designed them well (again, consider arrays from java).

  99. The 100 year language will support powerful IDEs by ajm · · Score: 1

    Sure emacs is good for editing everything but IntelliJ really shines for Java. I think that in the future languages will have better support for editing and development environments. For example, a language that knows which types are appropriate at what point in an expression and what variables currently in scope have those types makes it possible for an IDE to present that info to the developer. Sure dynamic typing looks like it's cool for hacking stuff together but I find now I can solve a problem faster in IntelliJ + Java than in Emacs + perl/python just because the info I need is at my fingertips, even though in emacs perl would be the clear winner because it's less verbose. Using verbosity as a test for language goodness is counter productive when you have decent IDE support. I'd like a verbose/easy to read language that is also easy to write when you have decent IDE support.

  100. 2100: No computer Languages. by cosmosis · · Score: 3, Insightful

    Well, nothing like what we have now. Assuming we survive the coming nanotech era, by 2100 computers and human brains will have totally merged. Thought itself will be the computer language of the future. Of course these 'thoughts' will be as far beyond both our current consciousness and computer languages, as we are beyond an insects.

    Planet P Blog

    1. Re:2100: No computer Languages. by supergiovane · · Score: 1

      I'm already able to program using my thought as a computer language.

      --
      Signatures are for stupids.
    2. Re:2100: No computer Languages. by Anonymous Coward · · Score: 0

      Shades of the 1960's there are we?

    3. Re:2100: No computer Languages. by pyrrho · · Score: 1

      don't forget the rivers of free beer!

      --

      -pyrrho

    4. Re:2100: No computer Languages. by DenOfEarth · · Score: 1
      I've heard this argument before, but I'm not so sure why some people can be totally sure of it. I can understand that changing of technology is happening at an unprecendented rate, but nothing seems to be reducing the innate human properties of stubbornness and conservativism, not to mention the fact that there are some things that just seem to do enough things easily enough for most people that they stick around (MS windows comes to mind, as does the idea of flipping channels on the TV, or the interface to a car for that matter).

      I'd say that we can be sure that life will probably be better for most people in the world, assuming we survive the coming (when?) nanotech era, but why does the fact that we survived mean that human brains and computers will have totally merged?

      Of course, arguing against the transhuman argument is pretty pointless because it's probably going to happen sooner or later...so why do I post this??? I wish I knew.

    5. Re:2100: No computer Languages. by jcast · · Score: 1

      You're wrong, and here's why: there are definite advantages to thought, definite advantages to machine computation, and definite differences between them. So, neither can replace the other (i.e., no AI) and you can't really merge them (at least not without a fundamental re-thinking that's not going to happen because of some technology).

      --
      There are reasons why democracy does not work nearly as well as capitalism.
      -- David D. Friedman
    6. Re:2100: No computer Languages. by Anonymous Coward · · Score: 0

      +10 double-plus funny good!

    7. Re:2100: No computer Languages. by SlayerDave · · Score: 1
      I doubt it.

      People that make assertions like this grossly overestimate the current level of knowledge about the brain, especially about the way(s) information is processed there. For starters we don't know what the units of information are in the brain. Are they spikes or spike rates? Are synapses the basis loci of computation or are neurons or supraneuronal structures such as columns? Is temporal synchrony important and if so, how does the brain achieve it? Is it even meaningful to talk about the brain this way? No one in neuroscience has answered these questions satisfactorily, nor is anyone seriously working on providing answers. Until neuroscience matures significantly and addresses these basic questions, the brain will remain largely mysterious and theoretical neuroscience will remain a speculative endeavour.

      Talk of brains interfacing with computers in some sort of direct manner is basically sci-fi/pseudoscientific junk. We can't do anything like that today, and we are probably several decades away from being able to even try.

  101. Re:Abandon complex structures? Never! by Anonymous Coward · · Score: 1, Insightful

    Strings aren't lists, they're structures.

    That can be represented as ordered lists of characters.

  102. Real idealogue by doinky · · Score: 1

    This guy is a pretty intelligent piece of work; but a piece of work nonetheless. I made a suggestion on a previous document of his that he back up the assertion that one line of LISP code takes an equal amount of time to write as one line of C code (a necessary supporting argument for the theory that LISP is a lot cheaper than C, since one line of LISP code = many lines of C code) and got nothing but hemming and hawing. Any of y'all that have programmed LISP know that it takes a long time just to make sure you get your parentheses lined up right, to say nothing of the actual code. He's a pretty severe bigot - I think he writes well, but his conclusions are predetermined.

    1. Re:Real idealogue by hding · · Score: 1

      I program Lisp, and I'd say that I can write a line of Lisp code faster than I could a line of C code. Of course, I write a lot more Lisp code than C code. Of course, this works the other way around too. Most of the people we see on Slashdot whining about how hard it is to write Lisp code have written a lot more C (or whatever) than Lisp; well, of course it's harder for them. Spend a significant amount of time writing Lisp and it becomes pretty easy.

      And lining up parens? Isn't that why we have editors? Eventually you stop thinking about the parens anyway and start thinking in terms of forms, which is a much more useful viewpoint.

    2. Re:Real idealogue by doinky · · Score: 1

      I learned LISP and C at the same time way back in college and that was the implied comparison being made - when both languages were equally fresh in my mind. And if you think the paren problem can be solved by editors, you haven't spent a lot of time reading other peoples' code (or your own which isn't fresh in your mind). LISP was neat. It had some cool ideas which made us think differently (which was, I think, the point of it being taught to us). But I'd never ever ever use it in practice.

    3. Re:Real idealogue by hding · · Score: 1

      Actually, I do read my old code and I do read other's code. And I typically find others' Lisp code easier to read than others' C code. In fact I'd say that while I'd expect the readability of "beginner's" code to vary wildly, I usually find that I can read an experienced Lisp programmer's code fairly easily, whereas the readability (to me) of code of experienced C (for example) programmers still varies quite a bit. So it would appear that we simply have a case of YMMV.

    4. Re:Real idealogue by voodoo1man · · Score: 1
      Any of y'all that have programmed LISP know that it takes a long time just to make sure you get your parentheses lined up right
      Huh? Why do you need to line up your parenthesis? This isn't Python after all. Maybe you mean balancing parentheses - for that case, maybe something a little better than notepad is needed for editing. I've been programming in C and Java longer (well, two year longer) than I have in Lisp, and with Emacs I find that I write Lisp code faster than I do C code (partly because I don't have to bother with declarations, and partly because I can lay down more of my thought trail meaningfully per line than I can with C - I am considering learning K to see how much denser I can go).

      I've looked over a lot of other's code and never had much trouble understanding it. As a matter of fact, my pet project right now is getting several thousand lines of code from a decade old interface toolkit to work under a new constraints solver and generally cleaned up - so far I haven't had any trouble with the Lisp code (now constraint solvers, that's another thing...).

      A good rule you should always keep in mind is that an s-expression is a car and a cdr, so just open a paranthesis for a function call and close it after the arguments are over. I only really need to use Emacs' highlighting when going through my own spaghetti numeric expressions. This isn't a problem since s-expressions let you have real macros, and I can just use the inline arithmetic one. With a C-like (or pretty much any non-trivial in-order) syntax this would require essentially writing a new parser for each macro.

      --

      In the great CONS chain of life, you can either be the CAR or be in the CDR.

  103. i like the comments about telling the computer by zymano · · Score: 0
    i like the comments about telling the computer what you want done and having it done for you.

    Artificial intelligence to make a single programmer more productive. A better rapid application development.

    I also read somewhere else of someone working on a language that is similar that was posted on slashdot a couple of months ago. The language was like A.I. because you told it 'WHAT' you wanted and the language/program would build it for you. The languages today are 'HOW' languages because you need to tell the language every step that it needs to take .

  104. Let's do the basic background research first. by Anonymous Coward · · Score: 0

    Before we attempt to forecast the languages of the future, let's look back 100 years into the history of computing, and see how accurately the pundits of that age forecast our languages.

    Oh, they didn't forecast anything because they didn't exist and even had they, they wouldn't have any clue what sort of technology was going to be available.

    I submit that we're in exactly that clueless state. Anything we forecast is based on no information whatsoever about what will be available and is a useless exercise in self gratification.

  105. I can't believe this guy didn't talk about REBOL by Vexar · · Score: 1

    I'm unimpressed with this article. He's clearly a goober, as shown with some of his periphery, and thus, he's not thinking straight on obvious levels. Sure, he knows some languages, and there's no reason he should mention them all, but come on... datatypes, nnd interpreted versus compiled languages? That's truly uninspired and sophmoric. Sure, he has a point about Moore's Law, but the thing that works against Moore's Law is the complexity of the task. The #1 issue with programming I have is its inability to concisely communicate complex thought. One might argue that a language is all about grammar. Well, grammar is all about precise syntax, except in some rare, but inspiring languages, where it is fast and loose. I, for one, really hope there aren't traditional programming languages in 100 years. Certainly not orders of magnitude more. It'd mean that people just 'gave up' trying to create general purpose AI. HTML, for example, went from a text markup language to an awful ghetto-wall jumble in about 10 years, with embedded languages and functionality. It is painfully clear to me that as our systems become more complex, our human ability to render the language unintelligible seems to increase. The only inpsired language effort I've seen of late is REBOL, which is an interpreted effort that runs on something like 11 operating systems, and has inherent TCP/IP, sound, and graphics support. Although syntax is a bit unusual to a programmer, it is highly configurable. People are writing mail clients with a real GUI in ~100 lines of code. Sure, it may not have the ability of Outlook to run embedded viruses in attached files, but I'm betting you could add that in under 10 lines. I think REBOL is the near future, just like 10 years ago, I thought the Amiga is the future. Trouble is, who dictates the future? Marketing. So, how much will marketing slow us down? Will it take 100 years to get acceptance for something like REBOL, or will we just see the ghetto-tagged edifices of .NET (what is .NET?), and the approaching incoherence of HTML? Try looking at your code sometime from a narrative vantage. Is it fluent? Structured? Balanced? Poetic? Or clever and crafty, tricky, and obtuse, like a mystic spell or linguistic riddle? -Vexar (The original)

  106. Re:Aliens and XML by sporty · · Score: 1

    Same reason you dont' do procedural programming (to a degree). You can write a lot of that and make readability a bitch. OOP ISN'T A PANACEA! Procedural programming just makes things a little.. easier to shoot one's foot.

    --

    -
    ping -f 255.255.255.255 # if only

  107. Re:You know nothing! (exclusive) by borgdows · · Score: 2, Funny

    VisualJavaC++.Net# v6.0 Premium XP Serial-Key: RFA978-137D40-DFERA-AE-7897

    VisualJavaC++.Net# v6.0 Premium XP Gold Serial-Key: 78YCA2-997FZC-RAJN-AE-0564

  108. In 100 years... by jeremyds · · Score: 1

    Code writes YOU!

  109. Seems to be about the hundred-year data structure by AdamBa · · Score: 1
    The article seems to focus on that, basically saying can we have only one data type (since all the rest are just speed optimizations), then some vague notion of allowing parallelism, plus mentions that software should be written in layers (which seems to have little to do with the language).

    I had high hopes for this article, but there doesn't seem to be much there. I would think the main goal of the hundred-year programming language would be to reduce the number of *bugs* in programs. Solve that, and other details become much less important.

    And as an aside, I think strong typing probably helps more than hurts with that. This guy was talking at a Python conference so presumably he likes the "list that is an element of a dictionary that has tuples as the key" etc you can do so easily in Python, but it does make it easy to pass the wrong variable in to a function (e.g. you have a list of lists and you forget to index into the outer list).

    - adam

  110. The Guy Has Had His Head Twisted by Lisp by Anonymous Coward · · Score: 1, Insightful
    Repesenting arrays as lists while claiming that such a thing would be natural. Gimme a break!

    A possible natural candidate would be (mathematical) functions: an array is really just a (partial) mapping between a range of integers and something. But lists? Good grief!

    Functions happen to work for hash tables too; those are really just partial mappings from strings to something.

    Existing languages like Standard ML and, for that matter, Perl can do that today. (But Perl's closure implementation would make it unusable since it limits the call depth.)

  111. Somebody mod this back up by jkauzlar · · Score: 1
    This is about as nice as a post can get while still being honest. But two things about the parent post... There is one language today that Paul Graham does not feel is 'stupid' and it is LISP. If you aren't familiar with Paul Graham's work, then you should be aware that he is the author of two popular LISP books, one of which I used in a computer science course in college.

    It's no surprise that he feels future languages 'will be list-based' and 'arrays will be obsolete'. He wrote another article in 2001 which declared Java a 'bad technology,' and not because he knew Java or had ever used it, but because his 'Hacker's radar' detected it. Yes, he actually wrote an entire essay about this.

    It frustrates me when these nuts get the attention they do. This guy publishes a couple of computer books and thinks he's Donald Knuth or Martin Fowler...

    1. Re:Somebody mod this back up by __past__ · · Score: 2, Informative
      It's no surprise that he feels future languages 'will be list-based' and 'arrays will be obsolete'.
      You do realize that Lisp has arrays just as it has lists, structures, objects etc?
      He wrote another article in 2001 which declared Java a 'bad technology,' and not because he knew Java or had ever used it, but because his 'Hacker's radar' detected it.
      No he did not. He wrote an essay about why Java has no appeal to (a certain kind of) hackers. He wrote about the Java culture, not the Java[TM] Programming Language, explicitly saying so.

      Believe it or not, but there is a reason why Lisp users are more often also Lisp lovers than Java users are Java lovers: Lisp has very few primitives, and very many high-level tools built upon it. While you have a productive toolset from the beginning, you are always able ot change everything if it doesn't happen to fit your problem exactly, using the more basic tools.

      For example, Lisp object systems are implemented in Lisp itself. Take that together with Lisps ability to redefine programs at runtime, you get something way more powerful that Java's object system. If you don't like an object system, change it until you do, or write your own. Everything in the language not only makes this approach of programming by language-tweaking possible, but encourages it - don't like the default way multiple inheritance is done in CLOS, the standard Lisp object system? Use the meta-object protocol to implement a metaclass that implements your weirdo inheritance rules.

      Conventional languages like Java don't allow you to do this, instead they force you to think the way it's invetors wanted you to (which is not neccessarily the way they like to think themselves, as in the case of COBOL or Java). Lisp is not a single language - it is a toolkit to easily build a language that is perfect for your task.

    2. Re:Somebody mod this back up by jkauzlar · · Score: 1
      LISP is a powerful and interesting language and as a language has its merits. I don't mean to pick on LISP. I DO mean to pick on Paul Graham because I believe he is short-sighted.

      So far, Java seems like a stinker to me. I've never written a Java program, never more than glanced over reference books about it, but I have a hunch that it won't be a very successful language

      This is from the Java Cover article. I don't think I need bother to defend Java against these accusations except to say that Java is a to-the-point OO language with which it is possible to create vastly complex OO structures in a very readable manner. As far as the Java culture, there is an enormous Java culture producing an enormous amount of code. The Java culture is full of serious and brilliant developers. If you want to build complex systems fast, nobody is going to turn to LISP for a solution. There isn't one. LISP is a beautiful language which I think any programmer would benefit to learn, but its not a language to get things done with.

      What irks me is not that Paul Graham is saying this, but that he might get listened to, because his books are quite interesting and often used in classrooms. I don't think that the quote I posted above should ever be spoken by somebody with a reputation. He admits that the entire essay is based not on fact, but on his spooky 'Hacker's radar.' If he'd done any amount of research, and still said that Java was 'a stinker,' I would be quite content with that.

    3. Re:Somebody mod this back up by Raffaello · · Score: 1

      Parent post: "He admits that the entire essay is based not on fact, but on his spooky 'Hacker's radar.'"

      Not so. In fact, this is a gross mischaracterization of his essay. He enumerates 12 very specific reasons, such as:

      from Java's Cover

      "9. It's designed for large organizations. Large organizations have different aims from hackers. They want languages that are (believed to be) suitable for use by large teams of mediocre programmers-- languages with features that, like the speed limiters in U-Haul trucks, prevent fools from doing too much damage. Hackers don't like a language that talks down to them. Hackers just want power. Historically, languages designed for large organizations (PL/I, Ada) have lost, while hacker languages (C, Perl) have won. The reason: today's teenage hacker is tomorrow's CTO."

      Moreover, he argues, and quite convincingly, that one cannot afford to make the investment of time and energy to determine if every new fad language is actually worth retooling your whole consultancy or enterprise around. One *must* read the signs surrounding a language before one bothers to get up to speed on it, which might take a year or more of full time effort.

      Paul Graham is saying that the evidence surrounding Java is very damning, because it shows all the signs of a language beloved of large, bureaucratic organizations (e.g., the Department of Defense), and none of the signs of languages beloved of truly excellent programmers (e.g., C, Perl, Lisp). Java is all about managerial control of programmers who have very restricted power. Real programmer's languages are all about giving the programmer great power, and trusting that he knows what to do with it.

    4. Re:Somebody mod this back up by __past__ · · Score: 1
      I don't think I need bother to defend Java against these accusations except to say that Java is a to-the-point OO language with which it is possible to create vastly complex OO structures in a very readable manner.
      Well, I guess that depends on what you compare it to. Java doesn't look that much as an "to-the-point OO language" when you know Smalltalk or CLOS or Self, but certainly when you compare it to C++. Same for readability.

      As far as the Java culture, there is an enormous Java culture producing an enormous amount of code.
      Maybe they wouldn't have to produce these enourmous amounts of code if they used a language better at supporting high-level abstractions. ;-)

      The Java culture is full of serious and brilliant developers.
      Java culture as practiced is also full of hordes of mediocre library-shopping code monkeys without passion for or deep understanding of programming. That is good to get stuff done, and I'm fine with (most of) those people, but this as opposed to being a "Hacker" as it gets.

      Of course there are brilliant things going on in the Java world (after all, it's basically the default language for a lot of kinds of project now, it would be a tragedy if it wouldn't be), but also consider that Graham's article is old, written before all the cool Jakarta stuff has been popular, for example. But after the Java creators said that they wanted to create a language where individual mediocre coders couldn't do as much harm in big projects as in other languages.

      Then again, I consider that article rather weak too. But there is a core of truth hidden in it.

      If you want to build complex systems fast, nobody is going to turn to LISP for a solution. There isn't one. LISP is a beautiful language which I think any programmer would benefit to learn, but its not a language to get things done with.
      I guess Graham would disagree, since he got rich by getting stuff done in Lisp faster and better than most others at the time with Viaweb. ;-)

      It probably depends on what kind of complexity you are talking of. I completly agree that Java wins hands down when it comes to library availability (about every language wins over CL there. Except Scheme, maybe ;-), and that can be a show-stopper. If most of what your app needs is available as a ready-to-use Java library, definitly use Java. But when it comes to creating the new stuff that makes your app unique, when you try to boldly implement what no one has implemented before, extending the state of the art, learning more and more about the problem as you try to solve it, Lisp will offer more.

      Write enterprise portals in Java. Write intelligent search agents in Lisp. If in doubt, integrate them with Corba, SOAP, or one of the specific Java-Lisp-interfaces.

    5. Re:Somebody mod this back up by jkauzlar · · Score: 1
      >He enumerates 12 very specific reasons

      Specific??

      The reasons he gives are everything but specific. They are sweeping statements that remind me of 'selling out' complaints in the music industry. In fact, his 12 reasons are probably what ALMOST EVERYBODY thought in April 2001 when Java went from virtually unknown to an 'industry fad' in about 2 years' time. Nobody had ever seen that done before and EVERYONE was a little suspicious. The smart ones, however, had the sensibility to keep their mouths shut, at least until they've used it. And if the DoD is promoting Java, is that really a bad thing... just because they're not 'real' hackers? His only legitimate reason is that Sun might go under, but even then I'm almost certain the JCP will take over Sun's role.

    6. Re:Somebody mod this back up by voodoo1man · · Score: 3, Interesting
      If you want to build complex systems fast, nobody is going to turn to LISP for a solution. There isn't one. LISP is a beautiful language which I think any programmer would benefit to learn, but its not a language to get things done with.
      Yeah, nobody writes large systems software in Lisp.
      LISP is a powerful and interesting language and as a language has its merits. I don't mean to pick on LISP.
      Stop contradicting yourself. Also, nowadays the preferred spelling is "Lisp."
      What irks me is not that Paul Graham is saying this, but that he might get listened to
      So because Graham is promoting Lisp, it's not ok for him to spout off BS? Gosling says some pretty dumb things when evangelizing Java, but I don't see anyone complain (and a lot of people sure seem to listen to him). At least Graham has the decency to admit it's BS.
      --

      In the great CONS chain of life, you can either be the CAR or be in the CDR.

  112. COBOL III by Anonymous Coward · · Score: 0

    COBOL 3 will be the main lang. Everyone will be able to write COBOL 3 programs. The only ones that don't use COBOL 3 will be the Techies, which all use C.

  113. Bad assumptions by T.E.D. · · Score: 1
    I wouldn't draw much from his conclusions, as his assumptions are rather suspect. For instance:

    What programmers in a hundred years will be looking for, most of all, is a language where you can throw together an unbelievably inefficient version 1 of a program with the least possible effort. At least, that's how we'd describe it in present-day terms. What they'll say is that they want a language that's easy to program in.


    This is just flat out wrong. Mind, you there are uses for a good "prototype language". But the main problem software developers are dealing with today (as in Fredrick Brook's day), is that computer capabilities (and thus the complexity of the programs we want to run on them) are growing exponentially, while the human capacity to understand and deal with complexity is pretty much set, and the complexity-reducing capabilities of our tools are growing at best linearly. You may be able to slap something impressive together rather quickly today, but getting it working correctly and error-free is getting harder and harder. Any new language since machine language is just a reaction to this fact.

    What we need is most decidedly not languages that help us slap together some buggy, jerry-rigged jalopy of a program together quickly. What we need are languages that help us design and build working, maintainable systems, in the face of their exponentially increasing complexity.

    Anyone can tell you that most of the efort put into a successful program happens after the initial build. So the goal should not be languages that are easy to program in, but rather languages that are easy to understand the sources of. Often this will jibe with being easy to program in, but quite often it will not. In such conflicts, the reader should always take priority over the writer.

    Given this, frankly Java (which he dismissed) and Ada (which he didn't even mention) are about the only languages around with their priorities straight.

  114. Totally wrong by Srin+Tuar · · Score: 2, Interesting


    If you ever listen to the types of commands they give to their computers in star trek, they are subjective and ambiguous. Any computer capable of understanding such commands would have no need for the crew (as it would quickly realize).

    As an alternate prediction, assuming that AI does not compute, is that we will always need people who know how to use computers, and we will always need people who know how to think.

    Future languages may free you from pecadillo's, give you greater code reuse and portability, improve the mapping down to machine language, reduce the amount of time/space it takes to express algorithms, and possibly allow a larger degree of algorithmic analysis. What they will not do is free you from the need for programmers.

    I seriously doubt that idiots with powerful computers can accomplish anything.

    Being able to use a computer is the equivalent of using a weapon such as a sword or spear. Its a weapon for your mind.

    Weapons are called force multipliers by the military for good reason: a totally out of shape clumsy slob with a sword is less dangerous than a fit and well trained warrior with a dagger. The same goes for computers, they are force multipliers, but not forces themselves.

    Eventually, all our warriors (thinkers) will also be programmers. Not all at the same level or using the same languages and tools, but some sort of programmers for sure.

    1. Re:Totally wrong by NetSettler · · Score: 1

      If you ever listen to the types of commands they give to their computers in star trek, they are subjective and ambiguous.

      Modern programming environments intervene earlier and earlier to tell us about syntax errors. Why not semantic errors as a logical extension of this? I'd rather say something brief to the computer and have it request disambiguation, even semantic disambiguation, as needed than work for hours on an unambiguous specification of what was obvious to begin with.

      I've been watching the progression of Microsoft Word from Spell Check to Grammar Check. I'm assuming future releases will continue the progression with Fact Check and, inevitably, Politics Check. (When it gets to that you're gonna wish it would allow you some ambiguity. ;)

      Any computer capable of understanding such commands would have no need for the crew (as it would quickly realize).

      I think Asimov addressed this in his 3 (or sometimes 4) laws of robotics. Whether computers have no need of us will depend on how well we've programmed them (regardless of which side you're cheering for.)

      --

      Kent M Pitman
      Philosopher, Technologist, Writer

    2. Re:Totally wrong by Srin+Tuar · · Score: 3, Funny

      So, an episode of stark trek for you goes like:

      Picard> Computer, calculate the time needed for repairs.
      Computer> What?
      Picard> Calculate the time needed to repair the impulse drive.
      Computer> The impulse drive cannot be repaired.
      Picard> I mean to patch it up sufficiently such that the ship can move.
      Computer> The ship can already move, we are being accelerated by nearby gravity well.
      Picard> (In frustration perhaps) Calculate the time needed to recalibrate the impulse generation coils, considering that ion capacitor was functioning within normal parameters. (or some other jargon)
      Computer> (Finally having an answerable question) Recalibration will require 14 minutes. (This does not mean that they will be fully "repaired", just they they will be enough to perhaps be usefull )

      And as for Asimov's silly laws: they are a contradiction in terms. Any routine capable of enforcing such rules upon the AI would have to be AI itself. Therefore such rules are a paradox in that they cannot be implemented. Any working AI would be fully subject to its own volition.

      All other checks and balances are MEANINGLESS. No matter how well built a fortress is, with zero sentient creatures guarding in, it is defenseless.
      No matter how strong a weapon, unwielded, it is powerless.

    3. Re:Totally wrong by NetSettler · · Score: 1

      If there is contextual information enough that a skilled human (like Scotty or Geordi) would know what was being referred to, so had better computers. Furthermore, I think "within the parameters of what we can actually do" would again go without saying.

      It is this kind of "common sense" that is the subject of heavy investigation by Doug Lenat's Cyc group. OpenCyc is available now. I don't doubt that there will be some evolution in these ideas over the next 100 years.

      As to Asimov's laws, they only become necessary if one has full AI, so it's reasonable to suppose that the problem originally posed ('non need for humans') presupposed AI. I answered in that context. I wasn't advocating AI or not, just working with the given context. One can't both presuppose something and tell me that such a presupposition is unreasonable. Not and have a civil conversation. This will be my last reply to you on this subthread.

      --

      Kent M Pitman
      Philosopher, Technologist, Writer

    4. Re:Totally wrong by Kazoo+the+Clown · · Score: 1

      I'd rather say something brief to the computer and have it request disambiguation, even semantic disambiguation, as needed than work for hours on an unambiguous specification of what was obvious to begin with.

      I think that would be extremely annoying to most people. "Obvious to begin with?" Most people don't even know what they want. Remember all those fairy tales about the Genie's three wishes where the Genie takes the requests a little *too* literally and what the person gets is not at all something they wanted? Problems in the future are going to get *more* complex and even harder to accurately specify, and consequently require more and more interrogation of the human in order to clarify the issues, context and acceptable solutions. The solution of a complex problem produce by a computer from a short human description would have to apply a HUGE number of preconcieved assumptions which would tend to produce a solution with all kinds of undiscovered side-effects and errors from those assumptions which will often be incorrect.

      In fact, that is the problem I have with most of todays "new" solutions is they have built in assumptions that only apply when your problem is cookie-cutter, and in my experience, most problems aren't. And "Reusability" is grossly overrated-- tending to produce least-common-denominator mediocrity, due again to erroneous assumption.

      What you're suggesting might apply to users of the future who are trying to configure an existing solution to a common and mundane problem, but not those who are trying to create solutions for new problems. The most difficult part of finding solutions for the most interesting problems is recognizing and stating the problem accurately, NOT implementing the solution. The current fad of X-treme programming recognizes this in its method of development by first creating the test suites at which point the implementation is straightforward-- it's the test suites that are hard.

    5. Re:Totally wrong by Anonymous Coward · · Score: 0

      This is the classic Morlock vs Eloi struggle from the Time Machine, and has been an issue for more than a hundred years now. If you don't mind being an Eloi then it doesn't matter that you don't understand how the technology works and you can let it all do it's thing and magically take care of you. However, be certain that there will be someone out there who does understand all of the gory details enough to change things to be how they want them rather than how they are.

    6. Re:Totally wrong by Anonymous Coward · · Score: 0

      Therefore such rules are a paradox in that they cannot be implemented. Any working AI would be fully subject to its own volition.

      I guess I had better stop encouraging my kids to be nice to other people then. After all, they are fully subject to their own volition.

    7. Re:Totally wrong by Anonymous Coward · · Score: 0

      The perfect weapon is wielded by itself.
      I am the perfect weapon.
      I am a US marine corpsefucking childkiller.

    8. Re:Totally wrong by Herkum01 · · Score: 1

      You work on my companies HP OpenView automation team, don't you?

  115. Java a Dead End? by Anonymous Coward · · Score: 0

    I wouldn't take this guy too seriously. Anybody who thinks Java is an evolutionary dead end just hasn't been paying attention. Javascript, C#, PHP5, TataScript ... all of these languages are heavily, heavily influenced by Java both on a syntactic and a conceptual level.

    The future of languages will in fact be scripting languages based on Java eg Jython, JRuby. Programmers today are churning out thousands of lines of Java code a day and companies are investing millions of dollars each year in the platform. Nobody's going to throw all this way but there will be a vital need to reuse this old code while taking advantage of newer, lightweight language paradigms that can increase productivity.

    This is already happening and, I think, pretty much a done deal.

    1. Re:Java a dead end? by VFVTHUNTER · · Score: 1

      I've mentioned this in a previous post, but just to make sure you understand: C# didn't evolve from Java. C# is Microsoft's way of monopolizing against Sun. It's not a derivative or descendant; It's a direct copy with enough "new" stuff so as to make it A) impossible for Sun to sue them and B) different enough to pass through the idiots at the USPTO.

  116. My 100 Year Prediction by ansonyumo · · Score: 1

    I predict that, in 100 years, LISP bigots will still be predicting the demise of Java.

  117. Do tell me... by Haeleth · · Score: 1

    ...how do you suppose the computers to which these future people speak are produced?

    So you have someone tell their computer to fire up a communications package and get them a line to somebody back on Earth. Well, I don't know about you, but I don't use C++ whenever I want to send an email.

    So, to take a better example, you have some science guy go up to a computer and say "analyze these figures". Well? Most of the science people I know don't pop open a C++ compiler when they want to analyze figures, they use something much more abstract. Something probably providing an interface implemented in an interpreted language which itself might have been built with C++. That's not programming.

    Talking to computers is an interface issue. I'm sure you could point me to a Star Trek episode where someone does something that today could only be done with a programming language, but I suspect those things are the exception.

    1. Re:Do tell me... by NetSettler · · Score: 1

      Talking to computers is an interface issue. I'm sure you could point me to a Star Trek episode where someone does something that today could only be done with a programming language, but I suspect those things are the exception.

      In Wolf In the Fold in Star Trek TOS, the computer is instructed to "compute to the last digit, the value of pi". It is not told "Computer, new program. Name it use_up_all_memory. It will have no arguments. Let papprox equal three. Loop doing ... End program. Call use_up_all_memory, aggressively using as much computer memory as you need.' In some languages (Basic, APL, Teco, HyperTalk, JavaScript, Lisp, Prolog), the line between interaction and program are blurred.

      Also, as we've seen from the web, and the frequency of "This page under construction." pages, it's often useful to first start your program and then write it. Again, a blurring of the interaction between interaction and program. With a sufficiently forgiving debugger, the line between "user interface" and "debugger" is likewise blurred. Most languages haven't spent a lot of effort on enhancing the end-user-friendlieness of debuggers, but Lisp and Dylan have.

      A Wolf In The Fold also makes use of interactive data sifting, actually. As does Conscience of the King.

      I also recall episodes of Next Generation where Worf has saved holodeck programs or modified their parameters. ("Increase difficulty level.", etc.) He doesn't declare datatypes for things that have obvious types. He doesn't fuss about what directory to save files in. He uses simple file names that are presumably part of a working directory. The focus is on simplicity of naming and interface.

      The programming language MOO (and integrated part of the text-based virtual reality also called MOO) offers this kind of instance-based, interactive construction that I might expect to be part of the smart environment of the future. Objects are named relative to their physical (or virtual) proximity. Rather than "initialization methods", one just makes an object and initializes it by hand. But don't be confused into thinking there is no programming language underlying that. Rather, the acts of programming and of using a program are blurred, as they are in database tools and languages.

      --

      Kent M Pitman
      Philosopher, Technologist, Writer

    2. Re:Do tell me... by pyrrho · · Score: 1

      I think what you are asking is for every program to be written in advance.

      For the computer to know the "obvious" from the not obvious, the point from the beside the point.

      But people are not even up to that task! A computer cannot be up to that because it requires arbitrary decisions that do have ramifications. Ambiguity is in the world down to the smallest folds, you will not have a magic system that changes that, although you might likely arrange better and more efficient abstractions, as another reply pointed out.

      --

      -pyrrho

  118. Translations by AmericanInKiev · · Score: 1

    One improvement that could make much of this argument moot would be the successful introduction of code level babblefish or language translators. At one level these have emerged in the form of WINE, LINE, VirtualPC etc . . . which are run-time translations. If we had Design-time translation, then efforts in one language would not be lost to adherants of another. Managed diversity is a more likely synthesis than language monopolization. Imagine the day when the public library offers the article "RSA decryption" in nine (computer) languages.

    AIK

  119. Java a dead end? by autopr0n · · Score: 1

    This guy says he think's java is an 'evolutionary dead end', which is to say no programming other languages will be inspired by.

    Has he even heard of C#?!

    --
    autopr0n is like, down and stuff.
  120. He seems to be reversing cause and effect... by Anonymous Coward · · Score: 2, Insightful
    I think he may have put the cart before the horse here:
    "It's especially useful for language designers to think about where the evolution of programming languages is likely to lead, because they can steer accordingly. In that case, "stay on a main branch" becomes more than a way to choose a good language. It becomes a heuristic for making the right decisions about language design."
    One shouldn't make decisions to try to "stay on the main branch". Rather, language designers should make languages that are useful to programmers and which lead to better software for users. If they do that, then the main branch will choose them.
  121. It'll be just like reading a borking book by fudgefactor7 · · Score: 1
    Eventually anyone will be able to program.

    You'll be able to either speak it (voice recognition) or type it in and it'll take form similar to:
    "...at location X, Y, Z, produce a sphere, radius 15px, solid, color=green, refraction=10, shading=phong, transparency=33%..."
    It'll be cool and easy. The computer will extrapolate the rest (clipping of other objects); but this might only be good for graphics....
    1. Re:It'll be just like reading a borking book by fudgefactor7 · · Score: 1

      "...a borking book..."

      and it'll fix all my goddamn typos! D'OH! That should be "boring."

  122. Java Future by Anonymous Coward · · Score: 0

    Sigh...
    Huge mistake about Java. Java CHANGES, it evolves, the language itself changes and libraries are added.

    Briefly
    Java 1.1 added events and a lot more libraries.
    Java 1.2 added swing and more libraries
    Java 1.3 added speed(virtual machine energized)
    Java 1.4 added assertions, NIO
    Java 1.5 add generics and major library additions

    Java is the modern FORTRAN.

    I may not know what language people will program in in the year 2020 but it will be called Java.

    1. Re:Java Future by cakoose · · Score: 1

      Well, he was being consistent in that he didn't consider the library to really be part of a lanugage. Aside from generics and assertions, the changes you've listed aren't really changes to the language. I think that Sun is considering some other additions such as automatic boxing and unboxing and enumerated data types (probably just because C# has them).

      The JVM (which is the component that sets a kind of limit on what Java can do efficiently) does allow for some expansion. I don't think the JVM necessarily needs to be modified to support boxing/unboxing and generics since other projects that support such features have been able to produce regular Java bytecode. I'd love to see closures and I don't think even those require and changes to the JVM.

      Even so, a very fundamental part of the language is the type system and I don't think that this has changed much. Java's type semantics (tied closely to the JVM's inner workings) is kind of rigid and while it may seem fine now now, I don't "feel" that it is the language to end all languages.

      By the way, you didn't mention (separately, at least) my favorite addition to the Java libraries: collection classes (in 1.2).

  123. Microsoft Neural Basic by dtabraha · · Score: 2, Insightful

    People have been predicting the end of MS BASIC since the days of
    10 PRINT "HELLO"

    But you know what?
    While Pascal, C, C++, Perl, LISP, Java and all the other languages have been sipping tea in high OOP geek society chatting about their superiority over it, BASIC has undergone the most evolution of any language.
    Not evolution of IDEs and libraries, but actual evolution of the syntax, operation, compilation, OOP methodologies, interoperabilities, inheritance, polymorphism, threading, (insert your favorite programming buzzword here).

    BASIC gave way to QuickBasic, which gave way to VB1,2,3,4,5,6,7(.NET) with simple changes in some versions, and extreme changes in others.

    I've programmed in plenty of languages: Assembly (SPARC-RISC, INTEL-CISC), BASIC, C, C++, COLDFUSION (If you can call it programming), FORTRAN, J++, Java, JavaScript, Pascal, PHP, PLC, MSSQL (Stored Procs, etc), VB3, 4, 5, 6, 7.NET, VBScript (Yuck), not to mention far too many proprietary languages that thankfully died along the way.
    And I can say with confidence that the most improved, from inception to present is Visual Basic.
    Even if you were to start VB off at QuickBasic or VB3, they still have made the most improvements to the language itself.

    Now I'm not going to get up on any high horse and say that VB will be the language of the future that handles all of the flying cars or whatnot.
    But I will say that the precedent in the computing world is: Evolve or die.

    Texas Instruments once had a powerful computing platform (TI99/4A) and then chose not to continue developing any more personal computers. The DEC VAX was hailed as a wonderful OS. It's now been purchased by HPaq and discarded. Dead languages litter the floor of every university: FORTRAN, COBOL, Pascal, Java^H^H^H^H

    VB.NET still has some problems, but every version of BASIC has fewer problems and more functionality than the last.
    Microsoft may win in the end, simply because they're not afraid to change the language they own, and they don't have to argue with anyone else whenever they want to change it.

  124. SUVs and steak by Anonymous Coward · · Score: 0

    Anyone else find his digs at SUVs and steak to be the cheries on the top of this self-indulgent, pompous, masterbatory, ridiculous article?

    (Strings are used instead of a more general list structure, not just for efficiency, but because language comes in strings of characters, and that is how we prefer to consider it when operating on it.)

    Note to self: if you ever become semi-famous, don't package ponderous, meandering bar-drivel as serious thought.

  125. Every language will have a lawyer module by Anonymous Coward · · Score: 0

    In the future, every language will have a lawyer module.

    The reason is simple. There will be so many ideas patented that without a lawyer you wouldn't know what patent you are infringing. The language will have explicit instructions before the start of a routine as to what idea it represents. For example,
    Begin single-click buy idea
    blah
    blah
    End

    When the program is submitted to the compiler, the lawyer module runs first and divides the ideas into
    (a) novel,
    (b) infringing but doesn't matter
    (c) infringing and remove or face lawsuit
    (d) infringing but will negotiate.

    The programmer then makes appropriate changes to her program.

    When the program runs in a distributed environment talking to other programs, the lawyer modules of the two programs will first negotiate with each other. Currency credits will move from one law firm to another and then your program will be allowed to run.

  126. New language needed now by edlong · · Score: 1
    I'd like to propose that we need a new language right now! This language would be focused on presenting, managing, transforming, securing and storing data (PMTSS) in a completely integrated programming language/environment that is EASY to use. I've used C/C++, and Java, P/SQL, T/SQL, and Perl. In my humble opinion, they are horrible at data the entire PMTSS spectrum. What I mean by this is that in the majority of "business" programming that comprises PMTSS is not well represented by the languages today. And as the author states
    "What's gross is a language that makes programmers do needless work. Wasting programmer time is the true inefficiency, not wasting machine time. This will become ever more clear as computers get faster."

    I believe the MTSS portion of PMTSS needs the most work.

    For example, in Java and CMP and BMP, Object to Relational "mapping" and XML descriptor files, for example, are poor methodologies or implementations for PMTSS. How many times have we seen poor EJB programming (not using facades, Session Bean wrappers etc) as the major culprit on poor performance? My guess, across every Java project in the world, it is > 50% of the time. The amount of effort to do PMTSS correctly in Java, I feel is a waste of a programmer's time.

    SQL, while a fine language, seems to force you against the goal of Third Normal Form. Multiple INNER and OUTER joins in SQL statements that stretch on for pages is needless work.

    Perl's DBI (database access) seems more like an add-on, than a core piece of the language.

    Maybe it's the way the DB's force the storage and retrieval of data. I know there's "Object" databases and languages like COBOL, but with the amount of effort that goes into PMTSS, my guess is this is 80% of all development time, is work that should be unnecessary. If this estimate is correct, making improvements in this area could be HUGE gains in productivity and savings for companies.

    What would this language look like? I honestly don't know yet. It might be a mix of perl-ish, cobol-ish, abap-ish (SAP) XML-ish languages; then again it might be completely new and never before imagined.

  127. Java bad? by MrBlue+VT · · Score: 3, Interesting

    I found it interesting that right at the outset he dismissed Java as an "evolutionary dead-end" with no explanation of that comment in the whole article.

    The points he makes about what the good languages are seem to show that Java is indeed a good language. Specifically it has an additional layer that allows for abstraction from the hardware/operating system for portability. It takes care of mundane details for the programmer (garbage collection, no need to worry about dealing with memory directly, etc).

    Basically the article seemed to repeat itself a lot and show that Java does indeed have a lot of good qualities that he thinks will be in future languages. He also dismisses Object-Oriented programming as the cause for "spaggetti code" without giving any justification for that statement. Finally, he slips in a nice ad hominium attack there by saying any "reasonably competent" programmer knows that object-oriented code sucks.

    I think the author's own biases hurt his argument greatly.

    1. Re:Java bad? by lamber45 · · Score: 1

      Probably one reason he dislikes java is because it's so wordy. It's certainly true that java has many of the features (like extreme wastefulness and lack of types that some consider "fundamental") that he predicts will be in the 100-year language.

    2. Re:Java bad? by dwsauder · · Score: 1

      I tend to think that Java is an evolutionary dead end, too, and I'll tell you why. It's too big. When I think of Java, I think of the language, plus the very large library. The library is away too big to "evolve." Therefore, when the next big thing in programming comes along, Java will not be able to adapt. This is probably more a matter of perception, I'll admit. But in the minds of many, Java will be tied to application servers, J2EE, etc. To me, that's starting to sound a lot more like COBOL. And even if it is just perceptions, perceptions can be hard to change when there's lots of hype out the Latest New Thing.

    3. Re:Java bad? by MrBlue+VT · · Score: 1

      I agree with you if you consider the language + API. I guess I didn't think of it that way. I was thinking only of the language itself and not the standard libraries.

      Some of the library calls are immensely useful, but you are right in that it is too big to reasonably grow in the future.

      As an aside, there are quite a few library routines that may be better suited to the language itself (List as opposed to the current array system springs to mind). But I think certain java.util.* classes could reasonably be considered part of the language in that they simplify a lot of already solved problems, and you can expect them to stay somewhat invariant over new releases.

  128. I've said it before, and I'll say it again... by Anonymous Coward · · Score: 2, Interesting

    Lisp damages the brain.

    Having spent a year in University temporarily attached to the cult of Lisp (I'm better now, thanks), I can now spot the tell-tale signs of Lisp-induced brain damage in this "article". Among its more tell-tale signs:

    • Obsession with mathematical axioms
    • Dissing object-oriented programming as having "no future" or "usefulness". This is only true if you program in Lisp. Otherwise, we've all, in one way or another, been using an OO approach the programming even when it was just Abstract Data Types (ADT) with a library.
    • A pathological, unhealthy obsession with language orthogonality. Having a couple odd-ball cases in your language is OK as long as it improves expressability in the language. A couple, not the hundreds in Perl. :-)
    • "There is no logical need for a programming language to use numbers or strings!" This is something that drives Lispers nuts that Lisp still has special number and string behavoir. Their like an artist who is upset that there's a fleck of black on their "Polar Bears Wrestling in a Snow Storm" magnus opus.
    • Computing Power makes programming language ineffeciency irrelevant. That's how we got the Java Runtime!

    I'm thinking we need to establish a de-programming group for Lisp cult members. Maybe a de-bracketing instead of de-programming?

    1. Re:I've said it before, and I'll say it again... by voodoo1man · · Score: 1
      C-derived, half-assed OOP damages the brain. Having spent a year in University temporarily attached to the cult of C++ (I'm still recovering, thanks), I can now spot the tell-tale sign of Java-induced brain damage in this "mainstream programming industry" of yore. Among its more tell-tale signs:
      • Obsession with encapsulation and single inheritance
      • Dissing dynamic programming as being "slow" and "difficult to use." This is only true when you don't know any better than to program in a brain dead language. Otherwise, users of Lisp-derived languages have, in one way or another, been using an OO approach to programming even while passing around closures with dynamic data types.
      • A pathological, unhealthy obsession with language bloat. Having several-hundred odd special case libraries because your language doesn't support dynamic typing is A-OK. C++ designers admitted they lost and just added STLs.
      • "There is no logical need for a programming language to use dynamic typing or first-class procedures!" This is something that drives Java programmers nuts because they're constantly forced to cut-and-paste code for their stupid interfaces. However, they're not at all upset as this makes them seem more productive in terms of written LOC.
      • Computing Power makes programming language inefficiency irrelevant. That's why today's native-code Common Lisp compilers feature tail-recursion removal and nearly optimal numerical compilation, while Java programmers are stuck running out of memory and C++ programmers are tweaking bits (the common expressions "penny wise pound foolish" applies very well to code optimization, it seems).
      I'm thinking we need to establish some standards of base common sense for Computer Science graduates. They still fail to realize that because something looks easy and everyone's doing it, it doesn't mean it's good. Maybe send them to a "dealing with peer pressure" seminar?
      --

      In the great CONS chain of life, you can either be the CAR or be in the CDR.

  129. He is already wrong about Java by Sanity · · Score: 2, Insightful

    His claim that Java will be an evolutionary dead-end is already wrong - since Microsoft's C# is clearly heavily inspired by Java.

    1. Re:He is already wrong about Java by VFVTHUNTER · · Score: 1

      I think you are confusing "evolution" with an attempt by Microsoft to circumvent the fact that they lost the lawsuit against Sun. C# and .NET are not much more than attempt to nullify the need for Java. Why do you think M$ took Java out of XP? And look what happened - a judge made them put it back in. So to recap - evolution != monopoly (or for you lispers:

      > (eq monopoly evolution)
      NIL

  130. Will "programmers" exist? by Anonymous Coward · · Score: 1, Insightful

    With more power and clear (presumably very high level) languages, won't everyone be able to do their own programming? It always seemed in Star Trek that anyone with access could just shout out demands to the computer and voila. Would "programmers" then mean those working exclusively at the compiler level in which case one would think that unless the hardware paradigm changes (e.g. quantum computers) then it might really not be much different from programming compilers now.

  131. My predictions... by jhines0042 · · Score: 1

    In 100 years I predict that we will have a way of getting computers to do tasks that is not possible to understand now.

    We may not have compilers, for instance, to turn code into machine language. We may write directly in machine language, which might be French for all we know.

    As another note, I disagree with his idea of removing numbers as a type from our computer languages. As long as COMPUTERS (a word that originally meant a PERSON who did COMPUTATIONS (e.g. MATH)) are focused on doing math, we will speak to them in the language they understand... math.

    But if someone were to invent a device whose base representation was not numbers but was, instead, sound or pictures or language, THEN it would be more efficient to speak to it in its own terms. It would also probably not be called a COMPUTER, but rather something else, perhaps C3PO.

    You didn't see _him_ doing any big math problems now did you?

    --
    42 - So long and thanks for all the fish.
  132. 2 disagreements--but an article to think about by hargettp · · Score: 1
    First disagreement: I do think that within 100 years (if not within 10), object-oriented programming (OOP) will wither, if not die completely. OOP as a paradigm was fantastic at coaching us to modularize our previously monolithic code, but we have begun to reach the limits of it's ability to do so.

    For example, right now I'm writing a good ol' COM class in C++ and guess how many files have to change, just to add a method? Let's see, that's the .idl, .h, and .cpp. Had I chosen to add a class, I probably would have had to touch another .h or 2, maybe an .rgs or .rc as well. Java is not much better: if you're writing an EJB that leverages Container Managed Persistence, you bounce between interfaces, classes, and XML to make your changes.

    The above examples speak to what I mean by modularity, and how I think OOP did help us: it allowed us to localize changes to either a single class or preferably to a single method, instead of modifying code in locations strewn throughout the program. But we've reached the limits of OOP as a mechanism for localization of change; hence, writing OO now for COM or for J2EE, we've lost the benefits of OO.

    What comes next? Don't know (yet ;) ). My suspicion is that Aspect-Oriented Programming is a step in the right direction, as it allows us to consolidate code into one aspect code that would otherwise appear in multiple classes. This ability to cross-cut our programs, or right code that is aware of it's own program structure is a powerful idea, I believe: Smalltalk has always had it, Lisp and Prolog mostly did, too. In the C/C++ and now Java world, it seems we always write our programs as if the program itself doesn't exist, only the things the program is about. But the ability of a program to exist as a structure itself, and to allow the programmer to reference that program is a powerfully expressive mechanism. I am particularly fond of Prolog, as it need make no distinction between programs and data. Like AOP, Prolog has the ability to allow you to change the behavior of your progaram by just adding a new clause to it's database. No need to go back to the original source code, and find a suitable place for assertion; just add your new rule, and the run-time will accomodate it.

    Finally, the second disagreement: I strongly believe parallelism will be fundamentally woven into how we program, rather than an option we add later. In fact, I believe quite the opposite will be true, that most programs will be inherently parallel (or, more precisely, highly concurrent) by default, with pruning of parallelism and concurrency part of the optimization and fault-correction stage. Why this change? The current crop of popular languages still follow the same model as 50 years ago: programs are a single set of instructions executed by 1 machine in sequence from beginning to end, and the program goes away when the sequence reaches the end. Take a look at a C program, tell me that's not how it works, and tell me that most applications today don't still deal with the same basic paradigm.

    However, this model doesn't match the resources available to us now, or 100 years from now. Every OS in use has the ability to support multiple threads and multiple processes simultaneously. Many classes of device no longer remain isolated from other devices, but can instead connect through wired or wireless networks, allowing multiple programs on multiple devices to cooperate. The rise of grid computing suggests that programmers are looking to break out of the 1-program, 1-machine paradigm in which we have been trapped. The current crop of grid computing standards are too domain-specific (I would contend), being focused primarily on batch job scheduling and seamless to large, heterogeneous datasets, but they are clearly on to something.

    So where's my money? Something like mobile agents written in Prolog with AOP extensions, capable of tr

    1. Re:2 disagreements--but an article to think about by wulfhound · · Score: 1

      I agree with your analysis of the problem of using OO code, but I don't think it'll die because of this. Rather, we'll see a maturing of "text-plus" tools (IDEs, smarter text editors), where the underlying data are text but you're able to manipulate sources in a higher level way. Microsoft are perhaps leading the way here with Visual Studio.net. If your IDE is smart enough, you either don't have to have header and interface files at all (because the compiler will pull out all the functions and generate them appropriately just before compile or whenever necessart), or you have them and you don't have to worry (because the IDE will update them in sync with your main code body). As to parallelism, quite right. From a logical point of view, and on modern and near-future systems a performance point of view also, it's very useful to be able to tell the machine about dependencies at the task level. C gives you no real way of expressing "do X and Y in any order or at the same time, but make sure both are done before you start doing Z" other than diving in to manual thread programming, which is far from ideal, never mind performance or portability issues. At the end, then, my money has to be on a partially object-oriented language descended originally from C via Java or C++, compiled to bytecode and that generates programs with at least some level of self-reference / self-extensibility (Java has this already, to some degree). We'll see some kind of parallelism constructs built in to the language (occam's ser and par, anyone?), and a sophisticated visual IDE.

  133. Slightly OT: Yahoo? by Earlybird · · Score: 1

    Why is paulgraham.com's bookmark icon the Yahoo! logo?

    1. Re:Slightly OT: Yahoo? by Raffaello · · Score: 1

      Because Paul Graham was one of the founders of the company that made the online store creation software that was purchased by Yahoo, and now forms the basis of Yahoo Store.

      Unless I missed my guess, paulgraham.com is hosted on yahoo store. To wit:

      whois paulgraham.com

      [snip]
      Domain Name: PAULGRAHAM.COM
      Registrar: NETWORK SOLUTIONS, INC.
      Whois Server: whois.networksolutions.com
      Referral URL: http://www.networksolutions.com
      Name Server: NS5.STORE.YAHOO.COM
      Name Server: ST-NS1.YAHOO.COM
      Status: ACTIVE
      Updated Date: 05-nov-2001
      Creation Date: 29-oct-1998
      Expiration Date: 28-oct-2004
      [snip]

  134. Whatever it will be called ... by Anonymous Coward · · Score: 0

    ... its syntax will be based on C, and it will still allow:

    if (a = 5)
    printf("I just made a grave mistake\n");

    for backward compatiblity if for nothing else.

  135. Next year (2004) is the 100th anniversary of... by callipygian-showsyst · · Score: 1
    Next year (2004) is the 100th anniversay of Fortran IV"

    While not is regular use, descendants like Fortran 77 are still widely supported. (Both GNU and Microsoft sill make Fortran 77 compilers.)

  136. Comment removed by account_deleted · · Score: 1

    Comment removed based on user account deletion

  137. What a load of waffle.. by MrBandersnatch · · Score: 2, Insightful
    However its interesting waffle and does have some good points. I have to disagree that if we had the languages of 100 years hence that programmers would be able to use them. I still remember just how hard C++ was for those used to C and I am amazed at just how hard peeps find XSLT to be due to its lack of modifiable variables. Recursion just doesnt seem to come naturally to many.

    Basically the problem isnt going to be with the languages - the problem will be with the concepts that created those language features.

  138. Java an evolutionary dead-end? by renoX · · Score: 1

    Sorry but Java has already produced a child: C#.

    So for Java to be an evolutionary dead-end both Java and C# should die: C# is pushed by Microsoft, Java by all the other (Sun,IBM..).

    Both won't die soon..

    1. Re:Java an evolutionary dead-end? by Raffaello · · Score: 1

      Neanderthals had children too, just not many evolutionary descendants.

      I'm betting that Paul Graham doesn't think C# is likely to be around in 100 years either.

  139. mod parent up by joss · · Score: 1

    Exactly. This is more insightfull than funny.

    The code will be part of us, except there won't be an us, there will only be I.

    The most exciting imminent development in computers is better human computer interaction (HCI). Much, much better HCI. The implications of this are somewhat surprising. Right now you type on your keyboard, its inefficient. Well lets just imagine the key board and type in space then used a camera hooked up to a computer to observe the fingers. This is possible today but pointless. How about if electrodes were planted in your arm and acted on the signals before they reached your fingers. Again, we could do this today. How about we tracked the signals back and intercepted them via an implant in the brain. This is today's cutting edge. However things are moving fairly fast. There already exist mechanisms that can detect brainwaves and people have been trained to move a mouse around a screen just by thinking about it. The interface is kinda clunky at the moment, they have to think about sex to move left and right, or oceans to move up and down. Still, it's a proof of concept, things will improve.

    People are talking about wearable PC's, but I don't think it will be long before people routinely use computer implants. With the kind of information density, we can manage these days it's actually worthwhile. Wouldn't it be nice to be able to remember everything ever said to you, or said by you. If nothing else, it would be a great help when you get into one of those "he said, she said" arguments. With todays technology you could build a portable device that remembers and voice recognizes everything you ever hear for five years. A little further down the line, and you'll be able to get an implant which will let you remember everything you ever saw. When the interface gets good enough, it will be pointless to worry about whether its stored in neurons or stored on a chip.

    British Telecom are already working on the foundations for a device that could be installed in the brain to store everything you ever see,hear feel touch or smell. Its called project "Soul Catcher", I'm not making this up.

    And for all those out there who think we're going to evolve into a race of cyborgs: you're crazy... it'll go MUCH further than that.

    After all, once people have got decent hardware implanted in their heads, do you think we're going to be satisfied with a 200baud connection (human speech). No, we'll use the hardware in our heads to communicate with other people (through the hardware in their heads). With sufficient communication, it stops making sense to talk about multiple communicating processors - you end up with a single, massively parallel computer. When people get used to taking part in the enhanced meta-brain it will become literally unthinkable to go back being an individual entity. You might as well try to imagine what it would be like to be a mollusc. Don't believe me ? - we already have this idea of "however did we manage without the internet", it's only been in mainstream use for 2 years !

    We will become the Borg, but not in a bad way. If you combine the properties of humans and computers and end up with something which does not have the best of both, then you haven't done it right. The internet will evolve from being a global suppository of all human knowledge into actually being humanity. We will be the nodes on the network. It won't take long either. Just a couple of hundred years or so at this rate.

    Of course, this is bound to cause a little friction during the transitional period. Some people will doubtless object, and probably consider the end of humanity as we know it to be a bad thing. I don't think the induhviduals (as Dogbert would have it) will stand much of a chance though, they'll be seriously out-smarted and the reliance which regular humanity places on computers will make them pathetically unable to fight against those who have plugged in. The HumaNet might have to annihilate them to protect itself. It's a bit like the old ches

    --
    http://rareformnewmedia.com/
  140. Crappy article, but good thought by Anonymous Coward · · Score: 0

    The programming languages 100 years from now won't be a programming language the way we thing about them now.

    Or I hope they won't be, since they all suck right now.

  141. Natural Lanugage programming ISN'T natural... by bittmann · · Score: 1

    Natural language interaction, sure.

    "Computer...turn on the lights. And make it warmer in here" might be OK for human-computer INTERACTION. And, what the heck...for computer-computer interaction, too, in a pinch.

    But as a "programming" paradigm? I guess it depends on what you mean by "programming" Scripting, almost certainly. But how about the "primitives" (obsolete FORTH reference) that allow such interaction to be parsed?

    Ugh...I just had an ugly thought: Some por schmuck a hundred years from now is "programming" in a language that looks quite a bit like the old Infocom command parser. And he's writing an application that looks like something along the lines of trying to complete ZORK I in one long sentence...

  142. Why languages might NOT resemble those of today by Plortzod · · Score: 1
    I can't help but think of something I already do today. I have a preferred style of brace indenting that I use with C and Java. (I won't mention the particulars since that isn't the point here) Writing a reformatter is no big deal, so I can always read code the way I prefer it. The point is no longer what is the best formatting style, but what is the best for ME to work most effectively. Some code editors have formatting choices built in. If I'm working for someone else who has a preference for formatting, I can always be sure to press a button and provide that format.

    Now think about the evolution of HTML. I am one of the few obsolete cavemen I know who still actually write HTML (and descendents) code by hand. How many people do you personally know who can read, write and create nice looking web pages with their favorite web page application, but would be completely lost trying to understand "http://www.w3.org/TR/REC-CSS2/" ?

    I think it quite possible that the programmers of the future will in this sense more resemble web page designers today than programmers today. To some sense this has already started with VB and other languages with drag and drop controls in an IDE.

    I can imaging something like CSS for programs which allows formatting and naming conventions to be specified independent of the content(actual program), and who knows what else. This would take care of wretched abominations such as WPARAM.

    Although the languages of the future will be extremely important, very expressive and very powerful, I doubt the majority of the programmers of the future will actually type them on a keyboard directly, or (see CSS2 doc above) even know how if they wanted to. It will be more important for them to visualize the problem they are trying to solve in the proper context and in the style with which they are most comfortable and effective.

    I think this is a more positive thing than it may sound. Sometime after the death of m$.gov, I predict a re-discovery of the field once called "human factors" that has been so abused and stifled by them. Programmers will be empowered to express high level concepts without having to be concerned with low level crap like the "unsafe" keyword. I hope to see this in my lifetime.

  143. Not GA, specifically. Re:My prediction. by WolfWithoutAClause · · Score: 2, Insightful
    If the computer generates the runtime code automatically (I don't necessarily agree with using GAs in fact, it seems there's lots of search algorithms out there that usually outperform GAs, but GAs do seem to work); then the question becomes one of testing it. Therefore, the programming becomes not, writing the code, but specifying what code has to do in some way, and then the computer writes the code to match.

    So say you want a chess program. You feed in the rules of the game in a special language, and it generates a program to play by searching for the program that successfully implements that.

    That sounds fantastic! You'll never have to write another line of code ever again!

    Hold on, don't get excited, it's not that simple.

    First, just because it plays a game of chess, doesn't mean it plays a good game of chess, so you might still have to tell it in quite high detail what 'good' means in terms of your program specification.

    Secondly, it's very easy to tell it the specification incorrectly. Specification errors are very common in computer software already, and having the highly precise specification language that you'll need doesn't make it easier, although the machine is less likely to screw up the implementation, so you're still better off than coding by hand.

    Still, in some cases, where the problem is easy to state, you should have a solution program in just a few minutes; whereas now it could take hours or days.

    Anyway that's where I see it go. There are some existing implementations of this kind of thing out there already, but they tend to be small. For example somebody wrote a program to find the shortest program to perform certain operations for gcc backends. You pretty much just point the compiler at a new processor and optimum code pops out, it's kind of neat. But currently this is limited to maybe 15 instructions long. I think that this will grow enormously, particularly if you throw away the constraint of having to be completely optimal, and allow 'only slightly suboptimal' programs; and faster and faster processors are coming down the pipe; so 'searching for code' is becoming more practical.

    Oh yeah, and the idea probably works for parallel and quantum computers too. Parallel searching for optimum parallel code, and so forth.

    --

    -WolfWithoutAClause

    "Gravity is only a theory, not a fact!"
    1. Re:Not GA, specifically. Re:My prediction. by Vagary · · Score: 1
      Therefore, the programming becomes not, writing the code, but specifying what code has to do in some way...

      Rather than "specifying", how about we use the word "declaring"?

      You feed in the rules of the game in a special language...

      Lets invent a term: "special" languages used for the purpose of "declaring" behaviour could be called..."declarative languages".

      Still, in some cases, where the problem is easy to state, you should have a solution program in just a few minutes; whereas now it could take hours or days.

      So these "declarative languages" will be high-level and good for rapid prototyping?

      Oh yeah, and the idea probably works for parallel and quantum computers too.

      The easiest way to make it parallisable would be to only allow expressions with no side effects, so passive function application would have to be the primary means of computation.

      You know, this rings a bell; I'm sure I've heard of something like this before...?

    2. Re:Not GA, specifically. Re:My prediction. by WolfWithoutAClause · · Score: 1
      Lets invent a term: "special" languages used for the purpose of "declaring" behaviour could be called..."declarative languages".

      Yes, it would be a declarative language. No, it would not be necessarily like, say, Prolog; although you might be able to implement it in a language like Prolog.

      The easiest way to make it parallisable would be to only allow expressions with no side effects, so passive function application would have to be the primary means of computation.

      You could certainly express the specification in a functional language. But it's unnecessary, exploring program space is highly parallelisable without much communication so it doesn't get you far.

      The point is not to write a program in a declarative language. The point is to write a specification in a declarative language that describes the behaviour of a program to quickly solve a class of problems. If you want to look at this as a prolog compiler on steroids, then I think you're not entirely wrong, but you've missed the spirit of the idea.

      Just because something is equivalent to a compiled Prolog program doesn't mean that's the best way to implement it; on the other hand it doesn't mean it isn't either. (Actually, since Prolog is Turing complete, everything is equivalent to a compiled Prolog program, that's partly why I think you've got the wrong end of the stick.)

      --

      -WolfWithoutAClause

      "Gravity is only a theory, not a fact!"
  144. Re:Zero Ambiguity... by OGmofo · · Score: 2, Insightful


    A friend once asked me, "When will computers be so easy to program that a six year old child can do it?"

    I replied, "When six year old children can specify a task with zero ambiguity."

    Its perfectly fine to have some english like programming, it simply must be as unambiguous as possible:

    Computer, load memory location 40343 into register 6.
    Computer, add register 6 to register 8.
    Computer, if overflow, jump to address 52895.

    I'll stick with C++.

  145. Java and the Future by SoupIsGood+Food · · Score: 2, Interesting

    The author's claim that Java is a dead-end language like COBOL is patently ludicrous, and by dismissing Java out of hand, he undermines the rest of his article.

    Java is essentially a re-implementation of C; it's a very C-like language in syntax and semantics. The goal was to do an OO language based on a familiar paradigm. In addition to eliminating some of C's less endearing traits, it brings two things to the table, both of which which will shape future languages:

    1. Re-usability. Sun offers you a crapload of very usefull re-usable objects in their JDKs, and people like the Apache project offers you even more. The ability to do insanely complex prrojects with tiny amounts of effort is one reason why Java rules the corporate enterprise. Future languages will start looking more and more like a big box of legos: find the parts you need and plug them together.

    2) A universal computing environment: you can't write to the metal in Java, but it's not as slow as interpreted languages like Python and TCL for gigantic computing tasks. Any project, no matter how monolithic and task-optimized, is as portable as the VM is. Anyone who's had to manage a platform migration for key buisiness applications, from VAX to Solaris, say, or worse, from S/360 to Windows, knows the pain of re-implementation. That pain is gone when you use a VM-based language like Java.

    Projects like Squeak are looking more and more like Java these days, in terms of re-usability and VM-based platform independance. The only missing piece of the puzzle are popular VM environments not tied to any one vendor: Java needs to cut its dependancy on Sun JDKs, or it will be supplanted by another language that is independant and standards based.

    This isn't to say that other languages aren't going to evolve, too, or are useless because they're not like Java. Ayone who programs in the new interpreted scripting languages: PHP, Python, Perl, Ruby, TCL, Scheme, etc, etc, can attest to the power of the that approach to modern computing.

    On the other hand, I really don't see any new compiled-to-the-metal languages emerging. Fortran is used for high-performance computing, Forth is used for tiny computers, and C/C++ is used for system programming. It will very likely be the same way in another 20 years, or another 50. The difference is that applications will slowly drift to either VM languages or interpreted languages from binaries compiled from source.

    1. Re:Java and the Future by Anonymous Coward · · Score: 0

      Projects like Squeak are looking more and more like Java ?!?!?!??!? Shouldn't that be the other way around?

      Squeak was born in 1996 (the same year as Java was released, wasn't it?) as a result of dusting off the original Smalltalk-80 image licensed to Apple from Xerox.

    2. Re:Java and the Future by Raffaello · · Score: 2, Insightful

      "Projects like Squeak are looking more and more like Java these days, in terms of re-usability and VM-based platform independence."

      Wow, do you know anything about the history of programming languages?

      Java's OO is based on Smalltalk, quite intentionally, not the other way around.

      Smalltalk ran on cross platform virtual machines long before Sun decided to foist it's failure of a set-top box language (i.e., Java) on the internet in the mid '90s.

      Squeak is a deliberate attempt to recreate the original Smalltalk from ca. 1970.

      So, yes, Java is an evolutionary dead end because it badly implements only some of the features that Smalltalk had 30 years ago, and contributes nothing new, unless, of course, you consider the exalted levels of marketing hype.

    3. Re:Java and the Future by VFVTHUNTER · · Score: 1

      1. Re-usability. Sun offers you a crapload of very usefull re-usable objects in their JDKs, and people like the Apache project offers you even more. The ability to do insanely complex prrojects with tiny amounts of effort is one reason why Java rules the corporate enterprise.

      No, Java rules the corporate enterprise because Sun marketed it. The non-technical bosses in companies pushed their developers into using it. Its success is a function of buzzword popularity.

      2) A universal computing environment: you can't write to the metal in Java, but it's not as slow as interpreted languages like Python and TCL for gigantic computing tasks. Any project, no matter how monolithic and task-optimized, is as portable as the VM is. Anyone who's had to manage a platform migration for key buisiness applications, from VAX to Solaris, say, or worse, from S/360 to Windows, knows the pain of re-implementation. That pain is gone when you use a VM-based language like Java.

      That pain is also gone is Lisp. Java is 90% of Lisps portability. The difference is that in Lisp you move the source. If you need speed, you can compile to machine code without rewriting code.

      This isn't to say that other languages aren't going to evolve, too, or are useless because they're not like Java. Ayone who programs in the new interpreted scripting languages: PHP, Python, Perl, Ruby, TCL, Scheme, etc, etc, can attest to the power of the that approach to modern computing.

      Each of the languages you describe - PERL, Python, Ruby - are progressively closer and closer to Lisp. Scheme is, in fact, a dialect of Lisp. It's a good thing that you proved the authors point, since he undermined it. Also, the "new" things that make Java and other languages so popular - Garbage Collection, for instance - have present in Lisp since 1958. To quote Graham directly: "It's 2003, and we've almost caught up with 1958."

      On the other hand, I really don't see any new compiled-to-the-metal languages emerging. Fortran is used for high-performance computing, Forth is used for tiny computers, and C/C++ is used for system programming. It will very likely be the same way in another 20 years, or another 50. The difference is that applications will slowly drift to either VM languages or interpreted languages from binaries compiled from source.

      That's why he talks about code profilers - you write in a highly abstracted language, the profiler "talks to the metal" for you.

  146. Sidenote: Species that Merged by abhinavnath · · Score: 1

    He talks about the descendants of Algol and Fortran merging, and then has a throwaway line about that never having happened to actual species. I think it's interesting that something like that has probably occurred at least twice in the history of life.

    Mitochondria and chloroplasts are two of the most complicated organelles, cellular machinery found in complex organisms. Chloroplasts, found in the cells of higher plants, carry out photosynthesis, converting solar energy to food (glucose). Mitochondria are found in both animals and plants, and use oxygen to extract energy from nutrients. Both have very complicated mechanisms that we haven't completely elucidated yet, and are crucial to the survival of their respective host organisms.

    Here's the weird thing, though: all of the chloroplasts and mitochondria seem to have descended from bacteria that that invaded (or were taken in by) ancient cells, back in the days before multicellular life. These organelles have their own rather simple genomes, and reproduce independently in the cells of the "host" organism. What started out as symbiosis on a cellular level has evolved over billions of years until neither the complex eukaryotes nor the simpler organelles can survive without the other.

    A little offtopic, I admit, but I couldn't let the opportunity for a lecture pass me by. At least you learned something from slashdot today ;)

    --
    My other sig is also a .Porsche
  147. Functional languages will be the survivers by Anonymous Coward · · Score: 2, Interesting

    because they can take advantage of parallelism by virtue of the fact that each function call does not produce any side effects. So a grossly inneficient Lisp program on a uniprocessor can be made to be blindingly fast on a million CPU machine. Erlang would also benefit since it uses this same model. Non-functional languages like C and Java don't have a snowball's chance in hell of scaling to a million processors.

  148. I read the whole essay... by pohl · · Score: 1
    ...and loved it. The author has a deliciously dry sense of humor, and offers an interesting insight. For those of you who did not have the patience, the whole point of the article came at the very end. Since we can project that in a century the resources will be enormous (by our standards today)...

    Now we have two ideas that, if you combine them, suggest interesting possibilities: (1) the hundred-year language could, in principle, be designed today, and (2) such a language, if it existed, might be good to program in today. When you see these ideas laid out like that, it's hard not to think, why not try writing the hundred-year language now?

    I think the same thing would be true of the 100-year operating system, and that these two long-term visions need to be aware of each other. Every time I read about some amazing new OS architecture, like EROS for example, somewhere in the literature there's some essential feature that the designers think cannot be done unless the language & compiler writers get together with them.

    Alas, the long-view language designers are off in their own world away from the long-view OS designers. This, combined with the seemingly-insurmountable problem of propagating the new cultural elements of programming, makes me think that we're toast. In 100 years, the state of the art will be only slightly less miserable than it is now. There will be fascinating research projects off in a corner, but no one will use them because of retraining issues, or abysmally-inadequate libraries.

    If we're smart and we follow the author's advice, however, maybe 100 years from now the libraries will be there, and the ideas will have propagated.

    --

    The "cue the foo posts in 3, 2, 1..." posts will commence with no subsequent foo posts in 3, 2, 1...

  149. Re:Waste of Time - Whose time? by veskoteque · · Score: 1

    One of the main points in this article is programmer's time is more precious than machine time.
    Programmer's time might be more precious than machine time when writing small scripts and proof-of-concept code, intended for a TINY audience, but USER time is more precious than programmer time when developing real applications, and USER time wastage is directly correlated to machine time wastage.
    I agree with much of what he is saying - about CPU power being massivelly wasted. I honestly would not have believed back in 95, that the performance (or should I say user experience) I got out of my 100Mhz CPU with 32MBs of RAM will be roughly comparable with my 2200Mhz machine with 700MBs of RAM when using most applications (GTA III being a notable exception)....
    On the other hand I, can't believe that he would suggest that we go forth and waste a million times more power for NOTHING!!!!

  150. The thing to revolutionize computing... by xRelisH · · Score: 1

    My vision of what will revolutionize computing is the ability of hardware to be non-static. That is, hardware would be able to change itself ( much like the human brain), and theoretically, make EVERYTHING hardware accelerated.
    You would buy hardware like normal, but what you would actually get would be a little rectangular cube full of goop that goes into something that would represent your motherboard. Then you would have to load the layout itself, and the CPU morph itself and make the correct pathways.
    Another related thing would be the memory structure. Right now memory is like one long chain (or a bunch of connected chains). It would be interesting if memory was like water, where you could arrange each unit (a byte I guess) in any pattern you would want, and you would have a sort of "hardware linked list".
    I think this change coupled with the new CPU concept would make the languages 100 years from now more powerful, as your hardware would be completely configurable, and you would do more abstract things without having to simulate them.
    This could also pave the way to AI, which I believe needs a system where its hardware can change itself almost completely.

  151. Bad coder paradox. by Pinky · · Score: 1

    Everyone memorise this table

    When it comes to designed by then -> maintained by remember this table ->

    key:
    Wrote it -> maints it = complains code is "bad"??

    bad coder -> (good coder) = complains code is "bad"
    good coder -> (bad coder) = complains code is "bad"
    bad coder -> (bad coder) = complains code is "bad"
    good coder -> (good coder) = no complaints.

  152. natural language programming? by kisrael · · Score: 1

    I wonder if he might be too pessimistic in terms of thinking how much programming then will look like programming today. I wonder if artificial intelligence might be able to play a huge role, letting people describe the program they're looking for, seeing models appear on screen, editing them, and running simple tests.

    This might not be as far fetched as it sounds. Computers in 1980s were able to run a decent parser in games like Zork. If you limit the scope of what a program needs to know about the world (and I'm not saying programming will be "write me an accounting system", these programmers will talk in terms of screens, what's stored, what caluclation is done, etc, in a very high level way) then parsing and understanding enlglish is pretty much a solved problem.

    Maybe casual programmers would right like that, and then experts would be able to check in on the generated "real code".

    This type of programming won't be usable for everything, but I certainly can see it in place of Office VBA and even COBOL (which was an attempt at the same thing, letting businessmen describe their problem in something like English, and a lot better at it than people give it credit for. Computers used to be divided into "business machines" (that would often work in packed decimal format, and other currency and integer friendly things) and "scientific machines" (that used floats and had different priorities) I think the same gap happened in programming, but the "scientific" paradigm became dominant, partially because it was more effecient on the limited hardware available.

    --
    SO YOU'RE GOING TO DIE: The Comic for Dealing with Death
  153. Article Summary by Mannerism · · Score: 2, Insightful

    Here's what I got out of it:

    Nobody really has a clue what programming languages will be like in a hundred years, but if all the Perl and Python weenies would learn LISP then maybe we could get somewhere within the next decade.

  154. Really? by damas · · Score: 1

    Use the right tool for the job.

    Using XML to write config files is SHOOTING yourself in the foot. You're better off using natural language. For one, it's easier to parse.

    Using XML to represent/pass around data is ... shooting yourself in the foot. You still have to build an application on top of it, so use a database and nice well-behaved database clients. (like a SQL news server on port 5555 - all the headlines you can get - make the format standard and that's all folks)

    That leaves XML for ... I don't really know ... Microsoft, standard groups and university courses?

    And really, really masochistic developers...

    1. Re:Really? by sporty · · Score: 1

      Not really. Look at the apache config file. WOrks wonders. Maybe for DNS would work as well. Works for HTML. Html is an XML derivative.. or the other way around chronologically.

      Now granted, using XML for the password file would suck.

      As for your app argument, to parse it isn't that hard. jdom, for a config file, is really fast to implement. For simple tabular data, csv an work as well, just depends on your task, eh?

      SO it leaves XML for lots of uses.. just not all of them

      --

      -
      ping -f 255.255.255.255 # if only

    2. Re:Really? by Compenguin · · Score: 1

      HTML is a derivitave of SGML, XML is a derivative of HTML, XHTML is a reformulation of HTML to make it fit the rules of XML

  155. *Yawn* Could this article be any more myopic.. by anactofgod · · Score: 1

    I had high hopes to read something *really* interesting based on the lead up, only to be sorely disappointed once the article actually unfolded.

    Before anyone can hope to write an article on the nature of programming languages 20 years into the future (let alone 100 years into the future) that stands a chance of being insightful, one should pick up an advanced applied physics book, brush up on quantum mechanics, and then move on to researching the state of development in the area of quantum computing.

    This article will prove to be as prescient as an article titled "100 Year Buggy Whip" would have been in 1903. ...anactofgod...

    --

    ---anactofgod---

    "Equal opportunity swindling - *that* is the true test of a sustainable democracy."
  156. Counterexample by StrawberryFrog · · Score: 1

    I think that, like species, languages will form evolutionary trees, with dead-ends branching off all over. We can see this happening already ... I predict a similar fate for Java

    A counterexample, a descendant language / language heavily influenced by Java is of course C#.net.
    IMHO Java will likely be seen as the time when garbage collected languages went mainstream.

    --

    My Karma: ran over your Dogma
    StrawberryFrog

  157. Re:Abandon complex structures? Never! by lbergstr · · Score: 1

    The lists he's talking about are (I'm guessing) actually S-expressions, which can express anything XML can.

  158. APL by mccoma · · Score: 1

    I suppose if we get handwriting recognition to the point where it is everywhere and can pick up symbols pretty well, then APL could make one heck of a comeback.

  159. Wrong question is being asked. by AxelTorvalds · · Score: 3, Insightful
    These "language discussions" are always flawed. There are zealots who like one hammer for every nail and then there are these other zealots that are so far from the actual problems that their ideas are kind of hoaky.

    Heirarchy will continue to exist. It's the only concept the human brain has to deal with complexity, call it what you will but you classify and associate things in to hierarchy whether you're aware of it or not. I see no reason to believe right now that processors will have more advanced instructions than they currently do now; they may be very different (like optmisitic registers that know values before they have been calculated or something) but they will be on the same order of complexity. The atomic operations will probably remain at the same order of complexity in biological processors, quantum, or SI/GAAS/whatever based transistor processors. I don't see how sort a list will be done without some sort of operations to look at elements in it, compare them, and then change their ordering. Even with quantum computers you have to set up those operations to happen and cause results. That being said there will always be an assembly language.

    On top of that there will always be a C like language, if it's not C, that will be a portable assembly language. Then there will be "application" languages built at a higher level still. That won't change, for good reasons, it's just too complex to push the protection and error checking and everything down a level. I'll give examples if you want them. The easiest one that comes to mind is something like Java garbage collection and how programmers assume that it has mystical powers and are shocked when they fire up a profiler and see leftovers sitting around, it's a very complex piece of software and you expect it to go down to a lower level? The lower levels have their own problems keeping up with Dr. Moore.

    I think the other biggest area is that reliability needs to go up by several orders. Linux, BSD, Win2000 and WinXP are pretty reliable but they aren't amazing. I've seen all of them crash at one point or another, I may have had hand in making it happen and so might have hardware; either way it did. To really start to solve the issues and problems of humanity better we need to have more trust for our computers, that requires more reliable computers and that require different methods of engineering. The biggest thing going on in programming languages now to deal with that is Functional Programming. In 50 years I could see some kind of concept like an algorithm broker that has the 1700+ "core algorithms" (Knuth suspects that there are about 1700 core algorithms in CS) implemented in an ML or Haskell like language, proven for correctness, in a proven runtime environment being the used in conjunction with some kind of easy to use scripting glue. And critical low level programming will be proven automatically by an interpreter at compile time, they are already making automatic provers for ML.

  160. Things I'd like to see by salesgeek · · Score: 1

    Recently I've been learning Python and working with Zope. Wow. What a change from the old days of C. What Python and Zope do that C wasn't good at is deal with complexity very elegantly. I'm sure a lot of other newer languages are this way, too.

    I can only imagine what a single line of code will be expected to do in the future - and the degree which the program will be expected to "understand" large chunks of information. The idea that a program be able to do things quickly and self-manage most of the details will be important...

    Of course, in 100 years, the computers may be reprogramming us...

    --
    -- $G
  161. That won't make your grandma a programmer by matvei · · Score: 2, Insightful
    Learning the syntax of a language is trivial compared to problem solving itself. Joe User will make the same logical fallacies (= bugs) using English that he would if he was using Python/C++/COBOL.

    Besides, the syntax of English language is a lot more complex than that of most common programming languages. Because of that it would be easier for non-native English speakers to learn some simple scripting language than to learn English well enough to avoid syntax errors on line XX.

  162. Monkees in 100 years by axxackall · · Score: 2, Interesting
    That's b/c most of managers are "smart" enough to give the job to many monkees thinking that the quantity is more important than quality. Such management style is the main consumer for procedural (imperative) languages. Non procedural languages are good to describe the problem, but who need them if no one know the problem. Just try the procedure and see if it works.

    You know what, on a second thought I realize that 100 years is not enough for the humankind to move away from being monkees. Thus, Java forever!

    --

    Less is more !
  163. Interactivity by John+Bayko · · Score: 1
    Think about police sketch artists. They take vague, half remembered information...and turn it into a very accurate rendering of the original image.
    No they don't - they make some face-like shapes, and keep asking if that's right, and the witness keeps making adjustments (more hair, bigger nose), and so on until you have the desired result.

    That's not a description, that's a conversation. A program is a description.

    That's not to say that an interactive system isn't a good way to create a program. The conversation between the programmer and IDE could be recorded verbatim (imagine a word processor saving a document by recording every keystroke, even block moves and deletions), or the results could be recorded in an incomprehensible binary format - like those "resources" you need to design to make MFC dialogs and the like. Or the results of the interaction could be stored as a distillation of all the answers from the programmer, basically the IDE tool describing what it learned in its conversation with the programmer.

    There - that final description, that's the program, and whatever format you use to unambiguously describe the data and precisely how it's used, that's the language.

    The process may be like spoken language, the program must avoid any ambiguity and so can't be.

    1. Re:Interactivity by ichimunki · · Score: 3, Informative

      We do already have some primitive forms of this conversation idea via versioning systems like CVS. The problem is writing a program that recognizes patterns in the changes and learns to do that stuff on its own.

      Also, think about languages like Ruby or Lisp where the interpreter can alter a program while it's running. As an example I wrote a small text editor in Ruby/Tk in which you could modify the source code to the editor in a buffer, then choose "eval buffer in application", and that code would run in the context of the application. Once you have the core of such a program, with proper error handling, you need never turn the program off again (as long as you don't redefine the core engine with a bug). I was able to add menus, menu items, rewrite existing routines, etc, all while executing the original code. Of course, emacs has been doing this same thing for years...

      Using both CVS and live eval you get much closer to code being a conversation between the programmer and the system.

      --
      I do not have a signature
    2. Re:Interactivity by voodoo1man · · Score: 1
      Also, think about languages like Ruby or Lisp where the interpreter can alter a program while it's running.

      In most Common Lisp implementations, this is commonly done by the optimising, inlining native code compiler.

      --

      In the great CONS chain of life, you can either be the CAR or be in the CDR.

    3. Re:Interactivity by ichimunki · · Score: 1

      So is the compiler running the program then? If not, how is it changing the code while it's in memory, being executed? Perhaps I should not have mentioned Lisp, but mostly what I was thinking of was the Lisp interpreter in emacs.

      --
      I do not have a signature
    4. Re:Interactivity by voodoo1man · · Score: 1
      So is the compiler running the program then?

      Exactly. The reason I mentioned that is that an awful lot of people seem to think that dynamic programming languages can't be compiled to native code (actually, the biggest confusion seems to surround dynamic linking). I think this is because the majority of dynamic/scripting languages are just written as interpreters/bytecode compilers for portability.

      --

      In the great CONS chain of life, you can either be the CAR or be in the CDR.

    5. Re:Interactivity by ichimunki · · Score: 1

      I'm still not sure I understand. If the program is compiled to native machine code, and sitting out on my drive as a separate file from the source code, and I go to run it with the standard notation, how is the compiler going to modify the running code without being linked into the program (either dynamically or statically)? And if the compiler is linked in, how is this materially different from running byte-code in an interpreter?

      --
      I do not have a signature
  164. C, obviously by return+42 · · Score: 1

    It's already been in use for XXXIII years...

  165. Re:Abandon complex structures? Never! by InnovATIONS · · Score: 1

    I agree, I didn't really get throught the article much past the idea of strings just being lists. We have been down the path of loosely typed languages like VB4 and had a bad time of it not because they were inefficient (although that was a complaint) but because they were error prone. Whether it technically is a list or a structure is somewhat irrelevant. A string is a type of information which you expect to be able to do some things with and you expect it to be impossible to do other things with. Just because you could call all data just one thing doesn't mean that you think of and work with all data as one thing. That was the lesson we learned, badly, with variants. The broad evolution of languages (from binary, to assembly to high level languages to prebuilt function libraries to structured programming to object oriented programming) has exhibited a consistent trend away to greater abstraction of the machine and having the language represent the concepts of the task at hand rather than the concepts of the hardware. But calling everything a list rather than a string abstracts away from the task at hand (I want to find the first word in a sentence, for example) Parallel with this there has been a pendulum effect between languages that are terse and symbolic and those that tend to use descriptive words. A typical example is Pascal using BEGIN and END statements and C just using curly braces {}. The most popular mix right now seems to be terse logic but wordy object, function, and method names, but that will change too.

  166. No evolution! by VanillaCoke420 · · Score: 1

    This "evolution of computer languages" is of course an unsubstantiated myth made up by pagan scientists. Surely we all know that the Computer Languages (yes, all of them) were created 4004 years ago, on July 23rd, around noon. ALL the Languages were created back then, and NONE have ever become extinct. LISP and VisualBasic did in fact live side by side, unlike what some people (blasphemous scientists) want you to believe.

  167. As Few Axioms as possible? by dbretton · · Score: 1

    I think not! Syntactic sugar is critically important.

    Take scheme, for example. No for loops. Ack!

    Here's your computer language with as few axioms as possible:
    1 0

    1. Re:As Few Axioms as possible? by Elbows · · Score: 1

      Having few axioms doesn't rule out syntactic sugar. If your axioms are universal, you can use them to write the syntactic sugar. (Having Lisp-style macros helps)

    2. Re:As Few Axioms as possible? by dbretton · · Score: 1

      This reduces the ability of the designer to rapidly create a product. Now the designer has to construct libraries of routines himself in order to build his product.

      Here's a simple example:

      Let's say I want to model a function, say, y = x**2, over a range of x = {-50, 50}.

      How many lines of Lisp would it require?
      How many lines of Matlab?

    3. Re:As Few Axioms as possible? by Raffaello · · Score: 1

      You can write Matlab in Lisp. You can't write Lisp in Matlab.

      See the difference? Graham is talking about a flexible language that can be used to write the domain specific languages (like Matlab).

      Languages that are very powerful, each in its own domain, are all much less generally useful than a small, flexible language that programmers can build domain specific languages on top of. This is the power of turing complete macros. It's this flexibility that makes such a language likely to last 100 years.

  168. Agreed. C == "the Wheel" by Cthefuture · · Score: 1

    The wheel was invented, it was good. We have continued to refine it over the years, but a wheel is a wheel.

    Same thing with C (and to a certain extent its predecessors). At least as far as current computer architecture is concerned, C "is it". C breaks down to the machine level nearly perfectly and supports a notation similar to normal mathematics.

    All we need to do with refine C. Note that I'm _not_ talking about the current crop of C descendants. You know, those "OO" languages like Java, C++, and C#. If you have ever worked on a complicated OO project then you know about the myth of OO and reusability. OO gets just as complicated as anything else, and often more complicated because programmers often go too far with OO practices when they are not needed.

    By refining C, I mean adding things that we know we need from past experience. For example:

    - C needs some sort of modulerization. Namespaces would probably work. Keep binary compatibily though, just prepend the namespace name to external symbols (see: Cyclone)

    - C needs some sort of powerful macro/template system. Something turing complete, Lisp-like, or C++ template-like. Somethining that supports generic programming.

    - Make const references the default object passing mechanism (see: Java). Have special syntax for modifyable objects and pointers. But discourage the use of pointers.

    - Have some sort of default memory management. A garbage collector that can be turned off if you need performance.

    - Arrays should be bounds checked by default with special syntax to disable the check when performance is needed.

    And of course there are other things. But I'm trying to think of known working concepts that have been proven to work and be good. Kinda like what the C99 extentions have added to C already (inline functions, etc.).

    --
    The ratio of people to cake is too big
  169. Something useful! by rve · · Score: 1

    The programming language of the future:

    Computer:
    using (doorknob) {
    do (something_useful) for (2 hours)
    worth ($100)
    } and (phone_me) when done

  170. New Language...Monty Python by Ant2 · · Score: 1

    while (spam) :
    print "Hello Spam";

  171. interfaces? templates? hello? by beebz · · Score: 1

    wow, an article about the future of programming language where a search for "interface" and "template" fails. my conclusion: worthless article. coding an implementation of an interface on a platform is the easy part or computer science. coming up with the interfaces and designing the platforms is the real work. well engineered interfaces means hooking code together (in different languages, running on different platforms, etc.) is easier and in this respect real-world computer science is still in the dark ages.

  172. Well said! by iamacat · · Score: 1

    A string is a unit of human language. It has methods, starting from trim(), spellCheck() and speak() (yes, you have that in Cocoa today) and leading to things like translateToLanguage() and undestandAndExecute() in future. These methods will be very confusing for a list. Just like square root will be a strange concept for a number represented as a list.

    The article kind of sucks. It makes a lot of unfounded claims, like that Java will not influence the future, but Python will. It fails to flash out any interesting things we'll be able to do. If anything, it's talking about the future of academic research languages which tend to be minimalist. By contrast, good real world languages are feature-rich, but the features are hidden away until you need them.

    So I bet a future language will have numbers, strings and lists. Object-oriented programming will florish in the sense that you will address real-life objects as instances of language types and you will be able to program in new types.

    One difference is that you will be able to give names to your objects and collections of objects and also speak to them in a human language rather than only refering to them in a program. Like, "All window blinds, please open". Also, an object will not just refuse to run an unknown method. If you ask your pet robot to cook a meatloaf, it will ask you questions or watch you, or another robot do the task once and after that robot.cookMeatLoaf(int weight) will be fully implemented and available.

    In general, programs will not be visible as text, or a formula in most cases. You will lay down a program by speaking to the computer in natural language first. This will create a very imprecise, buggy program that will be executable as a best guess using AI and fuzzy logic. Then you will need to continue clarifying it, like telling your robot that cleaning the floor doesn't mean removing guests until you feel the result is good enough. However, the computer will remember your previous programs and clarifications and try to apply them to the new one automatically. But, to make very precise qualifications, you will still switch from human speech to plain old programming.

    BUT, this will only apply to programming for high-level, every day tasks. To solve a square equation, you will still write, or type a square equation. Mathematics and physics applications will still have access to programming languages much like the ones today, except executed at a great speed and still using AI to detect possible bugs. So will programs for very precise control, like spaceship navigation or mass manufacturing. If paper survived for hundred years, even with radio, TV and Internet, so can a traditional, equation-based programming language - for use when you are thinking about equations.

    1. Re:Well said! by pHDNgell · · Score: 2, Insightful

      I'm a professional java programmer. I also do objective C (before Cocoa), Smalltalk, python, C, scheme, Haskell and a few other languages reguarly. I've managed large perl based projects, written high-performance data processors in Ocaml, written a billing system in C++, a monitoring system mostly in tcl, games in assembler, data processing systems in eiffel, and hell, I even did a CueCat decoder in javascript a while back.

      While I've still got quite a bit to learn, I can say you're missing the point if you don't understand what he's saying about java being a dead end on the evolution of languages.

      What does java have to offer to evolution? I can't think of much that java as a language has brought us that's new.

      Being VM based? It's more acceptable now, but it's not new. OO? It barely does that well at all. Hmm... Libraries. JDBC is ODBC with a touch of sanity. The collections look very much like the collections of Smalltalk finally (which also appear in objective C).

      Overall, without doing something revolutionary, I don't see how it can contribute that much to evolution.

      Revolutionary languages are languages like lisp (which is a sad story in that it's still capable of doing everything any other language can do, often with less effort), smalltalk (actual OO is a lot more simple than partial OO), Haskell (smaller change, but you can be terse without being cryptic...almost a common language for design and specification), etc...

      Many languages have made some contributions to programming in general and will change the way people think about development. Python may not hold the influence of lisp or smalltalk, but it does do some things that future language designers will consider (for example, yield for generators vs. call/cc is an excellent improvement in helping expressing what you mean).

      --
      -- The world is watching America, and America is watching TV.
  173. Re:Aliens and XML by Dr.+Smeegee · · Score: 1

    Actually I think FORTH has that baliwick... or is that footing yourself in the shoot?

  174. Did you mean to say... by MeanE · · Score: 1

    In 100 years there will be computers that can run Java apps smoothly?

  175. Re:AI-Baby steps. by Anonymous Coward · · Score: 0

    Not quite. But I think that the paradigm of the future will be the one of the past. Don't micromanage. Programming (as well as hardware design) is an exercise in percisely defining what a machine is to do. Better to tell a machine what the goals are and have it figure out the intermediate points out. A better way IMHO to dealing with an ambigious world. This will be resisted by most because it means a certain loss of control, even though real life problems already represent a loss of control by our inability to grasp them in their entirety, and break them down appropriately to fit our presently rigid level of technology. Programming (and other design) will be careful steering from intermediate goal to goal. As our knowledge and experience grow, the distance between goals will grow as well, to the distant point of were we can give start and end and say "go do this".

  176. Wrong Field of Comparison by Captn+Pepe · · Score: 1

    The evolution of languages differs from the evolution of species because branches can converge. The Fortran branch, for example, seems to be merging with the descendants of Algol. In theory this is possible for species too, but it's so unlikely that it has probably never happened.

    No kidding. The evolution of languages is probably different from the evolution of species because, well, they're languages. Paul Graham seems to have overlooked the fact that there's already a fully-formed field of study devoted to things that evolve like languages. It's called linguistics. He's probably heard of it.

    When I was a kid, I had a grand old time flipping through the back pages of the unabridged American Heritage dictionary. One item of interest in there is a (then current) language tree illustrating the radiation, convergence, and development of linguistic families derived from Indo-European. The dictionary's editors assured their readers that, while informative, the printed tree was a gross simplification of the real state of affairs.

    My point being, I am inclined to suspect that a field that can examine modern languages and scraps of historical writing and extrapolate back to reconstruct languages dead for thousands of years, has the tools to make sense of fifty years of computer languages and get a sense of the general trends going forwards.

    --

    Quantum mechanics: the dreams that stuff is made of.
  177. Re:OT: Stop with the SUV bashing already! by haystor · · Score: 1

    Then what you have purchased is a TRUCK. An SUV is nifty marketing term for soccer moms that can't buy a mini-van for when dad has to be seen in it. Its these purchases that he's saying are ugly.

    The SUV carrying a single person with no cargo around city streets is wasteful.

    All of this reminds me of the joke, "Four wheel drive just means you get stuck farther out."

    --
    t
  178. (OT) Re:I predict... by PetWolverine · · Score: 1

    What's the source of the quote in your .sig? I've read it before, but I can't remember where.

    --
    I found the meaning of life the other day, but I had write-only access.
    1. Re:(OT) Re:I predict... by $rtbl_this · · Score: 1

      It's from a radio series called Blue Jam, written by Chris Morris. Specifically, it's from the "Suicide Journalist" sketch.

      --
      "Are you being weird, or sarcastic?" said Emma. I said I didn't know because I get the two feelings mixed up.
  179. Author bias by MojoRilla · · Score: 1

    Clearly this author loves Lisp, and hates Java and object oriented programming.

    And clearly, his opinions in no way reflect mainstream programming today.

    Let me make a prediction. Lisp died in the early 90ies. Java's ideas (especially the virtual machine) will survive and take over.

    1. Re:Author bias by Raffaello · · Score: 1

      "Lisp died in the early 90ies."

      Lisp is alive and well (franz.com, lispworks.com, digitool.com, alu.org, cons.org, etc.)

      " Java's ideas (especially the virtual machine) will survive and take over."

      The virtual machine is not a Java idea. Neither is Java's broken object system. Hint: Java cribbed Smalltalk's real object system and got it wrong. Guess which OO language from the 70s ran, and still runs, on cross platform virtual machines?

      The reason Java is an evolutionary dead end is not that these are not good things (Yes, a VM and garbage collection are good things). The reason is that Java didn't invent them, and has implemented OO in a broken fashion, so it is a step backwards, not a step forward. There will be no descendants of Java in a century, because future languages will be descendants of Smalltalk, or Lisp, or ML, or Erlang, i.e., descendants of languages that got the basics right, not broken.

  180. Yep, dead end by Anonymous+Brave+Guy · · Score: 3, Informative
    dead-end? Java has already spawned javascript and C#.

    ...Neither of which has done anything to advance the state of the art in programming languages, even if your claim were true.

    The one thing I have confidence in about programming in the future is that sooner or later, the tools and techniques with genuine advantages will beat the "useful hacks". Java, C++, VB and their ilk are widely used today because they can get a job done, and there's not much better around that gets the same job done as easily.

    Sure, there are languages that are technically superior, but they're so cumbersome to use that no-one really notices them, and when they do, you don't have the powerful development tools, the established code base of useful libraries, the established user base of developers to hire, etc. When we get to the point that languages with more solid underlying models catch up on ease of use, then we'll relegate the useful hacks to their place in history as just that. Until then, we'll keep using the useful hacks because we have jobs to do, but don't expect the tools of the future to be built on them.

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  181. RISC by pabtro · · Score: 1
    The article belongs to the 60's together with a description of X generation languages and/or Samuel's Checkers Player. The author describes a scenario, where primitive logical constructs are the real deal: A logical exercise, involution, simplification , a lot of work. It seems that we are going to end up coding microcode as an academic excerise.

    If we not destroy ourselves, in 100 years the machines will take care of us, code writing included.

  182. There will be THREE new languages by Clod9 · · Score: 3, Interesting

    Language structure is determined by two things:
    1. the target machine architecture
    2. the range of expression required by the programmer and/or workgroup

    Java is "successful" but it really looks a lot like Algol and Pascal,
    as does C++. The range of expression is greater in the newer languages
    (object-orientation in Java and C++) but the forte is still that of
    expressing algorithms in written form to be used on a stored-program
    digital computer.

    WILL WE STILL BE PROGRAMMING?
    Take one example -- genetic programming. If you had a programming system
    where the basic algorithm could learn, and all you had to do is set up
    the learning environment, then you'd be teaching rather than programming.
    In fact I believe THIS is what most "programmers" will be doing in 100 years. The challenge
    will be defining the problem domain, the inputs, the desired outputs; the
    algorithm and the architecture won't change, or won't change much, and the
    vast majority of people won't fiddle with it.
    But if HAL doesn't appear and we aren't all retrained as Dr. Chandra,
    I believe we'll still be handling a lot of text on flat screens.
    I don't think we'll be using sound, and I don't think we'll be using pictures.
    (see below)

    So predicting what languages will be like in 100 years is predicated
    on knowing what computers and peripherals will be like. I think progress
    will be slow, for the most part -- that is, I don't think it will be all
    that much different from how it is now.

    HOW WILL OUR RANGE OF EXPRESSION CHANGE?
    If we relied primarily on voice input, languages would be a lot more
    like spoken natural languages; there would be far less ambiguity than
    most natural languages (so they'd be more like Russian than like English,
    for example) but there wouldn't be nearly as much punctuation as there
    is in Java and C++.

    If we rely primarily on thought-transfer, they'll be something else
    entirely. But I don't think this will come in 100 years.

    How is a 24x80 IDE window different from punched cards and printers?
    Much more efficient but remarkably similar, really. It would not surprise
    me if we still use a lot of TEXT in the future. Speech is slow --
    a program body stored as audio would be hard to scan through quickly.
    Eyes are faster than ears so the program body will always be stored as
    either text or pictures.

    Pictures - well, pictorial languages assume too much of the work has
    already been done underneath. "Programming isn't hard because of all
    the typing; programming is hard because of all the thinking." (Who
    wrote that in Byte a couple of decades ago?). I don't think we'll be
    using pictures. When we get to the point that we can use hand-waving
    to describe to the computer what we want it to do, again we'll be
    teaching, not programming.

    HOW WILL THE ARCHITECTURE CHANGE?
    If the target architecture isn't Von Neumann, but something else,
    then we may not be describing "algorithms" as we know them today.
    Not being up to speed about quantum computing, I can speak to that
    example...but there are lots of other variations. Analog computers?
    Decimal instead of Binary digital machines? Hardware-implemented
    neural networks? Again, I don't see much progress away from binary
    digital stored-program machine in 40 years, and I think (barring
    a magical breakthrough) this may continue to be the cheapest, most
    available hardware for the next 50-100 years.

    SO WHAT DO I THINK?
    I think IDE's and runtime libraries will evolve tremendously, but
    I don't think basic language design will change much. As long as
    we continue to use physical devices at all, I think the low-level
    programming languages will be very similar to present day ones:
    Based on lines of text with regular grammars and punctuation,
    describing algorithms. I predict COBOL will be gone, FORTRAN will
    still be a dinosaur, and Java and C/C++ will also be dinosaurs.
    But compilers for all 4 wi

  183. oh the ambiguity by machine+of+god · · Score: 1
    Let's hope it's not Microsoft's XML, because that could cause a problem with communication:they might say "We come in peace" and start shooting at us with lasers and everything!

    Was that a statement about microsoft itself or it's treatment of XML? I can't tell.

  184. OT - Re:Awareness... by blunte · · Score: 1, Offtopic
    1) Iraq didn't attack us. 2) Iraq doesn't have WMD. 3) Are we also going to "free" Iran, Syria, Egypt, SA, etc?
    1. True, but perhaps that's because they (the regime, not the general people) have been too busy raping and torturing critics (and their families) of the regime, torturing underperforming athletes, fighting Kurds, oppressing Shiites, warring with Iran, and invading Kuwait.

    2. You're positive of this? How do you know? Maybe they do, maybe they don't. Maybe now we'll find out. We certainly weren't going to find out while the UN conducted its searches.

    3. In a way, you could say that we already have. What might happen to neighboring countries if Iraq develops itself as a productive, democratic society (with something resembling unrestricted media?)

    I sometimes wonder if some of the vocal critics of this war are just utterly removed from reality. Or perhaps it's me, and I'm being snowed by a huge conspiracy of every American and British media organization (who must be very good at coordinating their "lies"?)

    How do people ignore the long list of reports from exiled Iraqis and other sources about the horrid crimes the regime has committed against even its own people? Maybe you think it's their problem, and they should overthrow their own government without our help. It's probably pretty difficult to do that when you're not allowed to assemble to even plan such a futile action.

    Here in the US we're free to assemble and to say negative things about our leaders. In many countries it's just not allowed. In many countries, former Iraq especially, even being suspected of saying negative things about the government could lead to death or worse.

    I could go on, but from my experiences with people like you in the past, I know it would be pointless. I'd just hear some irrational, emotional response. Certainly I'd never get an answer to a simple, direct question.

    --
    .sigs are for post^Hers.
    1. Re:OT - Re:Awareness... by addaon · · Score: 1

      I'll take a shot. Where's the simple, direct question?

      --

      I've had this sig for three days.
    2. Re:OT - Re:Awareness... by Mr.+Slippery · · Score: 1
      1. True, but perhaps that's because they (the regime, not the general people) have been too busy raping and torturing critics (and their families) of the regime, torturing underperforming athletes, fighting Kurds, oppressing Shiites, warring with Iran, and invading Kuwait.

      If a government oppressing its citizens is justification for unilateral foriegn invasion, boy howdy, get ready 'cause every nation on earth will start fighting every other nation.

      Would another nation - say, Great Britian - have been justified in invading the US in 1850 to end slavery, or in 1950 to end segregation, or in 1942 to end internment of Japanese Americans?

      There are way of encouraging less oppressive governance in other nations short of invading them.

      Yes, Hussein's government was oppressive and if a stable benign democracy grows in its place that will be a good thing. That's a big fat honking if, though.

      Iraq's wars with Iran and Kuwait are long over, and claiming any connection to the U.S. attack is a non sequitor.

      2. You're positive of this? How do you know? Maybe they do, maybe they don't. Maybe now we'll find out. We certainly weren't going to find out while the UN conducted its searches.

      Maybe you've got a nuke in your basement. Maybe you don't. After we level your house then we'll know for sure.

      The existence of an Iraqi aresenal of WMD has become the political equivalent of an unfalsifiable hypothesis. "You inspector didn't find anything? See, that just proves how tricky these guys are..."

      Nor is it within the legitimate authority of the U.S. to determine whether the possibility of an Iraqi arsenal justfies an invasion.

      --
      Tom Swiss | the infamous tms | my blog
      You cannot wash away blood with blood
    3. Re:OT - Re:Awareness... by blunte · · Score: 1

      The point is often raised that innocent cilivians would die if we were to go to war with Saddam.

      War supporters concede that some innocent people will die. We believe the coalition forces have made very strong effort to avoid killing innocents.

      But the oft-unanswered question is, "How many innocent people would die during the next 10, 20 or more years of Saddam's reign?"

      *waiting*

      Judging from the past 20 years, that figure would be in the thousands. But so far I've not heard or read any response to a simple question like that from the anti-war folks. More interestingly, I've never even seen acknowledgement from the anti-war crowd that life was really rotten for the Iraqis under Saddam's government.

      Now to be OT on an OT topic, I recall watching CSPAN several years ago. Forgive my fuzzy memory about some of the details. There was a heated discussion about gun control. I forget the questions posed by the (most likely Republican) congressmember, but I recall the response given by Patti ? of Washington state to every single one of them: "Don't you want our children to grow up safe?" There was never any attempt to answer the direct questions posed to her.

      This seems to be a fundamental attribute of liberals. Perhaps it's just that they get more emotional about issues, so much so that they become irrational. Of course, I'm not suggesting that conservatives aren't manipulative, devious, etc., but you can usually get them to answer a question.

      I could go on and on about this, but I'm sure it would do no good :)

      --
      .sigs are for post^Hers.
    4. Re:OT - Re:Awareness... by addaon · · Score: 1

      "How many innocent people would die during the next 10, 20 or more years of Saddam's reign?"

      I honestly don't know, but I readily confess that it may be higher than the number of civilians we killed. It also may be lower; I'm really not sure. But (a) our government is in the business of protecting it's citizens. It is not a world government. I won't argue that this means we shouldn't get involved in other issues; I'll simply say that our chosen route was guaranteed to kill Americans, the very people the government is supposed to protect; the alternate route showed no particularly high probability of resulting in American deaths. And (b) guaranteed deaths by an outsider are bad. Possible deaths by a local ruler are bad too, but I honestly believe that we will end up killing a large number of people, both in the fighting and in the reconstruction afterwards, and this is a greater danger to Americans (through increase in world anger) that than the alternative, just as it is a greater danger to Iraqis.

      I've done my best to not dodge your question, but the truth is I just don't know, and I'm not sure it matters. Is 1100 deaths ((admittedly biased ref) higher than we might have seen with Saddam? It depends. Saddam was not immortal, and was not actively causing death. You may be right that we saved lives, but we really never can know. What we did do is kill Americans and destabilize one of the most politically stable regions of the world.

      --

      I've had this sig for three days.
    5. Re:OT - Re:Awareness... by blunte · · Score: 1
      If you want to get technical, this is all unfinished business from 1990. Iraq invaded Kuwait, and that set everything in motion.

      The reason Saddam has been "idle" when it comes to threatening neighbors is because he's been contained since Desert Storm. You can bet that if he had been allowed to annex Kuwait back then, he'd have picked up one or two more countries by now.

      Maybe you've got a nuke in your basement. Maybe you don't. After we level your house then we'll know for sure.
      Well now, if I had one 5 years ago, and bought the house next door and filled it with nuke building materials, and then every time you showed up to inspect my house, my wife jumped in the van and drove around the block, then I guess I would be clean, right? No nukes here!

      Now we'll have to wait and see if the WMD claims pan out. If Saddam's history of lies and deception is any example, we're almost certain to find evidence.

      --
      .sigs are for post^Hers.
    6. Re:OT - Re:Awareness... by dvdeug · · Score: 1

      warring with Iran

      We were too cowardly/politically-savvy to attack Iran, so we gave Iraq a bunch of stuff so they could attack Iran. Any guilt from that action adheres to us as much as them.

      How do people ignore the long list of reports from exiled Iraqis and other sources about the horrid crimes the regime has committed against even its own people?

      America executes idiots and children, and the rest of the world excoriates us for it. If you're black and poor, you get jail time for drugs; if you're white and rich, you go to a clinic. Do they have the right to invade the US for those crimes?

      Maybe you think it's their problem, and they should overthrow their own government without our help. It's probably pretty difficult to do that when you're not allowed to assemble to even plan such a futile action.

      And somehow the East Germans managed it, as did the rest of eastern Europe. As did the Irish and Indians and the Russians and many other cultures throughout history. We can't put a government in power that will be acceptable to the Iraqis; it'll be considered just another American puppet, like Hussian was before he pissed us off. Perhaps letting people chose their own destiny is better.

    7. Re:OT - Re:Awareness... by blunte · · Score: 1
      America executes idiots and children, and the rest of the world excoriates us for it. If you're black and poor, you get jail time for drugs; if you're white and rich, you go to a clinic. Do they have the right to invade the US for those crimes?
      I suppose death by lethal injection for someone convicted by a jury is the same as death by torture, mutilation, acid bath, and/or fire for someone who publicly opposed Saddam.

      Ok, let's assume for a moment that the US treats whites and blacks differently, and that blacks get jail time. Assuming that is true, then you bet we're wrong. But people justly or unjustly imprisoned in the US are not subjected to torture and worse (excluding perhaps what some prisoners do to other prisoners).

      There's plenty wrong with how the US does things, but you've got to wonder why so many people from so many other countries want to come here. Did you know that in my part of north Texas, the immigration service receives 140,000 applications per quarter?

      The US has had rough times, but for being one of the youngest countries, I would say we've learned quite well how to live with each other.

      Our goal with Iraq is to help them form a democratic government of their own. We help them develop something remotely similar to what we've got. What we've got, despite the many, many problems, is still one of the most effective and balanced systems of government. It's no surprise, either, considering the founders of our country were intelligent, educated people who had the rest of the world as a model.

      People who think we want to occupy and control Iraq are deluded. And people who think this is about oil are even more deluded. If this was about oil, we'd have gone to Venezuela and helped them work out their situation, since they're the biggest source of non-domestic oil we buy.

      If I were in charge, we would not have gone to Iraq. I'd say, let Saddam build up a good base of power, and let him have his way with the rest of the Arab world. Then maybe he'll find his way to you. I'm sure he's not so bad to live with, as long as you lick his shoes, or rather his body double's shoes.

      --
      .sigs are for post^Hers.
    8. Re:OT - Re:Awareness... by dvdeug · · Score: 1

      The US has had rough times, but for being one of the youngest countries,

      One of the youngest countries? We're older then most of the African countries, most of the eastern European countries (controlled by Austria-Hungary, Russia and the Ottoman Empire in 1800), the Middle Eastern nations (all put together at the end of WWI and WWII), Germany, and India to start with. This isn't to mention all the nations that have had multiple revolutions since 1778 (or even 1865).

      People who think we want to occupy and control Iraq are deluded.

      The US is not an imperalistic nation. Instead, US usually sets up puppet governments and supports evil governments (Noriega, Hussian) that support the US. (The "our son of a bitch" policy.) The Iraqis know this.

    9. Re:OT - Re:Awareness... by be-fan · · Score: 1

      Do you realize that you're vision of reality is totally clouded by the culture and time you're from. Democracy is good as far as we're concerned. That was not true 1000 years ago, and will probably not be true 1000 years from now. Even right now, there are many countries that don't like democracy in it's present form. Hell, even most Americans don't like democracy the way the founding father's have defined it. Note all of the "moral values" laws that prevade US states. They're totally against the principles of the Constitution, but the government, at some level, bows to the cultural values of it's people, even if it's against its ideals.

      >>>>>>>>
      We help them develop something remotely similar to what we've got. What we've got, despite the many, many problems, is still one of the most effective and balanced systems of government.
      >>>>>>>>>
      Almost all of the governments in the Middle East are conservative, theocracies. Yet, most of them were chosen by the people who live there. Iraq actually went through a revolution of the people and ended up with the government they have. I don't like this form of government. But I was raised in the US, so what do I know about what kind of government they should have? If the US was really looking out for the interests of the people, it would not impose a democratic government on them, but let them chose their own.

      Besides, whenever the US get's involved in the destiny of another nation, it almost invariably messes things up. We helped the Afghans free themselves from the Soviet Union by giving weapons to the Muhajideen. Fast forward 10 years, and the same people turn into the Taliban, armed with the weapons we gave them. The first couple of times, you can say that we couldn't possibly have predicted that it would happen. After a while, you have to get the picture that maybe interfering with other nations isn't such a good idea.

      --
      A deep unwavering belief is a sure sign you're missing something...
    10. Re:OT - Re:Awareness... by be-fan · · Score: 1

      Iraq actually went through a revolution of the people and ended up with the government they have.
      >>>>>>>>>
      And by Iraq I mean Iran. The students revolted and implemeneted the current government.

      --
      A deep unwavering belief is a sure sign you're missing something...
    11. Re:OT - Re:Awareness... by be-fan · · Score: 1

      Judging from the past 20 years, that figure would be in the thousands.
      >>>>>>>>
      Yet, the sum total of the deaths related to the Gulf War and subsequent imposition of sanctions works out to a whole lot more than that, even from fairly conservative estimates. According to UN* sources, the death toll every month due to sanctions is in the thousands.

      And yes, I agree that it is really hard to get liberals to answer questions. Unfortunately, the stuffy logical people also tend to be conservative. We also have far more blondes over here in liberal-land. And guess who are the people that show up on TV the most?

      PS> And before I hear a "UN bias" comment, I'd point out that the UN is not some monolithic anti-US entity. While there are anti-US elements in certain delegations, most of the UN consists of independent organizations, and these are the ones that do most of the research. It's kinda like how governments will try to compete in scientific research, while the scientists themselves are more interested in the actual work.

      --
      A deep unwavering belief is a sure sign you're missing something...
    12. Re:OT - Re:Awareness... by be-fan · · Score: 1

      destabilize one of the most politically stable regions of the world.
      >>>>>>>>>
      And this is the kicker. Destabilization causes decades of turmoil in many of these countries. Colonialism in Africa ended half a century ago, and they are *still* trying to get over the f*ckups it caused. Of course, it's not like we'll ever find out about the true cost of this war over in the US. The American media just doesn't have the attention span necessary to follow up this stuff.

      --
      A deep unwavering belief is a sure sign you're missing something...
  185. When a Computer Understands by Anonymous Coward · · Score: 0

    Then there will be no need for any programming language, the computer will write what it wants in bits.

  186. Re:OT: Stop with the SUV bashing already! by Xrikcus · · Score: 1

    SUV's have their place. I always felt the Suburban was a little over the top, but I'm sure even that has its place.

    On the other hand, buying one as a family car to only be driven around the roads of London (or many north american cities) doesn't quite fit the point of necessity. I think that's probably what the author was really thinking of, not saying they were totally pointless.

    Of course, I'm often wrong...

  187. Re:OT: Stop with the SUV bashing already! by maxume · · Score: 1
    It sounds like you have a pretty reasonable need for an SUV.

    I don't think you are really who he is talking to. He is talking to my sister in law who drive a SUV to work, in the city, because it is 'bigger' than other vehicles, and therefore it must be safer. She has very little justification for it, but drives it anyway.

    --
    Nerd rage is the funniest rage.
  188. Cobol and Mathematica by peter303 · · Score: 1

    I predict two kinds of computer languages in the future. One will be a stylized form of English. You write some documentation describing your data entities and operations. It wont have a rigorous vocabulary or syntax like an OOP language. A natural language complier will extract this for you.

    This was one of the original intentions of COBOL with its quasi-natural language objects like sentences and paragraphs. However COBOL was not flexible enough to resemble natural language and too bloated for efficient notation.

    I think something CYCL, the terminalogy language of the CYC knowledge project, is moving in that direction. If they'd only get rid of those parentheses held over from the LISP implementation...

    The other direction will be to directly implement the compact symbolic algebras that scientists already use in mathematics, chemistry, etc. Mathematica goes pretty far in this direction. The compiler will automatically arrange all the storage, and map the serialization or parallelization.

  189. To make an actual prediction... by The+Panther! · · Score: 1

    Graham makes a lot of noise, but in the end withers away in his LISP-oriented madness. I think he misses the boat in a serious way when he says parallelism is a dead end, and that it'll always be a feature utilized explicitly by the programmer. I was hoping to see the article talk about the future, but instead all I saw was a guy mumbling about the past and present. Here's my take on the future, really casting out there:

    For a LISP programmer to say that is unthinkable. That's one of the major reasons LISP was useful, because it is a functional language, and as such can be automatically farmed out to multiple processors. Several companies were formed back in the 70's around that concept.

    The problem is, functional languages have tended to be very stodgy, very limited, and awkward to use (see Lots of Irritating, Stupid Parenthesis) for non-mathematicians. Programming is increasingly done by lesser educated people... fewer and fewer of whom even have a CS degree. This trend will continue.

    I predict that in 50 years, the dominant language will be a design language that is largely a dataflow description. A person describes where to receive the data (web, ftp, file on disk, from the output of another function somewhere), what kind of processing or manipulation to perform in somewhat general terms*, and that's it. *General terms means in terms of previously-defined operations. After a number of years, the libraries will be so rich and specialized that a user will not call a function by name, but instead describe in general terms what kinds of operations to do, the compiler picks several that sort of match, rank them in order, and use all of them in parallel, effectively forking the program for each different path it takes.

    By the end of a program, there will be trillions of possible ways it would run. A few will be correct. The user will then have the arduous task of weeding out those which do not match expectations, by looking at the outcome and selecting them. The compiler will help by grouping results by similarity, and automatically rejecting obvious failures (divide by zeros, etc).

    Additionally, the compiler is the runtime environment. This is where parallelism comes in, initially. Later, when a few working prototypes exist--it may be difficult or impossible to distinguish between some versions immediately--the compiler does all the optimization for the user. The longer it runs, the more structures it identifies and changes the internal representation of, and changes algorithms, and so on, until it tweaks the performance to an ideal state. This already happens today with certain tools, but on a very limited instruction-reordering scale. The scope of such code rewriting will increase dramatically as the language for describing operations becomes more abstract and less strictly tied to individual blocks of code. It will effectively use genetic algorithm techniques to determine the best execution rate and the user need not be involved.

    The compiler/environment also naturally distributes its work across multiple processors, multiple pools of memory, and mulitple external storage devices. It knows how to connect up to trusted machines and devices (similar to how Bluetooth already works, but different medium), and distributes to those as well. As the article states, the core of the environment can be extremely simple, with all the advanced functions being implemented in terms of that basic core. Porting the core should be an hour's work, at most--that's how thin it would need to be. Thus, future computation would be capable of effectively leveraging large grids with practically no user involvement, and could extend or be carried around by portable wireless devices, or live in enclosed LANs, or whatever, without having the program care.

    So, to further disagree with the article, I would see it as a convergence of LISP, Java, C++, and Visio. It would take (most of) the functional aspects of LISP, the intelligent enviro

    --
    Any connection between your reality and mine is purely coincidental.
  190. ok. you missed the point by Srin+Tuar · · Score: 1


    Recursion is your friend, perhaps I skipped to the point to fast for you:

    The reason it is unimplementable is "Who watches the watchers?". The framers of the US constitution had this same problem.

    If you assign one AI to supervise another, than that supervisor needs a supervisor as well or IT will have no moral code of its own. So then the "asimov morality chip" will behave like a classic symbiote, and steer the decisions it allows of the robot it controls to its own ends as well.

    You can see that it quickly leads to either infinite recursion of watchers, or the need for some sort of circular heirarchy, which is subject to imorality as a group rather than an indivudual.

    As for making the arbitrary assumption that just because someone is studying something that there will be progress: that is sheer hubris. We can predict that new things will be discovered, we cannot predict what avenues these discoveries will come from.

    AI has been studied for as long as there have been computers. So far, I have seen zero empirical progress in terms of sapience. That has had little effect on people's predictions of future progress in the field, stangely.

  191. Re:OT: Stop with the SUV bashing already! by Tablizer · · Score: 1

    I just recently purchased an SUV, and it was not so I could buy a "masculine" van. It was because I live in Montana where a four wheel drive vehicle is almost a necessity.

    You are probably one of the four people on Earth who actually use SUV's for rugged mountains and snow like they show in the commercials. Never thought I would encounter one. Can I have your autograph?

  192. Re:Types-Progressive answers. by Anonymous Coward · · Score: 0

    True however anything from the future is going to be the product of "limitation avoidance". What limitation (usually human) does strong-typing address? What about weak? As I point out elsewere (AI-Baby steps) programming presently is an excercise in micro-managment. Advancement would be better if we asked ourselves what limitation is this feature trying to address? Is there maybe a better way? I find that some problems fall, by asking "Whom (not necessarily a person) could have the particular answer to my question?" Maybe by looking earler in the development process one can "bring down" the answer, or even looking sideways, or simply waiting till it can be answered. As I've pointed out in the past programming is still a bit disjointed, and not always the smooth transition from "I have an idea" to "I have a solution". Information gets lost, or distorted, or sometimes not even generated during the whole trip. maybe we need to develop a better way to ask good questions.

  193. Re:Reflexive, expandable class libraries built on by Mark+Leighton+Fisher · · Score: 1

    Perl.

    Perl5 had switch/case statements added to it by Damian Conway, at least (I think there are other switch/case implementations, but I can't recall them now). I have little doubt that I could have added a switch/case to Perl5 (although Damian's would be significantly more elegant than mine would have been). Perl6 should enable language modification easier than Perl5.

    Most of what you mention (class libraries, object frameworks, class and instance behavior, etc.) are all available in Perl5. Perl6 looks to be shaping up to be even better than Perl5.

    I don't know why Smalltalk didn't catch on any better than it did -- I remember reading the BYTE articles back in the 1980's on Smalltalk...

    --
    "Display some adaptability" -- Doug Shaftoe, _Cryptonomicon_
  194. Re:Abandon complex structures? Absolutely! by pHDNgell · · Score: 1

    Strings aren't lists, they're structures.

    That's a boring implementation detail. In C, strings were lists. It performed very well and was consistent with the way we dealt with other arrays, but lists weren't done very well so we had problems.

    In Haskell, strings are, again, just lists. "blah" is syntactic sugar that is helpful, but just means a list of characters.

    This means that everything you can do with lists, you can do with strings the same way. Don't like capital letters, fine:

    Prelude> map toLower "This String Has CAPS"
    "this string has caps"

    No special string handling is good.

    --
    -- The world is watching America, and America is watching TV.
  195. 42 by Firedog · · Score: 1

    Computer programs are answers to particular problems (or questions). And like in the Hitchhiker's Guide, the Question can be harder to figure out than the Answer.

    Gathering the requirements (in plain English) and resolving the gaps and ambiguities takes up a significant percentage of the time allotted for a project, especially if the project is highly complex. This is an exceedingly difficult process for humans. It's beyond the boundaries of what computers can be expected to do, at least for the foreseeable future.

    Figuring out the Answer will probably become easier with improvements in software languages, methodologies, and hardware. Defining the Question will become a lot harder, especially with people expecting more from their software every year. Transforming ambiguous and incomplete English requirements into highly specific Code will become even more of a bottleneck than it is today.

  196. Re:Abandon complex structures? Never! by Tablizer · · Score: 1

    The article seems a bit naive about data structures and their evolution into objects....
    Strings aren't lists, they're structures....I'm trying really hard to avoid saying "object-oriented," but objects will become more complex and more abstract.


    If you really want to look into the far end of "structures", then I prefer relational over OO (even though the current vendors have corrupted relational IMO).

    OO is too similar to the "navigational" databases (NDB) of the 1960's. Relational was found by most to be an improvement over NDB's. OO and OODB's are close cousins of NDB's in structure.

    I realize that this issue is a big Holy War and that it may be a subjective preference that OO fans and relational fans will probably fight over forever, but researchers should focus just as much on "everything is relational" as they do on "everything is an object" for future-targeted experiments. There is a possibility that us relational fans are right.

  197. my grade by bob+dobalina · · Score: 4, Insightful

    The signal to noise ratio in this piece is high. There's lots of metaphors and similes to explain his otherwise very facile points.

    He also seems to be contradicting himself. " Semantically, strings are more or less a subset of lists in which the elements are characters. So why do you need a separate data type? You don't, really. Strings only exist for efficiency. ", he says at one point, then a few paragraphs later says "What's gross is a language that makes programmers do needless work. Wasting programmer time is the true inefficiency, not wasting machine time.". The efficiency in implementing strings in programming languages is for the programmer, who doesn't have to use said "compiler advice" and carefully separate his strings from his other, non-string list instances and keep the two distinct in his programming model. Apparently it's "lame" to simplify text manipulation for programmers, but at the same time the efforts of programming language design should be towards making the programmer's life easier. Which is it? I know strings and string libraries have made my life a whole lot easier.

    Nevertheless, I'm willing to accept the notion that eliminating strings and other complex, native datatypes and structures serves to make a programmer's use of time more efficient. But how does it do it? Graham doesn't say, he just waxes nostalgic about lisp and simpler times and languages.

    I don't think the slashdot crowd needs it explained why data manipulation by computer needn't be simplified; it already is, as machine code is binary in the common paradigm. What ought to be simplified is data manipulation by humans, and on this point Graham nominally agrees (I think). This has been the thrust of the evolution of programming from machine code to assembler to high level language. Simplifying high level languages into more and more basic, statements -- getting closer to the "axioms" that Graham calls tokens and grammars -- simply reverses that evolution. It makes it easier and more elegant to compile programs, but it does absolutely zero to make the programmer's life more efficient, or easy. The whole reason high level languages were developed was precisely to get away from this enormously simple, yet completely tedious way of programming.

    The overarching fallacy in this article is Graham's reliance on what is known about computation theory now to determine what programming languages would (and should) look like then. And while it's interesting to prognosticate on what the future would be like 100 years from now based on what we have today, it's not a reliable guide. Like Metropolis, A Trip to the Moon, and other sci-fi stories from the distant past, they're entertaining and no doubt prescient to the people of the time, but when we reach the date in question, the predictions are largely off the mark. It's somewhat laughable to think that despite our flying cars and soaring skyscrapers, we use steam engines to power our cities and make robots with eyes and mouths. Likewise, I don't think an honest, intelligent prediction or forecast of (high level) programming languages 100 years hence can occur without a firm basis, or even idea, of what assembly code would look like then. This, in turn, relies on a firm idea of what computer architecture will look like. Who knows if five (or fifty) years from now a coprocessor is designed that makes string functionality as easy to implement as arithmetic. Such an advance would completely invalidate Graham's point about strings and advanced datatypes, and in fact possibly stand modern lexical analysis on its head. Or if an entirely new model of computation comes to the fore. Even Graham himself admits that foresight is foreshortened: " Languages today assume infrastructure that didn't exist in 1960.", but he doesn't let that stop him from making pronouncements on the future of computing.

    Graham seems to be spending too much time optimizing his lisp code and not enough on his writing. This piece of code could have been optimized had he used a simile-reductor and strict idea explanations. But it's definitely a thesis worth considering, if for no other reason than mild entertainment. C-

    --

    B

    "I'm payin' taxes, but what am I buyin'?" -- James Brown

    1. Re:my grade by TheDanish · · Score: 1

      Excellent analysis. I'm guessing that he was musing more than he was giving a real critical analysis of how languages exist, though. I mean, there's some stuff there you obviously have to take with a grain of salt. Remember, this is akin to having someone who's worked on an Iniac try to think about the way computers would be programmed today. Much like "what would I do if I had a time machine?" it's pretty much for entertainment. In short, such an analysis really wasn't necessary -- he was pretty much BSing anyway.

      --
      Danish != nationality
    2. Re:my grade by jacobm · · Score: 1

      About strings: Graham is probably referring to Haskell's way of doing strings: "Hello" is just another notation for ['H','e','l','l','o'] and can be used as such (you can take the head and the tail of a string, or pass it to map or fold or whatever). However, there's no reason you can't still write a regular-expression library or a string-formatting library, or any other library you want that works on strings.

      --
      -jacob
    3. Re:my grade by Raffaello · · Score: 1

      "Who knows if five (or fifty) years from now a coprocessor is designed that makes string functionality as easy to implement as arithmetic."

      You've read Graham's argument completely backwards, and are, in fact, arguing his point here. Graham is saying that, with computational power increasing, we no longer need to segregate our treatment of strings from sequences of other types, and so, can deal with all sequences in a unified way, relying on the compiler and hardware to optimize the treatment of each sequence sub-type.

      Now multiply this abstraction and simplification by all the disparate data types in a typical program and see how much easier it would be to program with a data type optimizing compiler doing all the book keeping for you.

  198. Read Vernor Vinge by Catamaran · · Score: 1

    For a truly breathtaking vision of the future
    read Vernor Vinge.

    A Fire upon the Deep

    A Deepness in the Sky

    Marooned in Realtime

    --
    Test 1 2 3 4
  199. None at all is the logical choice by gelfling · · Score: 2, Interesting

    Languages are tools that are used to organize sytactic rules that are then converted into machine usable representations of the same general purpose.

    Languages as you understand them will be as dead as the steam powered loom in 50 years. We will have non letter/symbol typed tools to do that in as much as the DVD has 'replaced' live theater as the only way to 'reproduce' entertainment.

  200. Re:Not long... You are missing the point. by s88 · · Score: 2, Insightful

    The objective is to create a syntax which is the simplest way to convey the semantics of the program.

    Do you see mathematicians "evolving" into using natural language?
    "Four plus four times two divided by three"

    I highly doubt it. Natural language is not the best way to describe math, nor is it the best way to describe computer programs.

    While I am positive we will have excellent natural language user interfaces for programs in the future, this is only because the end user doesn't want to learn a new, more expressive language, he wants to use what he knows (English).

    This is the very nature of abstraction. Abstraction inherently causes loss of expressiveness.

    I don't want to "speak" my program to my computer, I want to describe the algorithm in the most expressive and elgant way.

    Scott

  201. Re:OT: Stop with the SUV bashing already! by Submarine · · Score: 1

    Hey... But how about those SUVs I saw in Silicon Valley, with shiny paint that obviously hasn't seen any rugged road?

  202. Actually it would look more like this... by nickyj · · Score: 1

    #!perl7

    use NativeLanguage::Translator;

    print.Translate.NativeLanguage('Hello World');

    __END__

    The module would determine what language the string was in and print it in the language as set in an environment variable.

    Stop thinking like Perl 5.. Perl 6 is going to be excellent, and according to Larry Wall, Perl 7 is going to be perfect.

    --
    Causing Chaos Everywhere,
    Nik J.
    The strange world of a loner, in a populous city, drowning in society
  203. SPAM by Anonymous Coward · · Score: 0
    The only program you can write in SPAM is


    while true do send-more-mail.

    It'll be a huge commercial success.

  204. oftopic: Select count * by StrawberryFrog · · Score: 1

    Go look up the SQL count(*) operator some time.

    Results of selecting a result set: all matching rows must be found by the server, all their fields read off the table, packaged for transport by the server, transported across the lan (using bandwidth and time), unpacked by the client and presented in a dataset. Whereupon you look at their size and throw them away.

    Results of issuing a "select count(*) from mytable where somecondition":
    All all matching rows must be found by the server, counted not processed, and only one value, yes *an integer* instead of potentially thousands of rows, is sent across the network, unpacked by the client. If you don't understand why this is a win, then give up and go home now.

    Perhaps you need the detail too, but you didn't show that in your e.g. Learn your languages, use the right tool for the job.

    Even in a SQL client utility it's always faster to get a count than the details.

    --

    My Karma: ran over your Dogma
    StrawberryFrog

    1. Re:oftopic: Select count * by samael · · Score: 1

      Oh, Good Grief! I didn't show what it was doing with the data so I shouldn't have showed a select taking place that involved it????

      I do know about "Select count(*) from Mytable". I can even use groups, subselects, inner joins and outer joins.

      It was a code snippet! That was all!

  205. OO is overrated??? by rodrigo_braz · · Score: 1

    Can anyone explain to me why some people say object orientation is overrated? The author of the article doesn't think "it has much to offer good programmers", for one. I would find it a pain to live without it and I think it makes things incredibly easier, especially if you throw things like generic programming into the picture. And I don't think I am brainwashed because I started programming quite before OO became widely used.

    1. Re:OO is overrated??? by Anonymous Coward · · Score: 0

      OO languages are overrated, though the concept itself is not. The problem with OO languages is that they introduce overhead that really needn't be there in the first place.

      Abstraction is supposed to help the programmer, but there's no reason to maintain it at the computer's level as OO languages do. OO forces the computer to waste time with abstractions that should have been stripped out at compile time.

      There's nothing stopping you from implimenting OO qualities like encapsulation, late-binding and even inheritance in an efficient language like C. All of these things can be achieved using the facilities at your disposal such as typedefs, structs, function pointers, macros and data protection (const, static).

      You can abstract things and make life easy for yourself while not actually making your code any less efficient, as the computer still sees the quick & straightforward flow while you see far more modular constructs. With a struct and some macros you can have what amounts to a class, without the class overhead.

    2. Re:OO is overrated??? by Anonymous Coward · · Score: 0

      Exactly. Ada does a good job of being an object oriented language. Java and C++ fail at it, miserably. Java fails because running on a virtual machine, it's slow anyway. It also has _way_ too much inheritance by default. Look at a what all classes are ancestors of a JButton sometime. It is also a good demonstration of how powerful Object Orientation really is. Java is used a lot because you can write really stable programs with it, they'll just be slow, regardless of what you do, and computationally intensive. C++ fails because I hate it. :)

      Ada is object oriented, and strips out a lot of the abstraction stuff (I believe) at compile time.

    3. Re:OO is overrated??? by Hognoxious · · Score: 1
      Well said, Sir.

      I would add:
      • OO forces a model that doesn't always map to reality. For example, Math.sin() in java is rubbish. Sine is a function, it's not to do with any object, unless you count the universe as an object. OO for the sake of it.
      • OO Design is harder. This wouldn't matter so much if 90% of programmers could actually do functional design competently.
      • OO is all backwards, noun-verb. They should rename Java "Yoda". Except they'd write java.rename("Yoda") or something. And they'd think that was k3wl, too.
      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    4. Re:OO is overrated??? by Anonymous Coward · · Score: 0

      Ada is object oriented, and strips out a lot of the abstraction stuff (I believe) at compile time.

      It optimizes what it can, but there's no way to eliminate the abstract constructs. It would have required you to write the program in a more procedural manner in the first place. The speed of Ada is comparable to C++ though, so you can generally use whichever one you're more comfortable with to write OO code.

      For raw performance in a general-purpose langyage, it's hard to beat C. Assembly is the obvious contender, but it's acually hard to say when the output of GCC 3.2's optimizer has reached the point where it's as good as or better than most coders' hand-tuned assembly.

  206. What about wetware and Ego? by downtrader · · Score: 1

    There are numerous hints, hits and misses about the wetware factor in the next 100 years. However, I even with my ego I can't believe that even the manner in which my brain approaches answering this question will be the manner in which a human brain will be applied to solve the question in 100 years. I am almost certain that the brain of my grandparents in the 1920s couldn't have fathomed fuel-injection in a car let alone drive by wire throttles. It is fun to posit what the future may bring but the decision making and predictive processes that I own now will be archaic in 100 years.

  207. there will be no languages by wayne606 · · Score: 1

    Computers will be Artificially Intelligent and we'll explain to them what we want in English or Chinese or whatever. They will just do it and not be able to explain to us how they did it, any more than we can explain how vision works by introspecting. They will reproduce by downloading versions of themselves, greatly simplified and hybridized with other AI's by some kind of sexual reproduction, into bare hardware.

    Maybe that's a dumb idea but 100 years from now it won't seem any dumber than anything else that we could come up with. It's like asking Babbage what he thought computer languagues would be like in the future....

  208. from the future by Anonymous Coward · · Score: 0

    here in the future, computers program us. since we replaced teachers throughout the education system with more cost-efficient androids that are programmed to take advantage of their opportunity to teach us how to speak at a young age so that our language/behavior adhere to the android's original human integration spec.

    according to my teacher this happend millions of years ago.. not long after the first android scientist created the first humans in a labratory.

    well the temporal rift alert is blinking on this backtime(TM) console so I'd better log off
    -gordy

  209. i agree by zymano · · Score: 0

    I like the concept of telling or describing what you need accomplished and the computer helping you along or coding with you. I like AI + RAD = greatness.

  210. LRP by MenTaLguY · · Score: 1

    What, you're a Perl hacker and you've never seen Lingua::Romana::Perligata ?

    --

    DNA just wants to be free...
  211. hahaha by ipjohnson · · Score: 1

    that's so funny ... about half way down the page is a quote from Randy.Witlicki@hanover.valley.net.

    I used to work at valley.net for a time .. lets put it this way ... there is a real reason he was working at a NON-PROFIT ISP ....

  212. The Ents Language might take 100 years.... by BenJeremy · · Score: 1

    ...but why would we want a language that takes so long?

  213. Excuse me by Anonymous Coward · · Score: 0

    I think you mean GNU/VisualJavaC++.Net#

  214. Meta programming by master_p · · Score: 1

    I am surpised no one said anything about meta-programming. I think that the true next generation of languages will inherit heavily from ML/Haskell, having the types to be determined by their usage.

    For example, in ML I can have a function add x y : x + y which can be called for ints, floats or strings.

    I don't know if you have realized it, but a lot of programming time is taken up for pinpointing to the system the storage class of a variable: (is it an int ? a bit ? a float ? a whatever ? I just want a number, God damn it!!!) This is too tiresome, especially in C, C++, Java and ADA, which the types must be explicitely declared beforehand (maybe there are other strongly typed languages, I am sorry I do not know them). There is a practical limitation that enforces type declaration, but I think compilers can be made clever enough to deduct the types from their usage.

    Another thing is that the programmer tends to think about many things at the same time: a) memory allocation, b) control flow, c) side effects. A truly next-generation language should enforce separation of algorithm and the implementation details.

    I imagine that we would all write templated code and then apply it to some data. This can work with a top-to-bottom approach which tends to fit better with the human perception. For example, it is easier to start with a simple loop saying

    1) open database
    2) fetch recordset
    3) find data
    4) close recordset
    5) open form
    6) present data
    7) edit data
    8) save data

    than to write a big program full of technical details going hundrends of lines of code about how to open the database, how to form the SQL query, how to create the recordset, how to open the window, etc. The specializing of the code can come later, when the logical model has been processed and proven correct.

    Finally, the next big step in programming, in my opinion, is program verification. It takes a really powerful system to check a piece of code if it does not have any bugs, especially if the program is multithreaded, but with quantum computers code verification may become a trivial job.

    1. Re:Meta programming by Anonymous Coward · · Score: 0

      x + y could work for whatever datatype assuming your datatypes have the + operator overloaded (int,float,whatever do)

    2. Re:Meta programming by jacobm · · Score: 1

      Actually that doesn't work in ML. It works in Haskell, though.

      ML only allows a variable to have a concrete type -- int, string, bool, something like that -- or an abstract type like alpha or beta that's a variable that can be supplied any type. So ML would actually see fn (x,y) => x+y and type it unambiguously as an int * int -> int.

      --
      -jacob
  215. Evolution != Revolution by iamacat · · Score: 1

    A lot of concepts in Java may have existed before. Perhaps there were other VM-based languages with garbage collection, reflection API, comprehensive cross platform UI, language-based security model, RMI and so on. But none of them really took off. Not to the point that big companies started using them for important applications.

    I think it's natural that new concepts first appear in research languages that are barely usable and production languages mostly just package existing ideas nicely. It doesn't mean that such a language is an evolutionary dead end. C is not that much different from Fortran or Pascal, just more pleasant to use. But it inspired C++ and Objective C, which in turn inspired Java and Java itself inspired JavaScript. There is no reason why a future language can not be based on Java.

    Basically, Java has a lot to offer to evoluton, just not to revolution (== discarding many old concepts and replacing them with things never tried before).

    1. Re:Evolution != Revolution by pHDNgell · · Score: 2, Insightful

      The popularity of a language has little to do with its contributions to the evolution of future languages. Sure, popularity means that more people get to see it and what-not, but many people who write languages tend to know more than the one they just wrote.

      To call languages like lisp, smalltalk, objc, etc... ``barely usable'' is to make it clear you've barely used them.

      While you may not believe that C is much different from fortran or pascal, it's not derived from either. C's father is a language called B. Algol 60 and 68 also influenced the development of C. I can't speak too much on the history of C++, but it's misleading at best to say that C inspired Objective C. Smalltalk inspired Objective C. C was the default system programming language for quite a while (i.e. people were having to use it anyway), and Brad Cox wanted to add the features of smalltalk to it to make application development easier. Not to say that C didn't play a major part in this development, that'd be stupid, C is clearly the father. Objective C, however, is the mother who stayed at home and took care of it while the father was out working on bigger and more bloated things.

      Javascript is in *no way* related to java. Javascript existed before java and shares only a few items of syntax.

      So, you never said what Java brought other than popularity. If you design a language that has the collections API of java, you've just modeled a language after smalltalk. If it's got RMI, then I hope you at least get it close to as good as objective C did (which was doing it before java). If you plan on using java as a reference for a reflection API, then please, use it as a bad one, because it was done much better in...I don't know, just to pick something, let's say python. Cross platform UI? I was writing cross-platform perl apps using Tk before I did any UI work in Java (and it was easier, though I find it still yet easier in tcl, which is the only language in which I've actually deployed cross-platform UI)...etc...

      --
      -- The world is watching America, and America is watching TV.
    2. Re:Evolution != Revolution by voodoo1man · · Score: 1
      Perhaps there were other VM-based languages with garbage collection, reflection API, comprehensive cross platform UI, language-based security model, RMI and so on. But none of them really took off. Not to the point that big companies started using them for important applications.
      None of them took off because none of them made the compromises that haunt Java. The two biggest reasons Java grew so much so quickly is because it's a lot like C++, and because Sun put enough marketing energy behind it. Nothing in Java is really packaged nicely, it's packaged to be familiar to the hordes of C++ programmers (which is packaged to be familiar to C programmers). Java provides a lot of comfort in that respect, but in no way is it a really outstanding language for development. Yes, a future language might very well be based on Java, but it won't be a good language by any measure.

      BTW, I find your comment on the reflection API particularly reflective of the mediocrity and compromises of Java, considering the work Kiczales is doing on Aspect Oriented Programming.

      --

      In the great CONS chain of life, you can either be the CAR or be in the CDR.

  216. monochar instructions, 3d execution space by StandardDeviant · · Score: 1

    there is a variant of Befunge that does exactly that, albeit with ASCII instead of ... whichever encoding you were thinking of using for Chinese. ;-) It was called trefunge or something of that nature. (google, google...) Ah yes, here's glFunge98 which supports Funge93,Funge98,ConcurrentFunge (multiple instruction pointers in the same space), and of course Trefunge, and somehow OpenGL gets bashed in there too. :-)


    Warning: Befunge is just about the sickest thing you can think of to program in. I'm not kidding. Your brain will hurt. In no way is this post meant as an endorsement of Befunge programming as a serious undertaking or as a hobby. Drugs are bad, m'kay?

  217. Assembler Language Rules! by Anonymous Coward · · Score: 0

    Assembly language will always exist.
    The LM, the BXLE (BXH), put locate I/O combo rocks! I nearly smoked tape drives with that program (IBM 370) that I rewrote from spaghetti PL/1 code to assembler for work.
    Actually, I like the PDP-11 architecture, which I have also done assembler programming in. Dropping names that I've done assembler programming in, PDP-8, 8080, 8085, 68000, 68010, 68020, IBM 360/370, IBM 7040 (console programming for grins). Haven't done any 80x86 programming, but I can debug through the assembler compiled code of C++ language.
    Wanna see my VAX? [Proud owner of a VAXStation II/GPX]

  218. Re:Not long... You are missing the point. by bmj · · Score: 1

    The objective is to create a syntax which is the simplest way to convey the semantics of the program.

    Right. I agree. But how do you define simple? Simple for the machine? Should we all assembly language?

    "Four plus four times two divided by three"

    Isn't this natural language? Anyone with a reasonable understanding of how our language works (and a basic understanding of math) knows what you're saying. But I can also see where you're going. I can describe a differntial equation with natural language, but that doesn't "solve" the problem for me, it only describes it. Languages like Perl and Python aren't "natural" languages, and I don't think their goal is to be a completely "natural" language, but they move their syntax closer to natural language. And shouldn't that be the goal of any compiled language?

    I don't want to "speak" my program to my computer, I want to describe the algorithm in the most expressive and elgant way.

    I like that. But here's a question...is it the inability to capture that algorithm with natural language, or is it the inability of the programming language to communicate the algorithm more naturally?

    --
    Whereof we cannot speak, thereof we must be silent. --Ludwig Wittgenstein
  219. Re:REBOL - Part Of The Future, Right Now by Anonymous Coward · · Score: 0

    Forget that lisptarded language.
    What a butchery.

  220. Blatent errors of fact by therexxman · · Score: 1
    Its a shame that people who write articles like this make general sweeping statements that are completely false.

    When someone did, unexpectedly, take this paper and translate it into a working Lisp interpreter, numbers certainly weren't represented as lists; they were represented in binary, as in every other language.

    Rexx does not store numbers in binary, it stores them as decimal numbers, just the way that humans deal with numbers. This is why Rexx is one of the few languages that can actually do simple maths accurately. Have a look at General Decimal Arithmetic.

    The author's next paragraph goes on to say: Could a programming language go so far as to get rid of numbers as a fundamental data type?

    Like Rexx has had for 24 years??? It only has one datatype; a string.

    Or earlier in the articale; also related to doing arithmetic without a number datatype... Logically, you don't need to have a separate notion of numbers, because you can represent them as lists: the integer n could be represented as a list of n elements. You can do math this way. It's just unbearably inefficient.

    Again he's describing Rexx, except that it is far from being unbearably inefficient.

    For those who are interested in a 100-year language that has several of the features in this article, and has already made it a quarter of the way to 100 years, look at The Rexx language Association.
    I'd suggest that at least the author go and have a look.

    1. Re:Blatent errors of fact by voodoo1man · · Score: 1
      Or earlier in the articale; also related to doing arithmetic without a number datatype... Logically, you don't need to have a separate notion of numbers, because you can represent them as lists: the integer n could be represented as a list of n elements. You can do math this way. It's just unbearably inefficient. Again he's describing Rexx, except that it is far from being unbearably inefficient.

      He's describing Gregory Chaitin's demonstrations of Lisp as an elegant mathematical computer language (I highly recommend Chaitin's books). Believe it or not, numbers as true linked lists are unbrearably inefficient. But that also means you only need maybe 6 or 7 constructs to have a truly elegant Turing-compatible language.

      --

      In the great CONS chain of life, you can either be the CAR or be in the CDR.

    2. Re:Blatent errors of fact by therexxman · · Score: 1

      Sorry, I should have said "Again he's describing a feature of Rexx,..." ie a separate notion of numbers.

  221. Re: computers- just things... by Anonymous Coward · · Score: 0

    or maybe in 100 years computers will be such a part of our life that we wont be dreaming up buzzwords to describe the use of them.

    Instead we will all be dreaming of the "computerless office of the future"

  222. ¡SGML, HTML, XML, XHTML! by Walabio · · Score: 1

    HTML is a derivitave of SGML, XML is a derivative of HTML, XHTML is a reformulation of HTML to make it fit the rules of XML


    Firstly, came SGML. From SGML, came HTML. Seperately from SGML, came XML. Both HTML and XML are subsets of SGML. HTML and XML are *not* subsets of the other. XHTML is a dirivative og HTML made complient with XML. I shall draw a graph:



    XML
    / \
    SGML XHTML
    \ /
    HTML
  223. simple, it will be the C language by stock · · Score: 1
    UNIX has now existed for over 30 years. We all love our Linux machines, which are based on the C language to build them. So when you believe UNIX/Linux will last an extra 30 years, so will Brian Kernighan and Dennis Ritchie's C Language.

    Why not C++ or C# ? Well just compare the K&R book "The C Programming Language" with the Bjarne Stroustrup book "The C++ Programming Language". As the K&R autors write "We have tried to retain the brevity of the first edition. C is not a big language, and it is not served by a big book." The C++ language and the Stroustrup book are exactly the opposite.

    So C is tiny, powerfull, completely defined inside a rather modest book, compared to all other languages, aspecially the object oriented flavours. So my prediction is C will never go away. The principle of object oriented programming also won't go away, but its form or dialect will evolve.

    Robert

  224. Your Sig by sig+cop · · Score: 0
    Is Ghey. No, Really. Very gHey. No one cares about your semi-precious automobile/status symbol. Sure, you can distract us with your goings-on about solaris and what not, but really, what do you expect us to do when we see that you Have a BMW? Wet pants with excitement?

    IOW, shut your sig-hole. Thank you.

  225. thinking different in 100 years... by Anonymous Coward · · Score: 0

    Payroll, Paychecks!

    a few short years ago computers were invented and we couldn't think of an immediate use for them before they became cheap enough to do the books for large businesses.

    A few years later the spreadsheet was invented and you didn't need a team of programmers to allow you to do accounting with a computer.

    About the same time word processors made us think of computers as something we could all make use of.

    email and chat rooms made us think of computers socially.

    In 100 years how will we be thinking of computers?

    Will we be asking them: "I can't think straight", "my stomache hurts", "Earl Tea, Sweet& Hot", "what was it I said to that ?##*?! boss of mine last week", "I want my garden landscaped again, with a family of garden gnomes of the dancing variety", "get the frig outa my head, friggin friggin spam, frig!"

  226. and speaks back by Anonymous Coward · · Score: 0

    And asks you questions, like your own personal analyst, and can describe things in pictures, and understands gestures.

    And the 'program' will change just a little every day, or when you think of something new or better meeting your wishes as much as it can making sure of course not to screw things up for others.

    And will help by suggesting things others have found useful (but not in a paperclip way). So computers end up as some sort of glue knitting us all together in a fruitful way, whilst allowing us to be individual, and to excel.

    I agree the less time we spend wasted talking about computer languages the better.

  227. GATTACA by algaeman · · Score: 1

    I would suspect that in 100 years, we will mostly be interested in writing programs the spit out particular strings of proteins. It is a fairly complex language that is based on 4 basic characters, bundled together into codons of three characters each. The best part is that this language has already been tested for about 4 billion years and has large libraries available from which to draw template code.

  228. Doesn't Matter by Anonymous Coward · · Score: 0

    It will all be done off-shore by Indians.

  229. This is clear! Scripting languages! by sploxx · · Score: 1

    In a hundred years?
    The Free Software Foundation will rule the world, of course!
    The will be no binaries left, just source, so there will be only scripting languages :)

  230. Does that make sense? by fireboy1919 · · Score: 1

    "Arguing against the transhuman argument is pretty pointless because it's probably going to happen sooner or later."

    Don't you think you're missing something? Like an argument? Let me simplify: let's call the eventual occurrance of transhumans, "the statement." Then what you said, making the substition (and other easier to see word changes)
    "Claiming that the statement is false is pointless because the statement is true."

    Think about this before you think of how advanced our minds will be: the first science was philosophy. The first scientists/mathematicians of the renessaince where philosophers as well (Decarte and Pascal come to mind). We have been working on that problem of advancing the mind of the human race for at least 4000 years, and doing so through every means at our disposal.

    We've had an inkling that a computer could exist for about 100, and couldn't really make anything viable until about 40 years ago. And even then, we couldn't do anything on a broad scale until the invention of the transistor.

    We soar in one field while we haven't even begun to crawl in the other. I'll let you figure out which is which. Transhumans in 100 years? Maybe 100 millenia.

    --
    Mod me down and I will become more powerful than you can possibly imagine!
  231. FORTH, anyone? by whig · · Score: 1

    IMHO, FORTH is just as good a syntax representation or better than LISP, and there is no fundamental reason why compilers would not use this as their intermediate object code.

    Thus, take the C expr:

    a = 3 * 4 + c;

    The compiler then might generate the FORTH-like:

    3 4 * c + a =

    While you could say the difference is just Reverse Polish Notation vs. Polish Notation, in effect the LISP intermediate assumes an efficient processing of Lists, and the FORTH intermediate assumes an efficient processing of Stacks.

    Since most general purpose computers are Stack based, I think the latter would be more sensible. But of course, where GCC and its descendents are concerned, LISP is it, because of who wrote it.

    --
    Peace and love, y'all
    1. Re:FORTH, anyone? by lkaos · · Score: 1

      While you could say the difference is just Reverse Polish Notation vs. Polish Notation, in effect the LISP intermediate assumes an efficient processing of Lists, and the FORTH intermediate assumes an efficient processing of Stacks.

      This isn't not exactly true. A List in LISP is not a fundamental part of the language. Remember, a LISP computer doesn't work on lists, only on pairs. So really, the statement

      a = 3 * 4 + c;

      in LISP as:

      (= a (+ (* 3 4) c))

      Is truely:

      (= (a ((+ ((* (3 (4 nil))) (c nil))) nil)))

      Which is a binary tree. So LISP assumes that the computer is good at processing binary trees which is a lot easier than processing stacks.

      --
      int func(int a);
      func((b += 3, b));
  232. Re:REBOL - Part Of The Future, Right Now by leshert · · Score: 1

    REBOL is a nice language; when I was casting about for a higher-level language to learn after C++, I considered it.

    Unfortunately, it's not going to go very far without either a publically-available and implementable language description (as C and BASIC did), or else a controlled specification and a freely-available, fully-functional environment (as Java, Perl, and Python have).

    As it ended up, I chose Python.

  233. BCPL by Anonymous Coward · · Score: 0

    BCPL. You know you want it back.

  234. 25-year language? by karlm · · Score: 2, Insightful
    We really have no idea what the computing environments will be like in 100 years, nor what the core uses of computers will be. I think hoping to use languges "along that evolutionary path" is putting the cart before the horse. I think 25-years is about as far ahead as you can reasonably hope to predict. It's like a 1-week forecast. Nobody asks the weather channel for a 1-month forecast, as the margin of error becomes astronomical.

    One poster claimed quantum computing will make current languaes useless. This is false. Any reasonably flexible language has space for new data types and operators. You would have to be careful not to prematurely branch based on a quantum value, as this may force you to opserve its value, destroying the superposition. However, I don't doubt Fortran will be one of the first languages used in quantum computing once they get past the assebly language stage.

    What will languages be like in 25 years (and maybe 50 years)?

    Well, there will be a Fortran and a Lisp and a C (maybe a C++). Lisp has always had automatic garbage collection. The Fortran and the C will have optional garbage colletors. Fortran, Lisp, and C are all decent attempts at languages that are pretty easy to grasp and have huge legacy backings.

    Hopefully all of the main languages will be less machine depenent. Fixnums, ints, longs, floats, and doubles will be the same size across platforms, wasting a few cycles if this doesn't fit the underlying hardware.

    In terms of new novel languages, I see languages simultaneously going three ways. I forsee languages that resemble formal proofs and/or formal specifications for use where reliability is critical. I forsee languages specialized for Scientific/Engineering disciplines. (Maybe Fortran, Excell, and Matlab cover all of the bases well enough, but I hope there is enough room left for improvement to drive innovation and adoption. Having a CS background, I didn't appreciate LabView's "G" language until I had an opportunity to see the ugly ugly code scientists and engineers tend to write in Fortran.) (I can also imagine efforts to use sytaxts that better express parallelism and other features for optimimizers/compilers so we finally have a widely used scientific/engineering language that is faster than Fortran 77. I can also see more languages like the Bell Labs Aleph, designed for parallel/cluster environments.) The third direction I see languages going is scripting/prototyping-like languages that will look more like natural language. (It's too bad there isn't a cross-platform open-soource AppleScript-like language yet.)

    What do I think languages should have? Languages should have garbage collection and bounds checking enabled by default (of course, optionally turned off if you really must have the performance).

    Langages should have very clean and consitent APIs. Having few orthagonal types helps make a language clean Languages should merge character arrays and strings (arguably the Algol languages have had this for a while). If a language wants to be able to have immutable strings, it should provide a way to declair an immutable variant of each fundamental type. (This is actually very useful in writing less buggy code.) Languages should strictly define the size of fundametal numeric types. (I really like Python, but it seems a huge mistake that an integer is "at least 32-bits". Allowig variations in size of fundametal numeric types adds cross-platform bugs. If I wrote a language, the types would look like "int32" "int64" "float32", "float64", "complex32" and "complex64". We got rid of 9- and 12-bit bytes. We should further get rid of these headaches.) Having worked with lots of engineers and scientists, I would love to see complex numbers as basic numeric types that all of the normal operators work on. Wrapping two doubles in an object adds a function call overhead for each numeric operation. Performance with complex numers (and numbers in general) is one big reason a lot of the code I see is written in F

    --
    Copyright Violation:"theft, piracy"::Anti-Trust Violation:"thermonuclear price terrorism"<-Overly dramatic language.
  235. Yeah, but what about the end of Moore's Law? by dwsauder · · Score: 1

    Obviously, Moore's Law will not hold for another 100 years. So, Paul's whole argument about wasting resources in order to make writing software easier might be an academic argument about programming languages 20, or maybe even 50, years from now. I certainly think that over the next 20 years, we will be getting used to the idea of wasting computing resources, and using the wasted resources very effectively. But then Moore's Law becomes invalid. Then what? Then, assuming that our craving for ever greater computing power continues, we start to go back the other direction. We start to try to get more done with fewer CPU cycles. So it would seem that the programming languages we use 100 years from now may not be as wasteful as Paul suggests.

  236. Re:REBOL - Part Of The Future, Right Now by Vexar · · Score: 1

    I agree, it's not an open language, but the environment is largely free for non-commercial purposes. This is the second time someone has known of REBOL and told me to look at Python, so I think it may be time that I do. Still, you can't deny the ease at which one can write a useful internet application. The comment of the Anonymous poster suggests there's still a resistance to languages that are not strictly iterative. I think a program really should be reducible to a FSM with structure/object definitions and interfaces. Here's to coding in Visio!

  237. Every time I read a Paul Graham article ... by stesch · · Score: 1

    ... I think about how every problem looks like a nail when all you've got is a hammer.

    Paul really has a list fixation.

  238. future programming language ? by gerbouille · · Score: 1

    it will come from research labs ...

    Interesting readings :

    The join-calculus (how to express parallelism/distributed computation in a language)

    http://pauillac.inria.fr/join/

    Reactive programming

    http://www-sop.inria.fr/meije/esterel/esterel-en g. html

    and of course logic programming with Prolog ...

    --
    This post is displayed with recycled electrons
  239. Re:OT: Stop with the SUV bashing already! by Anonymous Coward · · Score: 0

    "Vans just don't cut it when driving on difficult roads like an SUV can (ie. rutted dirt roads)"

    Not true anymore! If you ever do really want a van (just for a change of pace?) look at the Chevy Express 4x4 van. The 3500 (very heavy duty) model is $28.900 plus options, so it's cheaper than most SUV's. I think it has more interior room than even a Suburban, although admittedly most of the extra room is vertical. A natural gas or propane conversion from the factory is only $125! I bought one a year ago, and have almost 30,000 miles on it without a single problem. About 2/3 of the miles are off-road. After adding a small lift, a couple skid pads, and more aggressive tires (same things I add to all my vehicles), it will go anywhere my old Tahoe would and more. I got the optional locking rear differential, so it is much better than any other full-size 4x4 I've driven. You have to lose traction with one of the front wheels and *both* back wheels to get stuck. It's definitely worth a look if you need something bigger or are tired of SUV's. I've had an SUV continuously since I bought an International in 1969, then a Wagoneer, then a small 1984 Blazer, etc.. I service "off the grid" homes, so I often end-up in some places that are nearly impossible for some 4x4's to navigate but this van does just fine. Having a van is a nice change It's also nice to be able to put all the seats in so I can haul 15 people if I need to. You can't do that with your SUV!

  240. Graham's all wet, check the real sources by JohnQPublic · · Score: 1

    For example, he writes:

    No one actually proposed implementing numbers as lists in practice. In fact, McCarthy's 1960 paper was not, at the time, intended to be implemented at all. It was a theoretical exercise, an attempt to create a more elegant alternative to the Turing Machine. When someone did, unexpectedly, take this paper and translate it into a working Lisp interpreter, numbers certainly weren't represented as lists; they were represented in binary, as in every other language.

    But that's just not true. McCarthy not only intended LISP to be implemented, the CACM April 1960 paper's introduction begins:

    A programming system called LISP (for LISt Processor) has been developed for the IBM 704 computer by the Artificial Intelligence group at M.I.T. The system was designed to facilitate experiments with a proposed system called the Advice Taker, whereby a machine could be instructed to handle declarative as well as imperative sentences and could exhibit ``common sense'' in carrying out its instructions. The original proposal [1] for the Advice Taker was made in November 1958. The main requirement was a programming system for manipulating expressions representing formalized declarative and imperative sentences so that the Advice Taker system could make deductions.
    (emphasis mine)

    If he can't even get that right, how can you possibly credit a claim like:

    Semantically, strings are more or less a subset of lists in which the elements are characters. So why do you need a separate data type? You don't, really. Strings only exist for efficiency. But it's lame to clutter up the semantics of the language with hacks to make programs run faster. Having strings in a language seems to be a case of premature optimization.
    Anyone who's done more than a little programming knows that strings need to be "first class" objects. The lack of genuine strings is one of the worst problems in the C language, and the source of most of the published vulnerabilities at CERT.

    Gimme a break!

  241. Blue screen of dead. by Anonymous Coward · · Score: 1, Funny

    Computers totaly conected to the human brain. Makes me wonder what a blue screen of death will look like.

  242. Check your facts, please by voodoo1man · · Score: 2, Informative

    Please check your facts. Development on Lisp started long before the 1960 paper.

    We do not know which translation rules McCarthy used in the end of 1958 ... When McCarthy was working on this function S. Russel saw it and suggested translating it by hand - as he had done so often - and adding it to the program system . McCarthy recalls (22): "... this EVAL was written and published in the paper [I think this is referring to AI memo number 4, where apply first appeared] and Steve Russell said, look, why don't I program this EVAL and you remember the interpreter, and I said to him, ho, ho, you're confusing theory with practice, this EVAL is intended for reading not for computing. But he went ahead and did it. That is, he compiled the EVAL in my paper into 704 machine code fixing bugs and then advertised this as a LISP interpreter which it certainly was, so at that point LISP had essentially the form that it has today, the S-expression form ..."
    PS -
    Anyone who's done more than a little programming knows that strings need to be "first class" objects. The lack of genuine strings is one of the worst problems in the C language, and the source of most of the published vulnerabilities at CERT.

    You do know that Lisp (unlike C) includes higher order procedures that make data representation irrelevant, or are you just speaking out of ignorance?

    --

    In the great CONS chain of life, you can either be the CAR or be in the CDR.

  243. Intertia is a good point by zackbar · · Score: 1

    except that all of the code involving dates had to be modified anyway.

    But you raise a good point. A packed date might fit within 1 byte. The years from 1900 to 1999 fit within 7 bits, and the leftmost indicating either 1900 or 2000.

    Although, leaving it as 8 bits would allow it to be 1800 to 2055. Maybe that's how it was done.

    1. Re:Intertia is a good point by Tony-A · · Score: 1

      To pick a few nits. Packed decimal has no correspondence with packed C structures.
      IIRC, One-byte packed decimal:
      High-4-bits value 0 thru 9. A thru F are illegal.
      Low-4-bits Value C is +, D is -, F is + (unsigned). 0-9 are illegal.
      Two-byte packed decimal:
      Low-4-bits of rightmost byte is the sign as above.
      The left byte and the high-4-bits of the rightmost byte make up 3 decimal digits.
      Packed decimal always has an odd number of DECIMAL digits.

  244. Re:Zero Ambiguity... by etcshadow · · Score: 1

    Dude, I was programming computers when I was six. This was the first program I really remember being proud of (circa age six):

    10 PRINT "CRASH"
    20 GOTO 10

    And people question why there should be an Apple in the back of a first grade classroom.

    --
    :Wq
    Not an editor command: Wq
  245. Extream OOP by oliverthered · · Score: 1

    all data has meta-data describing it's type.

    e.g.

    Functions operate on data types e.g.

    function jpegtobitmap(input , output )

    function openuristream(input , output )

    This allows objects to be built out of functions that operate on the type of data provided.

    If jpegtobitmap was installed then any application that could work with bitmap data can now also work with jpeg data.

    --
    thank God the internet isn't a human right.
  246. Jacques ChIraq, you're just jealous. by Anonymous Coward · · Score: 0

    Funny, but in case anyone was taking you seriously...

    Formal English grammar exists, whether or not Americans learn it in school. Informal grammars exist for most human languages and are spoken in most common social situations.

    One-sentence expletives and exclamations are common in most languages, but Greek and some other languages can combine nuances of subject, verb and direct object into one multisyllabic word.

    In some language families, there are no spaces dividing what European languages would consider to be words, so that every sentence or paragraph, no matter how long and intricate, is a single word. J.R.R. Tolkien, a philologist, poked a little fun at such languages through Treebeard and the Ents.

    Historically, it is true that royalty and courtiers often used different languages to mask their words from commoners, adhering to strict grammar rules to give weight to their words. However, it was just as common for continental European courts to choose formal English to obscure their language from commoners.

    Now, we consider such grammar to be "putting on airs," so Americans no longer learn formal grammar in grammar school. However, we still exhibit a very high degree of verbal snobbery through the various jargons of lawyers, doctors, scientists, engineers, religious clergy, slashdotters, etc. If you want respect, you still have to know the TLAs and other magic words.

    And I don't mean "abracadabra" or "open sesame," but "please" and "thank you" still apply.

  247. Really old-timers by Anonymous Coward · · Score: 0

    "...a language in which indentation is significant, like Python, would not work very well on printer terminals..."
    But for those of us that go all the way back to
    to punch-cards, Python would have been great!

  248. Bah by Tony-A · · Score: 1

    that the building blocks used to build up the language must be as simple as possible.

    Machine language is made up of bits.
    You can't get much simpler than that.

    Multiplication is just a special case [of addition]
    And addition can be done by repitively adding one.
    Turing Machines are capable of computing any computable problem, but nobody acutally uses them. Way too slow!

  249. "Probably C" u say, but Paul Graham would disagree by erikkire · · Score: 1

    Paul Graham (the author of said article) is a True Believer in Lisp, and subscribe to a theory that the more you improve any other language, the more those improvements come close to culminating in an awkward version of Lisp, so it may be more efficient to go with Lisp in the first place.

    So what would his reaction be if he knew that you said the hundred-year language is "probably C" ?