Prose and then code
November 22, 2016 8:00 AM   Subscribe

"Eve is a programming language and IDE based on years of research into building a human-first programming platform. From code embedded in documents to a language without order, it presents an alternative take on what programming could be". Repository.
posted by signal (89 comments total) 24 users marked this as a favorite
 
The actual code part doesn't look all that different or more (or less!) readable than any other modern programming language. I do like the error message stuff, though.
posted by SansPoint at 8:12 AM on November 22, 2016 [3 favorites]


Spaghetti Code 2.0: Electric Boogaloo.
posted by simen at 8:13 AM on November 22, 2016 [2 favorites]


Focusing on the machine and ignoring the human factors of software engineering have led us down a difficult road. From inscrutable error messages to semantics that require years of study to understand, we've landed on a version of programming that is actively antagonistic toward our goal of creating usable and robust software.

Yeah, OK, that makes sense, and the stacktrace they show in the picture is indeed a tangled mess of JS errors that no sane person could ever deal with.

Eve is designed for "literate programming" - instead of comments embedded in code, code is embedded in a document.

Um, OK, that could make sense, especially if you're targeting users who are new to programming in general, or business-folk who are trying to bridge the gap between specification and implementation. It might be a little burdensome, though, especially if someone got the idea that narrative trumps implementation, because when I used to TA CS101, a lot of folks thought that their comments were being interpreted by the compiler and actually had an effect on code. You'd have to make it explicitly clear that--

An IDE like Medium, not Vim

*runs screeching into the night*
posted by Mayor West at 8:15 AM on November 22, 2016 [30 favorites]


Though yeah, the error messaging does seem like it's solving an actual problem. It's still early in the language's lifecycle, so I'd have to see how they evolve it to avoid creating a new generation of
on error resume next;
posted by Mayor West at 8:17 AM on November 22, 2016 [1 favorite]


The actual code part doesn't look all that different or more (or less!) readable than any other modern programming language.

Looks like they admit this:
"It's also worth talking about the fact that Eve in its current form isn't sufficient for non-programmers. This version is still very much programming, but it had so much to offer that we didn't want to keep it locked away. We know that Eve will have to evolve before it's ready for a general audience, but what's there now should help make things more accessible"
posted by thelonius at 8:20 AM on November 22, 2016 [1 favorite]


Designing a programming language for non-programmers is folly.

See Cobol and (especially) AppleScript.
posted by parki at 8:26 AM on November 22, 2016 [10 favorites]


Designing a programming language for non-programmers is folly.

To be fair, their claim is that it's a "human-first programming language", which doesn't necessarily mean that it's for non-programmers.
posted by suedehead at 8:28 AM on November 22, 2016 [2 favorites]


COBOL was once the most widely used computer language in the world and most corporations ran on it. That's why you can still get a job programming COBOL, believe it or not. I'm certainly not saying it was a good language, but it also certainly wasn't folly.
posted by eye of newt at 8:31 AM on November 22, 2016 [4 favorites]


COBOL was widely used because it was the first mid level programming language. There's a reason we moved from it as better alternatives appeared.
posted by NoxAeternum at 8:34 AM on November 22, 2016


Designing a programming language for non-programmers is folly.

See php

You can still get a job programming php. If you think that means it's not folly then your idea of the purpose of a programming language is different from mine.

As someone who has spent the last year or so on a crusade to persuade my team that comments in the code are quite possibly the root of all evil, I can't see how this will end well.

I'm open to persuasion though.
posted by merlynkline at 8:37 AM on November 22, 2016 [3 favorites]


Designing a programming language for non-programmers is folly.

For any of that to to be true, programmers would have to emerge from the womb able to write assembler and programming itself would need to be is a monolithic, undifferentiated task with no domain-specific nuances or specialization.

You're probably not old enough to remember this, but for a while there _using a compiler_ was not considered "real programming".
posted by mhoye at 8:38 AM on November 22, 2016 [19 favorites]


That's why you can still get a job programming COBOL, believe it or not.

I have a friend who's in her 30s and is a COBOL programmer (or has been in the recent past). When I first heard that my jaw dropped but there are a staggering number of legacy systems still in place that are running COBOL and to this day are being actively maintained.
posted by OverlappingElvis at 8:39 AM on November 22, 2016 [1 favorite]


One recent language that does error messages similarly and well is Rust. This can be helpful, since some of the basics are pretty counterintuitive at first, but it's also frightening when the complier says things like "I was expecting a string literal here, but instead I found U+201C. Did you copy this from some website that enforces smartquotes?"
posted by 7segment at 8:42 AM on November 22, 2016 [9 favorites]


You know what else has declarative, pattern matching blocks that apply in an (apparently) mysterious, ill-defined order? CSS. And no one ever tears their hair out debugging layout issues and working around conflicting rules with that, right?
posted by mubba at 8:43 AM on November 22, 2016 [13 favorites]



You can still get a job programming php. If you think that means it's not folly then your idea of the purpose of a programming language is different from mine.


Here's Facebook's "getting started with PHP" page. Like it or not, one of the most successful tech companies in the world uses the hell out of it in production every day. They seem to be doing OK.

"X isn't a real programming language" or "doing X isn't real programming" has always been bullshit macho posturing, nothing more or less.
posted by mhoye at 8:44 AM on November 22, 2016 [24 favorites]


For any of that to to be true, programmers would have to emerge from the womb able to write assembler

TBF I sometimes feel as though I did. But that's not what I mean. Programming is a skill that can be learned but it is not defined by the ability to use any particular language. I'm a big fan of some modern languages, which make programmers' lives a lot easier, but I don't believe non-programmers can be empowered to program by any means other than learning how to do it. That doesn't mean learning a language, just as learning to keep a garden doesn't mean learning how to use a spade.

