Hammer's niche is "systems programming", a term that is admittedly nebulous. For the purposes of this post, I shall define it as the act of writing software under the following set of requirements:
- Resources are critically limited. That is, if the software exceeds its budget, the project will be deemed a failure. Efficiency isn't simply "nice to have"; it's essential.
- The platform on which the application runs provides few or no abstractions. "Convenience" must be ported to the platform or be created from scratch.
- The behavior of the software must not violate expectations. Clients regard the existence of bugs as an indication of failure rather than a mere inconvenience.
To enable and facilitate systems programming, Hammer has adopted the following characteristics:
- Higher order functions.
- Immutability by default.
- A strong, static type system.
- Manual memory management.
- Manual thread management.
No comments:
Post a Comment