Programming on Unix and automatic memory management

April 23, 2023

Due to the pervasive influence of C, Unix is commonly thought of as a programming environment of manual memory management; you program Unix in C and C requires manual memory management. Except that I maintain this is somewhat of an illusion. From the days of V7 Unix onward (if not earlier), a substantial amount of Unix programming has always been done in languages with automatic memory management. It's just that we called this programming "shell scripts", "awk", "make", and so on.

(Then later all of these programming environments got slammed together to create Perl. People don't necessarily like Perl, but I think it's pretty undeniable that it had a substantial presence in 1990s era Unix programming.)

This isn't just an aspect of general Unix development after all sorts of people got their hands on it (and created things like Perl). In Bell Labs Research Unix and then Plan 9, I think pretty much every new language (or language) created for and on Unix was one with automatic memory management. One exception is Plan 9's Alef, but no less a person than Rob Pike has said that one reason for Alef's failure was its lack of automatic memory management.

(Another exception is C++, although that didn't quite come out of the core Research Unix environment. Obviously C++ has been highly successful.)

In short, programming with automatic memory management has been a part of Unix from Bell Labs onward. It's not some new intruder; it's a normal part of Unix, and the creators of Unix were clearly not philosophically opposed to automatic memory management under any circumstances.

PS: Some of the automatic memory management is forced in various ways; for example, a declarative language like "make" doesn't really have room for manual memory management. But I can somewhat imagine a version of awk that required you to do manual handling of some things. How difficult it is to imagine a version of awk with any form of manual space management suggests why it has its actual form.

(This elaborates on a Fediverse post, and was sparked by this.)

Written on 23 April 2023.
« The two types of C programmers (a provocative thesis)
Thinking about our passive exposure to IPv6 issues »

Page tools: View Source, Add Comment.
Login: Password:
Atom Syndication: Recent Comments.

Last modified: Sun Apr 23 22:56:17 2023
This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.