You're probably not old enough to remember this, but for a while there _using a compiler_ was not considered "real programming".

I am old enough to remember writing assembler in raw hex on a 20-key pad :/
posted by merlynkline at 8:45 AM on November 22, 2016 [4 favorites]


The complaints about PHP aren't about it being a real programming language, but that it's as usable as a double claw hammer.
posted by NoxAeternum at 8:47 AM on November 22, 2016 [7 favorites]


Like it or not, one of the most successful tech companies in the world uses the hell out of it in production every day. They seem to be doing OK.

Also not my definition of "not folly". I wouldn't want to have to make php do that. I'm not sure they do, either TBH. That's where they started but I suspect they've made a few changes.

"X isn't a real programming language" or "doing X isn't real programming" has always been bullshit macho posturing, nothing more or less.

Indeed. Just one of the reasons I didn't say either of those things.
posted by merlynkline at 8:47 AM on November 22, 2016 [3 favorites]


The biggest problem I think most "non-programmers" have is in trying to break down the steps and logic of what they want the computer to do. A language's syntax, beyond a certain base understandability, is secondary.

At least that's how I see it as someone who took a year of Comp Sci, and then said "fuck it," and got a degree in English.

Even the most human-readable, as close to human language as possible programming language will run into this because you're providing instructions for nearly each step of a process.

--

NoxAeternum The complaints about PHP aren't about it being a real programming language, but that it's as usable as a double claw hammer.

Rotate it in your hand 90 degrees, and you have a functional, if not great, hammer.
posted by SansPoint at 8:49 AM on November 22, 2016 [8 favorites]


That doesn't mean you should try to build a skyscraper using your hands as hammers.
posted by dilaudid at 8:49 AM on November 22, 2016


I feel like there's a lot to be explored in making programming languages based on accommodating human neurology. But much of what makes programming hard to reason about, programmers do themselves. Bad names and complicated structures without comments go a long way towards making code unreadable.

This kind of looks like a friendlier IPython notebook. And Python's already really easy to write.
posted by MuppetNavy at 8:50 AM on November 22, 2016 [1 favorite]


Rotate it in your hand 90 degrees, and you have a functional, if not great, hammer.

That's PHP in a nutshell - eking out functionality that a better designed tool would have natively.
posted by NoxAeternum at 8:51 AM on November 22, 2016 [7 favorites]


NoxAeternum: Yeah, but it works, and after spending some time doing Modern JavaScript Development, it made me miss PHP a lot.

(Yes, yes, JavaScript is also a double claw-hammer, but it feels like Modern JavaScript Development has a much smaller area you can use to hit the nail.)
posted by SansPoint at 8:54 AM on November 22, 2016 [4 favorites]


