Chris Granger, creator of Light Table and the Eve language, writes about programming tools, live coding environments, and who gets to program.
HN commenters link it to explain Eve's goals and the Light Table story, and one calls his post on ideal programming a succinct, excellent read.
> How do you do this with a text driven program?
If you haven't watched https://vimeo.com/36579366 , I highly recommend it. Chris Granger, after watching this, created http://www.chris-granger.com/2012/02/26/connecting-to-your-creation/ which you can download, and applies to ClojureScript, which is (tada!) text based.
Also, I had a chance to use time traveling virtual machine (which works independently of how your code was produced) in 2007, and while I haven't had a chance to use them, I know that source-aware time traveling debuggers have made huge strides recently.
> So you claim there is no benefit to be had. I claim the existing solutions are already failing.
These claims are not contradictory. I agree that existing solutions are failing in various ways, but I still disagree that the "code as rich data" would provide benefit.
> If one solution gets enough of these things right, there is no reason why it wouldn't succeed just because text-driven. (But it is also possible to do it correctly with text)
So, if possible to do correctly when text driven, why is text driven a problem?
> If the program code is always to be consistent, it cannot be text, because text allows you to input invalid programs. So how is text not a leaky abstraction?
All programming abstractions are leaky in one way or another, and text is no different. In my opinion, the leak that it is possible, during design time, to have an invalid program (which will be rejected as such prior to execution)…
Speaking as a Lisper, I have to admit that this is an open question for me. On the one hand, the needs of parallel systems and state management offered by functional languages stands to bring Lisps (Clojure, Common Lisp etc) and other languages like Erlang ever more attention as we programmers attempt to manage the complexities of multicore design and distributed systems.
As a systems programming language I think that lisp has utterly failed. The Lisp machines are dead for various reasons (which I'm researching right now as a side-project) and to the best of my knowledge compiled lisp has clearly not taken the place of C in building operating systems (although I hope to do exactly that as does the author of [http://www.loper-os.org/]).
All of this comes down to an individual's definition of utility. Lisp is by definition of Turing Completeness just as capable as any other language you may wish to name, but with the usual Turing Tarpit or small language warning that you may have to roll your own. My perception, and one which several posts here on HN has affirmed is that traditionally Lisp was used by lone AI researchers who needed the power to roll their own anything quickly and efficiently. As a result of this "roll my own" mentality and simple lack of the internet (it was early and mid 1980s or so) libraries and SDKs as we know them were never built for Lisp systems.
Another difficulty is that as several other comments note there is no "one true" standard for Lisp. There…
From the Eve announcement [1]:
> Eve is our way of bringing the power of computation to everyone, not by making everyone a programmer but by finding a better way for us to interact with computers.
The more I try to teach programming to non-programmers, the less I understand the notion of what "programming for non-programmers" really means...in the same way that "writing, but for people who can't write" is a bizarre concept.
Programming, and the notion that code is an explicit way to communicate with a computer, isn't just an inconvenient technical detail that prevents amateurs from reaching their full computational power...it is a true way of thinking, and to not be able to do it limits you in the same way that being illiterate prevents you from creating the next American Great Novel.
I've always believed that understanding a for-loop and if-statement are all you need to really wield the benefits of computation...but I've found that I constantly underestimate what an epiphany is to actually grok those concepts. It's not just the ability to abstract a routine, but the concept of a block of stored instructions and variables that is, as far as I can tell, pretty much alien to anyone who is not a programmer. Or a mathematician.
I'm not saying that efforts like Eve should stop, or that they can't be significantly helpful in bringing greater understanding to non-programmers...I'm just saying its stated goal is incoherent and inherently unattainable, like trying to build a…
> It never said it was the "the uber clojure IDE", not even used any words to this effect.
In the beginning it was clearly marketed as a clojure ide,
and if you look at the comments on HN at the time it's clear that it was perceived as such.
http://www.chris-granger.com/2012/04/12/light-table---a-new-ide-concept/
https://news.ycombinator.com/item?id=3836978
>"Catering too much to other languages"? What does that even mean? Did anybody signed to the parent that it would only be for his favorite language (the "uber clojure IDE" he dreamt?)? It was due to huge community demand that LT promised to support Javascript and Python too.
This is what broke it's back though. By trying to go with all languages at once they failed to focus on getting one right first. They should have added new ones later on.
>Nobody stopped the parent or anyone else from using something existing "that actually works" or creating something even better.
I've heard it many times over the years in the clojure world, "I'd start on an editor, but it looks like LT is going to be exactly what I want so I'll just wait." Only after its failure was apparent things like Gorilla-Repl popped up.
> including having concretely inspired the Swift playground features (as the Swift designer admitted).
I'd like a source for that. LT is directly inspired by the work of Bred Victor who _worked for apple_ and Swift has at least one of the Factor devs, which is a highly dynamic language with a live coding…
This is very true:
"Leiningen and Cake, joined forces to become an all-powerful build tool. Then Leiningen reached version 2. (And let me tell you, Leiningen 2 alone makes Clojure worth using.)"
Other build tools, and package managers, such as "bundler" in the Ruby world, seem pretty weak compared to Leiningen. This is a very powerful tool.
The tooling and the eco-system are reaching a very powerful level. For now, I use Emacs as my editor, but I am waiting for LightTable ( http://www.chris-granger.com/2012/11/05/meet-the-new-light-table/ ) to get just a little further, and then I intend to switch to it.
This whole article is good, but this is the part that gets to the heart of the matter:
"Rubyists know that their language effectively got rid of for loops. In the same way, Clojure gets rid of imperative iteration in favor of declaration. Your thoughts shift away from place-oriented constructs like memory and gravitate to data structures and functions like map, reduce and filter. Your “class hierarchy” turns out to be a type system that happens to also lock away well-meaning functions into dark dungeons (more on that in another article), and getting away from that is freeing."
That might be the best summary of the strengths of Clojure: it helps you think about data structures and transformation, rather than thinking about the ceremonial and imperative code that your language needs to hear.
Could someone please explain to me why these tools are not commercially available?
This is the desktop version of the app Bret Victor created: http://vimeo.com/64895205
The tools would make my live so much easier, I can not start to express how much science needs this. Why did no startup jump on implementing them, like "Light Table" [1]? Alternatively, why did Victor not release it commercially? He would not get rich, but I guess he does not need to earn money anymore. His tools could benefit humanity, from cancer research to safer cars.
I really wonder, what the reason is why Mr. Victor never published any of his tools. It makes me sad to see such genius applications and all I can do is look at them.
[1] http://www.chris-granger.com/2012/04/12/light-table---a-new-ide-concept/
EDIT:
Thank you @williamcotton for watching the summary (I didn't)
Mr. Victor mentioned he will make it available on github, his account is: https://github.com/worrydream
This is great news.