"We don't do that on the web. You ask for the page, you get the whole page. You get the entire value." That hasn't been true for some time. The concept of "web pages" is pretty much dead. From Github, RU-vid, search engines, down to the smallest blog, there is no "page", there is only scaffolding and hundreds/thousands of micro requests interfacing through multiple programming languages to project an approximation of a final result that may or may not be relevant, and that's not even counting the additional injected third-party content and region/language/device-specific mutations. Immutable value? Far from it, I can't so much as read an API function descriptor on Microsoft via a known URL without it being forcibly translated into an incorrect spoken language because of my IP address.
JVM is a terrible choice...looking at BEAM for Erlang as an example. It was a shortcut to get libraries ready to run....I was looking at the Clojure market and it is at a 1.5 % in 2023....Nubank bought Cognitect to save their skin....being heavily invested in Clojure development. Macro are a disaster for maintenance and reading programs made by other peoples....Syntax is horrible...we have now at least 2 competitors for leiningen...maintaining and changing programs are the most important software life cycle activities. Airline industry is a model for documentation and should be a model for the software industry. if you look at clojure libraries documentation is poor, few real users in production mode. When you design a plane, documentation is 50 % of the total cost.
4 years later and more people hate downloading apps, so now website performance and accessibility is more important than ever. pretty great talk, half way through but that browser section really was a great prediction.
Personally, this talk really opened the world to new types of thinking. Even ignoring the Epochal Time Model, his exposition on how to think about our tools and habits has a lot of good life lessons there. I put my spin on it in my reaction to it: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-ScEPu1cs4l0.html
Is there a way you can code lisp and closure itself so that each function or module had its entire history in sexpression diffs, and if your program wasn’t working it could go back to a past version. You have to redefine def, and all the different types of vars.
I don't care what year it's from.. A Rich Hickey talk never dissapoints! I don't even program in Clojure, I just love his ideas and his ability to express them brilliantly.
28:45 OOP offers reusability in comparison to Procedural programming, bot not in comparison to Functional Programming. in comparison to FP, OOP offers higher speed. what a sly peddler of functional paradigm😅, exposing "lies" his first example of what "IT" is - is also confusing: the word "Information" in "IT" can be about a place, e.g.: a basket in a shop can be represented by a "place", in which you "add" products - it is "information", you don't have to represent it as a _"copy of the previous state of the basket with +1 product"_ , in order for it to be "facts". he gives an impression of an advertiser, doing sophistry, to push his product by all means. not the best way of presenting a great thing which functional programming is
Not at all. A basket where you can add products is a place, it is not a value or a fact. A value or a fact would be 'a basket with 4 products', 'a basket with 16 products', 'a basket with 10 products' etc. Contrary to that a 'basket where you add products' is just a 'basket with I don't know how many products', which is kind of worthless. That is exactly his point.
Chas didn't really explain why we'll love it anyway. On the more general note, I believe programming language philosophy is bifurcated into two groups: 1) those who believe a good programming language is chockful of "good" features, regardless of the complexity that may result; and 2) those who believe a good programming language is small, simple, easy to learn, easy to use, flexible, extensible, and productive. The software industry has obviously followed the first group. That's why we have large complex languages like C++, Java, JavaScript, C#, Scala, Rust, Swift, etc., and fairly complex languages like Python, Ruby, Clojure, Kotlin, TypeScript, Dart, etc. I prefer the second group which enjoy small simple languages like Smalltalk, Scheme, Go, Lua, etc. My favourite small, simple, easy to learn, easy to use, flexible, extensible, and productive programming language is Smalltalk. It's a timeless classic. In fact, this year Smalltalk celebrates its 50th anniversary: - ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-MDgbUCtCKak.html - ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-TQQ1oXM7Nms.html
20:16 “when you create a Java class how many clients in the world can access that class API… zero.” This is gold, I wish I meditate on this 20 years ago.
27:12 I can't understand that assertion: "In traditional Java programs you have a variable and it points to something but the thing it points to isn't a value". What does it mean it isn't a value?
A value means something that can not change(immutable), Java objects' field is variable, but not value. you evaluate a variable you may get different contents, it can be value(say primitive type float/integer) or object reference. So we say variable is mutable. That's the source of complexity: you don't know who change the content inside variable when you use the variable as a foundation.
This kind of thinking takes an extreme open-mindedness about the nature of the universe. We have to let go of notions of identity/self and treat the whole universe as "connected"/"one", which is especially hard with the Western/individualist ideas many of us are ingrained with. And then...start coding....haha. VSauce also has some great philosophical youtube videos that play with these ideas of "objects", compound objects, and so on...Check out his "Are chairs real" for an example
This is not about practical programming. It is about everyone hugging their favourite paradigm and sobbing hysterically if anyone does anything that contradicts their paradigm. In real programming every paradigm is broken, violated and circumvented, just because there is an easier way to solve the problem.
It’s my opinion, but I think you’re failing to appreciate how old this talk is. At the time, FP was considered interesting but “not fit for production” in many places. In the intervening time, the change in essentially all major programming languages towards immutability, value-based concurrency, and scalability via composition have all borne out that Rich was exactly right.
To the contrary, this is precisely about practical programming, and not at all about "paradigm for paradigm's sake" or any such thing. Furthermore, it's about how to do things so that it's easier to solve problems, and how to prevent various misguided practices (including "paradigms") from making things needlessly complex and complicated.