Legendary Productivity and the Fear of Modern Programming
techcrunch.com
techcrunch.com
Actually at least one programming legend did according to many:
------
Woz designed all the hardware and all the circuit boards and all the software that went into the Apple II, while the other Steve spewed marketing talk at potential investors and customers on the phone. Every piece and bit and byte of that computer was done by Woz, and not one bug has ever been found, “not one bug in the hardware, not one bug in the software.”[15] The circuit design of the Apple II is widely considered to be astonishingly beautiful, as close to perfection as one can get in engineering. Woz did both hardware and software. Woz created a programming language in machine code. Woz is hardcore.
-Geek Sublime: The Beauty of Code, the Code of Beauty
Lilith System http://www.cfbsoftware.com/modula2/Lilith.pdf
Oberon System http://e-collection.library.ethz.ch/eserv/eth:3180/eth-3180-...
Synthesis of Hardware Circuits from Sequential Programs http://inf.ethz.ch/personal/wirth/Oberon/286.pdf
The processors http://oberoncore.ru/_media/library/computersystemdesign.pdf
People like them are the true "full-stack" developers. Apps, OS, circuits... coded it all and integrated it cleanly usually in 2 year periods.
They're all Pascal-like, and therefore ALGOL-like, sharing a lot of similarities; not just syntax, but also concepts such as ranged types, range-bound arrays, enums, record syntax, etc. You can know Pascal and be able to pick up Modula or Oberon very quickly, since so many keywords and concepts are identical. At the same time, each iteration tried to simplify the language (the BNF for Oberon has only 33 grammar rules).
He did it for ease of implementation and compilation. Still need that for formal verification of whole systems, securing whole systems, people that like to experiment with them, and so on. So, his principle stands the test of time.
https://www.reddit.com/r/business/comments/3jyovw/woz_jobs_d...
- Donald Knuth (TeX, METAFONT); even more surprising here given that he's mentioned in the article a few times on other accounts; https://en.wikipedia.org/wiki/Donald_Knuth
- Fabrice Bellard (QEMU, FFmpeg, & other) https://en.wikipedia.org/wiki/Fabrice_Bellard
So, Knuth did TeX, METAFONT, Web, Weave, and Tangle for literate programming, and published the literate version of the code. Essentially just one guy.
https://gcc.gnu.org/ml/java/1999-q2/msg00419.html
"[...] Knuth definitely wrote most of the code himself, at least for the Metafont re-write, for which I have pesonal knowledge. However, some of his students (such as Michael Plass and John Hobby) did work on the algorithms used in TeX and Metafont. He also did have a programmer (David something) working for him at one point, but not as I recall at the time of the Metafont re-write."
That said, some solid source on the earliest phases, as well as on particulars of the specific "algorithms", would be nice to learn.
It sounds like you're referring to their Scheme chip project, which they did not have the resources to push to success, e.g. getting the microcode right in one or two tries (the computing resources to simulate it were not available).
The Lisp Machine proper was a project done with TTL and fathered by Richard Greenblatt, who probably did some hardware design and more likely microcode work, as well as system software as I recall. However the principle hardware designer was Tom Knight, David Moon wrote a lot of microcode (the Lisp Machine's microcode did a lot, e.g. eval, GC, the bytecode interpreter), he and Dan Weinreb are the only authors listed on the cover of the 1981 4th edition of the manual, Weinreb wrote the first text editor for it, the per Wikipedia and my faint memory the 2nd EMACS implementation, and the first with a GUI and done in Lisp. Howard Cannon developed the Flavors OO extension, with which I remember a lot of the GUI was implemented.
It was a pretty big project; hmmm, TempleOS is the only "comprehensive" OS I can think of that was done by one or two people.
After that the MIT Scheme community concentrated on producing a good version of the language for the 68000, which of course developed an ecosystem a homegrown chip could never hope to achieve back then. This was to support Sussman's work, including SICP/6.001 (Steele went to CMU "to bring the light to the heathen" :-).
Back to Scheme. Ok, so they built it but it was a buggy, throw-away, proof-of-concept. I'll try to remember that in future references. Then they transitioned to software and SICP. Ok, a working Scheme chip would've been neat for me but I concede they made the right call for the time. Plus, it's better to work out a concept and how it will be used before trying to put it into silicon. Lets you decide which parts are really worth putting in hardware.
"Steele went to CMU "to bring the light to the heathen"
Haha. That's funny. Guess that's my job now. Appreciate your clarifications on the Scheme chip and its context.
Umm, what? One of many weird things in this article. Generally non-programmers do not write well about programming.
re nobody accomplishing any big feat solo
Seems to be a few, potential counterexamples on this list:
https://en.wikipedia.org/wiki/List_of_programmers
Bram Cohen's Bittorrent jumps out as having traits of one programmer, a solid technical contribution, and impact. Probably more but must assess if they had help. List is misleading on that part.
For learning architecture, I'd recommend people do what I did: look up all kinds of present and past solutions to problems that worked well to see how they did it. See what they worked with, constraints, goals, specifics, and what resulted. Most discoveries are re-hashes of old ones and there's plenty of good stuff to draw on in many subfields. Some are truly novel but studying old stuff for new applications will get you pretty far. Out of the box thinking for the rest.
But there's only 10^80 particles in the universe, so that's not very impressive. You could do it, rather tediously, with a pen and paper.
$ python
>>> 10e50 * 10e90
1e+142
Waaaay bigger than the number of atoms in the universe. Consider yourself the "greatest programming mind" now. You're welcome ;-)And whether you agree that software is the most complex thing humans have built also seems to correlate, to a remarkable degree, with whether you build software for a living.
Indeed. To take just one example, the world economy is a system created entirely by human beings, yet seems to me to be much more complex than any piece of software. People try to model pieces of the economy with software, with varying degrees of success, but I don't think it's feasible (it may be impossible) to model the economy as a whole.
It certainly isn't a natural phenomenon.
"Emergence" doesn't have any bearing on it. The properties of music and art are emergent, too. Doesn't make them not constructed by humans.
Now, this is interesting. You mean that we humans aren't a natural phenomenon? :D
Humans are natural. Human artifacts are not.
An economy based on property ownership, investment, and labor is absolutely a system created by humanity, though you could argue many of its observed properties are emergent.
Regarding "We could just as easily have chosen" I don't agree at all on "easily". Contrary to many theories which say or imply that, people's minds aren't blank slates that can be easily programmed (not to mention re-programmed) to adapt to any social engineering project. Countless examples in history prove this.
Economic theory dating back to the late 1700's arguably were the first major attempts at retroactive design of the global economy. There've been other pockets of this happening, but not globally, more likely the monetary and debt systems of various epochs and empires.
But after retroactively observing market exchange, most classical economic theory became pretty prescriptive, i.e. it wasn't a reflection of "human nature" so much as that was an easy way to promote free market ideals.
For example, the "profit motive" has been basically disproven as something that never actually existed historically or anthropologically as a universal human driver. It was invented by economists as useful way to explain away certain aspects of their system design. This is not to say some people were not and are not motivated by profit.. sure they are. It's just not universal, like hunger, or breathing.
Markets also weren't omnipresent throughout human history until proto-economists noticed them, wrote about them, and businessmen began convincing governments to apply them by force to various communities in the 1800s. (see Karl Polanyi, the Great Transformation).
One could argue that economics is really "software design for the world economy", except you need to test and debug in production. Religious wars about better designs and features abound (fiat currency vs. gold standard; Keynesians vs. Rational Expectations / Real Business Cycles; Austrians vs. Science; etc.)
The killer section for me is Thompson's quote regarding how hard it is to follow programs that are built with layer upon layer. Just a single paragraph really sums this up.
Ah, reduce your product to what the lowest common denominator is capable of producing, to avoid too much "dependence" on them.
AKA: Make sure your engineering team is entirely swappable, like batteries. Plug them in, burn them out, no problem.
"adding programmers to a late project makes it later"
Right, Brooks.
And his solution was the chief programmer team.
- the pragmatic programmer
- clean code
I'm not sure I believe articles like this, but myself and colleagues have found these books to greatly improve our coding.