Learning Programming with Nim
Nim is a relatively new programming language which allows users to write easy-to-read high-performance code. But if you are reading this Nim tutorial, the chances are that you already know about Nim.
Posts that commenters keep linking to, ranked by how many different people have cited them in Hacker News comments. 662 posts.
Nim is a relatively new programming language which allows users to write easy-to-read high-performance code. But if you are reading this Nim tutorial, the chances are that you already know about Nim.
Programming language memory models answer the question of what behaviors parallel programs can rely on to share memory between their threads. For example, consider this program in a C-like language, where both x and done start out zeroed.
The difficulty in learning Clojure does not stem from its syntax, which happens to be extremely simple, but from having to learn new methods for solving problems. As such, we'll focus on understanding the core concepts and how they can be combined to solve problems the functional way.
Inspirations & experiments, mainly about denotative/functional programming in Haskell
A trampoline is a loop that iteratively invokes thunk -returning functions ( continuation-passing style ). A single trampoline is sufficient to express all control transfers of a program; a program so expressed is trampolined, or in trampolined style; converting a program to trampolined style is trampolining…
This is a tutorial on how to implement a programming language. If you ever wrote an interpreter or a compiler, then there is probably nothing new for you here. But, if you're using regexps to “parse” anything that looks like a programming language, then please read at least the section on parsing . Let's write less…
A look at what the newest generation of Java GCs can do
Supervisor trees are one of the core ingredients in Erlang's reliability and let it crash philosophy . A well-structured Erlang program is broken into multiple independent pieces that communicate via messages, and when a piece crashes, the supervisor of that piece automatically restarts it.
Computer Science, Machine Learning, Programming, Art, Mathematics, Philosophy, and Short Fiction
A discussion of how Sorbet's type syntax came to be, the problems it solves, and how it could improve.
This post takes a short break from ASDL to expand on one of my Hacker News comments.
A computer scientist working in open source towards a more hopeful future.
Over the last few weeks, I’ve been devoting my free time to fleshing out the theory behind non-lexical lifetimes (NLL). I think I’ve arrived at a pretty good point and I plan to write various posts talking about it. Before getting into the details, though, I wanted to start out with a post that lays out roughly how…
It is thankfully common wisdom nowadays that documentation must be placed as near as possible to the code it documents, and should be fine-grained to a minimal unit of describability (the thing being documented). The practice provides numerous benefits to the codebase and project as a whole:
For a while I’ve been working on a garbage collector for Rust with Nika Layzell. I thought this would be a good time to talk of our design and …
After the last post about high performance, high level programming, Slava Pestov, of Factor fame, wondered whether it was generally true that “if you want good performance you have to write C…
Describing three strategies of implementing type classes, aiming to clarify their behavior
I myself was not on the famous C3 (Chrysler Comprehensive Compensation System) project in 1996-2000 that is pivotal to ‘Extreme Programming’ (XP). That project used Smalltalk, and team contribution was provided by Object Technology International’s ENVY version control system. I wanted to know more about that so I…
An extensively updated and expanded version of the best-selling first edition. Now covers recent and more advanced features of Haskell.
An article describing the experience of writing a Lisp interpreter in Haskell.
You may have heard last week how Innokenty Mihailov’s great Enumerable::Lazy feature was accepted into the Ruby 2.0 code base. But you may not have heard about an even more significant change that was merged into Ruby 2.0 in January: a new algorithm for garbage collection called “Bitmap Marking.” The developer behind…
Zig places importance on the concept of whether an expression is known at compile-time. There are a few different places this concept is used, and these building blocks are used to keep the language small, readable, and powerful.
According to the LISP 1.5 Programmer's Manual ISBN 0 262 13011 4, `A' and `D' stand for `address' and `decrement', as on page 36 it says:
Metaprogramming is the writing of computer programs with the ability to treat programs as their data. It means that a program could be designed to read, generate, analyse and/or transform other programs, and even modify itself while running.