9 ms·
I think that Eve is tackling the wrong problem. Allow me an analogy: "Bronk, the math designed for humans." Instead of dense algebraic expressions like "3x+49"
by jbclements 10y ago
I think that Eve is tackling the wrong problem.
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.
- dangoor 10y agoIs this a response to the literate programming aspect of Eve that's presented? The actual datalog code that is written seems quite succinct for what it accomplishes.
- ibdknox 10y agoThere's still code here, the text is just for people, so I wonder if this is maybe a misunderstanding. The language presented is a variant of datalog and is as formal as any other language. If you're curious in the semantics, they boil down to Dedalus [1]. As a simple example of that, here's a clock: http://play.witheve.com/#/examples/clock.eve http://play.witheve.com/#/examples/clock.eve [1]: https://www2.eecs.berkeley.edu/Pubs/TechRpts/2009/EECS-2009-173.html https://www2.eecs.berkeley.edu/Pubs/TechRpts/2009/EECS-2009-...
- xaduha 10y agoAnother implementation of the clock demo http://www.red-lang.org/2016/07/eve-style-clock-demo-in-red-livecoded.html http://www.red-lang.org/2016/07/eve-style-clock-demo-in-red-...
- ycombinatorMan 10y agoDocumentation is, just like all things, only sometimes useful. I dont see much value in designing your entire platform around documentation. There are plenty of instances where heavy documentation is a complete waste of time.
- handojin 10y agoI think the intent is clear for people with preexisting familiarity with the same ideas. A clojure dev with some datomic. I read declarative, set oriented, database of facts, pattern matching and thought 'the revenge of prolog then'. This is really nice work. I mean this in the best possible way: I think I could teach my children to use this.
- zubairq 10y agoActually Chris Granger was heavily involved with Clojure. David Nolen gives a great shoutout to Chris Granger and Eve's predecesor, Light Table at minute 17:00 a couple of weeks ago at the Clojure TRE conference: https://www.youtube.com/watch?v=mty0RwkPmE8 https://www.youtube.com/watch?v=mty0RwkPmE8
- roller 10y agoFor an introduction to Dedalus with less reading, Peter Alvaro's 2015 Strange Loop talk was fantastic. https://www.youtube.com/watch?v=R2Aa4PivG0g https://www.youtube.com/watch?v=R2Aa4PivG0g --- Edit: Actually Chris Granger gave an Eve talk at the same conference. It's interesting to see how Eve has evolved since. https://www.youtube.com/watch?v=5V1ynVyud4M https://www.youtube.com/watch?v=5V1ynVyud4M
- noonespecial 10y agoThis seems to always happen when people try to make programming "more human". Programming languages succeed by walling off ambiguity. The better and faster they do it, the stronger the language, even if the syntax looks ugly. Even your example shows it instantly. We know how to read 3x+49 but would have to ask of "thrice the value of x plus 49", "did you mean 3 times what you get from adding 49 and x or 49 more than 3 x's?". Projects to humanize programming always seem to suffer from "magic genie" syndrome. When you ask a genie for $1mm you don't expect him to go rob a bank or kill your dad for his life insurance to get it. Human language makes tons of implicit assumptions about the recipient. It would take a general (strong) AI to make that work with a computer. The ultimate expression of success would have your "program" simply read "I'd like a game just like Flappy Bird but with my logo instead of the bird".
- cmontella 10y agoActually, we agree completely with this view. We tried going down this path [1], and ultimately concluded it was the wrong direction, for many of the reasons you point out here. But Eve is a full programming language. The "humane" aspects are not about making the language more ambiguous, but about changing the focus of tooling from the machine to the human. It's about things as simple as Unicode support for language localization. Or rendering headers in your code. It's about making the syntax and semantics very small and easy to understand. It's about closing the write-compile-test loop, by showing the result of code /in/ the actual code. It's about debugging tools that work with you to solve a problem. We're just saying we don't want to compromise. We want a beautiful, concise, easy to understand language AND we want humane tooling. In order to get that, we had to abandon the traditional imperative programming model, and that comes at a cost. But I think in the long term it will be worth it. [1]: http://incidentalcomplexity.com/2016/06/14/nlqp/ http://incidentalcomplexity.com/2016/06/14/nlqp/
- lisper 10y ago> Or rendering headers in your code Sorry, you lost me right there. If you need headers, you've already run off the rails (no pun intended) IMHO.
- oldmanjay 10y agoThe comments don't define the syntax, so your example doesn't provide much oomph. I don't consider it a strawman, I consider your argument to be based on a misapprehension.
- fusiongyro 10y agoOn the other hand, if density were no problem at all, everybody would be using APL/J/Kx, and that isn't the case either.
- jgalt212 10y ago> that the challenge in programming is in formulating your thoughts in a precise fashion Were you thinking of Notation as a Tool of Thought? http://www.jsoftware.com/papers/tot.htm http://www.jsoftware.com/papers/tot.htm
- jimbokun 10y ago"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." Non-programmer: OK, Eve sounds great, so, I want to search for a Slack message. How would I do that? Eve-programmer: Obviously, it's just: search @slack [#message from body] Non-programmer: Ummm...OK, great. So now if I wanted to, say, send an email. Eve-programmer: Easy! In the same way, you just: commit @email [#email to: "corey@kodowa.com" subject: "It's party time!" body: "Hey Corey, the party starts this Friday."] Non-programmer: ... The challenge of programming has always been wrapping your head around very formal abstractions and "thinking like the machine". These Eve snippets still look very much like a programming language to me. I don't think they will mean anything to a non-Eve-programmer without training in the semantics of how Eve programs work and the syntax of how to build the expressions, and the model over which the operate. Eve very well may be a big productivity advance over current development environments, but I don't see it eliminating programming as a profession anytime soon.
- ibdknox 10y agoThis milestone is very much about making a programming environment, so you're right, that's still code. Though to address this strawman, compare that to what you would write in Java or even Python. Some of the best comments we've gotten is when we've shown people eve code and told them to ignore the symbols, just read the words. Their eyes really open up and they tell us pretty exactly what the block is doing. No, it's not all the way there, but that's a big step forward. In any case, check out our followup on what Eve is and isnt [1] - we're under no delusion that this is the end user story... yet :) [1]: http://programming.witheve.com/deepdives/whateveis.html http://programming.witheve.com/deepdives/whateveis.html
- jimbokun 10y agoFair enough, but I thought an earlier goal of Eve was to bring programming to non-programmers? Did that change as Eve evolved, or am I just mis-remembering?
- FrancoDiaz 10y agoYou 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 think you're on the right track when you said "thoughts in a precise fashion" Humans don't think in a precise fashion. And that's why I think pattern-matching with "give examples and hope for the best" is a way forward. Think about how we program. We are given requirements and we noodle about it for a bit and start writing some code that is nowhere close to what the final source will be. When I think about pattern-matching within the context of Eve, I think of automating the way us, as humans, go about our programming. We have some idea of what we want to do, and typically we need to google stuff for APIs and examples. Let's automate that to a certain extent. Let's use the machine learning advances that have happened in the past decade to automate much of the "research" that we all do when we program. As a programmer, I'm still surprised how luddite-like we are when it comes to our tools. Many of us still are still in the "programming language + text editor" = "programming". But most of us use tools to help use look for definitions, to do refactoring, to explore our code base. We need to take that to the next level, where some fuzzy logic is used by our programming systems to say "yeah, I think I know what you mean, are any of these examples close to what you're getting at?" I think it's all about the tooling these days. We need much more advanced tooling to help us out.
- arcbyte 10y ago>Think about how we program. We are given requirements and we noodle about it for a bit and start writing some code that is nowhere close to what the final source will be. That is not how one writes software...
- Pharylon 10y agoThat's exactly how I do it. Play around with the problem, and once I've messed with it a bit, take a step back and plan out the right way to do it. Sometimes my "proof of concept" doodling will have salvageable bits. Very rarely (or if it was an easy requirement) the play code will be close to ready. Sometimes, I have to throw it all away. Such is life.
- primitivesuave 10y agoThis is exactly the argument I give when people ask why programs can't be written in plain English. The first reason is obviously ambiguity - programming languages let us express computation precisely. But the other reason is also for general productivity in being a programmer. There was a not-so-distant time when mathematical theorems were expressed in plain English, without any precise notation. With the introduction of more precise ways to express mathematical statements and logic, mathematics has proliferated, since there is a standard to express problems and results. While I love toy models as toys, I don't think there is a real use case for toy models in a professional development workflow.
- imh 10y agoThe math example is more informative when it's not something trivial. For example, take the following notion about a sequence of X: ∀ e, ∀ d, ∃ N : ∀ n > N, P(|Xn - Y| > e) < d. A more human way to say this is that eventually, we will become arbitrarily confident that X is arbitrarily close to Y. This is the notion of convergence in probability, and the formalism of that concept is way easier to process with a little human explanation. Density of notation helps sometimes, but not always. When the math isn't trivial, it's the case here too.
- deleted 10y ago[deleted]
- taco_emoji 10y agoDid we read the same article? Were you somehow mistaking the comments for code? The actual code is pretty clearly based around some well-defined deterministic semantics and still demands precision and consistency from the programmer. And moreover its promise appears to be exactly "higher-level abstractions to allow humans to reason about programs more efficiently", in direct opposition to what you wrote here. EDIT: Of course programming languages are designed for humans... they wouldn't exist otherwise. But they also tend to be pretty strongly influenced by the imperative nature of assembly language. The Eve team seems to be asking: What if we ignored that entirely? In a way this seems a lot like a spreadsheet - you can write a lot of little code blocks that aren't executed in any particular order and yet produce deterministic results.
- westoncb 10y agoIt's unfortunate the parent is the top comment here. There's a common thing that happens when a new idea shows up that doesn't easily fit into existing categories:(most) people give it a cursory look over, and then decide it's just another instance of boring category X. This is especially common in discussions about humanizing programming. I think it's partly because people are invested in the current way of doing things, having spent so much time developing their particular skills; and partly because our attempts at serious alternatives have largely been failures, so far. That makes it easy to see any new idea in this space and automatically class it as already understood. But there is room between C++ and toy visual languages, and someone may find something good there yet—and this will illuminate things just that much more if nothing else. Look into the lineage of ideas the Eve team have moved through to get where they are today, and you've got to admire their search process even if you don't like the results. In any case, it's patently false that Eve's innovation is analogous to the algebra example given in the parent.
- scottmf 10y agoAfter spending half an hour reading the article I feared the comments would be like this. The concepts here are fantastic. Unfortunately, as intelligent as they are, many in this industry seem to have difficulty grasping the benefit of user-focused design, abstraction and simplicity. UI design by CS engineers has always been terrible; programming languages are no exception to that. It isn't virtuous to suffer unnecessary complexity. And programming shouldn't be complex just because we can manage it in spite of the complexity.
- primaryobjects 10y ago"..rather than specify programs precisely, we give examples to an approximate system and hope for the best." I agree with this, as it has the most potential to bring an entirely new paradigm to software development. I've been working on a research project like this, using genetic algorithms to write programs. Unit tests are used to guide the fitness. The AI discovers a solution program that satisfies the test cases. Using Artificial Intelligence to Write Self-Modifying/Improving Programs http://www.primaryobjects.com/2013/01/27/using-artificial-intelligence-to-write-self-modifying-improving-programs/ http://www.primaryobjects.com/2013/01/27/using-artificial-in...
- rayiner 10y agoI don't think that's a fair characterization at all. This isn't just a wordier way to say the same thing. It's a much more declarative way of expressing what code should do. The global invariant example is a good one. That's not just expressing the same thing less tersely.
- deleted 10y ago[deleted]
- imaginenore 10y agoI agree. I also think something like Unity3D came a lot closer to solving "programming for non-programmers". You can create quite complex projects without writing a single line of code.
- epidemian 10y agoI'm sorry but your algebra as English prose analogy makes me think you haven read the article. I could be wrong of course, but i don't see how you could draw that analogy after seeing the Eve code snippets on the page.
- a-saleh 10y ago> 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 think it actually is. Under the hood, when you look beyond the "Literate programming is awesome" it seems to be more along the lines of terse reactive prolog? I am not sure if they managed to do what they envisioned, but this might be the "next spread-sheet".
- olejorgenb 10y agoEve's goal (or more correctly, "vision") is to "bring programming to the masses". [1] >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. Uh, ok? It's certainly about more than that, but the language is built on high-level abstractions, making at least certain class of problems very efficient to reason about. > ... that the challenge in programming is in formulating your thoughts in a precise fashion Yes, one might say that the real problem[1] is how to teach people programming quickly. I'd say that a good environment is likely to be an important part of any solutions to that problem though. It will not be the whole solution though. People will have to put in some work, and at some point improvements in environment/language will see diminishing returns. At that point you'll need better/new pedagogic techniques too reduce the learning time. When that point is reached is unknown. I don't think it's there yet, but maybe it's not so distant. If the we restate the problem to "how to make as many people as possible learn programming" some type of gameification is probably an efficient solution.