A new programming language, Avail


Look it over, the Avail Programming Language was released to the public just today.

(What a random thing for me to mention, you might be thinking…until you look at the credits.)

Comments

  1. profpedant says

    It looks like an important contribution, and reading through the details I understand very little of why it is important. Clearly a deficit in my education!

  2. remyporter says

    Interesting language. I have a soft spot for languages that view a problem space in terms of how to define a DSL for that problem space. Reading through some of the samples, I get the sense that’s how Avail works. At least, that’s my impression when I see method names called things like “Assign_to room_”.

  3. darwinharmless says

    Congratulations. Obviously brains run in your family, if that isn’t too weird a mataphor. I’m really looking forward to getting my hands on that programming language. It makes so much sense and revives my hopes that I will someday be able to program again. Haven’t really done that since assembly language for MSDOS, which was a bugger to code.

  4. says

    It is always nice to have a new addition to the world of programming languages. I am sure your daughter is having lots of fun. Few things are as intellectually satisfying as creating computer programmes that work. It is just great. Congratulations!

  5. profpedant says

    re #4. Yes. The last name of one of the developers explains why this achievement is important to our host. What I was referring to is why the rest of us care beyond being happy for our host. What I understood about Avail from its description gives the impression that it will be a very very useful tool. What I do not understand are the details of why this is so (the list of characteristics at the bottom of http://www.availlang.org/about-avail/introduction/index.html). That is where the deficit in my education is. Perhaps I should avail myself of this opportunity and update my programming skills from ‘almost nonexistent’ to…..

  6. Crimson Clupeidae says

    I’ll point my wife at this post. That’s her specialty.

    FORTRAN? Gaaahhhh….flashbacks.

  7. whiskytangofoxtrot says

    Oh great, another NLP language. It’s been more than 50 years since COBOL and people still haven’t realized what a colossally bad idea this is. It’s hard enough to communicate clearly and unambiguously with other humans using natural language; why do people somehow think that it’ll be any better when communicating with computers?

  8. says

    Actually, while I have hardly ever programmed in it, COBOL is a great language, eminently easier to programme – and therefore far less error-prone – than the currently popular crappy languages.

  9. Kale says

    Wow! I’ll have to check the language out. :) Many congrats to your daughter, that’s really, really cool.

  10. Crip Dyke, Right Reverend Feminist FuckToy of Death & Her Handmaiden says

    Go, Skatje!

    That is great.

    I think NLP is a fine tool. What’s difficult is getting functions and calls named in ways that are natural to all their uses. Thus a programming language that is intended to be used in a specific environment (I knew a guy who wrote a language used for programs needed by electric utilities to manage power-grids/nodes) is more likely to be successful.

    But really, it’s a language. What you choose to call things is ultimately arbitrary. All NLP can do is decrease the time necessary to get up to basic competence. After that, you have to be thinking in ways that aren’t limited by the textbook examples anyway, so NLP or not, you’re in the same boat.

  11. says

    @mothra #10 – A few years ago, I designed a programming language as a jest for “Speak Like a Pirate Day.” I called it Arrr. The standard “Hello, World” looked like this:

    savvy stdio!

    ahoy!

    tharbe mate as scrimshaw!
    extort mate “Who be ye?” says I!

    parlay mate + ” be a scurvy sea dog”!

    avast!

    I never wrote a functional interpreter, that seemed a bit of out of scale. Still, I have the specs….

  12. barbaz says

    Long method names with parameters in between, square brackets for code, vertical bar after variable declarations? Is it Smalltalk 2.0?

    Looks interesting (I like Smalltalk), although I’m not sure yet if would want to use it to write an ERP system. What are the “multiple paradigms”?

  13. richcon says

    Congrats to Skatje, coming up with a working new programming language is no easy task!

  14. says

    @Bart #15 – COBOL? Feh. Back in the day, I was doing RPG. Why have six hundred lines of eminently readable code, when you can accomplish the same thing in ten lines of seemingly random text?

  15. says

    But really, it’s a language. What you choose to call things is ultimately arbitrary. All NLP can do is decrease the time necessary to get up to basic competence. After that, you have to be thinking in ways that aren’t limited by the textbook examples anyway, so NLP or not, you’re in the same boat.

    Well said. It seems to me that you understand what computer programming actually is, contrary to too many ‘ITers’.

  16. Christopher says

    While I’m sure it was a fun project, I see nothing in the language that isn’t done better in many more established languages. In this day and age, unless your fancy new language does something super special, is backed by an expansive set of libraries, and/or is required to interface with something cool, it will die on the vine. For instance, Javascript is an ugly hack, but it has a wonderful set of libraries and is pretty much required to do cool web apps, thus it lives on.

    I second the NLP=yuck comment, all it does is add more characters and force you to remember a more complicated grammar to get anything done. The only half-way decent NLP language is SQL and that is only because the power you can leverage with a relational database is worth dealing with a slightly annoying language.

    But then again, I’m still bitter that a lisp variant never got enough mindshare to really take off.

  17. says

    COBOL? Feh. Back in the day, I was doing RPG. Why have six hundred lines of eminently readable code, when you can accomplish the same thing in ten lines of seemingly random text?

    The main advantage is in “eminently readable”, which is why I like BASIC so much (and not the perversion of it Microsoft is marketing as “Visual Basic”. But I do agree with your point. On the other hand, I am and always will remain an assembler programmer first. It is my firm conviction that we should use computers as efficiently as possible, and the ridiculous programming languages of today make me puke.

  18. Emily says

    It looks interesting, though I am somewhat worried by the fact that the Avail virtual machine requires the java virtual machine. The reason for a virutal machine is cross platform compatibility at the cost of performance. Having a virutal machine inside a virtual machine? That just increases the performance loss with no benefit that I can see.

    Though this is the first version of the language. Native virtual machines could very well come along, which would eliminate that concern. Looks like a good start overall.

  19. Christopher says

    Though this is the first version of the language. Native virtual machines could very well come along, which would eliminate that concern. Looks like a good start overall.

    There is no way a small group like this can make a better VM than Java’s (or C#’s for that matter). Way too many manhours went into the big player’s VMs to get them to the point they are now. Which is why many new language designers target one of these established VMs (clojure, F#, scala, etc).

    Though, the next great thing for language designers will be targeting the LLVM backend so you can get some high performance compiled action.

  20. blf says

    Apropos of nothing much, the example on the initial page reminds me of Caine, Farber & Gordon’s PDL. Which is more-or-less how I still write pseudocode…

  21. Christopher says

    You can write Fortran in any language.

    Fuck Fortran!!!!

    (actually, fuck F77; latter revisions actually made it an OK language and F77 could make readable programs if the coder was diligent. But that is a big if: I just spent several days tracking down a nasty bug that wound up being caused by someone misdeclaring a common block in one of their many, many, uncommented functions that span hundreds to thousands of lines. Fuck F77 programmers!)

  22. remyporter says

    If you look at the code, it’s not really about NLP. It really treats your code as the basis of a DSL, which isn’t exactly a unique feature, and is something a lot of really good languages do, even before we count LISP macros.

    I don’t think anybody is expecting that a small team research project is going to be the “Next Big Thing” is languages, but if they find some interesting concepts in there, I’d expect to see those concepts migrate out to bigger languages. That’s how language design seems to work anymore.

  23. Emily says

    There is no way a small group like this can make a better VM than Java’s (or C#’s for that matter). Way too many manhours went into the big player’s VMs to get them to the point they are now. Which is why many new language designers target one of these established VMs (clojure, F#, scala, etc).
    Yes, but they made it open source, which opens the possibility of a group with enough interest making a native VM for the language.

    <3 Open Source

  24. blf says

    The description back in University was “FORTRASH“.
    And whenever you mentioned “Pascal” it had to be followed by “Sucks”: Pascal Sucks.

    (This back in the days when what is now called C++ was still known as “C with class“.)

  25. Christopher says

    Yes, but they made it open source, which opens the possibility of a group with enough interest making a native VM for the language.

    Both Java and .net have open source implementations:

    http://openjdk.java.net/

    http://www.mono-project.com/Main_Page

    Even the big money folks have realized that it is impossible to get mindshare for a new language without going open source. Praise Stallman!

  26. Larry says

    Meh, yet another high level programming language.

    In my day, we programmed in ones and zeroes and we liked it. Some days, just to make it a challenge, we only used the ones. [spits]

  27. george gonzalez says

    And the big wheel of programming languages spins another 1/8th of a turn.

    I admire people that try to come up with a better language, but the results have not been too inspiring. There’s the Goldilocks problem, in many dimensions. Either the language is too simple, or too baroque, or too application-specific, or too general, or too dangerous, or too safe. Or too abstract and Ivory Tower, or too pragmatic. It’s hard to get all the major parameters tuned just right.

    And there’s the human element too– a language can be extremely clever, but humans are so good at writing horrible code, they can write a huge mess in any language.

  28. epikt says

    mothra;

    When it goes through a major upgrade will it be re-named ‘Avast!’

    And when it’s taught in giant lecture halls to hordes of disinterested freshmen it will morph into “trAvail.”

  29. Nemo says

    I don’t want to be too cynical, and I certainly haven’t gone into the language in depth. But the sample code, at least, seems to combine the verbose “natural language” of COBOL with the untypeable non-ASCII characters of APL.

    But there are many career programmers who would rather say:
    Print 1 to 10, as a comma-separated list.

    Citation needed.

  30. Rich Woods says

    @Christopher #24:

    I second the NLP=yuck comment

    Thirded.

    But then again, I’m still bitter that a lisp variant never got enough mindshare to really take off.

    Let us not forget that LISP stands for Lost In Sodding Parentheses…

  31. says

    I’ve taken some computer science and done some fairly simple GIS programming, but I’m not all that deep into raw CS. I don’t know the history of all the failed attempts to produce higher level languages, but it’s nice to know people are still trying. The gist I get from skimming the introduction is that if you need to get into the nitty-gritty the traditional way, you can use good old Java, but they’ve added a higher level language on top that can potentially make things faster and easier for those less experienced with programming, or for people who focus on the big picture first. I presume it can take those high level phrases and show you how they were translated into Java so detail-oriented programmers can polish it on a second pass. It’ll inevitably cause problems from missed nuances, but if they’re predictable problems, they can be worked around. I suspect the really difficult part is depth of the high level language mixed with intuitiveness to keep it from being just a wordy equivalent to understood programming conventions or just another catalog of useful methods.

    Yeah, it seems like one of those things that’ll likely end up as another footnote in CS history and possibly even an ongoing joke, but even if that negative expectation happens, I hope that they can advance computer science by giving us mistakes to learn from. I think there’s geek cred in taking on the effort. But who knows, they might get something right.

    I’ve downloaded the stuff, so I might tinker with it.

  32. says

    Nemo: “Citation needed.”

    Bart: citation hereby provided. I am one of those programmers. While that particular example is not exactly what I would rather do, as a BASIC programmer and (macro) assembler programmer of over 35 years, it is most definitely in the spirit of what I like.

    Although I haven’t used it much, I certainly liked the ideas behind COBOL, and I even wrote a COBOL-compiler for the PET, decades ago. I also liked ADA a lot, even though I have never programmed in it, except for a few short proof-of-concept programmes.

    A language I absolutely adored, even though I would be reluctant to call it a programming language, is PROLOG, and – of course – I absolutely detested how slow it is, even if I understand perfectly well that there is a good reason for this.

    I do agree with your comment of “untypeable” characters. Replacing {} with [] does not strike me as an improvement. They should not be necessary when the structure is already abundantly clear from IF…THEN…ELSE…END.

  33. Christopher says

    Let us not forget that LISP stands for Lost In Sodding Parentheses…

    Nothing a highlighting editor can’t fix.

    It could be worse, like say XML tags. Talk about excessive clutter. I’m still disgusted at how much bandwith is wasted when transferring non-trivial JSON data tables. Even with compression turned on it sucks. Sometimes I lust after the tersness of a good s-expression.

  34. says

    Yeah, it seems like one of those things that’ll likely end up as another footnote in CS history and possibly even an ongoing joke, but even if that negative expectation happens, I hope that they can advance computer science by giving us mistakes to learn from. I think there’s geek cred in taking on the effort. But who knows, they might get something right.

    Bronze Dog, I think it is great that they have created a new language, but it seems to me that your comment indicates that you think this is something that rarely happens. That’s hardly the case – new languages get developed all the time. Especially DSL, which deals with a specific problem space. The most likely result of this language, unless it brings something completely new to the table, is that it will be ignored by most people, since there are so many others to choose from, and it lacks the proper tooling and frameworks for it to be of any commercial use.

  35. barbaz says

    Ok, I think the language has potential, but ….

    Please find below the comprehensive collection of non-ASCII, non-alphanumeric Unicode code points that are used by the Avail virtual machine, standard library, or standard test suites

    – EN DASH
    — EM DASH

    (source http://www.availlang.org/about-avail/documentation/unicode-cheat-sheet/index.html)

    A language where the length of a dash makes a semantic difference? W. T. F.

    Ok, now I want to see if avail can be used to implement a whitespace VM.

  36. Skatje Myers says

    Any congratulations towards me are undeserved. I’ve been a big slacker ever since leaving to grad school. I have huge respect for the primary creators and it’s lovely finally seeing their baby come into the world.

    For anyone who may have questions about Avail, Mark has been giving some nice lengthy replies in this reddit thread: http://www.reddit.com/r/programming/comments/248gu0/introducing_avail_an_innovative_approach_to/

    (I especially suggest reading it for those going “ughhh another natural programming language; poo-poo”)

  37. Rich Woods says

    @Christopher #46:

    Nothing a highlighting editor can’t fix.

    Nowadays, yes. But apart from an early and brief flirtation with a home computer whose name now escapes me, most of my lisping was done on a 286 running AutoCAD/AutoLISP in the mid to late eighties.

  38. Christopher says

    After reading the reddit thread, I’m still not convinced that Avail is good canidate for DSL building or that it offers anything novel that would get people to use it.

    That thread did have a nice link in it though:

    https://github.com/manuel/wat-js

    Lisp in javascript. Nerdgasam

  39. says

    @34, Emily:

    Yes, but they made it open source, which opens the possibility of a group with enough interest making a native VM for the language.

    <3 Open Source

    It’s open source? In other words, either it will die on the vine or else it will shortly become a stinking heap of conflicting syntax, redundant functions, contrary recommendations, and unsafe practices, like the “successful” open-source programming language PHP. (Read that, please, people who say that “there’s no such thing as a bad programming language”.)

  40. mothra says

    @David,#13: I thought there might be (but did not check) whcih was why I added the excamation mark within the quotes. Pedantically, the post should have ended. . . “Avast!” ?

  41. twas brillig (stevem) says

    re COBOL:

    Oh, you got me started… COBOL, (as I remember it) was 99% motivation behind the Y2K debacle. COBOL only represented a date year as a 2 digit BCD number, making 1901 indistinguishable from 2001, etc. And ALL the government, and big Insurance companies’, code was written in COBOL, so managers could read it without having to know the language at all (with no funny function mnemonics and such). But they did recognize that 20xx would be indistinguishable from 19xxx and make interest calculations (date dependent ones) go haywire, so EVERY computer had to be checked for abbreviated date representation. The media went bonkers and portrayed planes falling out of the sky on Jan. 1 2000. But us in the know, knew COBOL was the culprit and burrowed deeper into a REAL programming language: C or C++, all others be durned.
    In my college days they taught us ALGOL as the pedagogical PASCAL. APL was a nightmare as it needed special characters, only found on an APL keyboard … I later learned that PASCAL was the tutorial version of C.
    After all that; anyone who develops a new language deserves (and here, receives) a lot of respect and admiration. Congrats Skatje!

  42. Compuholic says

    I don’t get the purpose of this language. Is it supposed to be similar to natural language?

    While I respect the intellectual archivement, I doubt that the world needs such a programming language. I sincerely doubt that writing computer programs in a natural language-based programming language is a good idea. Luckily I have never had anything to do with it but I’ve heard that COBOL was such an attempt. And I still hear people cussing it, wishing it would finally die.

    Natural language is way too sloppy and ambiguous to express a computer program. So the only course of action is to only allow certain grammatical rules. And when we are doing that we might as well learn a traditional programming language.

    Fuck Fortran!

    I agree. But I guess it was great at the time because it ran very fast. And if you have to deal with large-scale numerical problems, chances are that you will run into Fortran a lot. Unfortunately there is still a large amount of libraries for numerical computation that are written in Fortran. Luckily most can be linked from C++. But if you have to modify some of the original code you are in a world of hurt.

  43. says

    The media went bonkers and portrayed planes falling out of the sky on Jan. 1 2000.

    I remember writing something along the lines of “cows will still be giving milk on Jan 1, and carrots will not mysteriously disappear” in a Belgian newspaper, and I was immediately crucified. Remarkably, something did indeed disappear on Jan 1; namely those criticising me.

  44. says

    And when we are doing that we might as well learn a traditional programming language.

    Such BASIC, one of the oldest and most successful traditional programming languages, and which does indeed use some words coming from a natural language, known as English, and very successfully so.

  45. says

    It’s open source? In other words, either it will die on the vine or else it will shortly become a stinking heap of conflicting syntax, redundant functions, contrary recommendations, and unsafe practices, like the “successful” open-source programming language PHP. (Read that, please, people who say that “there’s no such thing as a bad programming language”.)

    PHP may be broken in many ways, but it’s not the only open source language out there. Python, for instance, is open source, and has none of the issues you mention. Ruby as well.

  46. Christopher says

    Such BASIC, one of the oldest and most successful traditional programming languages, and which does indeed use some words coming from a natural language, known as English, and very successfully so.

    BASIC turns 50 years old today. Yea I guess. It’s still one of the worst languages to have ever taken off. It makes fortran look like a well designed language.

    Time to dig up some old jokes for its birthday:

    http://stuff.mit.edu/afs/sipb/user/marc/stuff.athena/humor/real_programmers
    “Real Programmers don’t write in BASIC. Actually, no programmers write
    in BASIC, after the age of 12.”

    http://www.heuse.com/cphumor.htm
    “It is practically impossible to teach good programming style to students that have had prior exposure to BASIC; as potential programmers they are mentally mutilated beyond hope of regeneration.”
    -Dijkstra

    BASIC programmers never die, they GOSUB and don’t RETURN.

  47. says

    After more than 3 decades in the profession, I am more than just vaguely aware of those jokes. I am also very much aware of the lack of programming skills in programmers who are too unskilled to be able to programme in this most wonderful of all high-level programming languages, a marvel of simplicity and flexibility.

    Just because someone forgets to type a ‘return’ once in a while, does not make BASIC a bad language, just as the fact that some idiot sometimes drives a car while drunk does not make cars a bad means of transportation.

  48. Adam James says

    I think I’m in love…
    (err, with the articulate programming paradigm, I mean :) )

  49. Christopher says

    Wow, you seriously like BASIC? You’re not just being a sarcastic hipster or something? You actually wrote large programs in BASIC and went back for more?

    Whatever floats your boat I guess, but I’d rather program in pretty much any other language ever written; even whitespace or brainfuck would be better just for the novelty factor.

  50. cim says

    Interesting ideas, certainly. Unicode as syntax seems to be going for readability over writability a little much for my tastes, though looking at it it seems it would be trivial to define “->” as a replacement for the “right arrow” operator once in a library, and go from there.

    Kristjan Wager:

    The most likely result of this language, unless it brings something completely new to the table, is that it will be ignored by most people, since there are so many others to choose from, and it lacks the proper tooling and frameworks for it to be of any commercial use.

    Sure – as with most languages. But this is how progress generally works in programming languages – innovative features are first added to toy languages, or academic projects, and then rise up through less and less obscure languages before making it into the mainstream: there are huge improvements in C# for instance compared to the previous generations of mainstream languages that came up through that route.

    The Vicar:

    Read that, please, people who say that “there’s no such thing as a bad programming language”

    I’m not sure I’ve ever come across anyone ever saying that [1] (and there are plenty of “art” languages created specifically to be difficult to program in – Intercal, for example – so it would be a bizarre statement for anyone to make). “There’s no such thing as a good programming language”, I can believe that people might say, though it appears no-one has said exactly that yet.

    I’m not even sure how a programming language could not be “open source”. Implementations, yes – obviously there are closed source compilers, interpreters, libraries, toolsets, etc. But the language? A closed source programming language is by definition either dead or in extreme minority use: “I’ve got a great programming language, but I can’t tell you how to program with it, because that’s proprietary”

    Programming languages without a closed source implementation do tend to be the smaller ones, but that’s reversing cause and effect: a programming language has to be really promising and popular before a closed source implementation could be even slightly profitable. I can’t think of any well-known programming languages that don’t have open source implementations.

    Most “successful” programming languages are pretty terrible – C is ubiquitous and responsible for some of the worst security incidents ever; PHP is, as noted, a horrible mess; Java is not far behind either for security holes and it took years for it to get a half-decent GUI library; Visual Basic is cursed almost as much as PHP. (PHP succeeds because – horrible mess that it is – it filled a gap in the market and was better – somehow! – than most of the competition for that gap. Still is, in fact, because the other big players in web languages aren’t going for that niche)

    [1] Google searching for that exact phrase returns only three hits: this thread, another thread where it’s also being used in the context of “something someone else might think”, and one person being wrong on the internet.

  51. says

    Wow, you seriously like BASIC? You’re not just being a sarcastic hipster or something? You actually wrote large programs in BASIC and went back for more?

    Whatever floats your boat I guess, but I’d rather program in pretty much any other language ever written; even whitespace or brainfuck would be better just for the novelty factor.

    It is too bad that you don’t know BASIC. If you did, you would not want to give it up, you would be more than a little disgusted with most currently-popular languages, and don’t get me started about the horrific perversion Microsoft is distributing as “Visual Basic”.

  52. Christopher says

    It is too bad that you don’t know BASIC. If you did, you would not want to give it up, you would be more than a little disgusted with most currently-popular languages, and don’t get me started about the horrific perversion Microsoft is distributing as “Visual Basic”.

    I cut my teeth on BASIC and have occasionally had to deal with other’s BASIC programs since then. My hatred for BASIC was well earned.

    I’m still shocked you are sincere in your love for BASIC. Why? Have you ever used another language for a decently sized project?

  53. says

    I present…Frank Hayes’ immortal “When I Was A Boy”.

    I actually like the interpretation of FORtran. That’s exactly what religionists and quacks do when they use scientific language!

  54. JohnnieCanuck says

    Could this be another step on the road to total world domination, PZ? Congrats, Skatje.

  55. jaybee says

    twas brillig said:

    COBOL, (as I remember it) was 99% motivation behind the Y2K debacle. COBOL only represented a date year as a 2 digit BCD number, making 1901 indistinguishable from 2001, etc.

    No, no, no, no, no. In COBOL you declare the precision of your variables: one digit, two digits, …, 20 digits, you get to pick. That many programs used only two digits to represent a year is a fault of the programmer, not the language. COBOL, PL/1, and no doubt others, have flexible and explicit variable sizing, unlike C where an “int” is at least 16 bits, maybe 32, maybe 64, …

  56. says

    I’m still shocked you are sincere in your love for BASIC. Why? Have you ever used another language for a decently sized project?

    As I said: because it is incredibly simple, and equally flexible. Because it allows one to write the way one thinks. One advantage (among many) has to do with the simplicity of the implementation of the language: when there are bugs in your programme, they are almost certainly your own, not the language’s, and as a result, debugging is simple, and almost always both easy and quick. Debugging compiler-caused bugs tends to be a bit more tedious, not to mention somewhat harder to correct.

    And yes, to the question. I actually taught C++ at a small university in Brussels and a lot of my programmes were written in Motorola 68000 assembler (not the horrific Intel), which – for obvious reasons – I have not used in several years.

    The book was never translated into English, but I wrote a book on how to write programme ActiveX components with Visual Basic. And then, Sybex Netherlands went bankrupt. [laff]I am not convinced that my choice of Basic was the cause.[/laff]

    I am about to start a new project, and I find that – for the first time – I am really hesitating. Microsoft’s current Visual Basic implementation is so horrifically un-BASIC like and its implementation of file functions is so vague and badly documented that I may well decide to jump ship and switch to another language now, possibly another company’s BASIC or maybe even Python, I haven’t decided yet.

  57. says

    That many programs used only two digits to represent a year is a fault of the programmer, not the language.
    Good example, Jaybee. I find that people who blame a language for problems tend to be incompetents of the ‘ITer’ type, rather than programmers who understand computers and programming.

  58. David Marjanović says

    PHP

    A fun read, even for ignorant little me!

    Top comment:

    The striking thing about PHP is the brain-melting combination of redundancy, inconsistency and unpredictability in the very heart of the language.

    It really seems to be that new language features were added without regard to whether they were already present in some form elsewhere, or whether there was an existing feature which could be adapted to include the related new functionality, or whether they were even necessary in the first place, or whether certain functionality was really appropriate in the place it was put when there were other ways to do that already.

    PHP is the Winchester Mystery House of programming languages. If PHP were a house, the master bedroom would have 4 extra doors leading off it. One would be labeled “womenstoilet” and have a regular porcelain potty, the second would be labeled “washroom_mens” and just have a urinal ($DEITY help you if you’re a man and need to go #2, because womenstoilet($male) is not permitted). The third would be “bathroom” and would contain a bath. Which is filled with kitty litter, because someone remembered that the family living there might have a cat which needs a toilet too. This is despite there being a perfectly good litter box in the back hallway, which the person who filled the bathtub was not aware of. The fourth door is a tiny unlabeled hatchway hidden behind a bookcase. When you open it there’s a small shrine dedicated to the builders of the house, set in the middle of an otherwise unusable 1000sq.ft. room.

  59. says

    Hey cool, I earned my PhD from CU Boulder, too! Jim Martin is a great professor and all-around good person, I still laugh at the time he made a grand entrance into the multimedia classroom where he was teaching natural language processing with The Who’s “Pinball Wizard” playing over the sound system. Skatje chose advisors well.

  60. Duckbilled Platypus says

    As a hobbyist and semi-professional developer, I used to be in the opposing camp when it came to natural language programming. Strict syntax and an unambiguous language made sense to tell a computer what to do – natural language was just verbose and unwieldy. When I first saw one of those NLPs I simply couldn’t imagine getting a grasp on it.

    Then I found Inform7, which is an NLP to create Interactive Fiction (text adventures), and I’m forever disappointed that Interactive Fiction will never grow popular enough to make Inform7 a big thing, because it’s a beauty. NLP is a sensible choice for this language – most Interactive Fiction writers are authors rather than developers, and they would be more at ease with making declarative statements in which objects, properties and behaviors are implied by the language (both explicitly and implicitly), rather than using cryptic syntax with its finnicky behavior. This sounds terrible to a programmer, but in an Interactive Fiction context this works out well. English in, English out.

    Here is some example source text:

    http://inform7.com/learn/eg/rota/source.html

    So yeah, full support for Avail from me. Programming languages are for people as well as machines.

  61. steve84 says

    I hate most natural language languages. It’s always so clunky and distracting. Stuff like “define var as …” or “begin…end”. Why type so many letters to delimit constructs when simple curly braces will do? And all the words needed to define classes, variables and other stuff distract from what is actually going on. It’s the main reason why I get eye cancer from Visual Basic, but really like C#.

    Speaking of BASIC. There is a FreeBasic, which has really great performance compared to .NET/C# from what I heard (at least when it comes to the speed of drawing stuff on the GUI), but again the syntax makes working with it seem unproductive.

  62. Who Cares says

    Looks interesting. Won’t be used where I work though, most likely to slow for what is needed so I’m ‘stuck’ with C(++).

  63. see_the_galaxy says

    But then again, I’m still bitter that a lisp variant never got enough mindshare to really take off.

    (prin1 “Never give up!”)

  64. Duckbilled Platypus says

    I hate most natural language languages. It’s always so clunky and distracting. Stuff like “define var as …” or “begin…end”. Why type so many letters to delimit constructs when simple curly braces will do?

    Although I don’t disagree that braces will do, I don’t get it when people complain about the number of characters to type. This is a negligible effort. It makes me wary that you’re also prone to leave out comments and / or use non-descriptive variable names. Shaving characters doesn’t make a language better, and it doesn’t make your code transparent.

    Also, natural language is not necessarily always verbose. This is a line of Inform7 which I mentioned above:


    PZ Myers wears a viking helmet.

    Inform deducts the following from this line:

    1. PZ Myers is a ‘person’ type object (because it can wear something). PZ may be an adjective, and can be used as such.
    2. ‘Viking helmet’ is an object (‘helmet’ is also acceptable to describe it, and ‘Viking’ is an adjective)
    3. ‘Viking helmet’ is singular
    4. The viking helmet is wearable (because someone wears it). It is therefore also portable (rather than fixed in place).
    5. At game start, the viking helmet is being worn by PZ Myers

    It’s the same conclusions I would draw.

  65. says

    I love that it’s licensed under the terms of a FLOSS license (BSD 3-clause, in this case). :)

    However, as a fan of low-level-ish C++, C and occasionally Assembly, I for one don’t like that language one bit. Or NLP languages in general. And I would have prefered something that transcompiles to C or something, instead of using a VM (and one that’s based on Java, no less). Of course, YMMV.

  66. cm's changeable moniker (quaint, if not charming) says

    DSL-friendly, syntax-extensible language which targets the JVM? Groovy!

    Christopher @#24:

    I’m still bitter that a lisp variant never got enough mindshare to really take off.

    You are Paul Graham and I claim my £5 prize! :-)

  67. Christopher says

    Oh man, I remember when Paul Graham announced that Arc would be along real soon now and would revolutionize programming and language development…. and then waiting, waiting, waiting. I had totally forgotten about it until now. Checking the wiki, he waited seven freaking years to release a version and then was a code nazi who wanted excessive control over the evolution of the language instead of letting a community build up and evolve it organically.

    What a way to kill a good idea. Sigh.

  68. thecalmone says

    @#58 Compuholic:

    “I agree. But I guess it was great at the time because it ran very fast. And if you have to deal with large-scale numerical problems, chances are that you will run into Fortran a lot. Unfortunately there is still a large amount of libraries for numerical computation that are written in Fortran.”

    Indeed. In fact, speaking as a finite element analyst myself, I think it’s not drawing too long a bow to say that the international shipbuilding, automotive, aerospace and civil engineering industries would be in extreme difficulty if FORTRAN was turned off overnight because their development cycle time would immediately double or treble and become far more expensive. Many, if not most, of the FE solvers are written in FORTRAN and have been since the 1960’s. NASTRAN, for example, contains over a million lines of FORTRAN. Engineers are still programming in FORTRAN because it’s fast and efficient but it’s being taken over by C++ and Python as the old programmers die off.

  69. cm's changeable moniker (quaint, if not charming) says

    Christopher, there is hope. Rich Hickey’s getting some traction with Clojure.

  70. Christopher says

    Many, if not most, of the FE solvers are written in FORTRAN and have been since the 1960′s. NASTRAN, for example, contains over a million lines of FORTRAN. Engineers are still programming in FORTRAN because it’s fast and efficient but it’s being taken over by C++ and Python as the old programmers die off.

    Mostly people are still using the same old fortran codebase but with a wrapper to interface with C/C++ or Python. One of the huge benifits of Python is the ease with which it will slut around with C and Fortran libraries; it doesn’t matter much if the language is slow so long as the heavily used libraries aren’t.

    Have you seen the FEniCS project (http://fenicsproject.org/): it is a general purpose FE solver, written in Python, linked to the usual suspects on the backend (lapack et al). The cool thing about it is that you can set up the model using raw differential equations and FEniCS does all the mind numbing work to turn that into an FE model that it then hands off to the matrix solver. An open source COMSOL if you will, but with more generality.

    Christopher, there is hope. Rich Hickey’s getting some traction with Clojure.

    I like Clojure. It really shows how much syntatic overhead there is in Java for the developer.

  71. says

    Bart B. Van Bockstaele (#63) –

    Just because someone forgets to type a ‘return’ once in a while, does not make BASIC a bad language, just as the fact that some idiot sometimes drives a car while drunk does not make cars a bad means of transportation.

    There has always been a lot of snootiness and “superior” attitudes among Basic bashers, similar to how OS fanboys speak of other OS’s users. Basic is a flawed language, but it’s definitely an easier starting point than C or Python for those who know nothing about programming. Those who hate Basic would just as likely rather have people not programming at all than have them learn Basic. I’d rather see people getting involved and learning how to do it themselves, to see cause and effect. I’d wager you think the same.

    Some will argue that learning programming languages is like learning natural languages, that any language can be first, and that learning a second after growing up in one language makes it difficult. That’s a poor analogy, like saying children should be taught science instead of learning how to write. They have to know how to think before you can teach them what to think, and the same goes with learning how to program.

  72. tim rowledge, Ersatz Haderach says

    Long method names with parameters in between, square brackets for code, vertical bar after variable declarations? Is it Smalltalk 2.0?

    Mark has a long association with Smalltalk and it would be no surprise that he might choose many aspects of it to reuse.
    Smalltalk is the only language good enough to be worth even spending time criticising. Any else is just… less.

  73. Christopher says

    They have to know how to think before you can teach them what to think, and the same goes with learning how to program.

    Which is why learning BASIC as a first language is discouraged: it teaches the wrong ‘hows’.

    The kind of strategies needed for modern programming (things like recursion, polymorphism, robust package management) are absent from BASIC. You can’t teach people how to use what doesn’t exist, and if someone has only learned BASIC, once they move to a better language, they have nothing but bad habits to guide them.

  74. says

    Which is why learning BASIC as a first language is discouraged: it teaches the wrong ‘hows’.

    The kind of strategies needed for modern programming (things like recursion, polymorphism, robust package management) are absent from BASIC. You can’t teach people how to use what doesn’t exist, and if someone has only learned BASIC, once they move to a better language, they have nothing but bad habits to guide them.
    Interesting comment. It is the programmatic equivalent to claiming that bacteria can’t absorb food because they don’t have mouths. The original BASIC may not have a specific set of instructions to implement a recursive algorithm, but anyone who understands programming and who has learned BASIC would have no problem whatsoever to implement a recursive algorithm in the original BASIC. Heck, he/she would not even need the GOSUB…RETURN construct to do so.

    That’s the problem with starting with elaborate programming languages instead of simple ones: it turns the student into an unthinking robot who applies recipes, and not into a creative, thinking person who understands computers and algorithms at their most fundamental level, and who creates genuine and efficient solutions. It is the difference between the doctor and the scientist, the mechanic and the engineer.

  75. says

    left0ver1under:

    Basic is a flawed language, but it’s definitely an easier starting point than C or Python for those who know nothing about programming.
    Indeed. I would also submit that all languages are flawed, and that large, complicated languages are very likely to have more flaws than small and simple ones. The big advantage of a simple language that you can (at least conceivably) make it bug-free and totally reliable.

    Those who hate Basic would just as likely rather have people not programming at all than have them learn Basic. I’d rather see people getting involved and learning how to do it themselves, to see cause and effect. I’d wager you think the same.
    I think exactly the same. Computer programming is unlike anything humanity has known before. Computer programming is – in my view – the ultimate democratiser: once one has learned what computers are and how to programme them at the simplest level, one can essentially do anything at all.

    Sure, the latest mainframe, will do it all a little (well, a lot ^_^) faster and easier, but there is no fundamental difference at all between, say, a ZX80 and a Blue Gene.

    Scaring people off with complicated languages robs them of that democratic achievement.

  76. Christopher says

    That’s the problem with starting with elaborate programming languages instead of simple ones: it turns the student into an unthinking robot who applies recipes, and not into a creative, thinking person who understands computers and algorithms at their most fundamental level, and who creates genuine and efficient solutions. It is the difference between the doctor and the scientist, the mechanic and the engineer.

    It is people who understand computers and algorithms at their most fundamental level that hate BASIC the most.

    A proper computer science education should involve multiple languages plus the creation of domain specific languages and toy languages (gotta love yacc/lex/bison). This is of course in addition to the extensive non-programming content: if you don’t know what P=NP means, or how to build a nand gate from base switches your education is failing you.

    A down and dirty overview/introduction should use a language that can cleanly handle a wide variety of programming methodologies.

    For the first, BASIC offers nothing novel and thus should be avoided because it is a waste of time to learn when you could be getting down and dirty with assembly, playing with pointer arithmetic in C, carousing around with classes in smalltalk, getting funky with functional programming in Haskell, dancing with declarative programming with prolog, or just getting shit done with shell scripting.

    For the second, BASIC lacks so many fundamental constructs that students will be lost as you try to walk them through whatever hack you’ve devised to overcome the weakness of the language (Greenspun’s tenth rule).

    BASIC has no place in any sort of computer science education, much less on the production floor.

  77. Christopher says

    The big advantage of a simple language that you can (at least conceivably) make it bug-free and totally reliable.

    That argument might hold water if you were defending something like Haskell or erlang, but is laughable for BASIC which encourages, by its very structure, buggy and unreliable programming.

  78. Suido says

    Christopher #92:

    One of the huge benifits of Python is the ease with which it will slut around with C and Fortran libraries

    Might wanna re-think that brogramming language.

  79. Christopher says

    Might wanna re-think that brogramming language.

    I meant it in the most gender neutral terms possible. Unless your contention is that only one gender can be sluts, which hasn’t been my experience at all with humans: the sluttiest people I’ve met have been humans with a Y chromosome.

    Is this anthropomorphization of a programming language any better: “One of the huge benifits of Python is how promiscuous it is with C and Fortran libraries”? Or is any implication that something has many partners without much concern about who they are, automatically leads to misogyny?

  80. steve84 says

    @Duckbilled Platypus
    It’s not entirely about the typing, but also about the reading. Having unnecessary words also makes the code harder to read to some extent.

    Sure, a syntax shouldn’t be too cryptic either. But I think the C/C++ style also used in languages like Java and C# strikes a nice compromise between readability and verbosity.

  81. Marc Abian says

    Skatje

    Any congratulations towards me are undeserved. I’ve been a big slacker ever since leaving to grad school.

    You might not have figured this out as a first year PhD, but getting official credit without doing much to actually contribute is the second most important skill you have to develop in academia. The first being writing grants in such a way that uses a combination of buzzwords and hot topics.

    Though then again I don;t know much about computer science, so maybe it’s different.

  82. Matrim says

    *adopts Scottish accent* Bah! If it’s no Pascal, it’s crap!

    Seriously, though. Grats to your offspring.

  83. Marc Abian says

    101

    I meant it in the most gender neutral terms possible. Unless your contention is that only one gender can be sluts, which hasn’t been my experience at all with humans: the sluttiest people I’ve met have been humans with a Y chromosome.

    The contention is that only one gender is habitually called sluts.So it’s not a gender neutral term.

    I do hope it can become a purely descriptive term in future for any gender without the pejorative undertones, but right now it isn’t.

  84. Christopher says

    The contention is that only one gender is habitually called sluts.So it’s not a gender neutral term.

    I do hope it can become a purely descriptive term in future for any gender without the pejorative undertones, but right now it isn’t.

    In California, it is used in a gender neutral way. But then so is ‘dude’.

    There really needs to be a slightly vulgar, gender neutral, term for someone who regularly sleeps around for fun and only views their partners as meat, not a a whole person. Personally I think it would be easier to modify an existing word to make it gender neutral than it would be to have a whole new word gain traction. Much like it is easier to get an extension to an existing computer language widely adopted (C++/C#/ObjC) than it is to get a totally new language adopted by enough people to gain a momentum of its own.

  85. says

    In California, it is used in a gender neutral way. But then so is ‘dude’.

    And in the UK c*nt is a gender neutral term of endearment, we’ve heard all that before. But: Pharyngula has higher standards.

  86. Gen, Uppity Ingrate and Ilk says

    In California, it is used in a gender neutral way.

    Yeah, I’m sure the judgement behind the word is exactly the same when applied to men as when it is applied to women. Of course it is.

    Also, I have this once in a lifetime opportunity for you; friend of a friend’s cousin’s mother in law heard about a bridge that’s for sale…

  87. Christopher says

    Yeah, I’m sure the judgement behind the word is exactly the same when applied to men as when it is applied to women. Of course it is.

    *shrug* I’ve personally heard it used to try to invoke shame in both genders and have also heard it used as a badge of pride from both genders.

    Do you have a better term to describe someone who cares more about sex than the people they are having sex with (without implying any sort of monetary exchange)? Promiscuous is a bit too erudite; words with a vulgar overtone shouldn’t be so fancy. Other synonyms seem even more gendered. Should we make up a new word or go the xe route and just do a funky respelling?

    Computer languages are so much easier than human languages. Another reason why it is silly to try to make computer languages more like human languages when the reverse might be more beneficial.

  88. David Marjanović says

    *shrug* I’ve personally heard it used to try to invoke shame in both genders and have also heard it used as a badge of pride from both genders.

    This here is the global village. You’re not in Kansas California anymore.

    Do you have a better term to describe someone who cares more about sex than

    Personally, I’m rather surprised that you get from programming languages to sex in the first way, let alone the weird implication that a programming language “doesn’t care” who its “partners” are, as if it could care. ~:-|

  89. Christopher says

    Personally, I’m rather surprised that you get from programming languages to sex in the first way, let alone the weird implication that a programming language “doesn’t care” who its “partners” are, as if it could care. ~:-|

    Anthropomorphizing objects, especially human created objects, has a long history, at least in the english language. I think it adds a nice spice to the language akin to metaphors.

    I’ll just drop it and go with the clinical voice.

    When choosing a computer language, the following should be kept in mind:

    1) How good is the documentation? This includes the language spec, library APIs, and example solutions.

    2) Is there a stable, well documented library for that language that does most of what you want to do? Code reuse is grand.

    3) Are there features in the language that makes what you want to do easier or harder? Some problems are easiest when handled using an object oriented framework. Other problems more amenable to a functional programming paradigm. Some problems require direct hardware access while others are easier to solve if the programmer doesn’t have to worry about memory management.

    4) How likely is it that someone can come in after the primary developers have left and be able to understand, maintain, and extend the software? It is much easier to hire someone with an extensive background in Java or C++ than it is to find someone that has done more than a college assignment in Haskell. Languages that encourage (or enforce) good coding style and internal documentation are preferable to ones that don’t.

    5) How accessible is the toolchain? Is it open source or proprietary? Is there IDE support or at least vim highlight files?

    6) Will it run your project in a reasonable amount of time on the available hardware?

    Using these criteria, Python comes out pretty well. It has some of the better documentation of any open source project. Due to its ease of wrapping C and Fortran it has access to an extensive library collection of very well tested codes and it’s native library is quite varied. Just about any standard programming methodology is supported. Forced indenting and great package management makes the resulting project pretty easy to understand. There is a wide and varied ecosystem of open source tools to do everything from an interactive shell to compiled executables. And while the language isn’t known for its speed, it is good enough, especially if bottlenecks are extracted to a C/Fortran library.

  90. tacotaco says

    Does this new language reify normative subject object theory or is it built around a non-normative paradigm that represents alternative ways of abstracting?

  91. Suido says

    @Christopher:

    I think it adds a nice spice to the language akin to metaphors.

    Alternative metaphors that I’ve thought of in the last 30 seconds: O-type blood, or universal adapters, or described it as the opposite of a Apple product charging port. There are myriad ways you could have used interesting, evocative, yet inoffensive language to prove your point.

    Instead you went with slut, which is almost universally used to shame women.

    You made a mistake using a lazy and offensive metaphor, which seriously detracted from your writing. No one is raking you over the coals, or screaming for a ban, just own it and re-think your choice of words in future.

  92. says

    I can’t be bothered to read read 110+ comments, especially when all I’m going to do is add my applause to the gathering thunder.

    Congratulations, Skatje! I look forward to a time in the (relatively near future) when I have Copious Amounts of Free Time™ to learn a new language. I mean, assuming I’m ready. I just learned MS-Windows PowerShell, and that kinda put me off my feed. It might be a while before I’m ready to learn a new language.

    Awesome. (In the colloquial sense.)