OOP the Easy Way
Object-Oriented Programming the Easy Way: a manifesto for reclaiming OOP from three decades of confusion and needless complexity.APPropriate Behaviour
APPosite Concerns
FSF
Category Archives: code-level
In which things are given names
I recently joined in a very interesting discussion with some of my peers on the thorny subject of naming variables in programs. The core question was whether it’s OK to give a variable a temporary name while you’re still working … Continue reading
Posted in code-level
1 Comment
You say “cave dweller debugging”, I say debug logging
There are still many situations where it’s not feasible to stop a process, attach the debugger, and start futzing with memory. We can argue over whether this is because the industry didn’t learn enough from the Pharo folks later. For … Continue reading
Posted in code-level
1 Comment
On or Between
The new way to model concurrency is with coroutines (1963), i.e. the async/await dance or (building upon) call-with-concurrent-continuation. The new new way is with actors (1973), and the old and busted ways are with threads (1966), and promises (1976). As … Continue reading
“Reasoning about code” is a scam
Another day, another post telling me to do something, or not do something, or adopt some technology, or not adopt some technology, or whatever it is that they want me to do, because it makes it easier to “reason about … Continue reading
Posted in code-level
5 Comments
Tiger to Catalina: let’s port some code
Many parts of a modern software stack have been around for a long time. That has trade-offs, but in terms of user experience is a great thing: software can be incrementally improved, providing customers with familiarity and stability. No need … Continue reading
Posted in code-level
5 Comments
SICPers podcast episode 9
In this episode I talk about Design by Contract. Episode RSS feed – also available in Apple and Google Podcasts. A Discipline of Programming Go to statement considered harmful Z Notation, and Object-Z CocoaByContract, and JavaByContract CLU Programming Language
First, Consider no Harmful.
Yesterday, we observed that the goal of considering the go to statement harmful was so that a programmer could write a correct program and have done with it. We noticed that this is never how computering works: many programs are … Continue reading
The unreasonable ineffectiveness of considering things harmful
Dijkstra didn’t claim to consider the go to statement harmful, not in those words. The title of his letter to CACM was provided by the editor, Niklaus Wirth, who did such a great job that the entire industry knows that … Continue reading
Concurrent objects and SCOOP
Representing concurrency in an object-oriented system has been a long-standing problem. Encapsulating the concurrency primitives via objects and methods is easy enough, but doesn’t get us anywhere. We still end up composing our programs out of threads and mutexes and … Continue reading
Microservices for the Desktop
In OOP the Easy Way, I make the argument that microservices are a rare instance of OOP done well: Microservice adopters are able to implement different services in different technologies, to think about changes to a given service only in … Continue reading