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=-0.3 required=5.0 tests=BAYES_00, REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: fac41,ea30c4e9c3d00b X-Google-Attributes: gidfac41,public X-Google-Thread: 103376,ea30c4e9c3d00b X-Google-Attributes: gid103376,public From: Eugene Mayevski Subject: Re: Ultimate Language feature list Date: 1998/05/14 Message-ID: <355AE4AC.B39F0E68@ig.com.ua> X-Deja-AN: 353882789 Content-Transfer-Encoding: 7bit References: <6jc18b$lug$1@news.eclipse.net> <3559CB6B.954B4AA3@earthling.net> Content-Type: text/plain; charset=us-ascii Organization: JSC "Interlex" Mime-Version: 1.0 Reply-To: Eugene-Mayevski@usa.net Newsgroups: comp.lang.ada,comp.lang.eiffel Date: 1998-05-14T00:00:00+00:00 List-Id: Charles Hixson wrote: > > Here's my features (at the end), plus some notes (interspersed): These all features are good, but they can be also an extension of the existing language like Eiffel, which is now the newest and the most comfortable for development (I mean language, not the compilers and IDE's). > Verbosity has it's points, but so does compactness. Zipf's laws rules > here. Frequently used features should be v. short, e.g. {} is better > than Begin End This can be expanded in IDE. If you take a look to the Delphi 3.0 IDE, there's a CodeInsight feature - you press some key combination and select the language construct from the list. It's cool, and better, than to shorten the language constructs. > style. It shouldn't insist on it. Byte arrays use up enormous amounts > of storage when each byte is an object. Byte arrays and built-in types can be optimized by compiler (as they usually do :). > What about context specifier? 3 + 5 vs. "3" + "5" vs. 3.0 + 5 > These can all be understood by a person, a compiler might reason: given > a number, the operation + probably means addition, so check for the next > argument. If types are staticly determined, then this is either > ambiguous or determined at compile time. The question is what to do if > it is ambiguous at run time. Note that the semantics is the same as > object-dot-feature. Ideally, syntax should be flexible, and I don't > know what's practical. This object-dot-features - for whom they will be useful? Not for programmer as the object itself can be passed as the routine parameter. > > #6 Construction and Finalization > This needs to be elaborated, Final means something different in Java > than it does in Eiffel, e.g. Disposing of objects, may be. Constructors and Destructors work good in Inprise's (former Borland) Pascal. > > #11 Multiple inheritance like Eiffel, NOT C++. > Yes, especially the rename and redefine constructs. Redefines or overrides? There can be two cases: 1) descendant's method must be used when the call to ancestor's one happens. 2) descedant's method must be used only when direct call happens. > > #13 Ada-style tasks. Using Object-as-task, like the proposed Eiffel > > extension "separate". Ada's SELECT mechanism. Protected types (like > > Ada95), Java almost got this right. > I wish that I understood this better. It sounds good, but I don't know > the details of what it means. Parallel execution. Multithreading. When you create an object like a new task. TThread in Borland's OWL and VCL libraries. You create an object, tell him "run" and it starts running parallel to your main thread. Yere the advanced synchronization is required too, that doesn't depend on OS that the program works on. > > #20 An easy with to extend and re-expose/hide features of parents. Like > > Eiffel. > No (and yes). One needs the private type as well as the protected > type. Possibly there could be a Discrete type that was by default > hidden, but which the descendants of could Peek at? Well, Eiffel concept (the feature can be seen by defined range of other classes) is a good approach. > > #21 Distributed computing. > Yes, but what does this mean (beyond separable threads (or tasks)?) Actually, distributed computing is made by OS. Language only must have an opportunity to support multithreading in a clever manner, and OS will distribute the threads execution. > #23 Pattern Matching primitives and forms. A bit up in the air here, > since I'm not sure the best way to blend it in. > #24 Built in database (not an add-on). This could be a compiler option, > but needs to be an integral feature of the language, not a JDBC style > add-on. > #25 Good random-access I/O capability. At least for homogenous files > (see homogenous arrays, above) this should be easy. I would like > something better, however. Something that doesn't assume that > everything on the disk can fit into RAM, too. This all is done by libraries. That's not a language feature. > #26 Support for property lists. This could probably be done via a > library, but it should be a part of the language definition, so that it > is a transportable feature. #27 Properties. When you define property as the way to read and write the feature. In Delphi: property Width : integer read GetWidth write SetWidth default 5; GetWith may be a feature or a function, and SetWidth can be a feature or a procedure. Default values must be set by creator routines. Properties must be overridable (that is missing in Delphi), so that I can override the property Width in descendants like property Width : integer read NewGetWidth write SetWidth default 2; #28. RTTI that I can access from my code. So that I can ask the class "who are you" and he will return me his name as string. I can ask the generic object for the list of the property names it has, and I wanna ask this object to write the property names and their values to the stream and to read it later from the stream. I wanna get access to the VMT - (that is needed by the language to be open to developers). #29. Standartized libraries. The library must be compiled to some pseudo-code. Then at the link stage it will be compiled to machine instructions and after that linked. That allows the libraries to be be independent on architecture and OS (in most cases) and noone can modify copyrighted libraries. And there will be no need to compile the library for 25 architectures, 123 OS, 1250 IDE's and compiler manufacturers. #30. Class features and Class properties. So that I can access them when no objects of this type is created. This means that they are stored in RTTI info and are changable in run-time. #31. IDE. Smart IDE with CodeInsight, Code Completion, visual designer. Good IDE, intuitive, useful. The best I have seen is Delphi and C++Builder IDE. That's all can be easily done, if started :). Who's gonna start a new language? ;) -- Bye! Bugsy Wabbit E-Mail: mailto:Eugene_Mayevski@usa.net http://www.ig.com.ua/wabbit ICQ: 9409786 FidoNet: 2:463/209