3,487 karma · joined May 5, 2016
Topics of Interest:
Compilers
Programming Languages
Functional Programming
Optimal Lambda ReductionMultiflow's [0] Trace VLIWs were pretty impressive. They had three models - 7-wide, 14-wide, and 28-wide. Stardent's Titan used MIPS CPUs and their own vector processors. The book The Architecture of Supercomputers: Titan, a Case Study has an excellent description of how their systems worked.
Many simple macro use cases are covered by lightweight lambda syntax, reflection, or language constructs, e.g. Go's defer, Python's with, and C#'s using. Complex macros can create DSLs or rewrite code for optimization, though. Series[0] is a Common Lisp library that rewrites lazy streams into an imperative loop. LOOP[1] and ITERATE[2] are DSLs for iteration. Schelog[3] embeds Prolog inside of Scheme. Serde[4] generates serialization code.
Here are some old threads on the Lightweight Languages mailing list that discuss use cases for macros. Participants include Trevor Blackwell, Paul Graham, Dave Moon, Todd Proebsting, Guy Steele, Dan Weinreb, and many others.
• Macros Make Me Mad [5]
• macros vs. blocks [6]
• how expressive are they [7]
[0] https://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node347.html
[1] https://gigamonkeys.com/book/loop-for-black-belts.html
[2] https://iterate.common-lisp.dev/
[3] https://ds26gte.github.io/schelog/index.html
[4] https://serde.rs/derive.html
[5] https://people.csail.mit.edu/gregs/ll1-discuss-archive-html/...
[6] https://people.csail.mit.edu/gregs/ll1-discuss-archive-html/...
[7] https://people.csail.mit.edu/gregs/ll1-discuss-archive-html/...
The actual title is The Cydra 5 departmental supercomputer: design philosophies, decisions, and trade-offs. I had to shrink it to fit.
If you're familiar with Itanium, then the design will look familiar. HP hired some of the Cydra designers.
[0] https://github.com/dotnet/aspnetcore/tree/1a56bdb671700ae698...
[1] https://github.com/dotnet/aspnetcore/blob/1a56bdb671700ae698...
Several other subs are also doing similar things.
• r/art is running a John Oliver poll.
• r/evilbuildings is running a John Oliver poll.
• r/gifs passed a similar rule.
• r/iPhone is voting on a similar rule for Tim Cook.
[0] https://03283664099418252878.googlegroups.com/attach/6f5422d...
[0] http://dtrace.org/blogs/eschrock/2004/07/01/real-life-obfusc...
[0] https://tvtropes.org/pmwiki/pmwiki.php/Main/InsectoidAliens
[1] https://tvtropes.org/pmwiki/pmwiki.php/GiantSpider/Literatur...
[0] https://www.benning.army.mil/infantry/199th/ocs/content/pdf/...
Mike Ash answered[0] this question back in 2015.
[0] https://www.mikeash.com/pyblog/friday-qa-2015-11-06-why-is-s...
Quid pro quos[0] are how the world works; you may not have been exposed to it. If you want a detailed discussion of corruption, the book Game of Mates[1] documents corrupt dealing in Australia. If you want a domestic example, look at Illinois politics.
[0] https://en.wikipedia.org/wiki/2019_college_admissions_briber...
"Most of you," says Vyssotsky, "probably recall pictures of 'Galloping Gertie,' the Tacoma Narrows bridge which tore itself apart in a windstorm in 1940. Well, suspension bridges had been ripping themselves apart that way for 80 years or so before Galloping Gertie. It's an aerodynamic lift phenomenon, and to do a proper engineering calculation of the forces, which involve drastic nonlinearities, you have to use the mathematics and concepts of Kolmogorov to model the eddy spectrum. Nobody really knew how to do this correctly in detail until the 1950s or thereabouts. So, why hasn't the Brooklyn Bridge torn itself apart, like Galloping Gertie?
"It's because John Roebling had sense enough to know what he didn't know. His notes and letters on the design of the Brooklyn Bridge still exist, and they are a fascinating example of a good engineer recognizing the limits of his knowledge. He knew about aerodynamic lift on suspension bridges; he had watched it. And he knew he didn't know enough to model it. So he designed the stiffness of the truss on the Brooklyn Bridge roadway to be six times what a normal calculation based on known static and dynamic loads would have called for. And, he specified a network of diagonal stays running down to the roadway, to stiffen the entire bridge structure. Go look at those sometime; they're almost unique.
"When Roebling was asked whether his proposed bridge wouldn't collapse like so many others, he said, 'No, because I designed it six times as strong as it needs to be, to prevent that from happening.'
"Roebling was a good engineer, and he built a good bridge, by employing a huge safety factor to compensate for his ignorance. Do we do that? I submit to you that in calculating performance of our real-time software systems we ought to derate them by a factor of two, or four, or six, to compensate for our ignorance. In making reliability/availability commitments, we ought to stay back from the objectives we think we can meet by a factor of ten, to compensate for our ignorance. In estimating size and cost and schedule, we should be conservative by a factor of two or four to compensate for our ignorance. We should design the way John Roebling did, and not the way his contemporaries did-- so far as I know, none of the suspension bridges built by Roebling's contemporaries in the United States still stands, and a quarter of all the bridges of any type built in the U.S. in the 1870s collapsed within ten years of construction.
"Are we engineers, like John Roebling? I wonder."
[0] https://www.seltzer.com/margo/teaching/CS508.19/background/p...
[0] https://www.goodreads.com/group/show/185-what-s-the-name-of-...