From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=MAILING_LIST_MULTI, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 9649 invoked from network); 4 Feb 2022 21:30:43 -0000 Received: from minnie.tuhs.org (45.79.103.53) by inbox.vuxu.org with ESMTPUTF8; 4 Feb 2022 21:30:43 -0000 Received: by minnie.tuhs.org (Postfix, from userid 112) id 5C66F9BA56; Sat, 5 Feb 2022 07:30:42 +1000 (AEST) Received: from minnie.tuhs.org (localhost [127.0.0.1]) by minnie.tuhs.org (Postfix) with ESMTP id 9AC2E95192; Sat, 5 Feb 2022 07:30:18 +1000 (AEST) Received: by minnie.tuhs.org (Postfix, from userid 112) id 8DE3B95192; Sat, 5 Feb 2022 07:30:16 +1000 (AEST) X-Greylist: delayed 489 seconds by postgrey-1.36 at minnie.tuhs.org; Sat, 05 Feb 2022 07:30:15 AEST Received: from central.weird.com (unknown [198.96.117.51]) by minnie.tuhs.org (Postfix) with ESMTP id BB79095111 for ; Sat, 5 Feb 2022 07:30:15 +1000 (AEST) Received: from (invalid client hostname: bind: DNS error: DNS lookup for A for 'more.local': Unknown host)more.local ((no PTR matching greeting name)d207-6-82-137.bchsia.telus.net[207.6.82.137] port=49493) by central.weird.com([198.96.117.51] port=587) via TCP with esmtp (6901 bytes) (sender: ) (ident using UNIX) id for ; Fri, 4 Feb 2022 16:22:05 -0500 (EST) (Smail-3.2.0.122-Pre 2005-Nov-17 #1 built 2021-Nov-17) Received: from more.local ([10.0.1.129] port=49494) by more.local([10.0.1.129] port=25) via TCP with esmtp (6425 bytes) (sender: ) id for ; Fri, 4 Feb 2022 13:22:02 -0800 (PST) (Smail-3.2.0.122-Pre 2005-Nov-17 #1 built 2021-Nov-17) Message-Id: Date: Fri, 04 Feb 2022 13:22:02 -0800 From: "Greg A. Woods" To: The Unix Heritage Society mailing list In-Reply-To: References: <202202011537.211FbYSe017204@freefriends.org> <20220201155225.5A9541FB21@orac.inputplus.co.uk> <202202020747.2127lTTh005669@freefriends.org> <7C19F93B-4F21-4BB1-A064-0307D3568DB7@cfcl.com> <1nFWmo-1Gn-00@marmaro.de> User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue) FLIM-LB/1.14.9 (=?ISO-8859-4?Q?Goj=F2?=) APEL-LB/10.8 EasyPG/1.0.0 Emacs/26.1 (x86_64--netbsd) MULE/6.0 (HANACHIRUSATO) X-Face: ; j3Eth2XV8h1Yfu*uL{<:dQ$#E[DB0gemGZJ"J#4fH*][ lz; @-iwMv_u\6uIEKR0KY"=MzoQH#CrqBN`nG_5B@rrM8,f~Gr&h5a\= List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: The Unix Heritage Society mailing list Errors-To: tuhs-bounces@minnie.tuhs.org Sender: "TUHS" --pgp-sign-Multipart_Fri_Feb__4_13:21:53_2022-1 Content-Type: text/plain; charset=US-ASCII I find programming in Go to be an extremely fun, and usually relatively easy thing to do, and it's never boring or tedious (though when learning some new idiom or technique or library it can be challenging, but that's a good thing). Maybe writing tests can be tedious at times, but it's also very satisfying, and quite easy to do with the support in the Go environment. At Thu, 3 Feb 2022 21:11:14 -0800, Rich Morin wrote: Subject: Re: [TUHS] more about Brian... > > Another problem I have with Go is the concurrency model. First, > it uses threads, which I've never felt competent to use safely. > Shared mutable state is one of those things that seem to me like > an accident waiting to happen. Also, though I have no real > experience with CSP, it seems like the Actor model may be better > suited to exploratory programming. Go's concurrency model was a lot easier for me after I spent some time working in a C environment that transparently supported working with either proper threads (with the target system's libpthread as the underlying implementation) or coroutines (with libcoro as the underlying implementation). Valgrind was my friend for finding races and other things one should not do in a threaded program. > Getting back to Rust, my impression is that its design assumes > that having the computer put up guard rails will (mostly) keep > programmers from making catastrophic mistakes. In contrast, the > Erlang (and thus Elixir) approach assumes that things WILL crash > and that the important thing is to make sure that the system as a > whole keeps running smoothly. So, for example, it provides > supervision trees which can handle any crash of an Actor, etc. I find Rust to be appalling and very very very unappealing (to me). It's C++ for Perl programmers -- and all the bad parts/warts of both. Rust is, to me, ugly, inelegant, and hard to read and reason about. I still work on and write lots of C, but I'm very tired of UB. I want a C-like language (in that it's close the metal/SiO2) and that has absolutely zero UB in the spec. None. Everything MUST be defined behaviour. There are a couple of "new" languages in my sights (for applications where Go might not be ideal): - Drew Devault's secret new language: https://drewdevault.com/ - Zig -- http://ziglang.org/ (by Andrew Kelley) ready and running, apparently. BUT oh, gawd -- it's currently written in C++ and uses CMake (though apparently comes with its own built-in build system so that Zig programs don't need anything like CMake, etc.) - Jai: imperative static/strongly typed C-style language by Jonathan Loom https://inductive.no/jai/ https://github.com/BSVino/JaiPrimer/blob/master/JaiPrimer.md No implicit type conversions No header files Beautiful and elegant. Built-in build system. Jai code can be built on top of existing C libraries - V -- https://vlang.io Perhaps the most mature of the lot. But I would also be happy with just plain old C (though perhaps C99 not C11), with all the UB caveats nailed down into Defined Behaviour. The authors and maintainers of modern compilers are not really truly sane. They most certainly should not be allowed to exploit UB, especially not behind the user's back as they mostly do now. C's primitive nature engenders the programmer to think in terms of what the target machine is going to do, and as such it is extremely sad and disheartening that the standards committee chose to endanger C's users in so many ways. As Phil Pennock said: If I program in C, I need to defend against the compiler maintainers. [[ and future standards committee members!!! ]] If I program in Go, the language maintainers defend me from my mistakes. And I say: Modern "Standard C" is actually "Useless C" and "Unusable C" (especially if one does not fully embrace tools like Valgrind and enable all compiler features that point out UB in all possible ways at all times) BTW, there's also a new scripting language I've got on my stack to investigate further: https://wren.io -- Greg A. Woods Kelowna, BC +1 250 762-7675 RoboHack Planix, Inc. Avoncote Farms --pgp-sign-Multipart_Fri_Feb__4_13:21:53_2022-1 Content-Type: application/pgp-signature Content-Transfer-Encoding: 7bit Content-Description: OpenPGP Digital Signature -----BEGIN PGP SIGNATURE----- iF0EABECAB0WIQTWEnAIIlcZX4oAawJie18UwlnHhQUCYf2Y9QAKCRBie18UwlnH hUE7AJ0c6iOyKiEK+ynanCJw5tU4lItzHACg4Z2KrULz15brx9hmw3s/ln1mBYA= =oLtS -----END PGP SIGNATURE----- --pgp-sign-Multipart_Fri_Feb__4_13:21:53_2022-1--