Diag| Considering item [tag:pappp.net,2026-06-22:/2489670] "Steam Machine"
Diag| Considering item [tag:pappp.net,2026-06-18:/2488796] "What was nice about the UI of Windows 2000"
Diag| Considering item [tag:pappp.net,2026-06-17:/2488496] "Lore – Open source version control system designed for scalability"
Diag| Considering item [tag:pappp.net,2026-06-16:/2488199] "Linux kernel 7.1 sends Intel 486 support to silicon heaven"
Diag| Considering item [tag:pappp.net,2026-06-15:/2487839] "Fox is buying Roku"
Diag| Considering item [tag:pappp.net,2026-06-14:/2487662] "Any road followed precisely to its end leads precisely nowhere."
Diag| Considering item [tag:pappp.net,2026-06-19:/2489115] "I used sound waves to make espresso"
Diag| Considering item [tag:pappp.net,2026-06-10:/2486637] "German court rules Google is liable for whatever Google’s “AI” generates"
Diag| Considering item [tag:pappp.net,2026-06-01:/2484373] "Microsoft is intentionally bricking all Office for Mac 2019/2021 installations"
Diag| Considering item [tag:pappp.net,2026-06-01:/2484272] "Nvidia's Grace Blackwell superchips are officially coming to the PC with RTX Spark notebooks"
Diag| Considering item [tag:pappp.net,2026-05-30:/2483921] "Adding Linux support back for the BASIC (free) version of Vivado"
Diag| Considering item [tag:pappp.net,2026-05-30:/2483835] "Proposed new US funding rules: We can cancel any grant at any time"
Diag| Considering item [tag:pappp.net,2026-05-27:/2483228] "The exemptions in age-verification laws for open source operating systems are bad, actually"
Diag| Considering item [tag:pappp.net,2026-05-31:/2484064] "Mysteries of the Griffin iMate"
Diag| Considering item [tag:pappp.net,2026-05-23:/2482255] "AMD (Xilinx) is Excluding Linux From the Free Tier For Its FPGA Dev Tool"
Diag| Considering item [tag:pappp.net,2026-05-19:/2481210] "The Virtual OS Museum"
Diag| Considering item [tag:pappp.net,2026-05-19:/2481121] "Google changes its search box"
Diag| Considering item [tag:pappp.net,2026-05-15:/2480224] "Windows 11 tests an adjustable taskbar and resizable Start menu"
Diag| Considering item [tag:pappp.net,2026-05-15:/2480167] "Send the arXiv AI-generated slop, get a yearlong vacation from submissions"
Diag| Considering item [tag:pappp.net,2026-05-13:/2479471] "KDE Receives $1.4 Million Investment From Sovereign Tech Fund"
Diag| Considering item [tag:pappp.net,2026-05-12:/2479155] "Google's Android-powered laptops are called Googlebooks, and they're coming this year"
Diag| Considering item [tag:pappp.net,2026-05-07:/2478063] "Canvas is online again after ShinyHunters threaten to leak schools’ data"
Diag| Considering item [tag:pappp.net,2026-05-07:/2477845] "Aramark, University of Kentucky to end partnership, eliminating more than 900 jobs"
Diag| Considering item [tag:pappp.net,2026-04-29:/2475951] "Apple gives up on Vision Pro, disbands Vision Pro team"
Diag| Considering item [tag:pappp.net,2026-04-27:/2475199] "National Science Board eviscerated; Trump admin fires all 22 members"
Diag| Considering item [tag:pappp.net,2026-04-22:/2473947] "Windows 9x Subsystem for Linux"
Diag| Considering item [tag:pappp.net,2026-04-22:/2473882] "Acetaminophen vs. ibuprofen"
Diag| Considering item [tag:pappp.net,2026-04-20:/2473234] "Got an Old Kindle? It Might Not Work Anymore"
Diag| Considering item [tag:pappp.net,2026-04-17:/2472794] "Ban the sale of precise geolocation"
Diag| Considering item [tag:pappp.net,2026-04-15:/2472147] "Academic fraud may be the symptom of a more systemic problem"
Diag| Considering item [tag:pappp.net,2026-04-14:/2471801] "Why Aren’t the Kids Out Protesting Against Trump?"
Diag| Considering item [tag:pappp.net,2026-04-08:/2470398] "I ported Mac OS X to the Nintendo Wii"
Diag| Considering item [tag:pappp.net,2026-03-27:/2467289] "Author of Red Mars calls 'bullshit' on emigrating to the planet"
Diag| Considering item [tag:pappp.net,2026-03-25:/2466758] "Supreme Court rejects Sony's attempt to kick music pirates off the Internet"
Diag| Considering item [tag:pappp.net,2026-03-25:/2466743] "Tracy Kidder has died"
Diag| Considering item [tag:pappp.net,2026-03-23:/2466208] "FCC updates covered list to include foreign-made consumer routers"
Diag| Considering item [tag:pappp.net,2026-03-23:/2466050] "The OpenBSD init system and boot process"
Diag| Considering item [tag:pappp.net,2026-03-22:/2465869] "I hate: Programming Wayland applications"
Diag| Considering item [tag:pappp.net,2026-03-22:/2465853] "Building an FPGA 3dfx Voodoo with Modern RTL Tools"
Diag| Considering item [tag:pappp.net,2026-03-20:/2465513] "Our commitment to Windows quality"
Diag| Considering item [tag:pappp.net,2026-03-19:/2465298] "Minecraft Source Code Is Interesting"
Diag| Considering item [tag:pappp.net,2026-03-19:/2465184] "Google details new 24-hour process to sideload unverified Android apps"
Diag| Considering item [tag:pappp.net,2026-03-18:/2464917] "FBI is buying location data to track US citizens, director confirms"
Diag| Considering item [tag:pappp.net,2026-03-18:/2464827] "Forgetfulino 2.0.1 – never lose your Arduino sketch again"
Diag| Considering item [tag:pappp.net,2026-03-13:/2463634] "Digg is gone again"
Diag| Considering item [tag:pappp.net,2026-03-05:/2461309] "The great license-washing has begun"
Diag| Considering item [tag:pappp.net,2026-03-05:/2461226] "The Government Uses Targeted Advertising to Track Your Location"
Diag| Considering item [tag:pappp.net,2026-03-04:/2460816] "Government grant-funded research should not be published in for-profit journals"
Diag| Considering item [tag:pappp.net,2026-02-26:/2459140] "FTC declines to enforce a kids privacy law for data collected to verify users’ ages"
Diag| Considering item [tag:pappp.net,2026-02-26:/2459011] "Burger King will use AI to check if employees say 'please' and 'thank you'"
Diag| Considering item [tag:pappp.net,2026-02-25:/2458760] "Bcachefs creator insists his custom LLM is female and 'fully conscious'"
Diag| Considering item [tag:pappp.net,2026-02-25:/2458733] "The Misuses of the University"
Diag| Considering item [tag:pappp.net,2026-02-24:/2458494] "If you’ve been holding on to a phone for a while, current phones are really disappointing"
Diag| Considering item [tag:pappp.net,2026-02-23:/2457958] "Elsevier shuts down its finance journal citation cartel"
Diag| Considering item [tag:pappp.net,2026-02-19:/2457171] "California's new bill requires DOJ-approved 3D printers that report themselves"
Diag| Considering item [tag:pappp.net,2026-02-23:/2457921] "My journey to the microwave alternate timeline"
Diag| Considering item [tag:pappp.net,2026-02-17:/2456572] "BarraCUDA Open-source CUDA compiler targeting AMD GPUs"
Diag| Considering item [tag:pappp.net,2026-02-19:/2457227] "A beginner's guide to split keyboards"
Diag| Considering item [tag:pappp.net,2026-02-13:/2455560] "MyMiniFactory has Acquired Thingiverse Bringing Anti-AI Focus"
Diag| Considering item [tag:pappp.net,2026-02-11:/2455032] "Microsoft adds and fixes remote code execution vulnerability in Notepad"
{"id":775,"date":"2011-09-17T17:04:41","date_gmt":"2011-09-17T21:04:41","guid":{"rendered":"http:\/\/pappp.net\/?p=775"},"modified":"2011-09-18T19:55:34","modified_gmt":"2011-09-18T23:55:34","slug":"principles-of-programming-languages","status":"publish","type":"post","link":"https:\/\/pappp.net\/?p=775","title":{"rendered":"Principles of Programming Languages"},"content":{"rendered":"

I referred to Bruce J. MacLennan’s Principles of Programming Languages in my previous post, then discovered I can’t find the list anywhere on the ‘net, at least not as I was taught them. They are (AFIK) derived from his book, also named Principles of Programming Languages<\/a>, so it may not be precisely kosher to put them online, but I’m going to post a copy anyway, because they are terribly useful to refer to. <\/p>\n

    \n
  1. Abstraction:<\/strong> Avoid requiring something to be stated more than once; factor out the recurring pattern.\n
  2. Automation:<\/strong> Automate mechanical, tedious, or error-prone activities.\n
  3. Defense in Depth:<\/strong> Have a series of defenses so that if an error is not caught by one, it will probably be caught by another.<\/a>\n
  4. Elegance:<\/strong> Confine your attention ot designs that look<\/em> good because they <\/em> are good.\n
  5. Impossible Error:<\/strong> Making errors impossible to commit is preferable to detecting them after their commission.\n
  6. Information Hiding:<\/strong> The languages should permit modules designed so that (1) the user has all of the information needed ot use the module correctly, and nothing more, and (2) the implementer has all the information needed to implement the module correctly, and nothing more.\n
  7. Labeling:<\/strong> Avoid arbitrary sequences more than a few items long. Do not require the user to know the absolute position of an item in a list. Instead, associate a meaningful label with each item and allow the items to occur in any order.\n
  8. Localized Cost:<\/strong> users should pay only for what they use; avoid distributed costs.\n
  9. Manifest Interface:<\/strong> All interfaces should be apparent (manifest) in the syntax.\n
  10. Orthogonality:<\/strong> independent functions should be controlled by independent mechanisms.\n
  11. Portability:<\/strong> Avoid features or facilities that are dependent on a particular computer or a small class of computers.\n
  12. Preservation of Information:<\/strong> The languages should allow the representation of information that the user might know and that the compiler might need.\n
  13. Regularity: Regular rules, without exceptions, are easier to learn, use, describe, and implement.\n
  14. Responsible Design:<\/strong> Do not ask users what they want, find out what they need.\n
  15. Security:<\/strong> No program that violates the definition of the language, or its own intended structure, should escape detection.\n
  16. Simplicity:<\/strong> A language should be as simple as possible. There should be a minimum number of concepts, with simple rules for their combination.\n
  17. Structure:<\/strong> the static structure of the program should correspond in a simple way to the dynamic structure of the corresponding computations.\n
  18. Syntactic Consistency:<\/strong> Similar things should look similar, different things different.\n
  19. Zero-One-Infinity:<\/strong> The only reasonable numbers are zero, one, and infinity.\n
  20. Avoid Creeping Featurism:<\/strong> Do not add features which are expensive to implement and rarely used. [I think Rafi<\/a> added this one himself, but I learned them from him, so here it stays. Also, I feel like there was a more elegant phrasing presented at some point.]\n<\/ol>\n

    I’m not entirely fond of all the rules, particularly 6 and 7, which encourage trusting other people’s code and space inefficiency respectively, but it is generally a wonderful compact way of evaluating languages, that should resonate with anyone who programs. <\/p>\n","protected":false},"excerpt":{"rendered":"

    I referred to Bruce J. MacLennan’s Principles of Programming Languages in my previous post, then discovered I can’t find the list anywhere on the ‘net, at least not as I was taught them. They are (AFIK) derived from his book, … Continue reading →<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,1,3],"tags":[91],"class_list":["post-775","post","type-post","status-publish","format-standard","hentry","category-computers","category-general","category-school","tag-programming-languages"],"_links":{"self":[{"href":"https:\/\/pappp.net\/index.php?rest_route=\/wp\/v2\/posts\/775","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pappp.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pappp.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pappp.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pappp.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=775"}],"version-history":[{"count":0,"href":"https:\/\/pappp.net\/index.php?rest_route=\/wp\/v2\/posts\/775\/revisions"}],"wp:attachment":[{"href":"https:\/\/pappp.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=775"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pappp.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=775"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pappp.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=775"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}