On Composition - Zach Tellman
1:03:16
2 жыл бұрын
cljs.main - David Nolen
43:21
2 жыл бұрын
How to avoid premature optimization?
32:11
What is domain modeling?
21:47
3 жыл бұрын
Computer Programming as an Art
1:21:02
3 жыл бұрын
Programmer as Navigator
1:11:30
3 жыл бұрын
The Humble Programmer
2:16:15
3 жыл бұрын
Why is data so powerful?
8:31
3 жыл бұрын
What if data is a really bad idea?
55:01
Generality in Artificial Intelligence
1:22:01
Some Comments from a Numerical Analyst
1:09:51
Do forces really exist?
20:20
3 жыл бұрын
Пікірлер
@chibuikeoffu
@chibuikeoffu 9 сағат бұрын
Comedy!!!
@EdwardPsCL
@EdwardPsCL 19 күн бұрын
I'm always chuckling at those types of questions: "What is the language good for?" Ha! Somebody wrote a roller coaster simulator in Excel. So, anything is what can be written in the language...
@DataPastor
@DataPastor 26 күн бұрын
Perfectly relaxing tone, perfect podcast for dog walking and before going to bed. Very good takes btw. I fully agree!
@and4828
@and4828 Ай бұрын
Great book, really enjoying it.
@axel_ba1816
@axel_ba1816 Ай бұрын
I have a information system project development class and got this assignment, tysm for the explanation.
@SAMUEL-yr3vv
@SAMUEL-yr3vv Ай бұрын
Its not a problem, it is what it is. You dont complain to a wizard about how they write their spellbook. Imagine a world that every wizard now has to write their spell in a particular way
@mehtubbhai9709
@mehtubbhai9709 Ай бұрын
@Eric. Your videos cover a lot of the questions I have about functional programming. Thanks so much for making these videos
@JavierRuere-t2o
@JavierRuere-t2o 2 ай бұрын
I can't understand the books being recommended. Does anyone understand the names?
@JavierRuere-t2o
@JavierRuere-t2o 2 ай бұрын
The audio is quite bad.
@ericnormand4210
@ericnormand4210 2 ай бұрын
One thing I should have focused more on is how well-designed the new features are. They fit right in. It's a great sign that the Clojure core team values design so much!
@pappapez
@pappapez 2 ай бұрын
At around 17:00 on being able to pass Java methods as functions directly. I think it’s a big deal for beginners. I remember tripping on it and having to ask about it. This new way is much more intuitive.
@ericnormand4210
@ericnormand4210 2 ай бұрын
You might be right! At least the feature is well-designed!
@GerhardM13
@GerhardM13 2 ай бұрын
Why would they put so much emphasis on how to write java from clojure? If someone wants to write java he can use java.
@pappapez
@pappapez 2 ай бұрын
@@GerhardM13 That's precisely the why of this. Rich Hickey created Clojure because he didn't like to write Java. Yet the JVM is a wonderful thing and now we have a language to target it that is a joy to use. I can recommend the presentation A History of Clojure to hear Rich Hickey explain this and a lot more of the rationale. kzbin.info/www/bejne/pHWQgnuYh7yWpa8si=a0C4TGFWmxIquYkd
@GerhardM13
@GerhardM13 Ай бұрын
Thanks. Is it possible then to use new features like "virtual threads" for example from clojure or the language maintainers need to reimplement async package?
@thatryanp
@thatryanp 3 ай бұрын
Impressive you can do this in one take while driving. You sound just like me talking to my dictation app, but fewer pauses and less rambling.
@idiomaxiom
@idiomaxiom 3 ай бұрын
As soon as you give up the ability to handle time, the language becomes a pain in the ass for practical applications generally. There were Lisp machines and Lisp operating systems with tagged memory.... but x86 and windows just kind of steam rolled because Intel way better at making transistors.
@PixelOutlaw
@PixelOutlaw 3 ай бұрын
A maintenance disaster is what it is. It has the side effect of deferring naming things, making the code rdundant long chains of copy/pasted transformations. Tacit programming locally is OK but in the large it leads to code that is often missing the "what". Heavy de-structuring and threading macros can destroy Clojure programs quickly. It's a tool, not a religion. The greatest power we have as programmers is linguistic abstraction such that we don't need to keep rewriting the same transformations over and over but can call them by name and recreate their effects in a single line.
@white2bear
@white2bear 3 ай бұрын
Sorry, Eric! Almost unwatchable because of audio cuts repeatedly!
@simonirimiya.fromnigeria
@simonirimiya.fromnigeria 3 ай бұрын
Hi
@oitsukijudan
@oitsukijudan 3 ай бұрын
Very impressive how you reformulated my question much clearer than I asked it. Thank you for answering!
@alskidan
@alskidan 3 ай бұрын
The idea is cool. I’d add a blacklist for known VPN services. Otherwise there will be individuals who will access your site from cheapest countries. If you plan on commercializing this idea, the VPN issue might be a dealbreaker.
@pwhittinx
@pwhittinx 3 ай бұрын
If a user is using a VPN can they spoof their actual country? If so, is there a way to detect this? I've seen tv.youtube.com do this kind of detection.
@RustyWalters-wm7oi
@RustyWalters-wm7oi 3 ай бұрын
Your audio cuts in and out quite a bit. Seems like your microphone isn't always picking up your voice when first speaking.
@aguluman
@aguluman 4 ай бұрын
Thank you
@11rchitwood
@11rchitwood 4 ай бұрын
Thanks again for today!
@DavidLindes
@DavidLindes 4 ай бұрын
"And you know how I know how I know that I'll prosper? 'Cause I stand here beside you today" - Ren (from Hi Ren)... about something quite different, but might be relevant here. Lisp is still around some 66 years after its initial creation... will it ever become comparatively popular? I don't know... but I kinda hope it does, and I certainly hope that people (including myself) put time in to collaborating on well-documented, welcoming, rich libraries, etc...
@Donald-x8Donald_06o3
@Donald-x8Donald_06o3 4 ай бұрын
Tune into an exclusive interview with Binance's CEO for a sneak peek into future developments
@AndreiGeorgescu-j9p
@AndreiGeorgescu-j9p 4 ай бұрын
I appreciate the video but honestly preferring a dynamically typed language is absurd. All of your complaints are that it's not a dependent total type system. So basically if you can't have a Lamborghini you don't buy a car? And for most cases quick check and quickspec get you nearly all the way there. Algebra Driven Design is a book that goes into exactly what you're talking about in haskell. Only accessible book I'm aware of that does and it relies heavily on static typing
@minymen75
@minymen75 4 ай бұрын
Mark Normands brother!
@CalvaTV
@CalvaTV 4 ай бұрын
That was such an awesome refactoring. Wonderful that you think out aloud so naturally.
@CalvaTV
@CalvaTV 4 ай бұрын
There's a command in Calva for creating a Getting Started Project. It is branded a bit as Getting Started with Clojure, which is the main focus, but it starts with an intro to Calva. FYI.
@CalvaTV
@CalvaTV 4 ай бұрын
There's a Paredit “Expand Selection” command which is good for selecting forms in a controlled manner. (Even if you do a good jib with the mouse there, it is much, much quicker to use Expand Selection.) That Getting Started Project has brief intro to Paredit too, even if geared towards people who are not familiar with structural editing at all.
@CalvaTV
@CalvaTV 4 ай бұрын
I'd be super happy to jump into a screen sharing with you, Eric, and I can give you a crash course. We could even stream it. =) You know where to find me! /PEZ
@CalvaTV
@CalvaTV 4 ай бұрын
At 28:20 you seem to have to fight the editor. You say something about that enter doesn't go to the next line. I've not seen that before. It may be that I have some config that avoids it, but to know that I need to know a bit more about how to reproduce the issue. Not fully following in the video...
@CalvaTV
@CalvaTV 4 ай бұрын
I really do not understand what is going on with :item-name coming back all the time. Calva has no keystroke like that. So weird!
@CalvaTV
@CalvaTV 4 ай бұрын
Now watched further. Seems it was something about from where the test runner was triggered? I'd love me a copy of that project so I can try reproduce.
@charlesdematas3742
@charlesdematas3742 4 ай бұрын
What are those things on the walls.
@goodthink_ing1
@goodthink_ing1 2 ай бұрын
acoustic mufflers. _zero_echo. radio studio quality sound.
@larionov999
@larionov999 4 ай бұрын
thank you for doing these! always useful to see how other people do it. (the tooltip was infuriating me the whole way haha)
@CalvaTV
@CalvaTV 4 ай бұрын
Those hovers popping up are driving me nuts!
@alexdreptu
@alexdreptu 4 ай бұрын
You can disable the hover popup in VSCode by setting "editor.hover.enabled": false in User Settings JSON.
@pappapez
@pappapez 4 ай бұрын
There's also editor.hover.delay which is set to 300 ms by default. I have set mine to 1300 and it makes things much calmer.
@elcapitan6126
@elcapitan6126 4 ай бұрын
really enjoy watching these 👍
@elcapitan6126
@elcapitan6126 4 ай бұрын
but did the recording cut short for some reason?
@government_authority
@government_authority 4 ай бұрын
regarding degradation, I would remember quality of an item before update, and after update. and if it's decreased after all rules applied, amplify the difference by 2 for conjured items and 1 for normal items.
@amorphousblob2721
@amorphousblob2721 5 ай бұрын
8:21 - No, ANTLR is NOT a 100% solution to parsing. The fact that it's hard to use is because of all the stuff it leaves unsolved. The complexity of doing that stuff is dumped into every single application that uses ANTLR, making those applications more complex, which reinforces the need to have a giant team to maintain it. Most big frameworks in mainstream languages are 80% solutions or less. True 100% solutoins require a lot of knowledge. You have to know what problems others are running into, and your language has to allow you to solve _all_ the problems, even the ones that users unconsciously just endure without complaining. An example of a 100% solution would be CLOS with the MOP included. Or Common Lisp's condition system. A ton of research went into those. Mainstream solutions are just built ad-hoc using the easiest approach given the tools already available. Then the inevitable limitations are addressed if it's easy to do so. The real curse of Lisp is that since Lisp is so powerful and you only need a few developers, those developers end up being critical to an organization, because they're the equivalent of a big team. Therefore, firing and replacing one of those developers is like laying off an entire department and rebuilding it from the ground up. Clojure escaped the "Curse of Lisp" by being an 80% Lisp. The reason you need all those Java libraries is because Clojure is relatively weak. Common Lisp has pretty good C interop, but it's not used anywhere near as frequently as Java is in Clojure programs.
@11rchitwood
@11rchitwood 5 ай бұрын
Are you going to have office hours on the 4th?
@kyjo72682
@kyjo72682 5 ай бұрын
I think you make a good point. People seem to (want to) misunderstand what you are actually trying to say.
@AllanSavolainen
@AllanSavolainen 3 ай бұрын
But it is a silly point. The first part could be true, it might help the compiler to optimize better, though in C you can make cache friendly data structures more easily. Second point seems to forget that there are decades worth of libraries written for C, I would say that every data structure has C library written for it and could be used and the developer wouldn't need to write one himself. This doesn't hold true for Haskell, and mid level developer probably cannot implement random new data structure/algorithm optimally. C probably is harder to write safely than Haskell, but in many ways, it is easier. Also Haskell probably won't be faster on embedded systems etc where you don't have resources to copy stuff. Actually don't know how Haskell would handle things if there is not enough memory and it cannot mutate the data in place. Or if it can, then it really isn't functionally pure language :)
@shawnbadger2737
@shawnbadger2737 5 ай бұрын
I love Lisp, but it suffers from the same types of problems that Python does. As it scales, it's just too easy to break things with mismatched types, number of arguments, etc... you have to exercise all code paths at runtime to have confidence in it. Compare that to Rust where if it compiles, it typically just works. If I was starting a company that needed to innovate very quickly, I'd use Lisp. But if I was a company that had mission critical systems that must work, but could take a little more time to get there, I'd likely use Rust.
@shaunpearce-k9p
@shaunpearce-k9p Ай бұрын
Mission Critical.. ITA Flight scheduling software is written is Common Lisp. JPL uses Lisp extensively.
@timothymills5149
@timothymills5149 5 ай бұрын
Thank you for the string concatenation e.g. So much easier to see the motivation behind the distinction between commutativity and associativity with a simple case where one applies and the other doesn’t.
@nuggetonastick1804
@nuggetonastick1804 5 ай бұрын
@BenHutchison
@BenHutchison 5 ай бұрын
"monoids kick monads' butt" :facepalm:. Does true kick false's butt? Does 42 kick 41's butt? Is > greater-than <?
@pwhittinx
@pwhittinx 5 ай бұрын
Hi Eric, FYI, the audio level is quite low compared to other KZbin content
@11rchitwood
@11rchitwood 5 ай бұрын
What’s the link to submit a question? I hope to join soon but have an ongoing scheduling conflict.
@curiositydrivendevelopment3699
@curiositydrivendevelopment3699 5 ай бұрын
It is not part of the video description, but it is mentioned at 6:15 and in the email newsletter:
@curiositydrivendevelopment3699
@curiositydrivendevelopment3699 5 ай бұрын
ericnormand DOT me SLASH office-hours
@AlexRodriguez-gb9ez
@AlexRodriguez-gb9ez 6 ай бұрын
Clojure is for IQ 130 ppl, Haskell is for IQ 150 ppl...
@DataPastor
@DataPastor Ай бұрын
I am 146, so still in the Clojure bucket. :)
@11rchitwood
@11rchitwood 6 ай бұрын
Re: formalizing a domain. That's one of the reason's Ken Iverson created APL. He wanted to use it as a new, more regular notation to teach math. Bonus points that it is executable.
@Swimmer326
@Swimmer326 6 ай бұрын
7 months late to the party, this is such a weak argument I figured I’d leave a comment anyways. Comparing Haskell to a university 100 level understanding of C is such a weak argument because the people who write C don’t only have this level of understanding. I don’t know what a monad is but that doesn’t mean I can cast doubt on the fact that serious Haskell users understand monads and when to use them. The same argument can and should be made about C. This guy doesn’t roll his own data structures or import libraries, and just assumed everyone else was doing the same. Either this person is attempting to deceive people who don’t know any better, or they truly don’t understand C development, but either option shows why not to trust this line of thinking.
@ratfuk9340
@ratfuk9340 6 ай бұрын
All the ppl coming from Prime's video apparently can't understand what is being said. Quite literally every single comment by these guys misses the point by a fucking lightyear.
@kyjo72682
@kyjo72682 5 ай бұрын
Exactly! Same as Prime in that video. :)
@gnuemacs1166
@gnuemacs1166 6 ай бұрын
Even eMacs ends up not using lisp tree sitter for eMacs is c not lisp
@darkengine5931
@darkengine5931 6 ай бұрын
The main benefit I find to dynamic typing is that it can ease the process of writing and modifying code, provided we think about our data more abstractly. The major downside to me is that it opens up far more room for runtime errors and need for more comprehensive testing (potentially including validation of input types for functions), as the omission of type specification prevents many programmer mistakes from being caught at compile time. The final one to me is that dynamic typing is hopelessly less efficient than static typing for the most performance-critical of code (ex: a game engine or path tracer), since the appropriate size and precision and even alignment of a data type is not something that an optimizer can deduce absent runtime inputs. Even an optimizer that performs contorting acts analyzing IR to determine the optimal register types and instruction selection lacks the sufficient information in advance to do so anywhere close to optimally for dynamically-typed languages. So much of the added performance of statically-typed languages comes from programmers carefully and explicitly choosing the most economical data types to optimize for locality of reference, SIMD registers, to eliminate false sharing, etc.
@StefaanHimpe
@StefaanHimpe 6 ай бұрын
My suspicion is that FP in general is not popular because it heavily relies on recursion, which many people find hard to grasp (once you understand it, it makes sense, but until then it's deep magic, and many fail to overcome this obstacle (monads are even worse haha)). Obviously syntax matters a lot. Why did python win over perl? LISP in particular is annoying some people because of the parentheses (this I know for a fact, given that I'm one those people haha) - you can deny it, but that doesn't disprove it. To add to that, LISP comes with some really awfully named functions for basic things: wtf is a CAR and a CDR? It sounds like total nonsense. I'm already turned off before I even started :) TBH, I've never seen anything other than toy examples written in lisp or scheme (No doubt big systems exist, I just never saw them - emacs perhaps being the sole exception) which creates the impression that "no one" is using it for "real work" or that perhaps its approach of combining small functions leads to an untractable mess of thousands of weirdly named small functions (some of which probably could be almost duplicates?) trying to build the equivalent of a million line of C++ code system. It may be easy to write, but can you still understand it 3-5-10 years down the road? Here I agree with the individualism argument: if everyone starts to introduce mini DSLs, it doesn't help someone new to the system to make sense of it all. According to google trends (is that a good source?), clojure is much LESS popular than lisp nowadays, so in retrospect the JVM argument didn't really hold up. As for the argument "Parsing in LISP is easy" - sure, if you parse lisp-like trees, since they are pre-parsed by the human typing them in. However, writing a C++ parser with semantic disambiguation most likely will not be easier in lisp than in C++ because the recursive descent parsing is not where the real difficulty lies (but I'd love to be corrected on this!).