by ibdknox on 10/28/16, 4:05 PM with 374 comments
by jbclements on 10/28/16, 6:22 PM
Allow me an analogy: "Bronk, the math designed for humans." Instead of dense algebraic expressions like "3x+49", you get to write "thrice the value of x plus 49." You may consider this a straw man, but I think that if you look hard at existing programming languages, you'll see that they are all designed for humans, and that the challenge in programming is in formulating your thoughts in a precise fashion. Should languages create higher-level abstractions to allow humans to reason about programs more efficiently? Yes! But that's not what this environment is about.
I do see one possible rebuttal to this, which would be an entirely different form of programming that is to traditional programming what google search is to the semantic web; that is, rather than specify programs precisely, we give examples to an approximate system and hope for the best. In many ways, that's how our biological systems work, and they've gotten us a long way. I don't see that happening in Eve, though.
by ibdknox on 10/28/16, 4:05 PM
Many of the folks here have been following us for a long time and we're really excited to finally pull everything together to show you all where our research has taken us. Eve is still very early [1], but it shows a lot of promise and I think this community especially will be interested in the ideas we've put together. As many of you were also big Light Table supporters, we wanted to talk about Eve's relationship to it as well [2].
We know that traditionally literate programming has gotten a bad rap and so we laid out our reasoning for it here. [3]
Beyond that, we expect there will be a lot of questions, so we'll be around all day to try and answer them. We'll also been doing a bunch of deep dives over the next several weeks talking about the research that went into what you're seeing here, how we arrived at these designs, and what the implications are. There was just way too much to content to try and squeeze it all into this page.
Also, a neat fact that HN might be interested in:
Eve's language runtime includes a parser, a compiler, an incremental fixpointer, database indexes, and a full relational query engine with joins, negation, ordered choices, and aggregates. You might expect such a thing would amount to 10s or maybe 100s of thousands of lines of code, but our entire runtime is currently ~6500 lines of code. That's about 10% the size of React's source folder. :)
[1]: http://programming.witheve.com/deepdives/whateveis.html
[2]: http://programming.witheve.com/deepdives/lighttable.html
by grzm on 10/28/16, 4:47 PM
That said, this is feeling very grandiose. I'd like to understand more clearly where they see Eve being useful — and where Eve would not be useful. For example:
- how does one implement new algorithms? A simple example, how do I write Quicksort?
- can Eve be written in Eve?
Admittedly, I haven't thought about this nearly as much as the Eve team has. And perhaps I'm just lacking the required imagination at this point. That said, I'd like to see these types of questions addressed. There's nothing wrong with a tool that's useful in a particular set of circumstances. I'd like to know what the Eve team thinks those circumstances are.
by rafaelferreira on 10/28/16, 5:43 PM
A few questions come to mind now: 1 - This new demo, with the messaging app sample, and references to "my pm wants this or that" seems to point a change in positioning, from targeting non-programmers to professional programmers. Is this accurate?
2 - Is there a plan to integrate the grid-style or the adlibs style UI into this new iteration?
3 - If non-programmers are still a target, it seems to me that the ease of importing data from external sources would important to reach broad usage. Any research here?
4 - Html and css might be a hurdles for new users, any way Eve will help on this front?
(edited for formatting)
by king_magic on 10/28/16, 4:45 PM
Problem is that despite those tools being available, I literally never use them. Ever. Nor do I have a need for them.
I kind of like the idea of being able to find bits of code in a larger codebase in a document-like format. That's actually a pretty neat innovation here.
But beyond that, I don't think I'd use this (edit: per comment thread conversation below, I'm upgrading this to not being sure if I'd used this, but it's a maybe). I need an IDE that will help me through the Battle of Stalingrad, not a basic case like a police offer pulling someone over for a speeding ticket, which is what many of these kinds of next-gen UIs always seem to show.
Basic stuff is easy enough to accomplish right now. I don't need a new IDE to help me add a button to each row in a list any quicker than I currently can with existing tools, and I feel like a core problem with these types of efforts are that they start with basic cases and never really progress from there - many engineering problems simply do not reduce down to adding a button to a screen.
That all said - I think if you pivoted and built a wiki-like overlay that could be dropped over an arbitrary codebase (e.g. extrapolate out the document-like overlay over code to document and organize a codebase), holy crap, I would instantly pay money for that, especially if it was distributed team-friendly.
by highCs on 10/28/16, 7:06 PM
Here are my reasons:
1. I've actually coded something similar a long time ago (I think Eve is even better than my solution) and it worked. My team and I were able to make entire apps in a heartbeat.
2. The reason it works is because, as pg famously wrote, programmers think in the language they use. Our cognitive load and power are function of the language we think in. The key to Eve on this purpose is that you can program not only your app, but the development organisation that goes with it. Also, it is beginner friendly.
3. With 1. and 2., you get that Eve is related to reflectivity and homoiconicity. Maybe it is what's behind homoiconicity: your code and your organisation share the same language.
I wish the Eve team the best.
by DonaldFisk on 10/28/16, 4:49 PM
by zerker2000 on 10/28/16, 5:27 PM
Instead of thousands of debugger options, let's have a magic tool where you click on the thing that's going wrong.
There are reasons for the thousands of options though! Like, "debug this specific object" or "breakpoint when this condition is satisfied" exist as primitives already; there's more complexity there than just "what is the data backing this UI element". If Eve has indeed managed to get away from needing them, that is laudable, but it would be achieved by the full set of things you might want to do being blindingly obvious, not "magic" special-cases for "I was expecting something here and I don't see it"by qwertyuiop924 on 10/28/16, 4:35 PM
by nercht12 on 10/28/16, 5:32 PM
http://programming.witheve.com/deepdives/whateveis.html "Being explicitly designed for data transformation, there are somethings that Eve will particularly excel at..." (after beta stage, of course)
That said, it'll be interesting to see what software people decide to create with it and where this system excels.
by loeber on 10/28/16, 5:50 PM
I think that Eve won't be conducive to creating applications beyond a few hundred lines of code -- after that, the "human-friendly" programming paradigm becomes an obstacle to production. Once people actually understand how the code works, the document style becomes superfluous.
I suspect that Eve will be a great learning tool and pique the interest of those who would otherwise never program, but Eve will be an introductory tool that users will inevitably graduate from to other languages that are perhaps more powerful, concise, and scale better.
by lahardy on 10/28/16, 7:00 PM
My feeling is that the language itself is not really any more human-friendly than any other. You say in the "what Eve isn't" section that it's not for non-programmers-- but if the environment and language were both truly human-friendly, one benchmark of that would likely be a lower barrier to entry for non-programmers.
That said, again as a non-expert programmer, I see massive value particularly in the "document" approach-- though I see it less as human-friendly, and more as human(s)-friendly. Most of my programming experience has been as a graduate student, either scientific programming or (small) app and website development, and it is often the case that code is passed down in time from person to person. Each time you get someone else's project you initially have to rely on code organization conventions, file names and comments to figure out how the program really fits together, before you can even start working with it (and the tendency, for small-ish projects, is to want to avoid this work and just rewrite it yourself). The code-as-document approach seems wildly better for these particular use cases. I want to echo king_magic's comment, that if a wiki-like overlay could be used on top of an arbitrary codebase, it would go a long way toward human(s)-friendly programming, and I'd use the heck out of it.
by jhomedall on 10/28/16, 9:29 PM
Combining the source, tutorial documentation and program output along with the ability to selectively enable blocks of code makes for a unique experience that I haven't seen elsewhere (Jupyter Notebook comes quite close, however). I recommend anyone reading this to give it a shot: http://play.witheve.com/#/examples/quickstart.eve
It's a shame the majority of the posters here seem to be preoccupied with the tagline, rather than the actual project.
by afhammad on 10/28/16, 4:20 PM
[0] http://fourhourworkweek.com/2016/10/27/david-heinemeier-hans...
by hacker_9 on 10/28/16, 7:07 PM
I wonder how well these ideas work as you ramp up to complex algorithms though. For example 5 nested for loops with 10 000 records of data would likely choke your visualisation to death. Also often the decision of choosing your data structures (list vs hash table vs concurrent queue vs ...) are paramount to the performance of the application. A single DB I can't imagine always being the best approach, but one idea could be to measure the data frequency passing though and optimise for the best structure perhaps? Similar to how SQL operates at the moment.
The idea of splitting functionality up into blocks is interesting, though I think you are focusing too much on the literate side of things. I think I would just keep the English text to a minimum, only explaining the 'why' and let the code explain the 'what/how'. But forgetting that, the block separation idea is nice enough on it's own, especially with the table of contents.
I've not looked very in-depth at the language, but what you did in the video did seem a bit like magic at times, and the simplicity seemed to hint at a lot of code hidden away behind simple looking APIs. Meaning doing anything out of the norm would find yourself having to roll a lot of your own code, but I could be assuming wrongly here so won't dwell on it.
I did notice that there was no autocomplete popups in the video. Does this mean you've forgone a type system of any sort? I would hope not as TypeScript has shown the productivity hike adding a few simple type annotations can give. Fully 'dynamic' code bases tend to be nightmares after a certain LOC threshold.
All in all congrats for giving a new outlook on programming by combining a set of old ideas in a new streamlined way, and giving HN something else to grumble about for a while!
by xaduha on 10/28/16, 5:37 PM
[1] http://www.red-lang.org/2016/07/eve-style-clock-demo-in-red-...
by agumonkey on 10/28/16, 4:31 PM
Kudos for keeping at the idea for long (I remember when you left LT and talked about possible ideas a while back) and delivering something that simple yet inspiring.
ps: the team bug fixing interactions reminds me of IBM Jazz days, it seemed so heavy, and here it seems so light.
by cocktailpeanuts on 10/28/16, 5:46 PM
What's wrong with Vim? I think they're trying to cater to "the non-programmer crowd" with this, but by trying so hard it's alienating real programmers. I love vim, and I hate Medium with passion. I'm sure there are a lot of other HN people who are not so much a fan of the types of people who just write meta posts, rant posts, listicle posts, self help posts, growth hacking posts on Medium and call themselves a "maker" without actually building anything meaningful. So, you've lost me there Eve. Anyway, that aside, looking more into how this tool really works, this is NOT something an everyday Joe will use like they speak English. This is an actual programming language. The language itself is no easier than python or ruby (actually subjectively speaking the syntax is less intuitive than python for example).
Also I think they're imagining that Excel users will just eat this up, since it's kind of like how people run pseudo-programs on excel documents. But people used those because Excel was the most popular app that lets them work with numbers back then. Now there are many ways to achieve what Eve is trying to do, plus Excel. Why would any lay person jump on an obscure technology doesn't do anything significantly new?
Overall I think there's a problem with assuming that this is for "humans" just because it's "literate programming". "Humans" don't want all this literate programming stuff exposed. They just want to push a button and take care of things. On the other hand, programmers (I guess we should call them "non-humans") don't need all this literate programming stuff. They are trained to understand how programming languages work. They may think this is neat at first, but very soon will start to think all these comments are getting in the way.
I have personally never seen any programming related technology titled "... for humans" actually work for "humans". Perhaps because these tend to be built by extremely talented programmers who are too talented that they are out of touch with how their grandma uses computers, they probably think their creations are easy enough for "humans".
Sorry if this sounded too negative. I am willing to discuss and correct my comments if I am wrong about anything.
by zenobit256 on 10/28/16, 4:33 PM
What do the keywords mean? What's the language paradigm? Why do I want this when it's essentially coalescing a lot of APIs into a language that you've provided no spec for?
Why would I want my language to work with slack?!
I'm not impressed. It just looks like another functional language with a bunch of addons tacked on to make things "easier" or "for humans".
Drop the buzzwords and get to the meat please.
by delegate on 10/28/16, 6:05 PM
The 'story-like' literate programming is the direction in which programming will (should) move in the future imho.
Visually, you could explore the idea of 'literal-visual' programming (just invented), something like:
commit [#imageFor #student "student-icon.jpg"]
Then have a button to toggle between rendering records as text and 'visual' records, in which "[#student ] is replaced with a pictogram. Now you have a more 'abstract' look at the algorithm - could be interesting.
Similarly, an entire block of code could be switched to 'visual view', which displays the block as an image, which could be, for example, the screenshot of the last output it produced.
---
The Core language is interesting - declarative, functional and dynamically typed (right?) query language. Some Prolog scent there.
My only concern is that it might be a bit too 'limited' for larger scale applications ?
But for exploratory data mining, it looks like a great tool.
It seems to be well suited for queries in large scale distributed databases (like a p2p network) - is my intuition correct ?
If true, then I can see interesting ways in which Eve could be integrated with ipfs for example and used as a data mining tool...
I enjoy things that create sparks of ideas in my mind, Eve has done that for me today ;).
by andreyk on 10/28/16, 6:53 PM
As always the question is whether it will scale - being so distributed code-wise seems to imply it will also be hard to trace errors or perhaps at some point increase confusion. Would this work for giant complicated apps/websites? Would be nice to see examples/attempts at that.
by sebastianconcpt on 10/28/16, 6:23 PM
by alkonaut on 10/29/16, 12:46 PM
This would help with those scenarios. Its perhaps not the best tool for general programming but it looks promising for creating maintainable data centric utilities. Instead of all those spreadsheets.
by SCdF on 10/28/16, 4:27 PM
I'm still reading stuff, so apologies if this is answered elsewhere, but what is the plan / workflow / constraints to handle prose getting out of line with code? In current software I read / write it's already an issue, I feel like the more you take out of code and put into prose the more this could become a challenge.
I'll keep digging and reading, awesome work!
by stungeye on 10/29/16, 1:06 PM
Our current learning stack for folks with zero coding experience is Scratch (https://scratch.mit.edu) to Processing (https://processing.org) to Java.* I'll be watching the Eve project carefully to see how it might fit into our intro to programming path.
*If these intro students continue to our full program they learn C#, SQL, PHP & JS/HTML too.
by grok2 on 10/28/16, 4:45 PM
by AtroxDev on 10/28/16, 4:33 PM
by ar-jan on 10/28/16, 11:58 PM
A question regarding the centrality of data: when I first read about this, I thought an important part would be a kind of user interface for building relational databases - perhaps something like fieldbook. You mention Eve already includes a relational query engine - is a UI for modelling tables and for data entry also on the roadmap?
by CGamesPlay on 10/28/16, 5:28 PM
by webmaven on 10/28/16, 8:05 PM
- Make it easier for non-programmers to program
- Make it easier for programmers to program
While I can see that the current roadmap advances toward both those goals, I don't see what the Eve team plans to do when those two goals start pulling in opposite directions.
Will Eve be kept simple and a second UI be created for programmers? Or will Eve continue to be the programmers' tool, and a second UI be created for non-programmers in mind?
The alternative of keeping a single tool for both audiences makes me shudder, as it will literally end up being "code in Word". It is precisely because Word tries to be all things to all people writing prose that it is such a bloated mess (granted, it isn't the only reason, but it is a major one).
I'm not even certain whether a UX for non-programmers would just a subset of the one for programmers, or if there are likely to be features specific to non-programmers.
by turingbook on 10/28/16, 6:26 PM
by dragonwriter on 10/28/16, 6:13 PM
by yk on 10/28/16, 7:49 PM
> An IDE like Medium, not Vim
Thing is, vim is not complicated because of some misplaced elitism, vim is complicated because it helps with complicated problems. (I am a zealot for the church of Emacs, when I say something "nice" about vim, it is because honesty or pointy objects force me.)
Unfortunately it goes downhill from there, it is nice that there is a way to visualize memory in five lines of code, but what about the memory of the following three processes (and the one thread in red and the others in some other color?) In my experience, there is a trade off between the power of a language and the impressiveness of the examples. (A better example would probably be the twitter api, does that mean I need to beg the core developers to talk to the next "slack for dogs" api?)
Then there is the "zoom" feature, I have not the slightest idea what that is supposed to mean. (Actually I have, I just don't think that this side of a strong AI coworker it is possible to hide information in any useful way. (Hiding information is just the inverse of zoom.)
And to top it of, there is a link to the demo and the first thing I notice is, scrolling is broken. (Arch, Firefox, NoScript with in this case all JS sources allowed) Well, the first thing a IDE should allow me to do is to display text in the most reliable way possible, even if that means more than one page. (Plus it is in a browser, which may or may not be only for demonstration purposes, but at the very least the browser uses the right mouse button to display browsery options not IDE options.)
After having fired up chromium, there the IDE works and it actually works kind of well. To keep with the overall negative tone of the comment, almost as good as Jupyter. The first thing I notice, is that one can switch code blocks on and off, but the output depends non linearly on the set of switched on code blocks. For this one would likely need some kind of toggles for sets of code blocks if it should be usable at all. (So to switch on extra test cases, or to test only one part of the program, etc.)
In conclusion, it is a nice project and I wish the devs all the best. Hopefully one of these days someone manages to get literate programming to work. But I think that there are quite a few things which make me doupt that this is, what makes literate programming work in the end.
by famerr on 10/28/16, 10:21 PM
by leke on 10/28/16, 7:48 PM
by psiclops on 10/28/16, 10:20 PM
by hinkley on 10/28/16, 9:40 PM
How do you handle version control, and merge conflicts?
If you don't have that figured out, none of the rest of this matters. Because a programming language designed for one developer isn't designed for building software.
by oelmekki on 10/29/16, 10:36 AM
Did you consider any niche market where it could actually become the main tool? Education come in mind first, but I'm not sure it would be a good "introduction to programming", given how different it's from, well, all other languages. Maybe it could be good in art classes, though, helping kids to build digital and interactive creations, and even write a story around need, through the documentation centric approach.
by petermcd on 10/30/16, 4:05 AM
I like the medium-like bar on the left to browse blocks. Checking the boxes next to the blocks you want to show is a neat way to make a view of just the functions you want to look at. Putting it in a browser, like iPython/Jupyter improves accessibility for people whose main job is not developing software (the Eve demo makes a good example of being able to pass an analytics view to a teammate in marketing).
I do find myself wondering how a literate programming system like this would scale for a large project (I expect the Eve team have thought about this more than I can imagine).
Great polish on the demo, too :)
by dancek on 10/28/16, 6:19 PM
It's ironic, being a programmer that automates things that people used to do manually, and kind of doing good but leaving someone unemployed. How fitting it will be to suddenly become mostly obsolete as a profession, due to programming being very easy or even done by AI. Dogfooding, anyone?
by d--b on 10/30/16, 5:11 AM
1. Black box
By hiding away the complexities of schema design and information indexing, Eve cannot be accepted as a proper framework for any professional project. As soon as performance starts to be a problem, there is nothing one can do to help. In the same vein, not having local variables means there is a whole lot of small things you can't do. Doing flappy bird is one thing, I doubt you can make a fast Tetris with this. Rotating pieces will be a nightmare. I mean, even in Eve, you HAD to add "functions" like cosine and sine, just for your demos. If you can't define these functions, you kind of proved that Eve was incomplete...
2. For humans?
I personally don't think that eve makes it particularly easier for human to program. I mean, this is a type of programming that is not new. You can do eve-like programs in any language easily. In c#, you can do an Eve engine with 1 big list of dynamically typed records and Linq queries on it. Yet, it's not the way people like to program. The only real world example that I can think of is D3, which in many ways shares the eve search / apply / bind model. And D3 is pretty great, but many people have found it hard to grasp, and it is likely that the limitation of the approach are ok when dealing with graphics, and much less so when deal with general purpose programming language.
by cperkins on 10/28/16, 5:50 PM
by kybernetikos on 10/29/16, 7:12 PM
by partycoder on 10/28/16, 9:48 PM
You can introduce programming by making an analogy with a cooking recipe, where you have ingredients (input), and a desired output (whatever the recipe is for). The recipe would process the input and through a sequence of defined steps, turn it into the output.
The average human is familiar with the concept of cooking to some extent so we can say that analogy would work "for humans".
This, in contrast, fast-forwards directly into some concepts like functions, how to evaluate functions, etc... and that's where I stopped reading. This is not "for humans". Might be a viable language, sure. But let's be objective, leave superlatives and weird claims aside.
by clintons on 10/29/16, 3:52 AM
After 15 years I've learned to hate languages like these for building anything slightly complex.
However...
The great thing about all these languages is there's choice for everyone. There are as many pet peeves and ways of thinking as there are developers. There is a language for (almost) every type of case needed.
So use whatever the hell makes you love programming the most (or hate it the least), gets the job done right and makes your business(or employer) money or does something helpful for your users.
I might like like the flavor you like but, you might not like mine either. And guess what, we might both be totally right about the requirements met by the languages we use for our own work.
by empath75 on 10/28/16, 4:37 PM
by OOPMan on 10/29/16, 5:45 AM
Maybe I missed something but it doesn't seem like this is really designed for usage outside the browser environment?
As such it seems like this is really just a very high-level layer on top of JS rather than a general-purpose programming language, a lot like Jupyter Notebook and friends.
I guess the biggest challenge Eve faces is the same one faced by all those other 5GL "languages" that are now rotting at the bottom of a dumpster: How do you become relevant beyond a tiny niche problem space?
by smaddox on 10/29/16, 2:34 AM
by thallukrish on 10/29/16, 1:18 PM
I wrote in this article
https://medium.com/@thallukrish/debug-assistant-2aa37ac13ca5...
by zwischenzug on 10/28/16, 6:02 PM
by gnud on 10/30/16, 6:12 AM
I get that this is the early days of the project, but I would love to see some information about how your program is actually stored/compiled, how you can version control and deploy it, and how you can interact with files/databases outside the 'eve' universe.
by squar1sm on 10/28/16, 8:09 PM
If not this, then this idea. Or this idea with more time and features. Impressive already.
by tehwalrus on 10/29/16, 9:36 AM
I still think Python is a programming language well suited to humans: I'm not sure I want to try to understand (and hold in my head while debugging) how seventeen disjoint blocks of code interact in an event driven UI like in the messaging app example, clever highlighting/jumping or no.
by onetwotree on 10/29/16, 12:05 AM
This is what I needed to understand what you're up to here, oddly enough.
From http://programming.witheve.com/deepdives/whateveis.html (which might not be up to date?).
by eternalban on 10/28/16, 5:52 PM
by zubairq on 10/28/16, 7:42 PM
by FraserGreenlee on 10/28/16, 6:13 PM
by theideasmith on 10/28/16, 6:47 PM
by aikah on 10/28/16, 5:57 PM
by Thomasdah on 10/29/16, 8:44 AM
Since this is a web based programming language - i really would like to know how to interop with JavaScript.
In my case i need to use the pixi.js renderer
by zindlerb on 10/28/16, 5:09 PM
by n_mca on 10/29/16, 12:01 PM
by taneq on 10/28/16, 4:47 PM
Programming isn't about syntax. It's about telling the computer exactly what you want it to do, in every possible situation. The hard part isn't the language you use to tell the computer what to do. The hard part is making sure the instructions you're giving match what you want to happen.
I'm not saying it's impossible, but every time I've encountered something that's meant to 'make programming easier', once you get beyond 'hello world' all it does is get in the way. You still have to communicate the same amount of information to the computer, but now you're doing it with duplo blocks instead of a milling machine.
by pmontra on 10/28/16, 8:58 PM
All the rest looks good. Hopefully it will influence other languages to display their inner workings in a more visual way, maybe even the mainstream ones.
by edem on 10/28/16, 5:32 PM
by Edmond on 10/28/16, 10:15 PM
by jlebrech on 10/28/16, 4:35 PM
by jlebrech on 10/28/16, 4:37 PM
by superninja234 on 10/28/16, 4:39 PM
by miloshadzic on 10/28/16, 8:21 PM
by dboreham on 10/28/16, 9:29 PM
by soared on 10/28/16, 8:07 PM
>Only place to try it out is on github
Github is the most terrifying place on the internet for 90% of users (non-developers). I cannot stand when a project is trying to market to regular users but hosts any content on github. I get that this is an early alpha, but come on..
by tomc1985 on 10/28/16, 8:19 PM
How selfish is it that everything has to be "for humans" anyway? Why can't it just be? Let's not further complicate already-complicated abstractions.