10 ms·
Hi All! 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 re
by ibdknox 10y ago
Hi All!
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 http://programming.witheve.com/deepdives/whateveis.html
[2]: http://programming.witheve.com/deepdives/lighttable.html http://programming.witheve.com/deepdives/lighttable.html
[3]: http://programming.witheve.com/deepdives/literate.html http://programming.witheve.com/deepdives/literate.html
- mkozlows 10y agoSo your defense of literate program gives, as a defense, what I would think of as an attack on literate programming: Take this strawman for instance, how could you find the bug in the following code without the accompanying comment? // Print every other line of the array to the console for (var i = 0; i < myStringArray.length; i++) { console.log(myStringArray[i]); } This shows how important intent is to a program. Yes, the example is trivial, but without that comment, how would we know that it's wrong? Because the problem with that is that now you have two competing sources of authority -- the comment, and the code. One of them is right and one of them is wrong. But which is the right one? In the real world, the answer is almost always "the code that's actually been executing, rather than the comment that hasn't," which is why it's a good idea to minimize commentry of that type, to prevent confusion on the part of the reader. So if you're doubling-down on literate programming, how do you address that problem? That article says, "Inconsistencies between the code and the prose are themselves errors in the program and they should be treated as seriously as a buffer overflow," but does Eve actually do that? It's hard for me to see how it could, in the examples given. (If the idea is simply that this is extra work for the programmer to do -- that they need to describe every implementation twice, once in code and once in English -- I submit that it's not very human-focused at all, if those humans are programmers.)
- CGamesPlay 10y agoWait, what? The code is a translation of a requirement to an implementation. The comment describes the requirement. The only problem with competing sources of authority is when the comment disagrees with the real requirements of the programmer/business/whatever. As another example, what if it were a method name instead of a comment? function printEveryOtherLine(myStringArray) { for (var i = 0; i < myStringArray.length; i++) { console.log(myStringArray[i]); } } Is your argument that the method name is incorrect because the code dictates a different behavior?
- computerphage 10y agoThis is the almost the same example. Function names also don't execute. The parent's point was that if the code has been tested or was considered working, and then you noticed this in the code, you should think twice before "fixing" the behavior to match the comment or function name.
- choward 10y agoThen why even name anything? Are you saying I should just name my functions and variables a, b, c, d, etc.?
- eternalban 10y agoOf course names are important to us, human programmers, but the compiler doesn't given an 'f'.
- posterboy 10y agoWe use mnemonics, because we can't remember numbers as well, but to the compiler, addresses are pretty much like names.
- eternalban 10y ago
- edem 10y agoHow does this relate to Jetbrains' MPS (meta programming system)?
- rifung 10y agoHi, I apologize if this is off topic but I just thought you should know the site does not display properly in my browser. Maybe this is just an unsupported use case but I think it's because the browser window isn't wide enough so the text on the left gets cut off. I have my browser window filling up half of the screen. EDIT: works now!
- ronjouch 10y agoSame thing, Firefox with 960px width (half a 1080p monitor)
- komali2 10y agoChrome here 1080p at 960px. Ubuntu. http://i.imgur.com/PxLlDkP.png http://i.imgur.com/PxLlDkP.png EDIT: Also: base.js:7035 Blocked a frame with origin "https://www.youtube.com" https://www.youtube.com" from accessing a frame with origin "http://programming.witheve.com" http://programming.witheve.com". The frame requesting access has a protocol of "https", the frame being accessed has a protocol of "http". Protocols must match. EDIT2: Why does opening the chrome console fix the text cut off issue.... this is so weird.
- ronjouch 10y agoBut did your finger get unstuck? Did it get stuck during installing Gentoo? These things happen. Careful.
- pjmlp 10y agoI really enjoyed you demo. Every time I delve into Xerox PARC and ETHZ papers, along side my own experience, I envision the days when our programming environments would be all like this, even for systems programming like tasks. All the best for the road ahead.
- 6DM 10y agoI don't know if you got this far, but what would deployment look like? You showed a flappy bird clone, does that mean this will produce mobile apps?
- deleted 10y ago[deleted]
- sanderjd 10y agoI've been following Eve for awhile and I'm impressed with the progress! A bug: that flappy bird program listing caused the page to flicker for me. It seems like the content is being repainted over and over. I'm on a Nexus 5x using the stock Chrome. Scrolling that block a ways off the screen made the flickering stop, but it came back when I scrolled back up. Hope this is helpful!
- cmontella 10y agoThanks yeah, that helps. It's going to be a little shaky on mobile right now, but we'll be making the experience better in future builds.
- pmarreck 10y agoAre values/records in Eve immutable?
- cmontella 10y agoThey are immutable after a search action, but you can mutate records and values after a bind or commit action. Here is one of the docs on the "add operator", which adds values to a record: http://docs.witheve.com/handbook/add/ http://docs.witheve.com/handbook/add/ The set operator sets a value on a record: http://docs.witheve.com/handbook/set/ http://docs.witheve.com/handbook/set/ These values can be literals, or even other records.