Uncle Bob LOVES Functional Programming | Prime Reacts

preview_player
Показать описание
Recorded live on twitch, GET IN

MY MAIN YT CHANNEL: Has well edited engineering videos

Discord

Hey I am sponsored by Turso, an edge database. I think they are pretty neet. Give them a try for free and if you want you can get a decent amount off (the free tier is the best (better than planetscale or any other))
Рекомендации по теме
Комментарии
Автор

"Why do I like Clojure? I've made a list." I see what he did there.

JamesJones-ztyx
Автор

It really can't be understated how respectable it is to not only be open to and try something that contradicts your beliefs - But to then write a whole article about it and share with everyone that something you've been publicly known to not believe, you now believe.

PledgeBass
Автор

"I could keep frame rates in the high 20s even with hundreds of objects on the screen. Clojure is not slow." - I think we have very different definitions of "slow". 60fps should be the bare minimum and that should be achievable with thousands of objects on screen. Unless those "hundreds of objects" are doing something really special like ray-tracing or advanced physics, he's at least a couple orders of magnitude too slow.

weirddan
Автор

Clojure has been the most fun I've had in 15 years of programming and is a breath of fresh air.

skudge
Автор

Idea: snake_case variables are heap allocated (because snakes are found in heaps of wood, etc); camelCase variables are stack allocated (because camels travel in straight lines, like a stack pointer); camel_Snake_Case variables get instantly deleted because it's a terrible way to name a variable.

kkiller
Автор

After some months of developing in a Lisp, the parentheses disappear and you only look at the level of indentation. Especially if using Parinfer for structural editing. It becomes like Python in that respect (except that the parentheses still are there, so in moments of confusion you can always fall back to highlighting the matching parentheses).

EskoLuontola
Автор

"Smalltalk was image-based". A program never really ever stopped; it only would be paused, i.e. serialized. The IDE and your code were one single program that had been running for years since the very beginning of the smalltalk language interpreter, only being paused (serialized) and resumed (deserialized) as needed.

michaelslattery
Автор

I appreciate Prime taking the time to review this article and giving an argument for something like Clojure a chance. Sadly the article itself, despite making a few good points, felt a bit brief and superficial, making it seem a bit fanboyish and potentially hard for people to take very seriously.

JChen
Автор

"Clean Code is the biggest mistake of my life." - Uncle Bob, 2025.

cariyaputta
Автор

after that "high 20s" paragraph... "mom, uncle bob wandered out of the house again! They found him in the supermarket in the frozen food aisle with his pants down!"

moonasha
Автор

Clojure is an outstanding language. Once you get use to Lisp like languages it's hard to look at other languages the same. If there were more professional opportunities around it I would go there and never look back.

IamEchelon
Автор

Clojurescript is also where react JSX comes from. Frameworks that wrapped pre JSX react popped up early on and most of what React did to improve DX was to make it more and more similar to the cljs wrappers

BosonCollider
Автор

Yeah going from clean-code-verbosity to was quite a change in pace ngl

znti
Автор

Clojure is an AMAZING language. Absolutely worth anyone's time

ThePedrolic
Автор

I knew I started watching you for a reason.

Your despise of bracerless singular statements confirmed my suspicion, because I’ve been shouting that from the rooftops to anyone who’d listen (and my girlfriend, who doesn’t program but lets me rant and says “that’s nice, dear”) for years!

jerichaux
Автор

Really good editing on this. I appreciated how many quick cuts and almost no downtime at all. Thanks for putting this out!

TankorSmash
Автор

I actually know a programmer who wrote a whole compiler for a functional language with type inferencing in Prolog in a few weeks.

AlJay
Автор

I've said this before, but after a bit the Parens Spam disappears and you just see the code, same as all the other syntax sugar from other languages - with the advantage that you never have to backtrack to figure out order because in a decent LISP, everything is prefix operator.

Infix operator maths is honestly hard to read these days. Why the fuck would I want to write bar = x + y + w + z; when i can (+ x y w z). That only becomes more true as complexity increases.

Also, it's become a chore to relearn the latest and greatest result of Greenspun's Tenth Rule (this time it doesn't suck, we swear) I'd rather just use the superior original.

Taverius
Автор

17:27 Don't let Uncle Bob's phrasing mislead you, spec/schema checks are usually separate from traditional style tests. The unit tests aren't the ones doing the type checking. The extra benefit you get from using spec however, is that it allows you to do property based testing (like Haskell's QuickCheck) which automatically generates and runs tests with a random set of inputs and edge cases that meet your specifications. And you can specify your expected inputs/outputs with more granularity than a typical ML style type system like Rust/Haskell/OCaml's (eg. you can specify value level conditions, like valid number ranges, list lengths/contents, substrings, and more), which makes it extra powerful.

Not to mention that you can also use spec like a parser library and parse arbitrary text/data with it. There's a companion library (spec-provider) that uses spec to parse any examples of raw data you give it to generate inferred type/content specifications from them (like F#'s type providers) for example, so you don't even have to write those yourself either.

LambdaCalculator
Автор

I'm a software engineer at a biopharma company, largely building business CRUD web apps.

1 guy on my team is the "abstraction master". You need to dig through 10 files, custom middleware, enums, and verbosity like you couldn't even imagine to debug 1 endpoint. Nounified verbs, factory functions, etc.

I blame uncle Bob. You can never figure out how something without devoting an entire day to deconstructing it.

bobDotJS