- 136
- 435 964
Fred Overflow
เข้าร่วมเมื่อ 4 ต.ค. 2011
วีดีโอ
Clojure programmers: Cranky, tired, old? - Rich Hickey
มุมมอง 2.3K2 หลายเดือนก่อน
th-cam.com/video/2V1FtfBDsLU/w-d-xo.html
Hallucination-driven development against sh*tty APIs 💩 Tsoding Daily
มุมมอง 1Kปีที่แล้ว
th-cam.com/video/eRt7vhosgKE/w-d-xo.html stocksnap.io/author/kristinhardwick
Forgot to call the function? Been there 😅 Tsoding Daily
มุมมอง 1.1Kปีที่แล้ว
th-cam.com/video/PgDqBZFir1A/w-d-xo.html
Is AI useless beyond boilerplate code? - ThePrimeAgen
มุมมอง 1.2Kปีที่แล้ว
Will artificial intelligence like Copilot or ChatGPT replace human programmers / software developers? th-cam.com/video/FjfgIImzhxc/w-d-xo.html
Why Stack Overflow rubs beginners the wrong way: It's designed for busy professionals - Jeff Atwood
มุมมอง 1.8Kปีที่แล้ว
th-cam.com/video/KZkYSSE8HHI/w-d-xo.html
One of the worst things Rich Hickey copied from Common Lisp to Clojure: non-Monoidal binary reduce
มุมมอง 6Kปีที่แล้ว
th-cam.com/video/4KqUvG8HPYo/w-d-xo.html
How Lisp macros influenced Java - James Gosling
มุมมอง 941ปีที่แล้ว
th-cam.com/video/Ynu9QEJSGX8/w-d-xo.html
Clojure Day 21 Advent of Code 2022 Monkey Math
มุมมอง 3832 ปีที่แล้ว
Clojure Day 21 Advent of Code 2022 Monkey Math
Clojure Day 20 Advent of Code 2022 Grove Positioning System
มุมมอง 1722 ปีที่แล้ว
Clojure Day 20 Advent of Code 2022 Grove Positioning System
Clojure Day 18 Advent of Code 2022 Boiling Boulders
มุมมอง 2192 ปีที่แล้ว
Clojure Day 18 Advent of Code 2022 Boiling Boulders
Clojure Day 15 Advent of Code 2022 Beacon Exclusion Zone
มุมมอง 2562 ปีที่แล้ว
Clojure Day 15 Advent of Code 2022 Beacon Exclusion Zone
Clojure Day 14 Advent of Code 2022 Regolith Reservoir
มุมมอง 1792 ปีที่แล้ว
old.reddit.com/r/adventofcode/comments/zljtev/2022_day_14_part_2_clever_alternative_solution/
Clojure Day 13 Advent of Code 2022 Distress Signal
มุมมอง 1612 ปีที่แล้ว
Clojure Day 13 Advent of Code 2022 Distress Signal
Clojure Day 12 Advent of Code 2022 Hill Climbing Algorithm
มุมมอง 3042 ปีที่แล้ว
Clojure Day 12 Advent of Code 2022 Hill Climbing Algorithm
Clojure Day 11 Advent of Code 2022 Monkey in the Middle
มุมมอง 2492 ปีที่แล้ว
Clojure Day 11 Advent of Code 2022 Monkey in the Middle
Clojure Day 10 Advent of Code 2022 Cathode-Ray Tube
มุมมอง 2112 ปีที่แล้ว
Clojure Day 10 Advent of Code 2022 Cathode-Ray Tube
Clojure Day 9 Advent of Code 2022 Rope Bridge
มุมมอง 2672 ปีที่แล้ว
Clojure Day 9 Advent of Code 2022 Rope Bridge
Clojure Day 8 Advent of Code 2022 Treetop Tree House
มุมมอง 4722 ปีที่แล้ว
Clojure Day 8 Advent of Code 2022 Treetop Tree House
Clojure Day 7 Advent of Code 2022 No Space Left On Device
มุมมอง 4252 ปีที่แล้ว
Clojure Day 7 Advent of Code 2022 No Space Left On Device
Clojure Day 6 Advent of Code 2022 Tuning Trouble
มุมมอง 3582 ปีที่แล้ว
Clojure Day 6 Advent of Code 2022 Tuning Trouble
Clojure Day 5 Advent of Code 2022 Supply Stacks
มุมมอง 5012 ปีที่แล้ว
Clojure Day 5 Advent of Code 2022 Supply Stacks
Clojure Day 4 Advent of Code 2022 Camp Cleanup
มุมมอง 5582 ปีที่แล้ว
Clojure Day 4 Advent of Code 2022 Camp Cleanup
Clojure Day 3 Advent of Code 2022 Rucksack Reorganization
มุมมอง 6792 ปีที่แล้ว
Clojure Day 3 Advent of Code 2022 Rucksack Reorganization
Clojure Day 2 Advent of Code 2022 Rock Paper Scissors
มุมมอง 1.2K2 ปีที่แล้ว
Clojure Day 2 Advent of Code 2022 Rock Paper Scissors
Clojure Day 1 Advent of Code 2022 Calorie Counting
มุมมอง 2.5K2 ปีที่แล้ว
Clojure Day 1 Advent of Code 2022 Calorie Counting
ThePrimeagen the Clown
Casey is broken
A bit of a lolcow
Excellent explanation! A complicated concept explained very simply.
Do you know how to use vim?
I know how to *exit* vim ;) I'm more of a Visual Studio Code guy. Maybe I'll learn vim or emacs properly some day.
It would be nice to go more in depth and see it in practice. This reasoning itself is unfortunately insufficient, as it seems to me to downplay the downsides while exaggerating the upsides. Downplaying the downsides: It is in fact a big deal that the data contract is enforced in the code and not assumed by the function and all the callers. The nature of code is to change and the nature of programmers is to forget, so these errors get resolved during compile time instead of becoming run time bugs. In addition, what do you do when you realize you no longer want to use a map, but instead want to use a set to hold your data? Do you go over every method that ever had to use that data and change it, or do you just change the implementation seamlessly behind an interface? Exaggerating the upsides: When am I actually going to reuse these map operations? Is a function that accesses `dictionary.get(httpStatus)` or whatever else ever going to be useful outside the context of an http connection? Is this just about meta collection operations like streaming, flatmapping, etc.?
impressive
Git internal implementation always surprises me.
This is my ultimate problem with trying to evangelize Clojure: all the young developers I keep talking to are not exhausted from the Java nonsense to really understand and appreciate Clojure. They've not seen the mess that big Java/C# apps inevitably evolve into. They don't understand that software is not about the now, but about the long term evolution of systems. They've just not experienced it. Oh well...
Im using java professionally for about 2 years now and I already feel exhausted. The amount if DTOs and corresponding mappers is driving me crazy.
@Mordredur Well it only gets worse the longer time you spend with it. Clever "architects" try to design the system in prediction of future changes, adding tremendous complexity you have to deal with now for "future benefit", and then in the future, everything changes anyway and none of the architectural decisions helped you adapt. This is where one realizes that a simpler system of layers, isolated and organized IO flow, and then just having data flowing through a transformation pipeline, is significantly easier to develop and maintain, and with a language like Clojure, there's just no downsides or fighting the language and tools to accomplish such an architecture.
@@Slackwise Sadly I dont see us, the company, adapt something else than java in the near future. There was some experimentation with kotlin, but that is seen as a mistake.
@@Mordredur Java is entrenched, so.... yeah, unlikely to happen. This is why it doesn't make a ton of sense for me that Clojure is more of a focus than ClojureScript, because ClojureScript has a higher chance of adoption given the fact that more people are ready to switch off JavaScript than they are Java. (Ironically, Java being the worse language to write in...) If they'd put more effort into making ClojureScript as easy to pick up and use as TypeScript, and marketed it way more, we've have a higher chance of adoption. Just look at how big CoffeeScript used to be, and how big TypeScript is now, and yet TypeScript doesn't actually offer any real benefits like ClojureScript does.
To feel Clojure, you first need to feel enough pain.
I know, this is an ancient video, but I have a change that improves this computation by cutting about 30% off the time. private static void analyzeWordPairs(List<String> words) { List<Integer> invs = Arrays.stream(powersOf31).map(x -> findIntInverse(x)).boxed().toList(); Map<Integer, List<String>> byHash = words.stream().collect(groupingBy(String::hashCode)); words.parallelStream().forEach(right -> { int targetHash = (Integer.MIN_VALUE - right.hashCode()) * invs.get(right.length()); for (String left : byHash.getOrDefault(targetHash, Collections.emptyList())) { System.out.println(left + right); } }); } where findIntInverse is: public static int findIntInverse(int x) { // find the number y such that as an int (after overflow) x*y = 1 // assumes x is odd, because without that it isn't possible. // works by computing x ** ((2 ** 32) - 1) int retval = 1; for (int i = 0; i < 31; i++) { retval *= retval; retval *= x; } return retval; }
excellent, thanks
Does hit different now that I am all three of those things.
You Clojure guys are insane... and not in a good way. This is extremely unreadable and difficult to understand. I'm not talking about data structures and algorithms either... I could code this up in 5 mins in Python or Java.
Just Clojure guys, or Lisp in general? It usually takes decades to appreciate Lisp syntax, so I can totally see where you're coming from. You'll get there eventually ;)
The Germans love their “koohl” and “heh”. Koohl
well he made another video with python code
Awesome video !
There's never going to be a next video, is there?
There kinda is, it's called "Operator associativity in recursive descent parsers".
Nice
thanks
OMG! The audio!!!!
how come your Windows system uses bash?
Git for Windows comes with Git Bash. During installation, there is an option to make its bash commands available from the ordinary Windows Command Prompt (cmd), as well.
After i learn clojure, my mind change
Clojure's backwards compatibility far out performs that of Scala's. Clojure just works, I haven't had issues w/versioning. Compare that w/Scala, where my Intellij setup is *always* breaking.
Oh really? Interesting, ive not done serious work with any of the 4 languages but Clojure has been the most difficult to grasp, which is a shame because i was most excited by it. Scala makes more sense to me and seems cool for the dual paradigms. But to hear that scala setup is always breaking in intelliJ is disappointing.
Danke dir
Would you consider doing some videos on namespaces, filenames, maven, jar, clojure cli, deps.edn, etc.? You explain things very clearly and I have found the Clojure language beautiful but the aforementioned topics rather difficult.
Would you ever consider a series of videos on reader macros? I hope these comments will do something to get the algorithm to recommend your videos more, they are tremendous.
Does the concept of transducers hold across other functional languages that rely more heavily on their static typing or type inference?
stop reading this, go.learn().
Great talk. What are you using to integrate the function arity and examples in your editor window? Very helpful information to have handy when using Clojure.
The software is linked in the video description.
My take is that Kotlin is a better Java, but Scala is a better programming language.
THAT's an interesting way to put it. Why do you say that?
Why do you say that?
I think the type system is better which allows for moving more validations into compilation time. The implicit feature in version 2 enables a lot of good abstractions which can be made more explicit in the 3ed version. Those are my favorites but the list is long. It all boils down to a small but powerful feature set.
💖
Great video. I am curious whether this quote at 0:38 ends up being correct or not. Based on the video vectors and sequences are fine, but not sure about things that can be parallel as Java streams Context for the question - transducer "shape" seems to pretty relatively simple. However, Java is now previewing a feature called Stream Gatherers which on the surface trying to achieve _some_ of the same goals (at least composability aspect of those intermediate operations), but despite being pretty Stream-specific, end up being much more complex of a feature comparing to transducers. Because of that I am wondering, are Stream Gatherers over-engineered, are transducers a bit more complex under the hood or are transducers not that universal for more complex scenarios?
excellent
thank you good sir! subscribed!
TDD from a different angle :)
Cool, I actually recently started reading a Common Lisp book from around 2005 criticizing Java a bit for how difficult it was to get things done with it. Which was at least true in that time, nowadays it does not matter all that much anymore, as also Java has evolved further. Performance comparison turns out to still be true. I have recently tried a bit of Lisp recursive calculations with SBCL, and it does pretty well for a scripting language, kind of in the order of where JS sits as well, which is still faster than most scripting languages, but slower than compiled languages like C#, Java and Go, which on their turn are slower than Rust, C and C++.
I think that indeed both Scala and Kotlin are actually a layer over Java in a way. I really like Clojure a lot. In my opinion I think the reason clojure doesn't grow that fast is purely because although lots of people claim that Java is a "horrible language", those same people likely do not want to do anything that is fundamentally different than java and clojure is an example of that. The fact that it also works in the JVM doesn't help to the argument. Some Kotlin developers I've met aren't even aware that there is a JVM running when they start a kotlin "program" to begin with.
You don't deserve 1 view cuz you need 2 years to make a part 2
Please improve the sound
Thank you a lot man
👍lol I dream huge
think the Gargantua scene from interstellar.
hehe, you are a closure guy. 🤦unfortunately I stand at the opposing end. You'd get that joke after watching my first video. But I have deep respect for Uncle Bob.
🤔 I don't this level of coincidence. Soo I will ask. What was the process that made you decide on your thumb nail for this recursive descent series BECAUSE I just finished a video about parsing. And you used the same pic of your thumbnail that I used mid video. My process for picking that image, I think I went to Pexels or RawPixel, I searched out rabbit hole because I was thinking Alice In Wonderland (the video game) and I am felt recursive descent is just going down the rabbit hole. The search results turned up rabbits and holes but also spirals. And I liked the spirals and I ended up choosing with that image. I never saw your video, I doubt you saw mine, I had searched for recursive descent videos but your video never came up. Only today did TH-cam recommended your video. A couple of days after I had published it on Odysee. I don't publish on TH-cam because I have a personal policy of boycotting Google. Anyways, yes, do you remember the thought process for choosing your thumb nail for this video?
Honestly can't remember, I haven't touched the thumbnail in years... these days I would probably just search for _stairs_ on stocksnap!
I wished I found your video yesterday. I just spent the whole day trying to find out about this!! Thank you very much!!
I have never met a developer who recognizes that there is better elsewhere 🙂
The main issue with clojure is the relatively steep learning curve, for example due to the lack of standards for many common tasks (it follows quite a lot the lisp philosophy of having a lot home made)
I think the main reason there is a steep curve comes from the fact that many new Kotlin developers are for the most part former Java developers. Many of them express an enormous disdain for the Java language, while at the same time the fact that they once did Java is the main reason why they can assimilate Kotlin so well. Clojure is different and many of these Kotlin developers will never even consider doing code in other languages. That is also why Kotlin is being used now to create frontend applications by using javascript compilers to turn kotlin code into javascript code, removing the need for Kotlin developers to learn anything about javascript. Having all of this with a new language comes from the powerful marketing that comes from the Kotlin foundation to promote the language. Clojure doesn't have that marketing power and that influences how people think. It is almost like fame. Kotlin is now a famous language and so people assume that it is good, almost gaining a divine classification, and so if some people look at Clojure with this mentality then they will never find the benefits of using it.
@@jesprotech many good points. I wish Clojure was more popular. But hey people whobuse it, love it.
@@chillbro2275 Thanks! I think Clojure has a lot of potential too.
fyi I have grabbed the original video that this is from from the waybackmachine and reuploaded it on my own channel.
Thank you!