| Deutsch English Français Italiano |
|
<vhp3mg$122pu$1@dont-email.me> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!eternal-september.org!feeder2.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Janis Papanagnou <janis_papanagnou+ng@hotmail.com> Newsgroups: comp.lang.c Subject: Re: logically weird loop Date: Fri, 22 Nov 2024 06:09:35 +0100 Organization: A noiseless patient Spider Lines: 58 Message-ID: <vhp3mg$122pu$1@dont-email.me> References: <0e1c6d2e74d44a715bf7625ca2df022d169f878a@i2pn2.org> <vhl32r$66a2$1@dont-email.me> <vhlspv$ahc9$10@dont-email.me> <vhmilk$hd28$1@dont-email.me> <vhohqf$rq03$2@dont-email.me> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Injection-Date: Fri, 22 Nov 2024 06:09:37 +0100 (CET) Injection-Info: dont-email.me; posting-host="4b28be94e23c567cb28af348783de826"; logging-data="1116990"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+bvls4+r5e9F7qIB6MVNii" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 Cancel-Lock: sha1:UFaCMq9+wgEnZrrnS+EdK7tyTRQ= In-Reply-To: <vhohqf$rq03$2@dont-email.me> X-Enigmail-Draft-Status: N1110 Bytes: 4247 On 22.11.2024 01:04, Lawrence D'Oliveiro wrote: > On Thu, 21 Nov 2024 07:06:43 +0100, Janis Papanagnou wrote: > >> Actually, if you know Simula, coroutines are inherent part of that >> language, and they based their yet more advanced process-oriented model >> on these. I find it amazing what Simula provided (in 1967!) to support >> such things. Object orientation[*], coroutines, etc., all fit together, >> powerful, and in a neat syntactical form. > > Wirth did include coroutines in Modula-2. And a kind of object orientation > in Oberon, I think it was. > > But these are (nowadays) called “stackful” coroutines -- because a control > transfer to another coroutine can happen at any routine call, each > coroutine context needs a full-sized stack, just like a thread. Simula has also in objects own PCs (Program Counters) to enable each object to be interrupted and resumed. Can't tell about Modula-2 and Oberon, but I suppose they adopted quite some things from Simula, as C++ and other languages adopted Simula concepts. > > There is this newer concept of “stackless” coroutines -- not that they > have no stack, but they need less of it, since a control transfer to > another coroutine context can only happen at the point of an “await” > construct, and these are only allowed in coroutine functions, which are > declared “async”. I think Microsoft pioneered this in C♯, but it has since > been copied into JavaScript, Python and other languages. Not surprising that good concepts were adopted in other languages, and expanded by own ideas. Rather it surprised me that some basic IMO necessities were not; e.g. that C++ had no garbage collection but Simula (and other languages) already had it long ago. > > Yes, Simula pioneered OO. But the concept has gone in different directions > since then. For example, multiple inheritance, metaclasses and classes as > objects -- all things that Python supports. Of course evolution will influence development of future languages, and they may deviate or may also take new directions. Individual language design decisions were arguable, though; I recall disputes concerning, e.g., multiple inheritance (which is not necessary but significantly complicates an OO language) or that "everything must be an object" to qualify as "real" OOL, and so on. I don't want to start or continue these discussions here. Personally I found e.g. C++'s multiple inheritance useful; that was a language I actually used professionally. I also find it not very surprising if Python, a quarter centenary after Simula, supports concepts (sensible or not) that Simula didn't have. What I find impressive [in Simula] is not only the new "OO" modeling concept but also how all their software patterns fit together (the already mentioned coroutines, or the prefix blocks; just for example to make clear what I mean). As a pioneering language, as you rightly classify it, Simula had no paragon for many things that it invented in an impressive way. Janis