I'm an old man, I learned the Standard ML of New Jersey when I was an undergraduate many years ago, but I'm pretty sure that experience though it isn't irrelevant, did not overly colour my belief in what we [speaking broadly of humanity] ought to teach.
Learn Programming with OCaml (usr.lmf.cnrs.fr)
tialaramex 10 hours ago
MeetingsBrowser 8 hours ago
It’s still an abstraction, but at least being aware of memory management, copying vs referencing, etc are hugely important concepts that ML languages can hide.
xiaoyu2006 6 hours ago
C is still heavily abstracted. Modern OS evolved in conjunction with C s.t. it behaves like a C runtime simulating a PDP11 (I remember reading a nice article on that). To learn system, what you need is an OS course, not C. I'd say the current C-based stack is in a quite embarrassing state.
siev 6 hours ago
hnfong 4 hours ago
uecker 2 hours ago
Also somehow the implied argument that computing hardware and operating systems simulate a PDP-11 for the sake of C is completely backwards. Historically, there were other approaches, e.g. processors designed for object-oriented programming or actors etc.. All those were not very successful.
nivertech 24 minutes ago
UNIX for PDP-7 in Assm -> UNIX for PDP-11 in Assm -> UNIX for PDP-11 in C
https://news.ycombinator.com/item?id=42644851
and
slacknatcher12 6 hours ago
C is in an odd position right now to argue it is how the machine is really working. Computers are more complicated since bigger caches entered the picture. Hell I do not think even ASM is a good approximation on how machine really work given the data dependencies will make stuff being processed in parallel instead of sequentially.
What you could argue is that C is the archetype for an imperative language procedural language with a clean mapping to ASM. That is different than how the machine works. Simpler architecture have less distance between their ASM and what is really hapenning.
zvmaz 15 hours ago
rramadass 3 hours ago
It gives an insight into how they thought/think and what we can learn from them.
While watching the series i was stuck by the fact that they often only focused/reiterated the conceptual basics and building on top of them in a step-by-step manner. Whereas if you watch interviews with programmers (even famous ones) you will often see a lot of fancy talk about the complicated features of the language etc.
I believe "Experts" have a way of modeling domain knowledge in their mind in such a way that they intuitively know what is the "wheat" and what is the "chaff". This is what we need to learn. Scheme can do a lot with a minimal language and so can C++ on the other end of the spectrum. So then what constitutes "Programming"? It is simply an expression of Intent via syntax supporting abstraction of state/behaviour.
__rito__ 4 hours ago
CS3110: OCaml Programming: Correct + Efficient + Beautiful [0]
It is one of the best programming resources that I know of.
sweetjuly 14 hours ago
I remember learning to use OCaml in a properly functional way after so long writing code in C and it was really miserably painful trying to change how I thought about algorithms. I eventually got over the hill and it changed how I write code in C (for the better?), but I do wonder if it would have been easier to have learned OCaml as a first language instead.
nestorD 14 hours ago
I went through a book similar to the one above, with no internet connection. The first few weeks were rough: I did not quite know what a type was and the compiler error messages were unforgiving and hard to understand without that context. But, once I grokked the core ideas (a proper idea of what could be done with recursion took much longer), things went surprisingly smooth. I definitely credit it with making me a better programmer.
rahimnathwani 13 hours ago
nestorD 8 hours ago
fat-chunk 14 hours ago
I'm aware of why Haskell is not practical as a production language for most companies, but I have to say I've never really coded in anything else that feels as "neat" and it's a shame. Every other language feels like it has some idiosyncratic scaffolding one has to learn, reminding you that you're constrained by how computer hardware works, rather than just expressing an algorithm in terms of inputs and outputs.
I would say it has made me a better coder, I've still kept a preference for keeping data immutable, copyable and abstracting complexity into easily testable functions over classes with unobservable mutable state.
yodsanklai 13 hours ago
Also OCaml lets you write imperative code if you wish so. So you can learn the different paradigms within the same language.
sghiassy 9 hours ago
phtrivier 2 hours ago
Caml was how I was taught computer science in prépa and first few years of engineering school, a mere 25 years ago.
(Ok, I had done bits of BASIC before, but I had time to recover.)
To be honest, the learning path was
1. Lots of maths. Then add some more.
2. Algos in pseudo code. (In "French", pseudo code, of course, because, why not ?)
3. Caml as "executable pseudo code". With all the warnings and a hints of disgust as the use of mutation and side effect. (And of course ":=" his completely different from "=", what are we, beasts ?)
4. Lots of exams where you have to write properly indented programs on paper on the first try to submit all sorts of recursive trees to all sorts of horrendous manipulations - and you can imagine the grader doing the mother of all code reviews
5. Re do that again in engineering school, because a third of the class had done zero computer science, and the other third had learn in Pascal
6. Then learn C and assembler, and get your mind blown in the exact opposite direction
7. See your teachers reluctantly say that "you should just learn java", because "that's what used in the industry", and "no one will ever get a job writing caml anyway"
...
25 years later : yup, some people managed to get jobs writing a dialect of caml for this small startup in a garage serving cat pictures and racist memes to billions of people
26 years later: "you should just learn to prompt LLMs anyway", because "that's what the industry needs, and no one will get a job programming any more"
throwaw12 15 hours ago
Lately, I keep asking myself, do I need to learn this new thing, should I force myself to learn this thing, LLMs know it anyways and so on.
So (asking genuinely), should we learn these things?
adalacelove 15 hours ago
a2ff6eeb0 15 hours ago
doc_ick 15 hours ago
xiaoyu2006 15 hours ago
_HMCB_ 15 hours ago
f1shy 15 hours ago
underlipton 15 hours ago
Barrin92 14 hours ago
the average person spends 6(!) hours a day on their smartphone, the average TikTok user spends 100 minutes on the app alone. This isn't about artificial scarcity, it's about the average person looking like the Wall-E people
Avicebron 14 hours ago
People who are asking these questions are saying "will me spending my time learning OCaml help me land that job that pays six figures and has health insurance so I can not rot away living on the margin". They aren't saying "I only do things that will make me money".
Barrin92 13 hours ago
again, it's not a small window. It's six hours. That's almost half your waking day. People spend virtually their entire leisure time rotting away on low quality entertainment.
>will me spending my time learning OCaml help me land that job
that's a pointless question for one you never know if something will land you a job, new opportunities don't open up before you do something, secondly the relevant question is, should I stop doing X and start learning Ocaml, or Chinese, or take a welding class because all of that even if it doesn't work out beats scrolling through Instagram.
I don't even take offense with the idea that you engage in activity that makes you money, because pure selfishness on that front would be an improvement to what most people are doing now.
cellis 4 hours ago
As for OCAML vs not, I think the vast majority of even intellectual and studious people would be better served trying to AI max and build some kind of agent serving businesses than trying to get a job at, uhh, Jane Street. 1% of the best engineers in the world get to work in that language, so yeah the parent makes a valid point
underlipton 9 hours ago
aaplok 12 hours ago
I still think it worth my time kneading dough by hand. It teaches me the various properties of flour, how external factors like humidity or temperature impact the overall process, and I believe that it makes me a better baker, even when I use a machine, because I am better at controlling what the machine does. When I get a new brand of flour I will make sure to bake everything by hand first to "get a feel".
Kneading by hand is also very relaxing to me. This is probably the main reason I bake in the first place.
Programming, and other activities are not very different. We now have machines that can do it faster, at a fraction of the quality many people deem good enough. If you hate coding, that is probably all you need to use, and learning a new language might just be a frustrating experience not worth subjecting yourself to. But if you enjoy coding then it should make you better at it, even when you use the machines.
dadoum 15 hours ago
f1shy 15 hours ago
ahoka 15 hours ago
a2ff6eeb0 15 hours ago
More recently, you had to go to the store and buy it, which meant you didn't have much variety.
Today, learning an instrument is for social status, inheriting the shine of the past, where music was rare and costly. The reason to learn an instrument today is because the former situation was romanticized.
It'll probably take a generation before people ease into guilt-free enjoying infinite, fully generated music.
toolslive 15 hours ago
jonahx 15 hours ago
I would rate them as about 5% true and 95% false, as explanation of the past and prediction of the future.
The satisfaction of learning to do something difficult isn't going away, and the social status associated with it won't either.
a2ff6eeb0 14 hours ago
pessimizer 10 hours ago
Lol. The reason to learn an instrument is because it is directly pleasurable to play an instrument. You've got consumer/spectator brain.
I mean, why post a comment when you could have just read a comment?
dismalaf 15 hours ago
sublinear 15 hours ago
monsieurbanana 15 hours ago
The answer is still the same as well, people learn ocaml either because they enjoy it, or because learning a functional language makes them a better programmer overall and teaches your brain to approach a problem in a different way.
sgt 15 hours ago
But what about the future generations skipping the step of learning the OCaml's, the C's, the Python's...? It's quite concerning.
Oh by the way, yes. Learn OCaml!
nine_k 15 hours ago
An oblique explanation: https://croissanthology.com/earring
doc_ick 15 hours ago
henryrobbins00 14 hours ago
[1] https://www.cs.cornell.edu/courses/cs3110/2025sp/
[2] https://pragprog.com/titles/tpp20/the-pragmatic-programmer-2...
andsoitis 14 hours ago
RobRivera 14 hours ago
Hhhmmmmm
yodsanklai 13 hours ago
That being said, you may as well use Rust. The extra complexity of manual memory management and Rust idiosyncracies are easily dealt with by the LLM.
yawaramin 13 hours ago
zem 13 hours ago
sroerick 12 hours ago
Also, it may very well be the decade of formal verification - if so, OCaml is a good place to be.
shevy-java 11 hours ago
Personally I try to stick within my own niche though - ruby, java and also python (ruby is unfortunately losing grounds really hard now, the writing was on the well in the last some years though, and people such as DHH are now indeed a liability rather than an asset to be had, but that's a side topic).
I think what LLMs will force in the long run is to make programming languages used by real humans in a traditional way, more effective. That is, writing code by humans will have to become a lot more efficient, both time-wise and speed-wise. And for that there is always a use case IMO since LLMs are, despite the promo, incredibly stupid.
debo_ 11 hours ago
bigstrat2003 10 hours ago
ryan_n 9 hours ago
xigoi 3 hours ago
This is assuming that the current state of LLMs is sustainable, which it definitely isn’t.
ivolimmen 4 hours ago
lenkite 3 hours ago
I wanted to learn a functional programming language with powerful type capabilities and I chose the Lean Language for that and not OCamel or Haskell. Reason being: Better type system (dependent types!), applicable in formal domains and can use it to learn math too.
For your bread and butter programming, there is already JS/Go anyways.
So don't see much point in learning OCamel.
rramadass 11 minutes ago
Humans are the ones who Understand, while LLMs only Know.
So inter-disciplinary/cross-disciplinary insights, new modes of thinking/reasoning, flashes of insight etc. are still in the purview of Humans only. AI/LLMs can help focus and short-circuit the study of various subjects but their understanding can only happen within a human "Mind". If you do not even have basic domain knowledge (i.e. unknown unknowns) how can you even prompt/query an LLM for answers?
A few illustrative examples; a) Newton came up with limits/calculus out of a need to measure continuous motion with varying speeds b) Kekule came up with the benzene ring from a dream where he saw a snake grab its own tail c) Descartes came up with the cartesian coordinates in an attempt to solve geometry via algebra etc. Each of these was a novel leap of insight bringing together various concepts to create entirely new knowledge domains.
So one should learn/study the core concepts/ideas in various domains and then push the tedious mechanical labour onto the machines. In this regard see also the concept of "Active Learning" - https://en.wikipedia.org/wiki/Active_learning
andai 7 minutes ago
https://tenor.com/view/tf2-wall-e-team-fortress-2-autobalanc...
Fervicus 12 hours ago
jan_m_savage 8 hours ago
ratorx 3 hours ago
But it does say it’s targeted more for an “algorithms” course in the introduction.
As a side note, I think a REPL is the best environment for learning to program for absolute beginners. You get instant feedback and can focus entirely on just short snippets of real code, without having to worry about compilers, build systems, and “the OS” as a whole. Especially if it comes with a GUI wrapper, you can skip the terminal entirely.
jan_m_savage 3 hours ago
Agree with you wrt to REPL, though sooner or later the programmer-wanna-be has to embrace technical sophistication. :)
netfortius 7 hours ago
amelius 13 hours ago
foretop_yardarm 13 hours ago
amelius 12 hours ago
I looked for Qt bindings but they appeared to be abandoned last time I checked.
e12e 12 hours ago
For Linux UI.
amelius 12 hours ago
lambda_foo 12 hours ago
yawaramin 11 hours ago
osener 6 hours ago
veqq 15 hours ago
tangus 13 hours ago
shakna 13 hours ago
The PDF on the other hand gets to use zlib for streaming all the objects. It gets half decent compression.
shevy-java 12 hours ago
OCaml is a very strange programming language. I don't think it will be able to sustain e. g. success stories of other languages, such as python.
debo_ 11 hours ago
giraffe_lady 15 hours ago
* Other “pure” hindley-milner languages are tied but among them ocaml has some particular strengths that I’m sure others will discuss.
nine_k 15 hours ago
(I have my own answers, but I'd love to hear yours, too.)
throwrioawfo 15 hours ago
(2) performance
giraffe_lady 14 hours ago
Rust is fine if you need it but most things don’t and ocaml has more convenient abstractions for “regular” work. If you need rust you need rust but ocaml isn’t that far off in perf.
Haskell type system is too expressive, it itself becomes a place for the agent to make mistakes and get bogged down.
yawaramin 14 hours ago
2. OCaml has an idiomatic approach of using interface files for all modules that can be accessed outside their libraries, and interface files give LLMs a great précis of exactly what is wanted. They then just have to follow the types and fill in the blanks to get the implementation. It's nearly the perfect use case.
phtrivier 14 hours ago
giraffe_lady 14 hours ago
yawaramin 14 hours ago
giraffe_lady 13 hours ago
They had originally planned on june and my part is in so…. Me too.
Fiodel 13 hours ago
giraffe_lady 13 hours ago
rybosome 9 hours ago
steve1977 14 hours ago
sroerick 12 hours ago
mchaver 11 hours ago