All About Eve

Most programming languages today look fairly similar. There’s small differences, of course (Python using spaces, Ruby and Perl have some odd-looking constructs). In the 1960s and 1970s, though, a lot of programming languages were pretty cryptic. Algol, APL, and LISP are great examples of unusual looking programming languages. Even FORTRAN and PL/1 were hard to read. RPG and COBOL were attempts to make programming more accessible, although you could argue that neither of them took over the world. Most programming languages today have more similarity to FORTRAN than either of those two languages.

A new programming language, Eve, claims to be based on years of research in programming from a human perspective instead of from the computer’s. The result is a language that works by pattern matching instead of the usual flow of control. It is also made to live inside of Markdown documents that can serve as documentation. You can see a video about Eve, below.

Neither of these are totally new ideas. SNOBOL, AWK, and Prolog all have some pattern-matching involved. [Donald Knuth] was promoting literate programming back in the 1980s. However, Eve understands modern constructs like web browsers.

You can explore Eve a little on the web. Don’t ignore the buttons at the top right of the page. They allow you to run the Eve code and even inspect it. Just make sure the checkbox in the top right corner of each code snippet has a check in it. Or, click the examples text at the top left and read through some of the examples, like “Flappy Eve,” for example.

We’ve talked about literate programming earlier this year. If you want the opposite of Eve, maybe Rust would suit you.

