This Wikipedia article on PL/0, a historical programming language, exemplifies the platform's commitment to universal free access to educational and technical knowledge. The content and structure together strongly support human rights provisions around education (Article 26), freedom of information (Article 19), and economic participation through knowledge access (Article 25). While the article itself is domain-neutral on most human rights issues, Wikipedia's structural design—enabling global access, multilingual support, democratic governance, and open editing—creates a robust human rights-enabling environment particularly for rights to education, information, and cultural participation.
Interesting. The article states "The compiler prints the value as a given variable changes." -- surely it means the program does, and not the compiler?
"The publisher of Wirth's books (Addison-Wesley) has decided to phase out all his books, but Wirth has published revised editions of his book beginning in 2004."
That is sad, but the revised editions seem to be published online.
The older I get the more I prefer Wirth syntax languages with keyworded blocks and := assignment operators, and regret how C block syntax and =/== took over.
I learned first on Pascal & Modula-2 and only picked up C later and while I appreciated its terse minimalism at the time and through the 90s, I actually don't at all now. I find it less readable.
To all interested in this little treasure, I transcribed the source code of the PL/0 compiler from the book "Algorithms + Data Structures = Programs", published by Nicklaus Wirth in 1976, and adapted it to run in Free Pascal.
- The original compiler does not define nor implements "read" or "write" statements, as was the norm in later PL/0 implementations.
- The source code in the book corresponds to the implementation in the CDC 6000 that Wirth had at hand back then. That machine used the CDC Display Code:
a 6 bit character code from before the ASCII times. Among its 64 characters, it includes single symbols for "<>", "<=" and ">=". In an attempt to change the code the least to make it run as original as possible, I changed those three character to #, { and }, as the symbols in the lexer are implemented using an array of char (only the assignment is treated as a special case).
- The interpreter printing out the values of every variable assignment, noted by another reader of this post, was a way of getting some information of the running program, since the compiler does not implement read or write statements.
- Following the compiler code, full of single letter variable names, was not the most exciting part.
I have always disliked the := as assignment operator convention. In these declarative languages, assignment is done frequently. There is little cognitive load to using '=' as assignment, although perhaps a bit jarring for math folk.
<- is somewhat better, but, again, for such a common operation, a single character is just more convenient. Sure, we could have editors that turn "=" into := or <- but now we're getting too fancy especially for something pedagogical.
I also don't mind the -> for C pointers; and certainly don't mind the <= >= or even == conventions (although at least today's compilers warn when they see "if (a=b) ...".
Ultimately, humans won't be writing code anymore anyway ( ;-) ?) so maybe the issue is entirely moot.
It might be more precisely stated something like "The language's semantics require that when a variable changes value, that change includes the side-effect of printing the new value."
> I have always disliked the := as assignment operator convention. In these declarative languages, assignment is done frequently.
> I also don't mind the -> for C pointers
Mmm. These two opinions should be contradictory if held on principle as opposed being held out of impression.
it = next(it);
if ((*it)->node->op == EQ) ...
vs.
it := next(it);
if it.node.op = EQ ...
Eh. I don't really mind either of those except for the stupid parens after the "if" in the first case.
Technically, if you don't make assignment an expression, you can even get away with using "=" for both. And "->" exists only because structs originally weren't really typechecked; you could take any pointer and just do "->struct_field" at it, and the compiler would auto-cast.
Using '=' for both assignment and comparison is awkward when parsing incomplete code. Consider e.g.:
j = 5;
The user starts writing (<|> is the cursor position):
i = <|>
j = 5;
This is a valid expression (i is a boolean). But the user probably intends to finish writing something like:
i = 0;
j = 5;
So in the intermediate state we would like to emit a single warning about an incomplete statement. But since it is valid as written, we instead end up warning about e.g. j being unbound.
The := vs = debate is a prime example of bikeshedding for programmers. Probably hundreds of thousands of words have been written about it in various online forums. Everyone has an opinion but the truth is that it doesn't matter that much. You learn to use a new Algol-family language, you learn how it does assignment, you move on.
I think the name was likely a tongue-in-cheek reference to PL/I being notoriously complex to implement a compiler for. Wirth designed a language for teaching that had an extremely small set of features (making its complexity much closer to "0" than "1"). It is basically a small subset of Pascal.
Article exemplifies freedom to receive and impart information; documents technical knowledge freely; allows editing by all contributors; no censorship of ideas
FW Ratio: 44%
Observable Facts
Article content is freely accessible globally without subscription or authentication.
Wikipedia's editing system allows any user to impart information.
No content is restricted based on political, religious, or ideological viewpoint.
Information flows in multiple directions: receiving and sharing enabled equally.
Inferences
Free global access directly supports right to receive information without interference.
Open editing system enables imparting information without state or corporate gatekeeping.
Neutral policy prevents censorship and supports full information freedom.
Multilingual distribution supports information seeking across language barriers.
Wikipedia's structural design prioritizes Article 19 rights as foundational.
Article exemplifies right to education through free universal access to technical knowledge; documents educational tool for learning; no restrictions on who can access
FW Ratio: 50%
Observable Facts
Wikipedia provides free access to educational content globally without authentication.
Article documents educational programming language historically used in teaching.
Multilingual versions support education access across language boundaries.
Community structure enables collaborative learning and knowledge creation.
No age, background, or qualification restrictions on access.
Inferences
Free universal access directly supports right to education for all humans.
Educational mission prioritizes human potential development.
Multilingual support removes language barriers to educational access.
Content quality and accessibility support full development of personality and abilities.
Article 26 is foundational to Wikipedia's structural design and mission.
Article documents cultural and scientific heritage of programming; participates in human knowledge sharing; supports cultural participation through technical knowledge
FW Ratio: 50%
Observable Facts
Article documents scientific and cultural heritage of programming language.
Wikipedia preserves scientific knowledge for public benefit.
Community editing allows participation in cultural knowledge creation.
Multilingual versions preserve and share diverse cultural knowledge.
Open access enables benefit-sharing in scientific advances.
Inferences
Content preserves scientific heritage making it accessible to all humans.
Community participation enables cultural contribution and benefit-sharing.
Multilingual approach supports equal participation in cultural life.
Free access enables sharing in scientific progress and benefits.
Copyright and attribution balance support both creator and public interests.
Article permits free association through community editing; content allows diverse viewpoints; documentation of programming language supports peaceful assembly of technical knowledge
FW Ratio: 50%
Observable Facts
Wikipedia editing communities allow peaceful association of contributors.
Community projects and discussion forums enable assembly for shared knowledge goals.
No restrictions prohibit peaceful association or collaborative work.
User talk pages and community spaces support freedom of assembly.
Inferences
Collaborative editing structure enables peaceful association for knowledge creation.
Community forums and projects support freedom of assembly.
Absence of restrictions on peaceful collective action supports Article 20 rights.
Distributed editorial authority enables association without centralized control.
Content explicitly documents movement of knowledge and technical information across linguistic and national boundaries; PL/0 history includes international development
FW Ratio: 50%
Observable Facts
Article documents PL/0 development across multiple countries and institutions.
Wikipedia provides same content globally without geographic restrictions.
Technical knowledge is freely distributed across national boundaries.
Inferences
International scope of content and contributors supports freedom of movement of information.
Global accessibility without geographic gatekeeping enables unrestricted circulation of knowledge.
Open editing by international contributors embodies freedom to move knowledge across borders.
Article provides access to technical knowledge supporting health maintenance and standard of living; free educational content enables economic participation
FW Ratio: 43%
Observable Facts
Article provides technical education enabling economic participation in programming field.
Free access eliminates financial barriers to information necessary for standard of living.
Documentation supports skill development for economic security.
Inferences
Free technical education directly supports right to adequate standard of living.
Removing knowledge barriers enables economic participation and security.
Universal access supports right to food, clothing, housing through skill development.
Educational content provides foundation for achieving adequate standard of living.
Article presents technical content about PL/0 programming language with neutral academic framing; no explicit human rights advocacy but implicit support for free knowledge dissemination
FW Ratio: 50%
Observable Facts
Page provides free, unrestricted access to programming language documentation.
Content is organized in a neutral, encyclopedic style without editorial bias.
Inferences
Free access to technical knowledge supports the preamble's commitment to enabling human dignity through informed participation.
The neutral presentation framing suggests commitment to universal knowledge accessible regardless of background.
Wikipedia's core function is free information sharing; open editing enables imparting information; no state or corporate censorship; multiple language versions enable information reception globally
Wikipedia's core mission is free universal education; multilingual versions enable education access across language barriers; no cost barriers; supports full development of human potential
Wikipedia preserves and shares cultural and scientific heritage freely; community participation enables cultural contribution; multilingual versions support cultural diversity
Wikipedia enables peaceful association through collaborative editing; community structures support assembly for knowledge creation; no restrictions on peaceful association
Wikipedia's neutral point of view policy protects freedom of thought and conscience; allows all viewpoints to be represented; no ideological gatekeeping
Wikipedia's attribution system and licensing (CC-BY-SA) protect property rights while enabling access; source documentation acknowledges original creators
Wikipedia's global community structure allows participation from users regardless of origin; anonymous participation allows refugees from persecution to contribute safely
build 1ad9551+j7zs · deployed 2026-03-02 09:09 UTC · evaluated 2026-03-02 11:31:12 UTC
Support HN HRCB
Each evaluation uses real API credits. HN HRCB runs on donations — no ads, no paywalls.
If you find it useful, please consider helping keep it running.