Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!seismo!rutgers!ames!ucbcad!ucbvax!jade!eris!mwm From: mwm@eris.BERKELEY.EDU (Mike (My watch has windows) Meyer) Newsgroups: comp.sys.amiga Subject: Re: Modula and C Message-ID: <3242@jade.BERKELEY.EDU> Date: Mon, 20-Apr-87 21:24:50 EST Article-I.D.: jade.3242 Posted: Mon Apr 20 21:24:50 1987 Date-Received: Wed, 22-Apr-87 02:14:48 EST References: <680@puff.WISC.EDU> Sender: usenet@jade.BERKELEY.EDU Reply-To: mwm@eris.BERKELEY.EDU (Mike (My watch has windows) Meyer) Distribution: comp Organization: Missionaria Phonibalonica Lines: 105 Ok, I apparently opened a can of worms. Let's me give some more data. I'm going to stick with C, though. In article <680@puff.WISC.EDU> upl@puff.WISC.EDU (Future Unix Gurus) writes: >In article <3222@jade.BERKELEY.EDU> mwm@eris.BERKELEY.EDU (Mike (My watch has windows) Meyer) writes: >> 1) Typing is broken. In different ways, though. >The casting is a little quirky. Outside of that, I'm not sure I understand >your complaint. The typing is hard, with an attempt to allow circumvention. Typing is mushy, at best. Integral types can be treated as being the same type. Ditto for float/double. There is no concept of "abstract type" at all. For instance, I can't write a routine which works with any type that allows some set of operations. In a one-line summary, types are tied to the machine, with restrictions the machine doesn't have, and not tied to what I work with. And I'll be the first to conceede that most other languages have this problem. "Types" are touchy subject. Contact me by mail if you really wanna hear more. >> 2) Dynamic data structure extension isn't transparent. >Non comprende, explain please? When adding an element to a dynamic data structure, I have to get space for it, create pointers to the space, and then make sure the space is put back in the heap later. I'd much rather say: (append x y) or even list$addh(x, y) and have all that done for me. >> 3) Functions are second-class citizens. >Again, I don't know what you are talking about. Please describe rather >than generalizing. The term "second-class citizens" is well-known phrase. Basically, it means that there are things that you can't do to them that you can do to other object. For instance, I can't decide if two functions are identical. All you can really do is manipulate pointers to functions. >> 4) Types are (at best) third-class citizens. >See above. Same, except even more restricted. Basically, C doesn't have any way to manipulate types at all. Variables can't hold them, and the type of variables can't be tested (other than at compile or lint time). >> 5) The languages aren't self-extensible. >What do you mean by "self-extensible"? I have built up quite a library of >higher level routines, organized into modules. Clearly this isn't what >you are talking about. What is? Gee, and I thought that phase was self-explanatory. Self-extensible: Extensible in itself. Adding functions doesn't extend the language. Adding operators, types, and control structures does. C lets you add types, and that's about it. >>Many of these faults can be forgiven, if a language suffers from only >>a couple. But _all_ of them are deadly. They combine to make it >>painfull to go from an algorithm in my head to a running version. And >>that's what a language is supposed to be for. >> >Whaddya want, a DWIM statement?? :) :) Actually, I want DWISHM (Do What I Should Have Meant) statement, at least if I can't have PL/Prohpet to program in! :-) :-) :-) I really want something that works in the objects I work with when building an algorithm, in a notation at least not to far from what I think in. Of course, the language the algorithm is bound for affects the way I think, so any language that is based in a mathematical notation is off to a running start. >This assumes you want to modify the PD stuff. You can get executables >real easy in any moderate sized Amiga community. Gee, does FAUG and BADGE qualify as "moderate sized" :-)? But *of course* I want to modify it. Otherwise, I wouldn't be who I are. >All in all, I can't really answer your concerns, or even say I agree with >you, because I don't understand them. Some of them are stated to vaugely, >others seem to be because of my ignorance (I assume "self-extensible" is >language community jargon. We have TOO MUCH DAMN JARGON in our field >, not your fault- just a pet peeve of mine. Computer science would be >a much simpler, more efficient, and more fun discipline if all the >various sub-groups were taught a common language - like ENGLISH!) There is to much jargon. But there are some things - like *-class citizenship, and self-extensible, that are hard to describe briefly. I'll conceede to vagueness with #2 and #1. But it was on purpose for #1; that's a messy topic. Maybe it would have been best if I hadn't started this. Language design is an ongoing research field, and highly personal. What I want from a language may not be at all what you want from a language.