From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=unavailable autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!news.eternal-september.org!mx02.eternal-september.org!.POSTED!not-for-mail From: Paul Rubin Newsgroups: comp.lang.ada Subject: Re: Languages don't matter. A mathematical refutation Date: Mon, 06 Apr 2015 14:12:08 -0700 Organization: A noiseless patient Spider Message-ID: <87vbh99d1z.fsf@jester.gateway.sonic.net> References: <87h9t95cly.fsf@jester.gateway.sonic.net> <04f0759d-0377-4408-a141-6ad178f055ed@googlegroups.com> <871tk1z62n.fsf@theworld.com> <87oan56rpn.fsf@jester.gateway.sonic.net> <87k2xt6l1b.fsf@jester.gateway.sonic.net> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: mx02.eternal-september.org; posting-host="c694756f1077760bb5296aae16c74092"; logging-data="19343"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18GoUzipoSKtSpVZ0No5Csk" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) Cancel-Lock: sha1:HuElJK6D7D1qRxfC5acEjoCtf9k= sha1:XsfMnwqeTm6Qq53FVfSFw4pXT5U= Xref: news.eternal-september.org comp.lang.ada:25443 Date: 2015-04-06T14:12:08-07:00 List-Id: "Dmitry A. Kazakov" writes: >> GC is not like matrix operations. It's not a library that you call. It >> pervades the operation of your entire program. > So is the floating-point unit on x86. You must save registers and restore > them when doing some unrelated operations. Does it make floating-point > multiplication high-level? That's different, the FPU save/compute/restore is completely localized as long as you have a small amount of private memory to save the registers. You can call a floating point routine that saves the registers, computes stuff, restores, and returns, and it doesn't have to care what the rest of the program does or vice versa. GC is different, it affects every part of the program that uses memory, which is to say every part of the program. Having precise GC requires enforcing invariants across all of memory, and the absence of language features (except maybe some special purpose unsafe fragment) that can break those invariants. All the code generated by the compiler has to take the GC's requirements into account. That's what I mean by pervasive. > GC does not make C# high level, though C# is. It only makes it bad > language, because GC is a bad idea. Heh. There was a big increase in software development productivity in the early 2000's, credited variously to the spread of OOP, static type systems, agile development methodology, the conciseness of scripting languages, and all sorts of other things. But there's another view that claims the real hero wasn't any of those things, it was GC.