7 ms·
This seems to always happen when people try to make programming "more human". Programming languages succeed by walling off ambiguity. The better and faster they
by noonespecial 10y ago
This 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.
- LoSboccacc 10y agoso basically Java?
- JBReefer 10y agoGood tooling, easy to understand, unambiguous? Sounds like Java. Why can't people just use Java?
- hairy_man674 10y agoJava? What a horrible language.
- cghendrix 10y agoHow so? (Just genuinely curious as I always here this) I have asked the Java developers at my job if they have this common mindset and they don't seem to agree. I don't work with Java that much so I'm just honestly curious.
- quantumhobbit 10y agoJava is a great virtual machine, a good collection of open source libraries, an ok language, and a nightmare collection of best practices and people who enforce them. I don't have a beef with the language, it is the developers who have never programmed in another language and still think that FactoryBuilderImpls are a good idea. They have never ventured outside of an IDE, but insist that Python isn't a real programming language. I can program Java but I never want to program with "Java developers" if I can help it.
- bdamm 10y agoThere's certainly no shortage of crummy developers layering on useless abstractions for no reason other than dogma. Don't worry, soon all those young and thoughtless developers will be coding in nothing but JavaScript, and the crufty Java die-hards will be pumping prime contracts to migrate old Java business engines well into retirement.
- coldnebo 10y agoI was initially confused by the "human" line too, but once I looked at the video and the examples I understood what you guys are trying to do. There are a lot of really interesting approaches there. I really like the ideas! I think a lot of service devs (read: stateless) won't get it. But people who code front end and deal with business logic daily might find something to love in here. Worth discussing if nothing else! You got my star!
- dgudkov 10y ago>changing the focus of tooling from the machine to the human >It's about debugging tools that work with you to solve a problem. >we want humane tooling I know how hard it is to explain what exactly your product does. I myself constantly struggle with this. Eve is an interesting concept that is worth a closer look and discussion. But you guys need to learn how to explain its benefits using a less ambiguous language.
- anewhnaccount 10y agoWell the linked page and videos explain the benefits of the current release pretty well. They should take less than 30 minutes to view. I think part of the reason they use ambiguous language is they see this programming language as the first step in achieving a series of more ambitious goals. They've also been writing specific prototypes which they also believe work toward these goals for the last two years.
- qwertyuiop924 10y ago...So, literate Smalltalk. Or literate Lisp.
- asolove 10y agoYou seem to conflate "allowing ambiguity" with "not requiring specification of extraneous detail." It is not a new mistake. Many people thought that programming with GC, or with high-level languages, or with generics, was just a kind of magic that couldn't lead to understandable programs. But these things succeed because, while they allow you to stop worrying about certain details, they do so while still remaining perfectly well-defined and unambiguous. The fact that you no longer can know how the low-level details will be handled can be very uncomfortable. If there is most of what you have spent your programming career doing, it seems like it must produce ambiguity and inefficiency. But this isn't generally the case. Optimizing OCaml compilers can often produce code faster than C simply because the higher level of expression expected from the programmer leaves more room for the implementation to generate the right low-level code. I won't say that I know Eve will be successful, but it certainly is possible. It produces unambiguous behavior which just happens to no longer specify lots of details most programming environments make you think about. When I think about the work I do, most of which involves providing live representations of data, and executing certain rules when it changes, I would guess that most of the details I worry about are extraneous and could be dealt with by a sufficiently-smart environment that encompassed both the database and the program.
- noonespecial 10y agoI'd say that the details still exist but they've been handled with a very powerful idea which is sane defaults triumphing over endless required specification. In most cases you still can reach the minutia, you just usually don't need to. There's a difference between producing unambiguous behavior given a specific input and making it easy to create that input in the first place. I'm with you along the lines of embedding defaults to reduce the boilerplate code needed to get a minimum working app, but there comes a point where this may end up requiring advanced coders to learn how to go deeper in order to override those defaults to get novel results. This could result in a language thats easy for a beginner to get started in but difficult for the intermediate to progress any further.
- asolove 10y agoThat sounds like a good description of operating systems, programming languages, databases, or any of dozens of other abstractions that work great, enable people to use them as black boxes without worrying about the details, and also are rewarding to customize or hack on internally for the small subset so inclined. If that's what this is, a new field outside "programming" that allows an order of magnitude more people to author behavior for simple systems, that'd be amazing.
- fossuser 10y agoThere are improvements that can be made though - I think one of the best articles I've read about this was here: http://worrydream.com/#!/LearnableProgramming http://worrydream.com/#!/LearnableProgramming. Lots of things that show tools and ideas that would make learning programming a lot easier.
- duncan_bayne 10y ago> 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. Well, maybe not the first time. But players in my campaigns tend to learn quickly.