The problem with making a "language" that tries to enable non-programmers to write programs is that it results in non-programmers writing programs. This is analogous to making something that lets non-engineers build bridges. Eventually, you get cars in the river :(
posted by merlynkline at 8:54 AM on November 22, 2016 [25 favorites]


That doesn't mean learning a language, just as learning to keep a garden doesn't mean learning how to use a spade.

The language, like the spade, is a tool: one end of it touches the human, the other end of touches the job. Designing a space with no consideration for the shape of the hand holding it would obviously be idiocy, but - funny story - that's exactly what C and C++ are. They're meant to be easy for computers to parse, and demand bizarre and largely pointless rituals (and incite the attendant holy wars - Tabs vs. spaces! K&R vs ANSI!) to be at all human readable.

Languages have ergonomics. As it stands (and this is reasonably well-researched) for the most part those ergonomics are garbage, but it's nevertheless true.
posted by mhoye at 8:55 AM on November 22, 2016 [6 favorites]


merlynkline: The goal of these projects, as far as I can tell, isn't to replace programming languages for programmers with ones for non-programmers, but to provide better training wheels to turn non-programmers into programmers.
posted by SansPoint at 8:58 AM on November 22, 2016 [4 favorites]


merlynkline: "The problem with making a "language" that tries to enable non-programmers to write programs is that it results in non-programmers writing programs. This is analogous to making something that lets non-engineers build bridges. Eventually, you get cars in the river :("

If my experience with Visual Basic is any indicator, what you get is horribly designed and unmaintainable code written by chemists or material scientists and then you have to hire actual software engineers to come in and unravel the whole mess.
posted by octothorpe at 9:03 AM on November 22, 2016 [3 favorites]


The goal of these projects [is] to provide better training wheels to turn non-programmers into programmers.

A laudable goal. Ironically, I believe that training wheels are a very poor way to teach someone to ride a bike (I made that mistake with my first child). It turns out that php is a very poor way to teach someone to program. Eve may do better.

Sadly, although I did work out a much better way to teach my second child to ride a bike, I haven't had similar success with programming so I suppose I shouldn't be too critical of others' attempts to do the same.
posted by merlynkline at 9:03 AM on November 22, 2016 [3 favorites]


Or those Chemists and Materials Scientists realize that they're far better at programming than science, and jump into another career.

Anecdote: I did this. Virtually all of my coworkers did this. It's rather common.
posted by schmod at 9:04 AM on November 22, 2016 [4 favorites]


The PHP double-claw hammer analogies owe to PHP: a fractal of bad design, which is a fabulous essay that everyone should read, in part because it immediately defangs the "if millions of people use it how bad can it be?" argument.

Facebook only finds PHP usable because they transpile to it from a custom language they wrote to avoid some of the 4598734958 footguns it ships with. These range from the annoyingly inconvenient (utter lack of any consistent style when it comes to builtin functions) to actively dangerous (tendency to compare hash strings as equal regardless of whether they're equal).
posted by 7segment at 9:11 AM on November 22, 2016 [13 favorites]


Go, Rust, Dart, and now Eve. If all new programming languages are going to be named after games from now on, I'm waiting for X-COM.
posted by sfenders at 9:15 AM on November 22, 2016 [4 favorites]


7segment: Oh, the transpiling thing. That's exactly what drove me nuts when I tried to learn AngularJS for a job. So much goddamned overhead. To write a "Hello World" application in AngularJS that would take one fucking line of Vanilla JS code, I had to install a whole bunch of apps, write (or copy/paste) a few dozen lines of code, and learn a whole new superscripting language on TOP of JavaScript. No wonder people don't want to learn to code.
posted by SansPoint at 9:15 AM on November 22, 2016 [6 favorites]


"X isn't a real programming language" or "doing X isn't real programming" has always been bullshit macho posturing, nothing more or less.

But what about "X is a language that encourages bad unmaintainable code"?
posted by PMdixon at 9:17 AM on November 22, 2016 [4 favorites]


SansPoint: apropos
posted by 7segment at 9:21 AM on November 22, 2016 [1 favorite]


To quote ol' Nicholas Wirth - algorithms + data structures = programs. A programming language is just a way to instantiate these. From my experience in the software engineering biz, a lot of people seem to think that knowing the syntax/semantics of a particular language is the same as knowing how to program. Being able to deconstruct a problem into algorithms and data structures independent of a particular language is knowing how to program in my book. When HyperCard was released it was programming for everyone with its English like language. This came from Smalltalk which was the first everyone is a programmer system. HyperCard is gone and Smalltalk still floats around in the background but the reality is that the vast majority of people don't want to program (or create anything in particular). We are returning back to this mindset with all the Koding for Kiddies classes you see, but getting a sprite to float around on a screen ain't programming. Every time I hear of these programming for everyone breakthroughs I can only question the assumption that everyone wants to program. Remember VCRs?
posted by njohnson23 at 9:23 AM on November 22, 2016 [7 favorites]


njohnson23 The whole "let's teach kids to code" thing isn't really anything new. It goes back to LOGO. I see the latest push as half good-natured effort to teach kids a useful skill that isn't going to go away and will help get them a job, and half attempt by Silicon Valley companies to develop enough potential programmers that the the supply will so outstrip demand that a developer can be paid a fraction of the salary they command today.
posted by SansPoint at 9:27 AM on November 22, 2016 [4 favorites]


This whole discussion is kind of orthogonal to Eve, which presents a fairly unique way of doing things that is derived from weird declarative languages like Prolog. It's really a different paradigm, not just friendly syntax and a designy interface. There's no concept of control flow or sequential execution, for example.
posted by vogon_poet at 9:37 AM on November 22, 2016 [3 favorites]


I have a head start on forming my opinion on this because I've seen it before. I don't think it's supposed to end up being a general-purpose programming language. It's supposed to end up being a tool for certain kinds of application - like Excel for webdev or something (imperfect comparison). So far through its not really suitable for non-programmers (which they admit) and probably takes some getting used to for programmers too. That's the downside of elegant domain-specific stuff - it may be simpler to solve a certain problem than with general-purpose programming, but if you need to learn a new language for each problem domain...

I think this stuff is interesting though - they just oversell it a bit.
posted by atoxyl at 9:43 AM on November 22, 2016 [1 favorite]


From the description I thought it was going to be something more along the lines of Inform 7, which would be... interesting in a non interactive fiction context.
posted by usonian at 9:45 AM on November 22, 2016 [1 favorite]


“Programming languages for non-programmers” will only take off once the development tools are themselves artificially intelligent and can synthesise and amend properly designed applications from statements of intentions (or perhaps some kind of dialogue).

Or, in UNIX parlance, #!/usr/local/bin/dwim
posted by acb at 9:46 AM on November 22, 2016 [1 favorite]


Go, Rust, Dart, and now Eve. If all new programming languages are going to be named after games from now on, I'm waiting for X-COM.

With the concomitant projects when the compiler occasionally decides to wipe your entire codebase.
posted by Celsius1414 at 9:47 AM on November 22, 2016 [1 favorite]


acb: Lots of people know how to "program" in Excel. With the right DSL for the right kind of application, you can certainly teach ordinary people to program. They just won't be using general-purpose languages nor writing independent software with it.

On a sidenote, does anyone have any experience with Light Table, the Python/Clojure IDE which is apparently the spiritual predecessor to Eve? I hadn't even heard of it, but it looks pretty dope, and made for programmers first and foremost.
posted by simen at 9:50 AM on November 22, 2016 [1 favorite]


This really looks like a Smalltalk derivative and I wonder what it has to offer relative to Squeak, Pharo, et al.
posted by chrchr at 9:50 AM on November 22, 2016


Facebook only finds PHP usable because they transpile to it

Facebook clearly found PHP usable before they transpiled to it, since they built the site to scale on top of it before they created Hack/HHVM.

PHP makes a lot of engineers stupid. It's not they're wrong about the warts (although some of that's debatable -- I personally find arguments like "strpos and str_rot13 are unusably inconsistent" shallowly correct at best), it's that the upset about those warts is overblown in some cases and more importantly creates a tunnel vision about the baseline acceptability and even advantages PHP offers.

Perhaps ironically, I suspect that's one of the reasons PHP persists. Not the only one, but I think it'd be possible for it to potentially go away if somebody actually made something that did everything it does better. Maybe start by taking it seriously.
posted by wildblueyonder at 9:59 AM on November 22, 2016 [3 favorites]


it's that the upset about those warts is overblown in some cases and more importantly creates a tunnel vision about the baseline acceptability

Would now be a good time to admit that I write perl by choice?
posted by merlynkline at 10:03 AM on November 22, 2016 [6 favorites]


If you want to invent a human-first programming language, you first have to invent a language capable of accurately describing mathematical processes which can be understood by a layman. There's no magic MakeItScale() and MakeItNotCrash() function, the reason it's hard is because it's a specialized knowledge set. You might as well try to invent a language that will make someone know how to rewire a house without any special knowledge.
posted by blue_beetle at 10:07 AM on November 22, 2016 [7 favorites]


Teach your child Haskell in 5 easy steps.
posted by Riton at 10:09 AM on November 22, 2016 [5 favorites]


acb: Lots of people know how to "program" in Excel. With the right DSL for the right kind of application, you can certainly teach ordinary people to program.

Though programming involves thinking in certain types of fine details; concerning oneself with data structures, algorithmic complexity, state, and such. It involves mental discipline and focussed effort.

Imagine that, at some point in the future, for most work, the actual developers are replaced with software. The product owner/client/whoever doesn't go to programmers, give them a spec and get them to break it up into story points, but rather engages with some software and describes what they want; it can be something like “I want a system for keeping track of unfinished tasks” or “I want a game in which you shoot zombies in Victorian London”. In the former, it would engage in a Socratic dialogue, asking what constitutes a task, when one is created, how one can be finished, and so on, giving you prototypes to play with and holding on to the (internally annotated, non-human-readable) source code in case you want to make modifications, or if it notices from your use cases that the data structures could be improved. In the latter, it'd ask whether it's a 3D game or a side-scroller, clarify the inferred genre conventions of “game”, “zombies”, “Victorian London” and such, and at some point give you the option of hand-editing the artwork or fetching some from repositories of existing artwork (you could even say something like “actually, make it Nazis and on a space station”, or “but the space station looks vaguely Victorian Gothic, with a bit of Tokugawa-era Japan”, and it'd be smart enough to interpret this, using some kind of stylistic synthesis from machine learning).

Such a system could even work with existing systems, rather than discrete apps; you could talk with whatever replaces Siri about implementing something that runs in your phone/watch/glasses that infers from sensor readings what you're doing and discreetly offers the right form of assistance, inferring what sorts of algorithms and data structures to implement to achieve its goals.
posted by acb at 10:11 AM on November 22, 2016 [4 favorites]


Facebook clearly found PHP usable before they transpiled to it, since they built the site to scale on top of it before they created Hack/HHVM.

PHP was Zuckerberg's first love, coding-wise, and so it's here to stay, even if it has to be built up into a cyborg Frankenstein monster.

It's like the old Gates-era Microsoft joke: “I don't know what programming language we'll be using in the year 2000, but I know it'll be called Basic”.
posted by acb at 10:13 AM on November 22, 2016


Lying prostrate under your desk isn't real programming
posted by sandettie light vessel automatic at 10:18 AM on November 22, 2016 [3 favorites]


Would now be a good time to admit that I write perl by choice?

Perl is another example of a language that is heavily abused without being understood, and it deserves its abuse far less than PHP does. Not that it's above criticism, and I can understand why some people would be averse to choosing it for many projects.

But "perl is line noise lol", "perl is for crusty olds who don't keep up their skills", or "Perl 6? Why? We have Ruby/Python!" are all signs of somebody who either hasn't ever bothered to seriously investigate or isn't sharp enough yet to come to a smarter conclusion.
posted by wildblueyonder at 10:22 AM on November 22, 2016 [7 favorites]


I didn't want to have the PHP debate again because I kinda accidentally kicked it off before but - you know complaints about PHP don't just come from people who've never actually used it, right? I think a lot come from people who have after broader language experience.

I'm actually interested in your list of things PHP still does better because my fundamental issue with even the most modern PHP is that it's either a poor man's Java or a poor man's Python/Ruby. Maybe there's a niche for a language that's just good enough at that exact combination of things - I don't know, I just honestly can think of many reasons I would recommend to start learning PHP over something else. I did read that Slack article but it didn't really convince me that's not an environment you can set up with another language?

although some of that's debatable -- I personally find arguments like "strpos and str_rot13 are unusably inconsistent" shallowly correct at best

I don't really wanna focus on the random little annoyances either but I'll point out my "favorite," which is that array_map() has a reversed argument order from array_filter() and array_reduce()!

Btw I say this all is someone who likes JS. But JS is no doubt a mess. It's just kind of a fun mess since they chose a couple of powerful ideas to be the core of the language.
posted by atoxyl at 10:22 AM on November 22, 2016 [3 favorites]


Perl is definitely very good at doing awk/sed++ sorta stuff, and I'm sure other things. It's just - there are probably also things it's not a great choice for.
posted by atoxyl at 10:24 AM on November 22, 2016 [1 favorite]


Also if you have specific PHP-ecosystem software you like or reasons not specific to the language itself those count as good reasons to like PHP! There certainly were historical reasons external to the language itself - I just think some of those are diminished now. But I'm entirely sincere in looking for a list.
posted by atoxyl at 10:36 AM on November 22, 2016


I've only looked at the examples and some of the documentation, but I don't think you could call this "for non-programmers" or beginning programmers. The syntax is very abstract and terse which will turn off new or non programmers. It also assumes the programmer has absorbed a somewhat deep understanding of some somewhat advanced concepts such as constructing queries with different kinds of matches against structured data sources, binding results to variables, adapting different patterns of data through terse one-line magic, etc. , and lots of Eve-specific concepts and jargon.

That's not to criticize it, just that it shouldn't be considered a beginner or non-programmer language. Maybe the IDE makes it a nice environment for teaching the language and its concepts, and maybe a simplified GUI that walks you step by step through constructing certain types of blocks in Eve would make it usable, if in a more limited way, to "non programmers".

It looks like once you understand it you can be very productive and make some cool stuff with it quickly and easily. The central problem they seem to be attacking is that some of the details of different databases and similar systems end up permeating typical imperative code or otherwise creating a lot of additional work or complexity that gets in the way of the programmer clearly and simply expressing and working towards the desired results. I guess it does this by including this ability to query different kinds of data sources underneath the surface of the language. (How does one implement a new data source in Eve? Or target something other than the web browser or Eve IDE for output? Haven't found that info yet.)
posted by thefool at 10:58 AM on November 22, 2016 [1 favorite]


Lying prostrate under your desk isn't real programming

Clearly you've never hung around my office after someone breaks the build.
posted by Mayor West at 11:00 AM on November 22, 2016 [6 favorites]


> Um, OK, that could make sense, especially if you're targeting users who are new to programming in general, or business-folk who are trying to bridge the gap between specification and implementation. It might be a little burdensome, though, especially if someone got the idea that narrative trumps implementation

Before you dismiss the idea out of hand, remember that literate programming — this kind of interleaving of code with verbose, highly descriptive comments — was invented by the great Donald Knuth.

In fact, the entirely of TeX is written in exactly this style. Knuth even published it as a book. TeX is real-world proof that writing large projects in this style is at least possible.

I'm still not sure if it's a good idea, but it's at least an idea with a pedigree. I'm willing to extend it a little benefit of the doubt because I respect Knuth.

All that said, I don't think this looks like a language I'm eager to work in. The actual code looks miserably unreadable to me, and I'd be afraid that in any large project the comments would become decoupled from the code, and become an impediment to understanding rather than an asset.

I suspect that part of the reason literate programming has never taken off is that people have realized that it's better to design more readable languages than to lean too heavily on commentary.
posted by a mirror and an encyclopedia at 11:27 AM on November 22, 2016 [6 favorites]


oh, and fuck an IDE
posted by a mirror and an encyclopedia at 11:28 AM on November 22, 2016 [1 favorite]


Why "fuck an IDE"? IDEs are a great idea.
posted by demiurge at 11:31 AM on November 22, 2016 [4 favorites]


Beware the IDEs.
posted by Celsius1414 at 11:33 AM on November 22, 2016 [5 favorites]


On a sidenote, does anyone have any experience with Light Table, the Python/Clojure IDE which is apparently the spiritual predecessor to Eve? I hadn't even heard of it, but it looks pretty dope, and made for programmers first and foremost.


I do. I use it mostly to write Clojure, and it's pretty nice if it has a plugin that let's you eval stuff right in the editor. Kind of a better Vim + slimv (or Emacs and it's Lisp integration, though I don't have experience there). It definitely has modern graphics, mouse control, and editing shortcuts. Otherwise, it's feels like a standard sort of editor. Maybe I haven't looked beyond what I use it for. Maintenance is an issue, since the original dev(s) are working on Eve, and there are definitely bugs. It's written mostly in Clojurescript on Electron (the underlying tech of the Atom editor), so if you want to hack on it better learn to love parenthesis.
posted by Mister Cheese at 11:36 AM on November 22, 2016


Why "fuck an IDE"? IDEs are a great idea.

Probably macho posturing? I do social scientific programming. IDEs are indispensable.
posted by MisantropicPainforest at 11:40 AM on November 22, 2016 [3 favorites]


I didn't want to have the PHP debate again because I kinda accidentally kicked it off before but - you know complaints about PHP don't just come from people who've never actually used it, right?

Yes, and I don't see anything in my comment that suggests otherwise.

I did read that Slack article but it didn't really convince me that's not an environment you can set up with another language?

"can set up" is not exactly the same thing as "the common case" or "the path of least resistance." If it were, there are many complaints about PHP that need to be vacated too.

If the Slack article doesn't at least start gears turning for you, the only thing I can think to do is to recapitulate the question the article poses: is everybody finding PHP productive just wrong? Are all the successes are in spite of the platform?

Btw I say this all is someone who likes JS. But JS is no doubt a mess. It's just kind of a fun mess since they chose a couple of powerful ideas to be the core of the language.

I also like JS and put it as a third language I consider overabused despite real warts. All other things being equal, I would rather write JS than PHP almost every time.

And yet... when it comes time to actually write a web application, is choosing between, say, node and PHP as a platform really an all-other-things-being-equal situation? Not my experience. And I think the fact that the engineering team for Slack defends this should say a lot, considering that something as heavily evented as a chat server is the domain node should absolutely shine for. If you start walking through a choice between the two, and find despite your love of JS (which I share) thinking "yeah, here's some things that are real overhead with the platform in node that, huh, I don't spend time worrying about with PHP," there's a hint.

Perl is definitely very good at doing awk/sed++ sorta stuff, and I'm sure other things. It's just - there are probably also things it's not a great choice for.

This is certainly the commonly repeated viewpoint. But I actually can't think of a single problem domain I'd think Perl is contra-indicated for, at least, considering a field where Python and Ruby would also considered acceptable general purpose languages.

I can see the argument that Perl is problematic for big teams, and, depending on the team, big codebases. Lisp gets the same flak for similar reasons. The discipline involved is the discipline brought to the project. But, then again, from the standpoint of anybody working with Java (let alone a Hindley-Milner language) the difference between scripting siblings on that front is marginal. Not necessarily inconsequential, but marginal.

I don't *really* care to relitigate the reputation of Perl 5, because that battle is over. People who hated it or think they would have hated it are quite safe from having to work with it. People who like it can still exchange ideas with one of the absolutely sharpest communities out there and often even find work getting things done with it.

But when it comes to Perl 6 it's clear that many, many people also do not understand that it is a significantly different language than Perl 5. If you haven't actually spent some time in it, and are tempted to comment on it anyway, maybe instead ask yourself this question: there's lots of interest in things like Rust and Swift (or Go and D, if you like) as potential successors to C/C++, right? Is this not happening with scripting languages because Python and Ruby and the like are really the final apotheosis? Or could there be somewhere that interesting experiments and powerful new approaches are being put into place?

Which kindof brings us back to the topic of Eve. I share most of the skepticism of "programming for non-programmers" -- I think acb is spot on in that it would consist of an AI that basically interrogates the person who wants the software in the same way a development team would until it can model the domain correctly -- but I also think there's an overreaction to it. I don't think they really claim to be programming for non-programmers, I think they instead claim to be human-first. The orientation around the integrated inspector isn't entirely new, but it's an interesting take that considers that either the text editor + tools or IDE approaches we have now might not have reached their apotheosis in terms of utility.
posted by wildblueyonder at 11:43 AM on November 22, 2016


I could write a fantastic magical realism story using all of the metaphors invoked in this thread.
posted by LMGM at 11:47 AM on November 22, 2016 [5 favorites]


Eve has invented comments, and the problems with comments are well-understood, and I don't think that Eve has addressed those problems yet.

Until there is strict, automatic enforcement or extraction of some set of semantics from the prose, the divergence of prose and code will always be a problem. That's a direction they could take in Eve. Take a look at the burger example: the prose clearly expresses the invariants and restrictions, which are then re-expressed in the code (rather less clearly).

It's also telling how the "human oriented" architecture of Eve so faithfully reflects the target computer implementation. Pages. Events. Event driven code block execution. JSON. Nothing is less human than asynchronous event-driven execution. You're free to re-arrange your prose "narrative" to your heart's content because it doesn't matter at all.
posted by the Real Dan at 11:52 AM on November 22, 2016 [5 favorites]


Nothing's less human than asynchronous event-driven execution, excepting whatever abomination you are replacing with our friend OTP.
posted by The Gaffer at 11:59 AM on November 22, 2016


I feel like it's a bit misleading to call this "human-first programming", when it clearly states that it's only useful for a subset of programming problems. "human first programming for some kinds of programs" is more like it.

From a technical standpoint, Eve is a variant of Datalog, which means that it's a database as much as it is a general purpose programming language

So this is a subset of Prolog (Datalog is a subset of Prolog), which is a logical programming language. A programming paradigm built for searching a constrained space for answers that fit a set of logical statements. Very powerful tool, but really not a one-size fits all solution. It's also not always the most human friendly way to think about programming problems, IMO--Prolog has a pretty high learning curve.

This just touches on my own personal axe to grind, which is that discussions about programming languages should focus less on what feels "usable" and "human friendly" (when that is so often an artifact of personal history and organizational structure) and focus more on educating people on what each language is good for. Give us tools to reason with about programming languages. Aesthetics are important, but not as important as other questions like, how quickly can I get my work done, and can I trust that the work I've produced is of high quality. I really appreciate that the authors of Eve do this for us and hope other programming language discussions will move in this direction.
posted by rhythm and booze at 12:04 PM on November 22, 2016 [4 favorites]


I thought "How Eve unifies your entire programming stack" was a good read that highlighted a salient point well, whether it's an agreeable one or not.
posted by Wobbuffet at 12:17 PM on November 22, 2016 [1 favorite]


This is certainly the commonly repeated viewpoint. But I actually can't think of a single problem domain I'd think Perl is contra-indicated for, at least, considering a field where Python and Ruby would also considered acceptable general purpose languages.

My issues with Perl are down ultimately to taste - it makes a lot of decisions that go exactly against what I'd prefer, especially for larger projects, but it does so very clearly on purpose so in a way there's only so much to say about that. Perl 6 seems to have some cool ideas and also takes a some of the things I don't like even further - but as you said I'm in little danger of having to use it if I don't want to.

(decided not to bother arguing about PHP right now)
posted by atoxyl at 12:36 PM on November 22, 2016


the stacktrace they show in the picture is indeed a tangled mess of JS errors that no sane person could ever deal with
I see a thrown exception, and I see duplicated function names indicating recursion, and I see anonymous functions, and I see poorly chosen function names, and I see code locations uniquely defined in an easily expressed filename:line-number way.

I would hope that any modern programming language can do all these things, and they're just exaggerating one of the consequences of that...

But these do not seem to be my kind of designers, so perhaps they disagree with my hopes. When I first saw Java, my thought was "There's a nice language, and a nice virtual machine, and a nice library, but it's a pity you can't adopt just one without being tied to all three", not "They only tied three things together? What kind of anarchist language still lets you choose your own editor or IDE!?"
posted by roystgnr at 12:44 PM on November 22, 2016


This came from Smalltalk which was the first everyone is a programmer system.

Smalltalk was definitely not designed as an "everyone can program" language. It was designed as a message-passing pure object-oriented system that was easily bootstrappable, as opposed to the O-O languages that were built on top of procedural languages. In this, it resembles simple versions of LISP where you can get an interpreter going with just a few primitive functions.

While HyperTalk may have been inspired by Smalltalk, it's much more of an event-driven procedural language than an object-oriented one.
posted by CheeseDigestsAll at 1:33 PM on November 22, 2016


The language, like the spade, is a tool: one end of it touches the human, the other end of touches the job. Designing a space with no consideration for the shape of the hand holding it would obviously be idiocy, but - funny story - that's exactly what C and C++ are. They're meant to be easy for computers to parse, and demand bizarre and largely pointless rituals (and incite the attendant holy wars - Tabs vs. spaces! K&R vs ANSI!) to be at all human readable.

Strongly disagree. Modern C++ is incredibly demanding of the compiler to generate optimized (or just functioning) code. Heck somebody did a C compiler with constexpr!!!! C is the language you want when controlling memory accesses is of the utmost importance (basically the slowest thing your CPU does) and its almost irreplaceable for that when you need it. C++ also offer this but it comes with infinite rope to hang yourself with perf-wise if you're ever a fool enough to use std containers and a bunch of other crap that comes with it. But you can use C++ to build your ow reasonable stuff, just make sure you really need it if you do that because it'll take you a while.
posted by coust at 1:40 PM on November 22, 2016 [3 favorites]


C++ also offer this but it comes with infinite rope to hang yourself with perd-wise if you're ever a fool enough to use std containers

... Without understanding how they work, I guess.
posted by PMdixon at 1:46 PM on November 22, 2016


... Without understanding how they work, I guess.

Nah.... they pretty much suck even then. Even std::vector which is really simple but doesn't offer any mitigation strategy for when it's standard bhv is undesirable (which is a common occurence). The others offer both bad allocation strategies + bad cache coherency.
posted by coust at 1:55 PM on November 22, 2016 [1 favorite]


Beware the IDEs.

Beware the March of IDEs?

(I actually love IDEs too and can't understand generic hating on them. Specific, sure.)
posted by msalt at 2:05 PM on November 22, 2016 [5 favorites]


When I read "Eve is a programming language" I thought it was talking about the game. I thought "Oh, I heard that Eve's basically a spreadsheet masquerading as a space war simulator, so someone must have figured out that it's Turing-complete. Or maybe it has its own scripting language? Cool. I wonder what they've programmed in it? "

Then I saw the Flappy Bird imitation and I was all "Whoa, how do they get that into Eve's HUD display? Doesn't it get in the way of the game itself? What if someone shoots you while it's playing" And so on and so forth. It took me an embarrassingly long time to figure out that it was an actual programming language that has nothing to do with shooty spaceships.
posted by Joe in Australia at 2:24 PM on November 22, 2016


Perl is definitely very good at doing awk/sed++ sorta stuff, and I'm sure other things. It's just - there are probably also things it's not a great choice for

Very clever (er, efficient) undocumented sparse multi-dimensional arrays.... hyperventilating just from brief memory :-)
posted by sammyo at 4:50 PM on November 22, 2016


Smalltalk was definitely not designed as an "everyone can program" language.

Actually, it was. The original goal was to be a better Logo.

(That being said, Eve is nothing like Smalltalk beyond superficial syntax. If anything, I'd compare it to Prolog.)
posted by suetanvil at 5:39 PM on November 22, 2016


Also, has anyone noticed how they seem to think that designing a programming language for humans first is a thing they invented and not the case for literally every programming language ever designed including the ones made as pranks? I'm having trouble seeing this as anything other than the programming-language equivalent of the Grand Unified Theory paper written by the guy who's read half of A Brief History of Time.
posted by suetanvil at 5:57 PM on November 22, 2016 [3 favorites]


Always interesting to see new programming languages, and the philosophical (and often political) agendas behind them.

I like the commitment to literate programming here, and the emphasis on declarative rather than imperative style. But the "everything is a record" idea concerns me. Just because you can shoehorn everything into a single data type, doesn't mean you should, and the languages I'm familiar with that do it suffer for it (i.e., Matlab's "everything is a multidimensional array," which forces extremely awkward code for everything but the most trivial string processing).
posted by biogeo at 6:16 PM on November 22, 2016 [2 favorites]


From the documentation
At its core, Eve only responds to two
commands:

What facts do you know about 
this “record”?
Remember a new fact about 
this “record
I recognize the historical bias that would lead the developers to create a human-first programming platform (anthropocentrism yet again) but I should hope that does not in any way preclude a well motivated cat (or any other creature that can both know and remember) from become a member of the user community.
posted by otherchaz at 6:55 PM on November 22, 2016 [2 favorites]


“Programming languages for non-programmers” will only take off once the development tools are themselves artificially intelligent and can synthesise and amend properly designed applications from statements of intentions (or perhaps some kind of dialogue).

There's already a form of programming that involves dialog with your programming environment to refine into existence the program that you want to write! Dependently-typed languages with proof assistants offer this experience today. The " for non-programmers" bit, well...
posted by invitapriore at 8:02 PM on November 22, 2016 [3 favorites]


This is certainly the commonly repeated viewpoint. But I actually can't think of a single problem domain I'd think Perl is contra-indicated for

Perl's inventor, Larry Wall, was a missionary linguist by background, and thus Perl (certainly as of Perl 5) inherits the intellectual habits of theology and natural linguistics rather than computer science/mathematics/logic. For example, things like value-holding variables and file handles are different parts of speech, to which different rules apply; you originally couldn't assign a file handle to a variable, pass it to a function and so on. Workarounds were created, mostly consisting of a C-style pointer mechanism, with all the footgun potential that this entails. There is no notion of a type system with uniform rules, but rather a number of post hoc rationalisations; the system is as it is, and the language definitions exist to describe it and rationalise it in the way it does, rather than to define an ideal.
posted by acb at 3:45 AM on November 23, 2016 [2 favorites]


Actually, it was. The original goal was to be a better Logo.

That's nostalgic. Logo was my first programming language. (After that, C - not the wisest choice for a first "real" language, but having sweat that blood it was kinda fun to be able to hack on kernels and annoy my friends with weird LKMs.)

However, I've no intention of looking into this. The obvious reason would be that "after you know a handful of languages why bother going back to something basic," but it's not that. It's that in my experience with "for humans" / "friendly" systems, you quickly get to the point where the lack of gory details is a major limitation. The example I'll pick on is one of _why the lucky stiff's projects. The project name escapes me (and _why vanished from the Internet years ago) but the idea was to integrate a UI component with (essentially) SDL, and wrangle Ruby's syntactic freedom to create an easy-to-use platform for visual creativity. It was fun, but as soon as you tried to push your project past a certain point, the abstractions started leaking and you got code that should function but didn't - either blocking the whole single-threaded interpreter process and thus blocking rendering, or not integrating properly with external libraries because who knows why, pun intended.

That's only a single example but it represents a common problem. Some concepts can't be hand-waved away: Haskell makes a valiant effort to be side-effect free but you still have to do I/O!

Anyway, this Eve project has perhaps some value for attempting to "imagine alternate futures," but I still suspect it will end up at best a niche project with a few really well-suited use cases and not much broad adoption.

* Edit, because I forgot an important point: for a beginner trying to accomplish something with code, JUST LEARN PYTHON. Seriously. Arguably much less conceptual difficulty.
posted by iffthen at 6:28 AM on November 23, 2016 [1 favorite]


Perl's inventor, Larry Wall, was a missionary linguist by background, and thus Perl (certainly as of Perl 5) inherits the intellectual habits of theology and natural linguistics rather than computer science/mathematics/logic.

University studies in all of the above topics suggest to me that the line between the underlying activity involved each is a pretty fuzzy one, though the linguistics prof who forbid me from doing a paper on the human use of programming languages seemed to think the gulf was wide enough that the two shouldn't meet. Perhaps he didn't like Perl either.

Wall surely seemed more interested in being expressive, inflected, and most of all practical than in making Perl 4 and then 5 like its contemporary Real Programming Languages™ reflecting computer engineering, which for all intents and purposes as far as the industry went when the web was getting off the ground were Pascal and C/C++. You didn't have types, you had data, and contexts for it, and a wide variety of in-language idioms easily available for casually transforming that data, often at a higher level of abstraction than other languages. And it turns out since transforming data is generally what you want to do with a program, Perl is pretty useful across a wide variety of domains.

Complaints about references seem partially valid to me (on one hand, if we're talking about whether a language is computer-science-y enough, complaining about references seems pretty weird, OTOH, there are absolutely situations where Perl's semantics there should have been more transparent and weren't). And I get the fuss about types and benefits they can confer, although I don't get the fuss as they're made compared to a lot of static manifestly typed languages where said types start largely about how the data layout is broken down by byte -- even though there are problem domains where you need that, starting your language around those primitives isn't "human-first" programming.

Perhaps taking the original philosophies of Perl and absorbing a lot of the conversation regarding typing (among other things) is why Perl 6 Has Types Made for Humans.
posted by wildblueyonder at 9:49 AM on November 23, 2016


The discussion of Perl and what it's good for is making me think about another difference between a programmer and a non-programmer.

wildblueyonder says "And it turns out since transforming data is generally what you want to do with a program, Perl is pretty useful across a wide variety of domains."

Is it? I think your average non-coder doesn't see a program as something that transforms data, as much as they see it as a widget or other gizmo that lets them accomplish a task. The Facebook Messenger app is, at a fundamental level, transforming data, I suppose, but what it's doing for the user is sending text and pictures to friends. When a non-programmer thinks about making an app, they aren't thinking about transforming data, they're thinking about solving a problem. (For certain values of problem.)

The real difficulty of programming is figuring out how to break down that problem domain into steps, and then how to implement them in code. There's always going to be a place for thinking about development on a low-level, manipulating data sense, but for getting new people into it, you'll have to start teaching on a higher level of "You want to make a $thing. Here's how you make a $thing in code."
posted by SansPoint at 9:59 AM on November 23, 2016


The problem here is that the authors seem to believe that the hardest part of programming is figuring out how to tell the computer what to do. That's not true; the hardest part is figuring out what exactly you want to do, and generally independent of whatever language you're using. It's a skill you need to learn, at least until AI is advanced enough to do the thinking for you.

I'm also concerned that the authors don't seem to provide any theoretical analysis of the language. Designing a PL needs to be done carefully and with a mathematical/logical framework to make sure the pieces fit together as you'd expect. Or is what they have basically just Prolog with a fancy UI?
posted by destrius at 4:40 PM on November 23, 2016 [3 favorites]


...the hardest part is figuring out what exactly you want to do, and generally independent of whatever language you're using. It's a skill you need to learn, at least until AI is advanced enough to do the thinking for you.
Yes! Apart from the LOGO class I took after school in third grade, I'm largely self-taught. In my various jobs I've found myself in the role of either "sole web guy" or "web guy who can also speak a bit of design" and so have often had the luxury of being left to my own devices to solve problems and try new approaches, versus being in an environment where there's religion about One True Platform, or languages banned by fiat because someone read on slashdot that real programmers don't use them.

Learning a given language's syntax is the easy part... it's learning the context and pitfalls of the domain you're working in that's hard, which is why I don't even know where to begin with Ask MetaFilter questions like "I need a career change. What 6 week Learn To Code bootcamp should I do?" I mean, I've been doing this for 16 years and I'm still learning to code.
posted by usonian at 5:58 AM on November 25, 2016


Also, has anyone noticed how they seem to think that designing a programming language for humans first is a thing they invented and not the case for literally every programming language ever designed including the ones made as pranks?

To be fair this is like iteration 7 of their attempts at this, which started years ago with Light Table, and under the name of Eve have been quite diverse (a programmable wiki, a visual tool for designing DB queries, etc.). They do have a unique vision of what "programming language for humans" means, and it basically means a programming language such that any part of the program is inspectable at any time, and you would never need or even want a debugger. With those constraints, they ended up coming up with this current version which seems pretty cool.

I believe they are venture funded so the early release plus inordinate hype might just be general Silicon Valley pressure.

I hope this catches on. I agree with the "Excel for Webdev" comparison; maybe a better example is that this might replace all of the non-accounting-related applications of Excel (as bad inefficient database, as terrible tool for making CRUD apps, as actually pretty decent visualization tool, etc.)
posted by vogon_poet at 8:28 AM on November 30, 2016


« Older Glasses, Kilts, and the Basketballers Who Wear...   |   a uniform chorus of desperation Newer »


This thread has been archived and is closed to new comments