8 ms·
Is it really “Complex”? Or did we make it “Complicated”? (2014) [video]
- goatlover 9y agoI wonder what a Smalltalk-like environment would look like if had been developed in the 2000s instead of the 1970s. If you could marry up the advantages of text/files, live code, visual layouts, data visualization and perhaps machine learning in the future, maybe you could come up with a huge jump in productivity and being able to handle complexity.
- stcredzero 9y agoIf you could marry up the advantages of text/files Is that really such an advantage? What kind of advantage does having source code scattered in files have over Smalltalk's Change Log? The Change Log greatly simplifies having live code, and having a runtime environment where you could crash the system with a runtime change. Source code in text files complicates this. It's also a powerful development tool all by itself. What's more, it's just a clever use of a text file!
- goatlover 9y agoI mean in being able to generate source code as text files at any point, or update from text files, since that's what programmers are used to, and there are so much of the tooling is built around that. You're not going to be putting an image on github.
- stcredzero 9y agoI mean in being able to generate source code as text files at any point, or update from text files It has been done many times. There was a Camp Smalltalk initiative to standardize such a mechanism back in the early 2000's. Anyone could code something up that does this for a particular dialect in a matter of minutes.
- Qwertious 9y agoThe way I see it, plaintext's advantage is much like the iPhone's stylus-less touchscreen - it's much more direct, and people deal with it much more intuitively as a result. Although I'm starting to think that it's more about not coupling the program and data file, and providing documentation (a comment-less plaintext XML file is often not much more useful than a binary file).
- erikj 9y agoAs far as I know, Bret Victor is looking exactly into that, check out his talk "The Future of Programming": https://www.youtube.com/watch?v=IGMiCo2Ntsc https://www.youtube.com/watch?v=IGMiCo2Ntsc
- rjeli 9y agoMathematica gets live code, data visualization, and ML, all with a lispy+tacit+functional syntax. I find it much more integrated and easy to use compared to Jupyter notebook, although it's near useless for anything imperative -- I find myself using Jupyter a lot these days to develop one-off scripts interactively. (please, no one mention stephen)
- 505 9y ago(I am pleased you brought up Stephen W, and also that you asked us not to. That's all you'll get from me.)
- hardlianotion 9y agoI would have called him the W-ster and respect parent's wishes
- TeMPOraL 9y ago> (please, no one mention stephen) Why? Does he come to every place that mentions his name, like that AI guy?
- rjeli 9y agoBecause any HN discussion that mentions the W-word will inevitably devolve into discussion of the controversial man
- buzzybee 9y agoI believe Red[0] is closest along to practically realizing this concept by focusing on compositions of small languages, a premise Alan Kay also worked on with the STEPS project at VPRI[1]. The main thing that stops people from beelining down this path is the sheer quantity of yak-shaving involved. We're all impatient and have near-term goals, and glue-and-iterate gets us there without having to engage in a non-linear deconstruction and analysis of what's going on. [0] http://www.red-lang.org/ http://www.red-lang.org/ [1] http://www.vpri.org/html/writings.php http://www.vpri.org/html/writings.php
- jnordwick 9y agoTrying to find a short REAL Red example (not Hello World or here's how to show an alert), and I can't seem to find one. Can you help me out? Something that would help me understand what the language is like.
- throwaway7645 9y agoThe concept of Red is heavily based off of Carl Sassenrath's Rebol, only Red is both very high level and fully capable of low level programming as well. Rebol can show you the high level things possible with Red. It truly is amazing. Even though its kind of old now, I installed Rebol recently and was blown away by how much power I got with no installation. Red will be much the same and allow you to make miniscule native binaries.
- jk4930 9y agoLook at Rebol 2 docs. Or try this (enough for me to get started): http://redprogramming.com/Getting%20Started.html http://redprogramming.com/Getting%20Started.html
- oofoe 9y agoCheck out the REBOL examples on Rosetta code. I'm very fond of the "percent of image difference" one -- it's not large, but shows off some of the nice features like image handling and the fantastic REBOL GUI dialect. (Yes, I wrote it...)
- derefr 9y agoHow about an Erlang unikernel with its relup functionality, running under a VM with the ability to hibernate to disk? That gives you nearly the same set of benefits as Smalltalk, without being nearly as "fossilized."
- jacquesm 9y agoBut with a huge barrier to entry. Smalltalk is at least reasonably easy to grasp for people new to programming, Erlang not so much (though it is incredibly powerful). The graphical nature of the Smalltalk environment also really helped to make it accessible. Erlang lives mostly in text terminals. I'm still not convinced of the 'image' mechanism, it's really nice to have implicit and automatic persistence but it glues the code so strongly to the data that it starts to hamper collaboration. Being able to easily pull a bunch of stuff from one machine to another and to integrate it with stuff that was already there is something that other programming languages have solved very well (together with DVCSs), Smalltalk seems a step backwards in that regard. Though there are times I wished for an easy way to hibernate an entire session for later re-use.
- derefr 9y ago> Erlang lives mostly in text terminals. People (outside of Ericsson) just haven't bothered to take much advantage of Erlang's strengths. Erlang speaks network wire protocols very efficiently, so if you want graphical Erlang sessions, you just need to write Erlang applications that act as e.g. X11 clients. Which is what things like Erlang's own Observer application does, complete with the ability to use the graphics toolkit Tk. (Or, if you like, you could expose an HTTP server serving a web-app with live updates over a websocket, like https://github.com/shinyscorpion/wobserver https://github.com/shinyscorpion/wobserver. Or an VNC/RDP server. It's really all equivalent in the end.) Unlike Smalltalk where the graphical capabilities are part of the local console framebuffer, Erlang's approach allows you to interact with a running Erlang node graphically irrespective of your locality to it—which is important, because, in the modern day, your software is very likely a daemon on a headless server/cloud somewhere.
- 9y ago
- billsix 9y agoOpen croquet http://www.opencobalt.net/ http://www.opencobalt.net/
- noir_lord 9y agoCheck out https://en.wikipedia.org/wiki/Oberon_(operating_system) https://en.wikipedia.org/wiki/Oberon_(operating_system) It never caught on but it was an interesting path not taken in terms of what an operating system could be.
- ejz 9y agoThis is a good line!
- mirimir 9y agoMaybe better: https://vimeo.com/82301919 https://vimeo.com/82301919 A link to a transcript would be cool. Edit: There's a transcript of the iPad question here: https://news.ycombinator.com/item?id=8857113 https://news.ycombinator.com/item?id=8857113
- eternalban 9y agoAlan Kay has had about a few decades to empirically demonstrate that "we" have willfully made it complicated. I don't believe he has done so.
- chadcmulligan 9y agoI had the same thought, if he had a solution then he should have it by now.
- blihp 9y agoHe actually did lead a project which took this on: STEPS. (I think this is the last annual report on the project: http://www.vpri.org/pdf/tr2012001_steps.pdf http://www.vpri.org/pdf/tr2012001_steps.pdf) They did build a functional proof of concept which was significantly smaller/less complex than Smalltalk/Squeak which were predecessor projects he and his team worked on. Unfortunately, it's not based on the trinity of files, curly brackets and semicolons so it's not likely to take the mainstream computing world by storm.
- eternalban 9y agoHis critical error is evident in his comparative analysis that places Physics and Programming on the same level. The systems that underly natural sciences are givens. The entire kettle of soup of software complexity boils on the fact that software engineering must first create the 'terra firma' of computing. That is the root cause of the complexity in software: it lacks a physics.
- chriswarbo 9y agoI think it's the other way around: In physics, we don't know what the fundamental rules are, we can only see complicated outcomes and have to infer (guess) what the rules might be. In computing, we know what the fundamental rules are (universal computation; whether that's turing machines, lambda calculus, sk logic, etc. they're all equivalent in power), but we have to deduce what the complicated outcomes are.
- perfmode 9y agoIs it theoretically impossible to fit an interpreter for a dynamic programming language in the L1 cache of a modern chip? (I understand there are physical constraints that prohibit super low-latency memory lookups (of unconstrained size) in 0+epsilon time (where epsilon is small))
- erikj 9y agoSymbolics managed to fit their Lisp VM into the cache of DEC Alpha processors in the early nineties: http://pt.withy.org/publications/VLM.html http://pt.withy.org/publications/VLM.html
- perfmode 9y agoThanks for the information. > We built a prototype of the emulator in C, but it quickly became obvious that we could not achieve the level of performance desired in C. Examination of code emitted by the C compiler showed it took very poor advantage of the Alpha's dual-issue capabilities. A second implementation was done in Alpha assembly language and is the basis for the current product. First pass in C. Final, in Assembly. Chip at the time was a first-generation DEC Alpha AXP 500 which had a 512 KB B-cache and two 8 KB caches. https://en.wikipedia.org/wiki/DEC_Alpha https://en.wikipedia.org/wiki/DEC_Alpha Let's say its present day and you want to fit into a 256K L2. What language toolchains are available? How far can one go with JIT?
- ploxiln 9y agoI think Lua, statically compiled against musl libc, can fit in 200KiB. Not in a (32KiB) L1 cache as the grand-parent comment asked, but in L2. There's also LuaJIT, which I think is only a bit bigger, I'm not sure ...
- kmicklas 9y agoEven fitting the interpreter in cache, there's obviously still some overhead to interpreting instructions rather than executing them directly. Also, I suspect most of the memory related slowdown with interpreters is due to the indirections in memory representation of data/code, not the interpreter itself falling out of cache.
- lsd5you 9y agoThis is a distinction I first learned about working in france years ago. Without any real basis I wondered whether it is their general more precise use of language which made it a more obvious distinction for a french person to make. At the time they were more or less synonyms for me, but since then have become very distinct especially when talking about software!
- kmicklas 9y ago> their general more precise use of language This isn't really true, it's just a snobby idea the French have somehow successfully convinced us of. (It goes along with the idea that they have the most "refined" culture or something).
- gutnor 9y agoA lot of the specific term in English comes from the common French vocabulary and are still very (very) close to the common words in the French spoken today. The common vocabulary in English comes from German origin. Actually I think you can basically speak about anything using only German origin words. In order to learn French and its vocabulary, English speaker will found a lot of similarity but from the more formal side of their vocabulary. That would lead English speaker to think French is more precise, I don't think the French have something to do with this. That's BTW a common mistake English speaker make when evaluating some French speaker proficiency. The fact that I use rarely used words does not mean that I have a large vocabulary, it is just the opposite.
- eli_gottlieb 9y ago>In order to learn French and its vocabulary, English speaker will found a lot of similarity but from the more formal side of their vocabulary. That would lead English speaker to think French is more precise, I don't think the French have something to do with this. Worse, the French apparently teach young students to write in a way that they consider profound, and the Anglosphere considers imprecise drivel.
- faragon 9y agoThe fool complicate the simple, while the wise simplify the complex.
- goatlover 9y agoAnd evolution laughs at us.
- matt4077 9y agoPah, "complex" is just latin for "put together". Take it apart, divide and rule.
- defined 9y agoMore like, divide and be strangled by the huge web of interrelationships... :)
- dkarapetyan 9y agoThis is a fun one. But then again most Alan Kay talks are fun.
- TheAceOfHearts 9y agoI haven't watched the video yet, so please forgive the possibly premature comment... But this is something that I've found myself thinking about a lot lately. Are the things that we're currently building or maintaining truly that complicated or are we over-engineering things? I've been humbled on more than one occasion where I initially thought an enterprise-y solution was over-engineered, until all the details of the problem were explained to me. What I wish we had was a "man" equivalent to provide every-day examples of how to use the tool "correctly" (although I'm aware there's stuff like "bro" pages), as well as another tool to explain why some tool / option even exists and how they're "expected" (by the creator / maintainers) to be used. As I've gotten into the habit of reading man pages I've become increasingly aware of how many options certain tools provide, but in many cases I really cannot fathom why those options are available or in what kind of situation they might be used.
- braveo 9y agoMost things can be done in a less complicated manner, but it costs more. Consider SAP. It's complicated to say the least, but a lot of that complexity comes from both it's generality, it's flexibility, and the quality of the solutions it solves underneath. Any solution you write in SAP could be written in a much simpler manner using simpler tools, but doing so would and getting your solution to the quality of what you can get in SAP would be hugely expensive and take a lot of time. In that way we subsidize each other, but in doing so, we often make things much more complicated than they strictly need to be to solve any particular problem. Now this is a different class from things that are just shitty design. Those exist in abundance, and it's unfortunate, but that's life.
- traviscj 9y agoIt is too bad "bro pages" weren't just "example pages" :-/
- Qwertious 9y agoWith your comment on man pages, I've been thinking a lot about lately; the fact is, we completely neglect documentation, so much that its neglect resulted in it being pushed up a layer, into the browser - namely, google (and stackoverflow). Fundamentally, we don't really do discoverability well because volunteers are fickle as hell, and commercial interests are profit-focused.
- Buge 9y agoHe mentions a Microsoft Office bug that's been around since the 80s. Is there any more information about this?