Most cited
Posts that commenters keep linking to, ranked by how many different people have cited them in Hacker News comments. 662 posts.
Why Use F#?
Why you should consider using F# for your next project
Joel Spolsky: Can your programming language do this?
One day, you’re browsing through your code, and you notice two big blocks that look almost exactly the same. In fact, they’re exactly the same, except that one block refers to “Sp…
Why Concatenative Programming Matters
Introduction There doesn’t seem to be a good tutorial out there for concatenative programming, so I figured I’d write one, inspired by t...
Advanced programming languages (2009)
Students often ask for a recommendation on what language they should learn next. If you're looking for a job in industry, my reply is to learn whatever is hot right now: C++, Java and C#--and probably Python, Ruby, PHP and Perl too.
Why Async Rust?
Async/await syntax in Rust was initially released to much fanfare and excitement. To quote Hacker News at the time:
Austral: A systems language with linear types and capabilities
Introducing a new programming language.
Learning APL
A language that doesn’t affect the way you think about programming is not worth knowing. – Alan Perlis
OCaml: what you gain
Way back in June, in Replacing Python: second round, I wrote: The big surprise for me in these tests was how little you lose going from Python to …
The Case Against Python 3
This document serves as a collection of reasons why beginners should avoid Python 3 as of November 22nd, 2016. I give two sets of reasons as I see them now. One for total beginners, and another for people who are more knowledgeable about programming. The first section attempts to explain the case against starting with…
Error handling in Rust
Like most programming languages, Rust encourages the programmer to handle errors in a particular way. Generally speaking, error handling is divided into two broad categories: exceptions and return values. Rust opts for return values.
The Strict Aliasing Situation Is Pretty Bad
One thing that works well in practice in cases where you really don’t want to process single bytes at a time is to use a union for going from one type to another. Granted, writing one member of a union and reading from a different one also isn’t allowed per the standard, but every compiler I’ve come across allows it…
Fear of Macros
Practical Racket macros
Binary Lambda Calculus (2020)
Binary lambda calculus ( BLC ) is a minimal, pure functional programming language invented by John Tromp in 2004, 1 based on a binary encoding of the untyped lambda calculus in De Bruijn index notation.
Object Oriented Programming is an expensive disaster which must end
Zet Casino 2026: tysiące gier, bonus powitalny, wpłaty BLIK i krypto, wypłaty w minutach oraz polskie wsparcie 24/7. Sprawdź naszą ofertę.
Porting to Python 3 Redux
Some updated tips for porting software to Python 3.
I Want Off Mr. Golang's Wild Ride
My honeymoon with the Go language is extremely over. This article is going to have a different tone from what I’ve been posting the past year - it’s a proper rant. And I always feel bad writing tho...
قلب: a non-ASCII programming language written in Arabic
قلب is a programming language exploring the role of human culture in coding. Code is written entirely in Arabic, highlighting cultural biases of computer science and challenging the assumptions we make about programming. It is implemented as a tree-walking language interpreter in JavaScript.
Why Go Is Not Good
I like Go. I use it for a number of things (including this blog, at the time of writing). Go is useful. With that said, Go is not a good language. It's not bad; it's just not good.
A comparison of Rust’s borrow checker to the one in C#
OK, so C# doesn’t share the Rust concept of “borrowing,” so it wouldn’t technically be correct to call this “borrow checking,” but in practice when people talk about “Rust’s borrow checker” they’re talking about all of the static analysis Rust does to ensure memory safety, for which I think this qualifies.
New in PHP 8
PHP 8.0 brings features like attributes, union types, and the JIT compiler. It has some important breaking changes, and improved performance.
QBE vs. LLVM
Both QBE and LLVM are compiler backends using an SSA representation. This document will explain why LLVM does not make QBE a redundant project. Obviously, everything following is biased, because written by me.
Brendan Eich: The infernal semicolon
Most of the comments in this semicolons in JS exchange make me sad. The code in question:
Why Clojure?
I’ve programmed systems in many different languages; from assembler to Java. I’ve written programs in binary machine language. I’ve written applications in Fortran, COBOL, PL/1, C, Pascal, C++, Java, Lua, Smalltalk, Logo, and dozens of other languages. I’ve used statically typed languages, with lots of type inference…
How the OCaml type checker works (2022)
A short guide on OCaml type checker, describing the surprisingly elegant algorithm for generalization, which generalizes to first-class polymorphism, MLF and local types. Polymorphism and regions have much in common.