Let me stand on the shoulders of giants: https://sqlite.org/whyc.html "...(C is faster and more portable than golang) ..."
It's always best if we can keep these discussions factual or, at least, if we make a claim, we can back it up.
For example, the u-root version of dd, written in Go, is faster and more portable than many C and Rust versions. Measured: GNUBIN dd from /dev/zero to /dev/null tops out at 20 GiB/S on my s76 laptop; the Go version tops out at 50. The GNUbin dd has no hope of running on Plan 9; the u-root version compiles with no changes. golang has better speed and portability in this one example.
If you've got some factual basis for such a broad claim, I'm happy to hear it.
Brian,I am always looking for kindred spirits and your message strikes a cord. So I looked you up and read a bit about your ENIAC simulator. Not because I’m particularly interested in the ENIAC but your golang simulation of it. Where does Plan9 fit? I was a very early adopter of Plan 9. I liked some of its concepts and disliked others. (Long story that can be found in this list’s history.) The one that really took root was the channel theme of the language ALEF ( https://en.wikipedia.org/wiki/Alef_(programming_language)) that Pike used to create rio and acme. Because of issues maintaining the language, the Plan 9 team created a C coroutine library to support the needed functionality to re-write the tools in C ( https://swtch.com/libtask/). ALEF got channels from Pike’s Newsqueak that was invoked with the command “squint”. The significance is a paper written by M. Douglas McIlroy “Squinting at Power Series” ( https://swtch.com/~rsc/thread/squint.pdf) and my implementation I used to test my C / pthread channel library. One thing difficult with testing a highly concurrent / parallel runtime environment is its non-deterministic execution. What is great about his paper is after all the huge number of threads and channels coming and going, the correct coefficients of the TAN function prove it works.
Back to your ENIAC simulator and its extensive use of threads and channels. It looks like another good test of my channel implementation. Also, like the Newsqueak implementation of channels, the golang implementation of channels has shortcomings that I improved.
Why am I reaching out? I don’t want to know about the ENIAC or learn golang well enough to translate your simulator. But if you are interested in an even more portable version of your simulator (C is faster and more portable than golang) I propose a collaboration to do it. What do I get out of it? Another through test of my channels. And why do I want to do that? Read below.
David So I've been seeing big-picture/philosophical discussions arise on 9fansfor about 25 years. Usually I just sit back with my bowl of popcorn andwatch. Every once in a while I'll jump in and present a painfully longdissertation, and that's today. For those new to my perspective, I'vebeen at this stuff for nearly 50 years (I wrote my first code in '76or '77), and as time has gone by, I find myself becoming more and morethe G.H. Hardy of computing. For those who don't know that reference,look up his essay "A Mathematician's Apology." The semi-serious tl;dris "If anyone ever finds a practical application of my work, I'llconsider it a failure."My launching point today is the statement made in various ways byseveral of the contributors that computers are tools. Of course, I'maware that's the case for some people, and we've all done appliedthings to put food on the table. But if that were the whole pointof computing, I'd be bored out of my skull. In the same way thata study of physics might result in a better widget for the unwashedmasses but that's not its purpose, so a study of computer sciencemight result in a similar better widget but that's not its purpose.Physics is the study of phenomena surrounding elementary particlesand forces. Computer Science is the study of phenomena surroundingthe property of universality. It requires no other justification.We made a really big mistake back in the '60s and '70s when we gotexcited about computers and people asked why and what good are they.We tried to come up with justifications when we would have beenbetter off just saying, "you wouldn't be interested; they're justfor us nerds." I continue to be amused that one of our justificationswas always keeping track of recipes in a kitchen. If you're notfamiliar with it, check out the infamous "kitchen computer" froman old Neiman Marcus catalog.You would be correct then to infer that I don't really put anyweight on how many users we bring into the community. This isthe reason why by 2005 to 2010, I had largely turned my back onLinux. It seemed that too many decisions in that community wereabout making things "easy" for those who had no UNIX experienceat the expense of those who did. It seems that much of the opensource world has come to measure success by user adoption andnumber of commits to the source control preference of the decade.Neither of those draw my attention. If there is any correlationbetween quality and popularity, it is negative. That gets us tothe general topic of the so-called "user." The garbage promulgatedby the self-appointed UI experts is almost always directly opposedto what I want. I have plans in the after-life to use an endlesscan of lighter fluid to stoke the fires burning the morons whoput huge trackpads where the heels of my hands belong on a laptop.What would happen to music if piano and guitar makers applied thesame stupidity to help prevent beginners from making mistakes. Maybethere is a place for the record player, but if you damage my pianoto turn it into a record player, you're a force for evil, not good.Along similar lines, the justifications that are made for most ofthe UI commandments (including the precious mouse) are prefectexamples of measuring the wrong thing. Speed of interface isirrelevant. It doesn't matter whether I use ed and use searchto find the bit I want to edit, or whether I use acme and letthe mouse scroll to where I want to edit. The difference is lostin the noise because any programmer or writer worth a damn spendsfar more time thinking and drawing diagrams on paper than intyping and clicking. If you want to respond with "but mostpeople don't write software or papers" then see my rant on thepiano vs the record player. Because the computer is a finiterealization of the universal machine Turing identified, it existsto be programmed. To not create with it is to use it not asa piano but as a toaster.As many of you know, I already have my own private language tominimize the spikes in blood pressure every time the C standardscommittee meets. Although POSIX does still exist when I teach,I no longer go anywhere near it when I'm programming. So itshouldn't be surprising to learn that in the last several years,my thoughts have moved away from "what can I contribute to thePlan 9 world" to "what ideas from Plan 9 would I borrow fora private system" or "should I just use the Plan 9 kernel andbuild my own environment around it." Of course, I also haveto solve the problem of hardware. The x86 is a steaming pileof garbage and one of my objectives is to become an x86-freezone. I've also come to the conclusion that it is so horrificthat what sticks to it is only the similarly disgusting stufflike ACPI, UEFI, etc. What scares me to death is that someof that same garbage has started to cling to what couldotherwise be reasonable architectures. At least the RaspberryPi is mostly its own world, so most of my Plan 9 work thesedays is centered there. But I am starting to think I mighthave to create my own hardware to truly escape from thebreathtaking stupidity that has come to dominate the industry.Yes, I've even thought about resurrecting a 68000 machineI wire-wrapped nearly 40 years ago.Much of my aesthetic is described by the quote fromSaint-Exupery, "Perfection is achieved, not when there isnothing more to add, but when there is nothing left to takeaway." Now I'm not telling people they shouldn't add forthemselves if they want. But as I move toward disconnectingfrom the parts of the computing world that give me heartburnto stay in the parts that give me intellectual satisfactionand fulfillment, I expect to be taking things out, ratherthan adding them. Everyone can have their own reasonsfor being part of the community and their own objectivesmoving forward. But for me the reasons I'm here are largelydominated by the minimalism of the design where I can feeldirect connections to the individuals who created it, thestability of the code base, and the smallness of the community.A little while back I found myself trying to articulate whatI really saw as programming while I was walking. By the timeI got back to the office, I had a phrasing I liked, so Ityped it up in TeX with \magnification=3584 and put theoutput on my wall. The other day I was catching up withone of our alums who has recently finished her PhD at Pennand she saw it, said she liked it, and took a picture of it.It reads, "Programming is the process by which we take anidea, a concept, existing in nothing but a pattern of firingneurons and transform it through pure thought into thedefinition of a machine, a definition that can be interpretedand emulated by a universal machine to manipulate the physicalworld. All else taints and compromises the purity and beautyof programming."There's your semi-decadal tirade from the old guy to remindeveryone that computing is not really about the nonsense thatpervades the general culture.BLS------------------------------------------9fans: 9fansPermalink: https://9fans.topicbox.com/groups/9fans/Tf84d656c78bbda91-Mf7008f52b2499d146c7fdaa1Delivery options: https://9fans.topicbox.com/groups/9fans/subscription
|