Classes vs. Data Structures
Or rather, an object is a set of functions that operate on implied data elements.
How Swift Achieved Dynamic Linking Where Rust Couldn't
For those who don’t follow Swift’s development, ABI stability has been one of its most ambitious projects and possibly it’s defining feature, and it finally shipped in Swift 5 . The result is something I find endlessly fascinating, because I think Swift has pushed the notion of ABI stability farther than any language…
I learnt C++ in 2018 and have no regrets
My quest for relearning C++ started in November 2018. I have been reading + blogging + writing C++ from then. I would like to reflect on my journey a bit. Before I begin, I would like to state that th
D as a C Replacement
Sircmpwn (the main developer behind the Sway Wayland compositor ) recently wrote a blog post about how he thinks Rust is not a good C replacement . I don’t know if he’d like the D programming language either, but it’s become a C replacement for me.
Go Creeping In
I’ve seen the inside of the Google and Amazon tech stacks. There are common threads that run through them and also, I bet, through most BigTechCos. Here and there down the stack is a lot of C++ and vestigial remnants from earlier days, Perl or PHP or whatever. Out in front of humans, of course, JS. But in between…
Why I Don't Like Golang (2016)
When I first started programming in Go, my summary of it was, “The good things are great and the bad things are weird and I can live with them.” After another three years and a few large projects in Go, I no longer like the language and wouldn’t use it for a new project. Here are 10 reasons why, in no particular order.
Learning Haskell is no harder than learning any other programming language
It has still often been difficult to find answers to my questions. I think this is largely due to the fact that when discussing things with the average Haskell programmer, I feel like I have a fourth-grade education.
Python vs. Rust for Neural Networks
Comparing a simple neural network in Rust and Python
Learning Parser Combinators with Rust
This article teaches the fundamentals of parser combinators to people who are already Rust programmers. It assumes no other knowledge, and will explain everything that isn't directly related to Rust, as well as a few of the more unexpected aspects of using Rust for this purpose. It will not teach you Rust if you don't…
Python built-ins worth learning
Update: You can find a newer version of this article on Python Morsels. In every Intro to Python class I teach, there’s always at least one “how...
What Is Good About Haskell?
Update 5/10/2019: check the bottom of this post for some links to comments and discussion.
Learning Rust via Advent of Code
How I used Advent of Code to learn about the programming language Rust.
Lisp is not based on the Lambda Calculus
How do you condense a 30 minute talk in 5 minutes? Should you even try? These are the questions I struggled with when someone nudged me to register for the lightning talks. My talk was 30 minute long because I was to jump in if a last-minute incident would prevent someone to get on stage. Call me the backup speaker…
C++ 20: The Core Language
My last post C++20: The Big Four started with an overview of concepts, ranges, coroutines, and modules. Of course, C++20 has more to offer. Today, let’s continue my overview of the core language.
Why Language-Oriented Programming? Why Racket?
Beautiful Racket
Racket Is an Acceptable Python
A little over a decade ago, there were some popular blogposts about whether Ruby was an acceptable Lisp or whether even Lisp was an acceptable Lisp . Peter Norvig was also writing at the time introducing Python to Lisp programmers . Lisp, those in the know knew, was the right thing to strive for, and yet seemed…
Update on await syntax in Rust
In my previous post I said that the lang team would be making our final decision about the syntax of the await operator in the May 23 meeting. That was last Thursday, and we did reach a decision. In brief, we decided to go forward with the preliminary proposal I outlined earlier: a postfix dot syntax, future.await…
Rust: Beyond the Typechecker
This post will be different from the previous ones, since I’m going to present some of the early results of my work as a PhD student at the Prosecco team in ...
C++ Modules Might Be Dead-On-Arrival
In which I discuss a modules problem that is being ignored
Crafting Interpreters: Closures
As the man said, for every complex problem there’s a simple solution, and it’s wrong.
I wrote a self-hosting C compiler in 40 days (2015)
I wrote a self-hosting C compiler which I named 8cc in 40 days. This is a log when I was writing it from scratch by myself in 2012. The code and its history are available at GitHub .
The Go runtime scheduler's way of dealing with system calls
You're probably reading this page because you've attempted to access some part of my blog (Wandering Thoughts) or CSpace , the wiki thing it's part of. Unfortunately you're using a browser version that my anti-crawler precautions consider suspicious, most often because it's too old (most often this applies to versions…
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…
Lvalues, rvalues, glvalues, prvalues, xvalues, help (2018)
Did you use to have some sort of intuition for what “lvalue” and “rvalue” meant? Are you confused about glvalues, xvalues and prvalues, and worry that lvalues and rvalues mi…