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-Thread: 109fba,cd8ed9115942852f X-Google-NewGroupId: yes X-Google-Thread: 103376,b92b95c9b5585075 X-Google-NewGroupId: yes X-Google-Attributes: gid4f1905883f,gida07f3367d7,domainid0,public,usenet X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news2.google.com!news1.google.com!npeer02.iad.highwinds-media.com!news.highwinds-media.com!feed-me.highwinds-media.com!nx01.iad01.newshosting.com!newshosting.com!news2.euro.net!feeder.news-service.com!aioe.org!.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.c++,comp.lang.ada Subject: Re: Why use C++? Date: Thu, 11 Aug 2011 17:09:23 +0200 Organization: cbb software GmbH Message-ID: <1q4c610mmuxn7$.1k6s78wa0r8fj.dlg@40tude.net> References: <1e292299-2cbe-4443-86f3-b19b8af50fff@c29g2000yqd.googlegroups.com> <1fd0cc9b-859d-428e-b68a-11e34de84225@gz10g2000vbb.googlegroups.com> <9ag33sFmuaU1@mid.individual.net> <1d8wyhvpcmpkd.ggiui9vebmtl.dlg@40tude.net> <150vz10ihvb5a.1lysmewa1muz4$.dlg@40tude.net> Reply-To: mailbox@dmitry-kazakov.de NNTP-Posting-Host: yMe0Y+p5p6dKHF3ow2LHYg.user.speranza.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Complaints-To: abuse@aioe.org User-Agent: 40tude_Dialog/2.0.15.1 X-Notice: Filtered by postfilter v. 0.8.2 Xref: g2news2.google.com comp.lang.c++:92574 comp.lang.ada:21509 Date: 2011-08-11T17:09:23+02:00 List-Id: On Thu, 11 Aug 2011 05:57:32 -0500, Jed wrote: > "Dmitry A. Kazakov" wrote in message > news:150vz10ihvb5a.1lysmewa1muz4$.dlg@40tude.net... >> Types that cannot be constructed by the operations of the types algebra >> provided by the language. Richer the algebra is, less built-in types >> needed. > > Will you give an example to clarify please? Ada does not have predefined modular types in the package Standard, because any modular type can be constructed using "type T is mod N" construct. >>> What kinds of integer types would >>> you like to see built-in to a hypothetical ideal language? >> >> As little as possible. Usage of predefined integer types makes design more >> fragile. E.g. it is bad when somebody uses Ada's Integer, or C++ int (OK, >> in C++ there is no other option), instead of introducing a type reflecting >> the application semantics rather than the decision of some compiler vendor >> motivated by other concerns. > > You have to build those types though based upon the built-in ones, yes? That depends. In Ada integer types are constructed from ranges. In order to specify the range you need literals. The type of a literal (Universal_Integer) is not the type of the result. So technically the type is not built on Universal_Integer. > If so, aren't modular, wrapping and overflow-checked equally good for > something and all worthy of being in a language? Of course there is > signed, unsigned and the different bit widths as candidates also. Packed decimal, non-symmetric around zero, saturating, non-continuous, big number, non-complement encoded, integers with ideal values (like NaN etc) and so on, and so forth. You cannot have them built-in. > And are not those built-ins good to use "raw" in many cases? Always bad. The language shall distinguish the interface, the contract the type fulfills, and the implementation of that type. "raw" turns this picture upside down. First comes an implementation and then, frequently never, consideration whether this implementation is right for the needs. > Are you suggesting that a language have NO types? I suggest a minimal possible set of given types and as wide as possible set of types constructed. The point is that it is the application domain requirements to drive the design, and the choice of types in particular. > There is assembly language for that (and > the instruction set pretty much dictates what types you have to work with > at that level). There is no language without types. That includes assembly languages. Weak/paraconsistent typing does not mean no typing. In each context you have a type associated with any object involved in an operation on that object. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de