Slashdot Mirror


A Brief History of Programming Languages?

Aviancer asks: "French computer historian Éric Lévénez has compiled a family tree of programming languages that I found quite interesting. This prompted me to wonder if there was any controversy on the issue of language lineage and my searches found another page on the same topic. I thought I'd pull an 'ask the audience' to see if there were any corrections on either (both?) pages to be made." What other computing language origins are you aware of that may not be mentioned in either page?

37 of 598 comments (clear)

  1. I finally found Simula by Sheetrock · · Score: 4, Interesting
    I can't believe that was made back in the 60's.

    It is (a) percursor to object-oriented languages such as Smalltalk and C++, and was the first strongly-typed language (Python being the most recent.)

    --

    Try not. Do or do not, there is no try.
    -- Dr. Spock, stardate 2822-3.




    1. Re:I finally found Simula by Homology · · Score: 2, Interesting
      I can't believe that was made back in the 60's.

      Actually, my first exposure to object oriented programming was in Simula when I took a programming course in early 90'ies.

    2. Re:I finally found Simula by joto · · Score: 4, Interesting
      Exactly an example of the kind of discussion the original poster intended. The diagram shows Simula as a precursor for SmallTalk. Which is true if you look at time, but probably not if you look at causality. It's very likely the people who invented SmallTalk didn't even know about Simula, or realized that it was "object-oriented".

      C++ on the other hand, was heavily influenced by Simula, as Stroustrup has told in numerous interviews, books, articles, etc...

      Whatever you mean by Python being the most recent strongly-typed language, I can't even imagine. If you haven't found a newer strongly typed language, you can't have looked very far. Wether Python really is strongly typed is also up for discussion, but mostly because there is no clear definition of what this implies.

  2. BBC BASIC!!! by Anonymous Coward · · Score: 5, Interesting

    They have transparantly missed out BBC BASIC. A BASIC language, which included some of the better programming constructs of Pascal.

    Half of the UK's current programmers cut their teeth on the BBC Micro/Archimedes BASIC implementations.

    1. Re:BBC BASIC!!! by BinaryCodedDecimal · · Score: 2, Interesting

      That's really interesting. I like the way that * commands get redirected to the host shell like they used to do on the BBC/Archimedes. I had never thought of the * character as being sort of an escape character to talk to the shell until I tried to do a *fx 0 and got a 'Bad command or file name' back!

  3. No teaching/learning languages? by madprogrammer · · Score: 4, Interesting

    I learned to program with GWBasic, QBasic, TurboPascal, Modula-3 - none of which made it into the chart...

  4. this diagram proves an important point by Anonymous Coward · · Score: 1, Interesting

    (L)unix users prefer unreadable font size/typeface combinations.

    I've always suspected as much.

  5. Pascal by Moby+Cock · · Score: 2, Interesting

    The pascal branch seems to die out around 1996ish. I remember using it in 2nd year programming as a teaching language. That was in 1995.

    Is Pascal all but dead?

    What do schools use now as the teaching language? Surely not C. I have nothing against it but it isn't for beginners.

    1. Re:Pascal by bird603568 · · Score: 2, Interesting

      The year before i got in to highschool, they taught qbasic then turbo pascal, then either fortran or c. I don't rember which one was first. My freshman year it was changer to VB, them turbo pascal, then 3 classes of c++. My sophmore year they dropped turbo pascal. My junior year they dropped a c++ class and put a java class that only required 1 c++ class to take. This year, all c++ was dropped and replaced with java. I have no clue why. I was luck, I learned turbo pascal, vb, c++ and java.

    2. Re:Pascal by dickko · · Score: 5, Interesting

      Sadly, my university moved away from teaching Pascal (at 100-level) in 2000 and started teaching Java instead. Has caused headaches for the teaching staff and tutors ever since ever since:

      • Instead of learning the purely the basics of programming (statements, operators, conditions, looping...) they are thrown in the deep end. Now they have a little bit of programming knowledge, and a lot of a freaking huge api... End result, they have a huge api to play with, but they don't know how to...When I first started tutoring, at least the students knew the difference between calling a function and declaring one, now they aren't so sure...
      • In addition to reducing the amount of time learning the basics, they've thrown more at them. Before it was procedures, functions, looping recursion etc. Now on top of that they have inheritance, polymorphism, abstract classes and so on to deal with...

      And here I was thinking it was just the students getting dummer...

    3. Re:Pascal by GaepysPike · · Score: 5, Interesting

      Maybe it's just me, but I think C is a excellent language for beginners. The year after I finished undergrad (about 3 years ago now, so not too long out) they started using Java as the first language you learn, and I personally think it's a terrible mistake. Now, I am in no way saying I'm some superb programmer, but I definitely think I know my stuff more that the students coming after me who began their base of knowledge with Java.

      Don't get me wrong, it can be a tough one to start out with, especially if you've never programmed before. But the learning curve is steep, and in the end you come out with a much better understanding of very crucial stuff; data manipulation, memory, pointers, bits/bytes, and simply when the heck is going on internally with a program, because of everything C lets you muck with (and true, perhaps screw up). And so maybe it's just due to my personal experience, but learning Java after drove me nuts. I just felt like there was whole additional level of abstraction because of all the stuff that I feel java does/hides for you. Not to mention that I think Java came easier, having the more low-level (admittedly not super-low) understanding that C gives you.

      Anyway, I'll come down off my soapbox now...

      --
      4 out of 3 people have trouble with fractions
    4. Re:Pascal by SpacePunk · · Score: 2, Interesting

      Forget Pascal. They should start by teaching assembly. Personally, I wouldn't hire a programmer that didn't at one time or another do a complete program in assembly.

    5. Re:Pascal by tfmkayaker · · Score: 3, Interesting

      LISP is an awful language to learn as a first language, not because of it's syntax (which is bad enough) but...

      BECAUSE IT USES A COMPLETELY DIFFERENT THEORY OF COMPUTABILITY THAN EVERYTHING ELSE.

      Most other languages use turing machines as their basic computability theory.

      LISP uses micro recursive functions

      Each is as strong as the other - but involved radically different thought processes.

    6. Re:Pascal by master_p · · Score: 2, Interesting

      A functional language IS good to start with as it resembles math.

      No, it is not. In fact, functional languages are useless. Yes, I am going against the establishment, but there is a perfect reasoning behind that; read on.

      Side-effects like assignments makes program justification very hard

      The problem is not about not changing state, but about respecting the constraints of state. Functional languages begin with the foundamental assumption that changing state is something wrong. Well, they are mistaken: a good programming language should allow state change, but only when it can be proven by the compiler that the assumptions made by its authors and the program's constraints are proven.

      should therefore not be used when students are learning to design algorithms and to prove them.

      Proving an algorithm does not make it correct in the first place. I have written many correct algorithms in ML, but they were wrong: they did not do what I expected them to do, although they were correct from a mathematical point of view.

      The argument that you should have a math background in order to learn functional languages is not useful

      It is! people without a mathematics background have a real hard time with functional languages, because functional languages require prior knowledge to set theory, category theory and lambda calculus.

      software engineering is all about applying math to solve a problem using a computer

      No, it is not. Software engineering is all about applying logic to solve a problem, not math. By using math alone, an algorithm can be correct, but not do what it is supposed to be doing.

      Think about formal specification languages, intractability and so on

      Formal specification languages have nothing to do with functional programming languages. The output of Z can be easily feed to C. In fact, this is the most usual case.

      If you do not know math you can not design and write serious software

      Well, isn't what you're saying contradicting with your previous statement that 'a math background is not required to learn functional languages'???

      You can dabble with Perl, Visual Basic, scripts, C, C++, Java and shit like that, but you won't be an real engineer writing programs that other people may have to entrust their lives

      The problem with conventional programming languages is that they do not carry the designers' assumptions/constraints with them! If they did, then compilers could check if the assumptions/constraints are not violated.

      Example: the function 'strlen'. The foundamental assumption for 'strlen' not to fail is that the parameter string pointer is not null. Yet, the compiler easily accepts the following:

      char *str = NULL;
      int i = strlen(str);

      Why does the compiler accept such a piece of bullshit code? it is because the developer of 'strlen' makes an assumption that the user of 'strlen' does not make.

      Therefore: The problem with conventional programming languages is that programs are provided without their assumptions/constraints.

      In fact, an imperative compiler could easily elimininate a big source of problems regarding pointers if it simply attached 'usage' attributes to each variable! For example:

      void freeString(char *p) {
      free((void *)p);
      }
      int main() {
      str = strdup("the quick brown fox");
      freeString(str);
      printf(str);
      }

      The above code has an obvious error, doesn't it? the error is that 'freeString' frees the string, and 'printf' uses the freed memory.

      It is obvious to us, why is it not obvious to the compiler?

      Let me tell you why: it is because the 'p' parameter of function 'freeString' is not marked 'invalid' after using 'freeString'!!!

      Here is the same code annotated with 'usage' attributes:

  6. Where is Konrad Zuse's programming language ? by Anonymous Coward · · Score: 2, Interesting

    Plankalkul ??

  7. Found in Wired by jonnylawUSA · · Score: 2, Interesting

    A similar historical relationship of programming languages was featured in a "centerfold" of Wired within the past two years. I forget the exact issue, but was more colorful. Unfortuneately, wired.com tends to not put these up on their web archieve. Any one else remember this?

  8. Somewhat odd... by jameson · · Score: 3, Interesting

    Nice... but is it really neccessary to list tiny little update releases for current languages? And what precisely "defines" a language here-- should we treat SML/NJ as a different language than SML, because it supports continuations? Or current GHC as something other than Haskell98 because of its rank-n polymorphism and built-in support for arbitrary Arrows? And if drafts are in there (Fortran 2000), what about other drafts (ML 2000)?

    And, finally, where's Scala (http://scala.epfl.ch/) on that graph?

  9. Mysterious mysteries by Anonymous Coward · · Score: 1, Interesting
    Perhaps you are simply not wise enough to understand the teachings of The Great Camel as told by his one true Prophet, Wall.

    From Chaos The Great Camel created Perl, which was only slightly less chaotic but vastly more useful.
    - The Book of Wall

  10. How little improvement there has been... by dtjohnson · · Score: 1, Interesting

    It is remarkable how little improvement there has been in ease of use between Fortran in 1954 and Java 2 in 2004, even though the power of the underlying hardware has increased by about 10**12. Where is the development environment that is as simple to use as lego blocks which anyone over the age of 6 can use to quickly create powerful apps? Is such a thing impossible, no matter how powerful the hardware becomes?

    1. Re:How little improvement there has been... by SagSaw · · Score: 2, Interesting

      I suppose one could produce a graphical version of a current programming language, but that would be very complicated and slow to use.

      Take a look at LabView at some point

      While it is primarily aimed at test and measurement applications, anything that can be done in a general purpose programming language can be done in LabView.

      but that would be very complicated

      It's not overly complicated. In some ways, it is significantly less complicated that text-based languages. For example, if you have a function (VI is labview terminology) that is blocked, it will automatically run other code that does not depend on the output from the blocked function. I don't have to think about threading or setting up a polling loop since it is handled automatically. Also, things like 'Do I need to make a copy of this data?' are handled by the compiler rather than being explicitly specified by the programmer.

      and slow to use

      With regard to speed, I have a couple of reasonably complex LabView programs that are running on PII's in the 300MHz range with no issues at all. Labview complies to machine code, so there is no issue of interpreting the graphical language at run-time. If you can figure out how to write something like this that creates large applications like Firefox, Word, or Visual Studio, you'd stand to make a fortune.

      Well, at a previous employer, we had a LabView application that queried data from a SQL database based on user-specified criteria, pulled statistical data from the results and wrote it into a report, and the created an excel spreadsheet from the queried data. I'm not sure that LabView is the best language for that sort of thing, but it will work.

      As far as the fortune bit, at $2000+ for the development environment, I imagine that NI makes a tidy profit off of LabView. Add to that hardware sales for embedded systems and real-time controllers capable of running LabView programs and I have to think that 'fortune' is probably a good description.

      --
      Come test your mettle in the world of Alter Aeon!
  11. Re:Guys come on, Java sucks by abborren · · Score: 2, Interesting
    Agrred, OOP sucks, and this is why.

    At least it is an interesting read. Actually, I like OOP somewhat. When it is not overdone.

    --
    ><////>
  12. Fine....here's the family tree for Windows then by MattGWU · · Score: 3, Interesting
    --
    "These people look deep within my soul and assign me a number based on the order in which I joined" --Homer re:
  13. Re:i learned something today by johnnyb · · Score: 2, Interesting

    The Smalltalk implementation Squeak is AWESOME. With their eToys you can do amazing things without typing any code. It is truly a wonder to behold.

  14. Balance by richmaine · · Score: 2, Interesting

    I suppose it is inevitable that something like this shows uneven treatment of different areas.

    For example, it seems to list about every time a vendor released a Java version, showing version numbers with 3 digits as worthy of note. By that kind of accounting, there should probably be several thousand Fortran entries.

  15. Re:Excuse me.. by johnnyb · · Score: 1, Interesting

    " Where's the equal time for creationism? I don't believe in this "evolution" stuff."

    The funny thing is that almost any time when the word "evolution" is used in modern day lingo apart from biology, "creation" is in fact what they meant.

    My favorite is Linus Torvalds saying Linux is the result of evolution. His thinking is that since the pressures on Linux developers are untamed, it is like evolution, but in fact, evolution is the opposite. In evolution, it is the development which is random, and the pressures which are fairly steady.

    This is often known as "Berra's Blunder" after biologist Tim Berra, who used similarities in Corvettes as proof of evolution. It seems that Berra was unaware that Corvettes were designed, and their similarities were based on similarity of designer and requirements, not of heredity :)

  16. Gross oversight! by BigZaphod · · Score: 2, Interesting

    How could they possibly miss my two languages? COW is a revolutionary system allowing for easy entry of bovines to the computer industry. There is a clear human bias in the list presented here.

    There's also Whirl which was designed as an advanced and modern Java replacement.

    I don't see why these two critical and important languages weren't included. I feel shocked and saddened by the dreadfully low academic standards represented here. Shocked, I tell you.

  17. 'Bespoke' languages by zalzadore · · Score: 2, Interesting

    At UNI (15 years ago) one of the lecturers had written an OO language that we all had to use in his subject. A bit like ADA but with looser typing. At my last job (a large Financial institution) they had written their own finacnial programming language called A+ for their IBM mainframes.

  18. Genetic code and Sanskrit by Anonymous Coward · · Score: 1, Interesting

    The oldest programming language might be the genetic code. If we restrict this exclusively to the human doman, then the ancient Indian language Sanskrit (http://www.a42.com/node/view/173) might be the oldest language in which computable expressions can be written. In fact many classical Sanskrit poems have been shown to be mathematical theorms, productions, computations etc..

  19. Re:Cobol is there ... RPG? by slashRULElurker · · Score: 2, Interesting

    RPG was first offered as a language on the IBM 704 computers in the 1960's and was even promoted as an end-user language--funny, until you realize that programming in those days was done in assembler, and the original RPG was at least a level higher than that. I recall when I was programming in RPG II on an S/34. The boss brought the entire computing staff of 3 people to attend a seminar in Structured Programming. In preparation for that, I was reading a book on Structured Programming in Basic (can't remember the author or exact title). The intro assured me that "you can do structured programming in any language, wheter it's COBOL, PL/I or (God forbid) RPG." We wer all laughing at that, as it is indeed hard to do structured programmming without loop constructs (use GOTO) or even an if/else statement (use indicators). But, as you say, RPG has evolved since then and is even moving to free-form instead of the original form-filling metaphor.

  20. Re:Excuse me.. by novakyu · · Score: 1, Interesting
    (it's a parody, relax. Don't get too uppity)

    How is this parody? What is it parody of? It doesn't even sound like Apostle's Creed (for one, it's too long). Unless it's a mockery of a previously-existing, well-known work, it's just a mediocre sarcasm with no basis in real literature.

  21. Re:Lisp by ari_j · · Score: 5, Interesting

    As an Emacser, you should definitely get into Common Lisp. I don't know Inform, so I can't compare the object-oriented parts of the two languages, but I have yet to come up with an object-oriented feature that I really wanted and Common Lisp didn't provide. (Incidentally, that includes multiple inheritance, which is only present in one of the more popular programming languages.)

    One of the niftiest things in Common Lisp's object system is multi-methods (I can't remember if that's the right term for them...I am back in school and programming has taken the back seat.) Essentially, the polymorphic methods in Common Lisp can specialize on any of their parameters, and you can specialize not only at the type level but also at the instance level.

    And you get all the great features of Lisp right along with it.

    Since you use Emacs, what you want is called SLIME - Superior Lisp Interaction Mode for Emacs. It interfaces to your choice of Lisp environments (I use, and recommend, SBCL; but have used Clisp and CMUCL with it, as well.) and provides an REPL, an interactive debugger, a Lisp editing mode with HyperSpec lookup (meaning you can type a command while over a symbol and a web browser will come up with the HyperSpec page for that symbol, the HyperSpec being a really helpful Lisp resource), and really easy incremental development features like "Compile and load this file" from which you can then go to the REPL and test out your functions.

    But, needless to say, it blows C++, Java, Python, Perl, C#, and even Ruby right out of the water. And it's older than many Slashdotters' parents.

  22. ColdFusion ignored by mdinowitz · · Score: 2, Interesting

    And as usual, ColdFusion has been ignored by both. It was out before Rebol, Asp, PHP, etc. It's still running strong and it's a proof of concept that tag based languages (as now seen in JSP and Asp.Net) work. Where's the recognition?!?

    --
    Michael Dinowitz House of Fusion http://www.houseoffusion.com
  23. Re:Why No Mention of Mesa? by Anonymous Coward · · Score: 1, Interesting
    You are wrong concerning MESA. It was the systems programming language on the Xerox Lisp and office machines and hence the language in which the office environment - viewpoint - was written. Viewpoint (of course) had a lot of features, like embeddable applications, which were later 'invented' in products like MS office.

    When you booted an Interlisp-D machine you were first put into MESA, where you then had the option of loading a sysout or performing wonderfull things on the machine. After you gave the secret password 'I-ACCEPT-THE-RISK'.

  24. But we should be JOVIAL about this by ej0c · · Score: 2, Interesting

    Don't see the language JOVIAL. We should. Used in many, many USAF systems, JOVIAL was a true precursor to Ada, and influential in its own right.

    If nothing else, JOVIAL should be recognized for the role it plays in things-that-go-BOOM, and therefor in the flow of world history.

    However, JOVIAL is significant computationally for the way it introduced real-time extensions, suport for embedded systems, and for very-large-scale systems engineering.

  25. Re:Lisp by ari_j · · Score: 2, Interesting

    All that could be done in CL, although the object forest would take slightly more work than one provided by the language directly. I'm not sure about an individual object being an instance of two classes without an intervening class, but the distinction probably makes no real difference.

    CL has CLOS, the Common Lisp Object System, which takes care of all the OO stuff. The MOP, meta-object protocol, allows you to really get in and mess with its behavior. MOP isn't 100% portable between Lisp implementations, and I haven't learned how to use it, but I know that you can do wacky things like say "This class should have a metaclass not of 'class, but of 'my-special-mega-class." and probably completely interfere with method calls, etc.

  26. Re:Perl is indeed strongly typed by Anonymous Coward · · Score: 1, Interesting
    Actually, Randal is right. Perl chooses to define the following types -
    • scalar
    • array
    • hash
    • subroutine
    • filehandle

    You cannot convert between them, therefore Perl is strongly typed. That Perl doesn't have the same types as other languages (bool, int, float, etc) doesn't mean that it's weakly typed. It just means that Perl doesn't have the types you're expecting.

  27. Also Left Out - Parex - Varpro - Newvar etc. . . . by Anonymous Coward · · Score: 1, Interesting

    Parex, TPL, Varpro, Varpro 2, Newvar were all ComputerVision
    (Now owned by Parametric Technology Corp.) programming languages for 2D CAD systems in the 1970's. These systems ran on $1,000,000 16bit minicomputers which ran ComputerVision's OS named CGOS 10. Each system had 1 to 10 storage tube graphics terminals which cost around $60K+.

    EZGraph was a DEC (Digital Equipment Corp.) language for creating graphs and charts on PDP 11 microcomputers in the 1970s.

    You could program 1970's IBM mainframes not with just Cobol or Fortran, but with OS batch like features like JCL (Job Control Language), JES (Job Entry System) and CLists (Command Lists).

    Mainframes also ran huge special programs which amounted to software languages of their own, such as SAS (Statistical Analysis System) and GPSS (General Purpose Simulation System).

    Still have some code in these forgotten languages.