mannschott
A reference can only point to an object or an array on the heap. Array indexing is bounds-checked.
It seems obvious to me that these restrictions make references easier to reason about than C-style pointers, and therefore easier to learn.
I've wondered this too. I can think of two systems "IBM i" (formerly OS/400) [1] and Oberon "Slim Binaries" [2] off the top of my head. I suspect that the answer to your question is some mix of path dependence and engineering trade-offs.
[1] https://en.wikipedia.org/wiki/IBM_i [2] https://dl.acm.org/doi/pdf/10.1145/265563.265576
For example, if the system has unix-style paged virtual memory (which Oberon did not), it's probably convenient to be able to directly map pages of native instructions into memory without needing to translate or massage them first.
In the case of "IBM i", which I've only ever read about, it sounds like it moves complexity from e.g. the compiler into the loader and so closer to the Kernel of the operating system. If I wanted to better understand the net cost/benefit analysis of this design I'd look for more detail on work done to port to PowerPC.
For example, search for "PROCEDURE Scan" here: https://people.inf.ethz.ch/wirth/ProjectOberon/Sources/Texts...
Control structures are deeply nested and this goes on for 64 (very dense) lines. The low line count but is an artifact of how Oberon is conventionally formatted. When reformatted to mimic the conventions of languages like C, Java or Python it works out to more than 120 lines.
When I program in Oberon (recreationally) I tend to follow this style even though I would extract the same code into a separate method were I writing in Java.
For extra fun consider the German-Speaking word where CSV files are actually Semicolon-Separated but everyone still calls them CSV and looks at you like you drooled on yourself when you point out that “;” is not a “,”.
This appears to be because we use “,” as decimal separator and were too dense to learn how to use " properly in CSV.
Bastard CSVs as far as the eye can see.
https://en.wikipedia.org/wiki/Baudot_code
This coding scheme is so constrained (32 possible 5-bit values) that it uses the codes FIGURES (01000) and LETTERS (10000) to toggle back and forth between two alternate sets of meanings for the remaining 30 possible codes. Still not enough space for lower case or ASCII's plethora of control codes (just NUL and DEL).
Me, I blame the Romans ;-)
The Latin alphabet was initially only what we call the "upper case". What became the lower case came (a millennium?) later, first as an alternate style of handwriting and then as an addition to the alphabet along with rules about when which form of each letter should be used.
Given the need to economize as in 5-bit teletype codes it's not surprising the chosen convention was to print (or later display) those codes as upper case as that is, historically speaking, the default.
Still, I like to wonder if anyone every thought to build a teletype that printed in lowercase just to screw with people. :-D
https://github.com/Project-Oberon/Source-Code/blob/cf7f6a6cd...
Please enjoy this microdose of historical trivia even though it doesn't answer the question of why those names were chosen (when designing Oberon).
https://kochen.kerpe.at/wp-content/uploads/2020/02/Mohnstrud...
Is this an affect of differing laws in the EU versus the USA? Differences in leadership of Amazon.com versus Amazon.de? Differences in perceived market expectations? Perhaps the average American consumer is expected to be more tolerant of this kind of thing? (I wonder because I compare the robo-call-infested hellscape that we've made of our telephone system compared to the rarity of such abuse where I live in Europe and wonder if we, in the US, are just more prone to behave in a way that produces tragedies of the commons.)
This is unsurprising and probably obvious. The purpose of the exercise is learning how to do experiments reliably so that at some later point when doing experiments to test a hypothesis you can have some confidence that the results you produce are actual data and not just noise.
When doing science class "experiments" of this sort perhaps it would illuminate things to students better by going up one level: the hypothesis under test is "student can perform experiment reliably". The putative subject of the "experiment" isn't the actual subject in inquiry: you are. On the other hand maybe this would just confuse students. (I've observed wildly varying capacity for abstraction and meta-cognition among the people I work with as a software developer so I suppose this is something that varies among individuals generally.)
Looks like about 1% of the population were snitches for the Stasi. You can decide for yourself if that's "a lot" or not.
iCab was a favorite of mine before the switch from Classic Mac OS to Mac OS X. I made heavy use of its ability to save offline copies of open web pages (with all embedded resources). http://www.icab.de
OmniWeb, on Mac OS X was very pretty for its time. (It was originally developed on OpenStep.) https://en.wikipedia.org/wiki/OmniWeb
NetPositive was bundled with BeOS. I only used it briefly. https://en.wikipedia.org/wiki/NetPositive
decorate | sort | undecorate
dance on each line produced by find. Where decorate would add the start of each line the things you want to sort by and undecorate would remove them again. find * -print | rev | sort | rev |
tar --create --no-recursion --files-from - |
gzip
This clusters file types together and within file types and within that files with the same base name close together.This worked surprisingly well for my use cases, though you can imagine that packing and unpacking times were impacted by the additional head seeks caused by the rather arbitrary order in which this accesses files.
Lack of search is a definite disadvantage of handwritten notes. Here's what I've done to blunt that:
(1) Every notebook begins with a few pages for a table of contents. (2) When a notebook is full, I scan it in as a PDF. (3) I type up the table of contents to make it searchable and add that to the PDF. (4) The PDFs are all available on my phone.
I am generally able to find things this way, but it is not as convenient as i-searching around a giant buffer in Emacs or using something like deft.el. For the moment I am continuing in this fashion, but I do periodically consider switching back to using a computer for note taking. Perhaps some day I will.