33 thoughts on “All About Eve

  1. I’m not sure why you place ALGOL in the “unusual” category, given that it’s direct descendants were BCPL (which lead to C), Pascal (which lead to Java), and ABC (which lead to Python), users of any of the descendant languages would find it far more readable than FORTRAN. Sadly, I guess I’m one of the few readers left who is old enough to have written a few ALGOL 60 programs.

    1. I guess the point I didn’t get across is that C is cryptic looking, too, if you aren’t like us and code in your sleep. Ordinary people looking at any of the languages you mention glaze over. COBOL was an attempt to fix that (multiply by)… PL/1 had some COBOL-like parts but also some FORTRAN-like parts (I liked PL/1 but I noticed that you tended to use the subset defined by what you knew before you learned PL/1). RPG was IBM’s answer which was instead of making it English, make it a fill in the multiple-choice forms.

      So I didn’t mean unusual to “us” I meant unusual to “normal” folks.

      1. I came here to complain about the same thing, but okay, programming languages in general look unfamiliar to people unfamiliar with them. But Algol was part of, and a big influence on, the mainstream.

        Instead, what’s this about COBOL not taking over the world? It did in fact take over the world of commercial data processing from circa 1970-2000, when Java finally supplanted it.

      2. And blue prints are hard to read as well if you do not know what you are doing…
        Just as you can not make creating a jet engine easy enough that just anyone can design a CF-6 you can not and should not try to do that with programming. What you will get is a lot of bad code and drive down the pay for programming. Software is 99% designing and 1% manufacturing. Stop trying to make it mostly manufacturing.

  2. Well everything was procedural, then object oriented programming and now this, but it doesn’t look like anything new or less complex or even more readable. It looks like just another take on programming like thousands out there already.

    The only thing that I have seen that is more ‘human’ friendly is things like this –

    As for being older languages being more cryptic – try writing in raw Windows API or even raw Javascript or take a look at jQuery.

    1. Yeah, I used to write raw Windows API. Remember all the stupid books and websites devoted to that crap? Thought I was smart and cool back in those days. Developed a small database to keep track of it all. I think it was even included in one of those crappy published tomes. Up until Windows ME, there wasn’t anything I couldn’t do with it and a lot of things I wasn’t allowed to.

      What an extraordinary waste of my time. If there was any part of my programming career (or lack of) I would ever take back and redo, not wasting time with the WinAPI would be right up there at the top of the list right alongside never taking Visual Basic Basics Programming 101.

        1. If you use it as it was meant to be, yeah it is beneficial. I’m talking about when people go to crazy extremes with it. I used to do some really need tricks with it Pre-98. But when I realized my programs were starting to be API Call-> API call -> pop a register -> API call I knew I went too far.

          This is true for any language however.

      1. I probably still have a copy of the Petzold Programming Windows. Would’ve been for Windows 2. Haven’t had the need or desire to touch the API since. Didn’t have the desire then.

    2. I find things like ardublock way more cryptic and harder to follow, than C/C++ (written well).
      Yes, if you are a novice computer user – is my son when he was 5 to 8 – visual block programming is good. As soon as you need to do anything more than a page long, or complex, they are horrible to use (I swapped him over to lazarus).

      So I completely agree that there should be languages for novice users, and doing things from the ‘human’ instead of the ‘computer’ perspective is right for that.. However, if you are doing something complex, there is no real alternative to all the procedural languages that are the descendants of the 60’s ones..

    1. Actually it’s the other way around: Hypercard was well-known and influenced Tim Berners Lee’s ideas about HTTP.

      https://en.wikipedia.org/wiki/HyperCard

      Oddly enough I wrote the first sentence without really ever having read this directly, but a quick search proved it to be so. What I did know, from Tim’s book “Weaving The Web” was that when Tim Berners Lee started to promote the web concept at its inception, there were already a number of Hypermedia applications around, including Hypercard, but that people hadn’t made the link (sic) to using it generically across a heterogeneous network (which was forced on Berners Lee because of the wide spectrum of computers used at CERN).

      So, in a sense it was great for the Web – it helped to make it what it is.

  3. but .. but I am borderline autistic. I dont speak human, I speak computer, C with assembler is all I need.
    beep boop

    >programming from a human perspective

    this sounds like people “programming” fpga logic in C++, or a new wave of ’embedded’ developers putting noje.js on IoT hardware.

  4. Every programming language sucks in it’s own way.
    And to my experience, the more “modern”, “easy” and “readable” it claims to be, the more limited it is.
    It may give you a quick success, but sooner or later you’ll hit a wall and switch to C/C++.

    Learn C. It may be ugly, but it gets the job done.

  5. I’m an old coder (started in the 80’s) and in my book you only need three languages.
    ASM for the hardware stuff you can’t do in C/C++. Like init a CPU or control a peripheral. C/C++ for the grunt work where speed and efficiency is needed. And C# for everything else. ( I would have said Java, but it has no unsigned type FFS! )

    Unfortunately people think that if they don’t understand a language within the first year then it’s the language at fault. In any case new languages are not needed. Having said all of this, I am never going to say don’t do it, if people want to make new languages then do it, not for me to say what you can and can not do (some think they can). Just don’t trick people into thinking they are software engineers because they know how to write a formula in excel or string some JavaScript together in a click and create editor.

    P.s. The most portable language is C/C++.

    1. Heh you know that old joke, in heaven the Policemen are English the mechanics German….

      Should be a version for languages, like in heaven the drivers are written in ASM, the engine in C, the database in Perl, the front end in GTK, in hell the drivers are written in perl, the database in C, the engine in GTK and the front end in ASM

      Or something like that, just scribbled it down, as far as that expression works for typing.

  6. Sounds like… Bastard son of awk and javascript, raised by literate-programming wolves?

    It’s weird, and I don’t mean that in a bad way, but I’m not hearing an actual practical justification for it. Maybe I’ll play with it sometime when I’m bored? But it appears that whoever invented it definitely had fun doing it, so good for them.

  7. Knuth’s Literate Programming was the first thing I thought of too, at least when Markdown entered the flow. I’m not sure that I agree with Eve’s goals – or perhaps I don’t understand its goals fully – ultimately there *is* a machine underneath there, and ultimately you’re going to have to think like it does or you’re not going to understand why it does what it does. (Sadly, it seems that even in languages like C, many programmers just don’t get that.)

    On a personal note: have you heard that Mr. Silva will be in town this week? Mail me: jim dot thompson –atta– pobox dot com.

  8. There is already a programming language that almost everyone can learn and use: BASIC

    And if i look at that and then at, for example, FreeBasic then i know whats easier to use.

    1. BASIC can be a fun language for some so I wouldn’t discourage using it for a beginner but it’s a horrible language that teaches a lot of bad habits. The line numbering promotes disorder, that in conjunction with no labels make very poorly readable. The global scope of all variables discourages the use of subroutines. The limits of the length of variable names hinders readability.

      So sure basic may be a good start for some but the next step after that is to un-learn BASIC .

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s