* Build language with weak typing, then add scaffolding later to strengthen it? @ 2015-05-21 19:11 Nasser M. Abbasi 2015-05-21 19:29 ` AdaMagica ` (2 more replies) 0 siblings, 3 replies; 111+ messages in thread From: Nasser M. Abbasi @ 2015-05-21 19:11 UTC (permalink / raw) There seems to be strange thing going on with computer language design, that I think folks here more than anywhere else would understand due to Ada strong software engineering foundation. I noticed languages start with weak or no typing at all. Then later in the language life, lint like processing and type hints are added to "strengthen" the language by making it more strongly typed and catch more errors. Programmers get excited each time a new scaffolding tool is added since it now makes their language "better". But why not then design the language with strong typing in first place? Would not this be easier? It is like constructing a building on weak foundation, then add scaffolding on it later on to make it stronger. Here is an example: Python now is adding what is called "type hints" and everyone is excited about it since it is supposed to make python more robust: https://www.python.org/dev/peps/pep-0484/ "While these annotations are available at runtime through the usual __annotations__ attribute, no type checking happens at runtime . Instead, the proposal assumes the existence of a separate off-line type checker which users can run over their source code voluntarily. Essentially, such a type checker acts as a very powerful linter. " And we all know that C has lint also, to help catch errors in code since C is weakly typed as well. Fortran adds many compiler switches to help catch compile time errors which otherwise would escape. I now use gfortran -fcheck=all -Wall -Wconversion -Wextra -Wconversion-extra -pedantic To make sure I checked everything, and I am still not sure it did. (many times I download Fortran source code from the net for fun and compile it using the above, and I see many warnings generated, many due to mixed typing mess. It is scary). In Ada, none of this is needed, as the language itself is designed from the foundation to catch all these errors due to its strong typing. So, why do language designers design computer languages with weak typing, and then spend so much effort later on to fixing the weak typing? Is it because it is easier to design a language with weak typing than strong one? --Nasser ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-21 19:11 Build language with weak typing, then add scaffolding later to strengthen it? Nasser M. Abbasi @ 2015-05-21 19:29 ` AdaMagica 2015-05-22 7:27 ` Dmitry A. Kazakov 2015-05-22 7:42 ` Georg Bauhaus 2015-05-22 11:29 ` kalvin.news 2 siblings, 1 reply; 111+ messages in thread From: AdaMagica @ 2015-05-21 19:29 UTC (permalink / raw) Just think about how thick the Ada RM is with all its rules to make the language safe and the RM correct. And think about the number of AI's each language generation has to correct the errors in the manual. Compare this to other languages' RMs. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-21 19:29 ` AdaMagica @ 2015-05-22 7:27 ` Dmitry A. Kazakov 0 siblings, 0 replies; 111+ messages in thread From: Dmitry A. Kazakov @ 2015-05-22 7:27 UTC (permalink / raw) On Thu, 21 May 2015 12:29:36 -0700 (PDT), AdaMagica wrote: > Just think about how thick the Ada RM is with all its rules to make the > language safe and the RM correct. And think about the number of AI's each > language generation has to correct the errors in the manual. I disagree. The number of amendments and the size of the RM has little to do with strong typing. I think the language could be much smaller with types stronger. Weak typing requires a lot more language rules. Type inference does even more. Strong typing with nominal matching is much simpler to handle and define. E.g. dynamically polymorphic (tagged) types, which are a bit weaker, take more pages in the RM than all other plain types combined. > Compare this to other languages' RMs. I would address that to sloppiness. In many cases it is too difficult to define what is going on with all these implicit-nowhere-defined types, so people just don't bother to document it. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-21 19:11 Build language with weak typing, then add scaffolding later to strengthen it? Nasser M. Abbasi 2015-05-21 19:29 ` AdaMagica @ 2015-05-22 7:42 ` Georg Bauhaus 2015-05-22 8:54 ` Nasser M. Abbasi 2015-05-22 11:29 ` kalvin.news 2 siblings, 1 reply; 111+ messages in thread From: Georg Bauhaus @ 2015-05-22 7:42 UTC (permalink / raw) On 21.05.15 21:11, Nasser M. Abbasi wrote: > In Ada, none of this is needed, This claim may be a little bold. Even thinking from "inside" Ada. For example, the recently introduced aspects of types show how "strong" Ada types really are, that is, how expressive the Ada type system really has been. Actually, the effort that has produced Ada may have spurred an idea of how not to design a language. Obviously, for all willing to see it that way, it was a big failure, C having taken its place in embedded systems. While the greed, and the opportunism associated with its design situation are on record, still, obviously, the socioeconomic failure carries over to the qualities of the design process. Right? Who would want to do that again? > So, why do language designers design computer languages with weak > typing, and then spend so much effort later on to fixing the > weak typing? Is it because it is easier to design a language with > weak typing than strong one? Are you sure there ware professional language designers around when these languages were defined? Maybe now, within Microsoft's X# set. Maybe around Scala. Maybe atETH Zürich. But with other "designs", it seems that a language is just inspired by what its creators happen to have learned. (Which, sometimes, is type inference in ML.) Designing something better, more inclusively, requires voluntary co-operation of competitors in industry… It requires deviating from just having grads do something™ in their spare time and let The Market do the rest. Is anything being done, language-wise, by industry? Or are their needs taken care of (nominally) by the existing language vendors instead? Certainly, an ad hoc language like JavaScript, created by young grads, was pushed by popularity, the drivers being from the sales department; that's on record. Once the language is out the door, having gained some traction, it would take someone bold to replace it with something much better. So, not sales staff. Once the language is out, no one takes any risks, the business is established. So, instead, PHP, C, Fortran etc. get all bells and whistles that you can get for money (sic), by hiring compiler makers who need employment anyway. Hence, for example, the Hack language and HHVM, were motivated and financed by Facebook; this should keep PHP in place. Thus our collective boldness (none) makes crappy languages stay. The improved compilers help saving one's face. Good. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-22 7:42 ` Georg Bauhaus @ 2015-05-22 8:54 ` Nasser M. Abbasi 0 siblings, 0 replies; 111+ messages in thread From: Nasser M. Abbasi @ 2015-05-22 8:54 UTC (permalink / raw) On 5/22/2015 2:42 AM, Georg Bauhaus wrote: > On 21.05.15 21:11, Nasser M. Abbasi wrote: > >> In Ada, none of this is needed, > > This claim may be a little bold. Even thinking from "inside" Ada. > It is all relative ofcourse. What I meant is that when I get clean compile from Ada (after some struggle), I feel much more safe that I did not overlook some basic typing conflict or some other silly mistake which should be detected by the compiler which can result in hard to detect errors later on at run-time. In this sense, Ada does not need all the scaffolding (lint, compiler flags, type hints, etc.. to make it more robust, it is build into the language. That is what I mean. Ofcourse, one can still make logic/algorithmic errors in any language. > For example, the recently introduced aspects of types show how > "strong" Ada types really are, that is, how expressive the Ada > type system really has been. > > Actually, the effort that has produced Ada may have spurred > an idea of how not to design a language. Obviously, for all > willing to see it that way, it was a big failure, C having > taken its place in embedded systems. While the greed, and the > opportunism associated with its design situation are on record, > still, obviously, the socioeconomic failure carries over to the > qualities of the design process. Right? > > Who would want to do that again? > > >> So, why do language designers design computer languages with weak >> typing, and then spend so much effort later on to fixing the >> weak typing? Is it because it is easier to design a language with >> weak typing than strong one? > > Are you sure there ware professional language designers around when > these languages were defined? > > Maybe now, within Microsoft's X# set. Maybe around Scala. Maybe > atETH Zürich. > > But with other "designs", it seems that a language is just inspired > by what its creators happen to have learned. (Which, sometimes, > is type inference in ML.) Designing something better, more inclusively, > requires voluntary co-operation of competitors in industry… > It requires deviating from just having grads do something™ in their > spare time and let The Market do the rest. > Is anything being done, language-wise, by industry? Or are their needs > taken care of (nominally) by the existing language vendors instead? > > Certainly, an ad hoc language like JavaScript, created by young grads, > was pushed by popularity, the drivers being from the sales department; > that's on record. Once the language is out the door, having gained some > traction, it would take someone bold to replace it with something > much better. So, not sales staff. Once the language is out, no one > takes any risks, the business is established. > > So, instead, PHP, C, Fortran etc. get all bells and whistles that you can > get for money (sic), by hiring compiler makers who need employment anyway. > Hence, for example, the Hack language and HHVM, were motivated and > financed by Facebook; this should keep PHP in place. > > Thus our collective boldness (none) makes crappy languages stay. > The improved compilers help saving one's face. > Good. > --Nasser ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-21 19:11 Build language with weak typing, then add scaffolding later to strengthen it? Nasser M. Abbasi 2015-05-21 19:29 ` AdaMagica 2015-05-22 7:42 ` Georg Bauhaus @ 2015-05-22 11:29 ` kalvin.news 2015-05-22 12:57 ` J-P. Rosen 2 siblings, 1 reply; 111+ messages in thread From: kalvin.news @ 2015-05-22 11:29 UTC (permalink / raw) Even C could be made more robust, if simple type checking is performed at compile time. For example, typedef int apples; typedef int oranges; apples a = 5; oranges o = a; should generate type check error as the types are definitely different types. Also, assigning enums to ints and ints to enums should be considered illegal. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-22 11:29 ` kalvin.news @ 2015-05-22 12:57 ` J-P. Rosen 2015-05-22 14:01 ` kalvin.news ` (4 more replies) 0 siblings, 5 replies; 111+ messages in thread From: J-P. Rosen @ 2015-05-22 12:57 UTC (permalink / raw) Le 22/05/2015 13:29, kalvin.news@gmail.com a écrit : > Even C could be made more robust, if simple type checking is > performed at compile time. For example, > > typedef int apples; > > typedef int oranges; > > apples a = 5; oranges o = a; > > should generate type check error as the types are definitely > different types. Also, assigning enums to ints and ints to enums > should be considered illegal. > I don't agree. C is a low level language, and good at that. Its types are those of the machine: bytes and addresses, the rest is a (small quantity of) syntactic sugar. If you need strong typing, use a strongly typed language. But don't blame C for not being strongly typed, it was simply not part of the requirements. -- J-P. Rosen Adalog 2 rue du Docteur Lombard, 92441 Issy-les-Moulineaux CEDEX Tel: +33 1 45 29 21 52, Fax: +33 1 45 29 25 00 http://www.adalog.fr ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-22 12:57 ` J-P. Rosen @ 2015-05-22 14:01 ` kalvin.news 2015-05-22 14:34 ` kalvin.news 2015-05-22 15:37 ` J-P. Rosen 2015-05-22 14:03 ` jan.de.kruyf ` (3 subsequent siblings) 4 siblings, 2 replies; 111+ messages in thread From: kalvin.news @ 2015-05-22 14:01 UTC (permalink / raw) perjantai 22. toukokuuta 2015 15.57.07 UTC+3 J-P. Rosen kirjoitti: > Le 22/05/2015 13:29, kalvin.-nospamhere-news@gmail.com a écrit : > > Even C could be made more robust, if simple type checking is > > performed at compile time. For example, > > > > typedef int apples; > > > > typedef int oranges; > > > > apples a = 5; oranges o = a; > > > > should generate type check error as the types are definitely > > different types. Also, assigning enums to ints and ints to enums > > should be considered illegal. > > > I don't agree. C is a low level language, and good at that. Its types > are those of the machine: bytes and addresses, the rest is a (small > quantity of) syntactic sugar. > > If you need strong typing, use a strongly typed language. But don't > blame C for not being strongly typed, it was simply not part of the > requirements. > > -- > J-P. Rosen > Adalog > 2 rue du Docteur Lombard, 92441 Issy-les-Moulineaux CEDEX > Tel: +33 1 45 29 21 52, Fax: +33 1 45 29 25 00 > http://www.adalog.fr What I heard, C is used in programming some operating systems. And C/C++ has been even used for programming some serious large-scale applications - not very low level to me. I have also heard some rumours that quite often bugs in C/C++ software are related to its non-existent type validation ;) Adding some type checking wouldn't make it less suitable for low-level programming. After 20 years in embedded C/C++ programming, I cannot say that it is good even for low level programming because of the weak type checking. C/C++ are the cancer of software engineering. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-22 14:01 ` kalvin.news @ 2015-05-22 14:34 ` kalvin.news 2015-05-23 11:09 ` Peter Chapin 2015-05-22 15:37 ` J-P. Rosen 1 sibling, 1 reply; 111+ messages in thread From: kalvin.news @ 2015-05-22 14:34 UTC (permalink / raw) perjantai 22. toukokuuta 2015 17.01.14 UTC+3 kalvi...@gmail.com kirjoitti: > perjantai 22. toukokuuta 2015 15.57.07 UTC+3 J-P. Rosen kirjoitti: > > Le 22/05/2015 13:29, kalvin.-nospamhere-news@gmail.com a écrit : > > > Even C could be made more robust, if simple type checking is > > > performed at compile time. For example, > > > > > > typedef int apples; > > > > > > typedef int oranges; > > > > > > apples a = 5; oranges o = a; > > > > > > should generate type check error as the types are definitely > > > different types. Also, assigning enums to ints and ints to enums > > > should be considered illegal. > > > > > I don't agree. C is a low level language, and good at that. Its types > > are those of the machine: bytes and addresses, the rest is a (small > > quantity of) syntactic sugar. > > > > If you need strong typing, use a strongly typed language. But don't > > blame C for not being strongly typed, it was simply not part of the > > requirements. > > > > -- > > J-P. Rosen > > Adalog > > 2 rue du Docteur Lombard, 92441 Issy-les-Moulineaux CEDEX > > Tel: +33 1 45 29 21 52, Fax: +33 1 45 29 25 00 > > http://www.adalog.fr > > What I heard, C is used in programming some operating systems. And C/C++ has been even used for programming some serious large-scale applications - not very low level to me. I have also heard some rumours that quite often bugs in C/C++ software are related to its non-existent type validation ;) Adding some type checking wouldn't make it less suitable for low-level programming. After 20 years in embedded C/C++ programming, I cannot say that it is good even for low level programming because of the weak type checking. C/C++ are the cancer of software engineering. What I would like to see in C/C++, and what would make me a bit less grumpy, is a compiler "#pragma strict" - or something like that - which would enable improved type checking in the compilation entity. Better yet, an improved Lint with strict type checking rules because some of the C compilers are legacy and cannot be upgraded. In that way, it would be backwards compatible, it wouldn't break any existing C/C++ source code base, but it would allow (at least me) to check my own code for type validity before I commit the code into the version control system. At would be also a step forward in order to make an improvement in code quality and robustness. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-22 14:34 ` kalvin.news @ 2015-05-23 11:09 ` Peter Chapin 0 siblings, 0 replies; 111+ messages in thread From: Peter Chapin @ 2015-05-23 11:09 UTC (permalink / raw) On Fri, 22 May 2015, kalvin.news@gmail.com wrote: > What I would like to see in C/C++, and what would make me a bit less > grumpy, is a compiler "#pragma strict" - or something like that - which > would enable improved type checking in the compilation entity. Better > yet, an improved Lint with strict type checking rules because some of > the C compilers are legacy and cannot be upgraded. Such tools exist. I believe even the free splint tool has "strict typedefs" where it can be configured to regard each typedef as a new type. I'm also about 98% sure the commercial PC-Lint tool has a similar feature. The problem with using such a feature is that you pretty much have to write all the code yourself (not necessarily a bad thing in a high integrity context) since the use of types in third party header files is not so strict. That said, it is generally possible to tell these tools to tone down their checking when they processs a third party header precisely to avoid the errors doing so would produce. Peter ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-22 14:01 ` kalvin.news 2015-05-22 14:34 ` kalvin.news @ 2015-05-22 15:37 ` J-P. Rosen 2015-05-22 16:29 ` kalvin.news 1 sibling, 1 reply; 111+ messages in thread From: J-P. Rosen @ 2015-05-22 15:37 UTC (permalink / raw) Le 22/05/2015 16:01, kalvin.news@gmail.com a écrit : > I don't agree. C is a low level language, and good at that. Its types >> are those of the machine: bytes and addresses, the rest is a (small >> quantity of) syntactic sugar. >> >> If you need strong typing, use a strongly typed language. But don't >> blame C for not being strongly typed, it was simply not part of the >> requirements. >> (Making my point clearer after various reactions). Languages have history; they stemmed from a need for solving a certain class of problems. Then people tend to use them for different purposes. My point is that each language should be used for what it's good at. C was created for writing an operating system, and it's initial requirement were to be a "portable assembly language". At that level, there is no place for typing: a machine word is what you make of it, there is no difference between a float, an int, or whatever. I certainly wouldn't object to writing a device driver in C. Now, it's true that people use it to write higher level applications. That doesn't make the language higher level. After all, when I started programming, almost any serious application was written in assembly. I have seen people writing databases in APL, real-time programs in Java, high-reliability applications in C, etc. My plea is "use the right tool for the job". I wouldn't advocate Ada for "throw-away" programs with a life-time of one day. But when it comes to safety-critical and/or long-lived and/or high reliability and/or etc... -- J-P. Rosen Adalog 2 rue du Docteur Lombard, 92441 Issy-les-Moulineaux CEDEX Tel: +33 1 45 29 21 52, Fax: +33 1 45 29 25 00 http://www.adalog.fr ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-22 15:37 ` J-P. Rosen @ 2015-05-22 16:29 ` kalvin.news 2015-05-22 17:39 ` Simon Clubley 0 siblings, 1 reply; 111+ messages in thread From: kalvin.news @ 2015-05-22 16:29 UTC (permalink / raw) perjantai 22. toukokuuta 2015 18.37.59 UTC+3 J-P. Rosen kirjoitti: > Le 22/05/2015 16:01, kalvin-nospamhere-.news@gmail.com a écrit : > > I don't agree. C is a low level language, and good at that. Its types > >> are those of the machine: bytes and addresses, the rest is a (small > >> quantity of) syntactic sugar. > >> > >> If you need strong typing, use a strongly typed language. But don't > >> blame C for not being strongly typed, it was simply not part of the > >> requirements. > >> > (Making my point clearer after various reactions). > > Languages have history; they stemmed from a need for solving a certain > class of problems. Then people tend to use them for different purposes. > My point is that each language should be used for what it's good at. > > C was created for writing an operating system, and it's initial > requirement were to be a "portable assembly language". At that level, > there is no place for typing: a machine word is what you make of it, > there is no difference between a float, an int, or whatever. I certainly > wouldn't object to writing a device driver in C. > > Now, it's true that people use it to write higher level applications. > That doesn't make the language higher level. After all, when I started > programming, almost any serious application was written in assembly. > > I have seen people writing databases in APL, real-time programs in Java, > high-reliability applications in C, etc. My plea is "use the right tool > for the job". I wouldn't advocate Ada for "throw-away" programs with a > life-time of one day. But when it comes to safety-critical and/or > long-lived and/or high reliability and/or etc... > > -- > J-P. Rosen > Adalog > 2 rue du Docteur Lombard, 92441 Issy-les-Moulineaux CEDEX > Tel: +33 1 45 29 21 52, Fax: +33 1 45 29 25 00 > http://www.adalog.fr My point here is that although an int is an int, an int in one context may be totally different from another int, although both entities are of type int. For example, a low-level harddisk device driver might contain declarations like this: int cylinder = 1; int head = 2; int sector = 3; So, it is quite easy to do something stupid like this: head = sector; The compiler is happy as we assign an int to another int, but clearily we are assigning apples to oranges, which is not something that we typically want to do. However, we have not coveyed any information about our intentions here, and all ints are treated equally although clearily the ints contain different kind of integer values. Of course, one should declare distinct types for the different entities holding information about the cylinder, head and sector. This would also document the code better and convey more of the programmer's intent: typedef int Cylinder; typedef int Head; typedef int Sector; Cylinder cylinder = 1; Head head = 2; Sector sector = 3; In C/C++ it is still allowed to do this stupid assignment without any compiler warning or error whatsoever: head = sector; In my opinion, this should not be allowed or at least the compiler should generate a big loud warning, as we were stating specifically that the variable head is of type Head and the variable cylinder is of type Cylinder. The programmer has stated a specific intentent to declare distinct types for the Cylinder, Head and Sector and they should not be intermixed unless they are specifically typecasted to another type. Ps. Creating specific type declarations like: typedef int Sector; would make porting a bit easier should the maximum allowed sector count be increased to more than 65535 and an int is only 16 bits: typedef long int Sector; ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-22 16:29 ` kalvin.news @ 2015-05-22 17:39 ` Simon Clubley 2015-05-22 17:51 ` kalvin.news 2015-05-22 17:57 ` Simon Wright 0 siblings, 2 replies; 111+ messages in thread From: Simon Clubley @ 2015-05-22 17:39 UTC (permalink / raw) On 2015-05-22, kalvin.news@gmail.com <kalvin.news@gmail.com> wrote: > > My point here is that although an int is an int, an int in one context may be totally different from another int, although both entities are of type int. > > For example, a low-level harddisk device driver might contain declarations like this: > > int cylinder = 1; > int head = 2; > int sector = 3; > What I would hope is that the designer uses unsigned integers for those variables and, in order to make the code portable across platforms, they used uint32_t and friends to encode within the program what the actual required size of those variables need to be. Simon. PS: This is _not_ a dig at you BTW but an observation on some C code that I have looked at. I don't like seeing see code use plain integers when an unsigned integer better models the problem at hand. -- Simon Clubley, clubley@remove_me.eisner.decus.org-Earth.UFP Microsoft: Bringing you 1980s technology to a 21st century world ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-22 17:39 ` Simon Clubley @ 2015-05-22 17:51 ` kalvin.news 2015-05-22 19:41 ` J-P. Rosen 2015-05-22 17:57 ` Simon Wright 1 sibling, 1 reply; 111+ messages in thread From: kalvin.news @ 2015-05-22 17:51 UTC (permalink / raw) perjantai 22. toukokuuta 2015 20.40.52 UTC+3 Simon Clubley kirjoitti: > On 2015-05-22, kalvin-nospamhere-.news@gmail.com <kalvin-nospamhere.news@gmail.com> wrote: > > > > My point here is that although an int is an int, an int in one context may be totally different from another int, although both entities are of type int. > > > > For example, a low-level harddisk device driver might contain declarations like this: > > > > int cylinder = 1; > > int head = 2; > > int sector = 3; > > > > What I would hope is that the designer uses unsigned integers for those > variables and, in order to make the code portable across platforms, they > used uint32_t and friends to encode within the program what the actual > required size of those variables need to be. > > Simon. > > PS: This is _not_ a dig at you BTW but an observation on some C code > that I have looked at. I don't like seeing see code use plain integers > when an unsigned integer better models the problem at hand. > > -- > Simon Clubley, clubley@remove_me.eisner.decus.org-Earth.UFP > Microsoft: Bringing you 1980s technology to a 21st century world Yes, I understand. I just wanted to make a point here, that an int should not be considered type compatible with another int if they are declared using different typedefs. Neverthless, my argument is still valid if I had used unsigned int, uint16_t or uint32_t: typedef uint16_t Cylinder; typedef uint16_t Head; typedef uint32_t Sector; The variables of type Cyliner, Head and Sector should be treated by the compiler as incompatible and different types unless they are explicitly typecasted. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-22 17:51 ` kalvin.news @ 2015-05-22 19:41 ` J-P. Rosen 2015-05-22 20:04 ` kalvin.news 2015-05-23 13:01 ` Luke A. Guest 0 siblings, 2 replies; 111+ messages in thread From: J-P. Rosen @ 2015-05-22 19:41 UTC (permalink / raw) Le 22/05/2015 19:51, kalvin.news@gmail.com a écrit : > Yes, I understand. I just wanted to make a point here, that an int should not be considered type compatible with another int if they are declared using different typedefs. Neverthless, my argument is still valid if I had used unsigned int, uint16_t or uint32_t: > > typedef uint16_t Cylinder; > typedef uint16_t Head; > typedef uint32_t Sector; > > The variables of type Cyliner, Head and Sector should be treated by > the compiler as incompatible and different types unless they are > explicitly typecasted. Of course, being a long time supporter of strong typing, I agree with that view. But if you think in terms of abstract types and problem domain rather than bits and addresses, don't use C. I see no point in trying to make a low-level language higher level: use a language designed to support higher level views. To take an analogy: nobody would be so fool as to use a language designed for making animations on web pages in a real-time context ;-) -- J-P. Rosen Adalog 2 rue du Docteur Lombard, 92441 Issy-les-Moulineaux CEDEX Tel: +33 1 45 29 21 52, Fax: +33 1 45 29 25 00 http://www.adalog.fr ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-22 19:41 ` J-P. Rosen @ 2015-05-22 20:04 ` kalvin.news 2015-05-22 20:32 ` Jeffrey R. Carter ` (2 more replies) 2015-05-23 13:01 ` Luke A. Guest 1 sibling, 3 replies; 111+ messages in thread From: kalvin.news @ 2015-05-22 20:04 UTC (permalink / raw) perjantai 22. toukokuuta 2015 22.41.15 UTC+3 J-P. Rosen kirjoitti: > Le 22/05/2015 19:51, kalvin-nospamhere-.news@gmail.com a écrit : > > Yes, I understand. I just wanted to make a point here, that an int > should not be considered type compatible with another int if they are > declared using different typedefs. Neverthless, my argument is still > valid if I had used unsigned int, uint16_t or uint32_t: > > > > typedef uint16_t Cylinder; > > typedef uint16_t Head; > > typedef uint32_t Sector; > > > > The variables of type Cyliner, Head and Sector should be treated by > > the compiler as incompatible and different types unless they are > > explicitly typecasted. > Of course, being a long time supporter of strong typing, I agree with > that view. But if you think in terms of abstract types and problem > domain rather than bits and addresses, don't use C. I see no point in > trying to make a low-level language higher level: use a language > designed to support higher level views. > > To take an analogy: nobody would be so fool as to use a language > designed for making animations on web pages in a real-time context ;-) > > -- > J-P. Rosen > Adalog > 2 rue du Docteur Lombard, 92441 Issy-les-Moulineaux CEDEX > Tel: +33 1 45 29 21 52, Fax: +33 1 45 29 25 00 > http://www.adalog.fr Reality bites. It is very easy to get a decent and free/inexpensive compiler for almost any microcontroller on the market. And it is quite easy the find developers how are familiar with C/C++. And it is very hard to convince managers to invest to new tools that they do not know or understand, or their knowledge is based on outdated information (like "Yeah, I know Ada. One of my friends worked with Ada in 80's and it was *very* slow, the compiler produced terrible code and they needed Vax-cluster to run the compiler. Ada is so big."). So, we are dealing with a cultural, economical and practical challenges as well as historical burden and bad reputation. I do not claim that even Ada would be the ultimate solution. Someone made a good point above that, for example Oberon manual is only like 17 pages and Ada RM is over 1000 pages. There might be something wrong here, and may explain partly why Ada has not gain popularity. In my opinion, one of Ada's problem is that it is not allowed to call a compiler an Ada compiler if it implements only a subset of the language and the compiler has not beed certified. Please correct me if I am wrong here. I would consider a subset of Ada quite attractive if it provided same functionality as a C99, providing Ada's strong type checking and better grammar etc. - and if the compiler would be available even for the smaller microcontrollers for free (in the similar manner as C is available). ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-22 20:04 ` kalvin.news @ 2015-05-22 20:32 ` Jeffrey R. Carter 2015-05-22 21:22 ` kalvin.news 2015-05-23 11:14 ` Peter Chapin 2015-05-22 20:39 ` jan.de.kruyf 2015-05-23 12:40 ` Georg Bauhaus 2 siblings, 2 replies; 111+ messages in thread From: Jeffrey R. Carter @ 2015-05-22 20:32 UTC (permalink / raw) On 05/22/2015 01:04 PM, kalvin.news@gmail.com wrote: > > In my opinion, one of Ada's problem is that it is not allowed to call a > compiler an Ada compiler if it implements only a subset of the language and > the compiler has not beed certified. Please correct me if I am wrong here. I > would consider a subset of Ada quite attractive if it provided same > functionality as a C99, providing Ada's strong type checking and better > grammar etc. - and if the compiler would be available even for the smaller > microcontrollers for free (in the similar manner as C is available). Weren't you the one railing against people using out-of-date information a couple of paragraphs earlier in your post? When Ada was a trademark of the DoD, you could only use the term for a compiler that implemented the full language and had been certified. At the time of Ada 95 the DoD gave up the trademark, so there is no authority preventing you from misusing the name. GNAT, for example, by default is not an Ada compiler. -- Jeff Carter "I'll get broads up here like you wouldn't believe. Swingers. Freaks. Nymphomaniacs. Dental hygienists." Play It Again, Sam 125 ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-22 20:32 ` Jeffrey R. Carter @ 2015-05-22 21:22 ` kalvin.news 2015-05-23 11:14 ` Peter Chapin 1 sibling, 0 replies; 111+ messages in thread From: kalvin.news @ 2015-05-22 21:22 UTC (permalink / raw) perjantai 22. toukokuuta 2015 23.32.45 UTC+3 Jeffrey R. Carter kirjoitti: > On 05/22/2015 01:04 PM, kalvin.-nospamhere- news@gmail.com wrote: > > > > In my opinion, one of Ada's problem is that it is not allowed to call a > > compiler an Ada compiler if it implements only a subset of the language and > > the compiler has not beed certified. Please correct me if I am wrong here. I > > would consider a subset of Ada quite attractive if it provided same > > functionality as a C99, providing Ada's strong type checking and better > > grammar etc. - and if the compiler would be available even for the smaller > > microcontrollers for free (in the similar manner as C is available). > > Weren't you the one railing against people using out-of-date information a > couple of paragraphs earlier in your post? When Ada was a trademark of the DoD, > you could only use the term for a compiler that implemented the full language > and had been certified. At the time of Ada 95 the DoD gave up the trademark, so > there is no authority preventing you from misusing the name. GNAT, for example, > by default is not an Ada compiler. > > -- > Jeff Carter > "I'll get broads up here like you wouldn't believe. > Swingers. Freaks. Nymphomaniacs. Dental hygienists." > Play It Again, Sam > 125 Guilty as charged. But at least I do know that Ada has successfully ported as cross-compile for Avr microcontrollers and there is this thing called Ravenscar-profile. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-22 20:32 ` Jeffrey R. Carter 2015-05-22 21:22 ` kalvin.news @ 2015-05-23 11:14 ` Peter Chapin 2015-05-23 12:42 ` Jeffrey R. Carter 1 sibling, 1 reply; 111+ messages in thread From: Peter Chapin @ 2015-05-23 11:14 UTC (permalink / raw) On Fri, 22 May 2015, Jeffrey R. Carter wrote: > GNAT, for example, by default is not an Ada compiler. Is this still true? The latest GNAT has overflow checking on by default... or are there other issues? Peter ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-23 11:14 ` Peter Chapin @ 2015-05-23 12:42 ` Jeffrey R. Carter 2015-05-23 17:48 ` Simon Wright 0 siblings, 1 reply; 111+ messages in thread From: Jeffrey R. Carter @ 2015-05-23 12:42 UTC (permalink / raw) On 05/23/2015 04:14 AM, Peter Chapin wrote: > On Fri, 22 May 2015, Jeffrey R. Carter wrote: > >> GNAT, for example, by default is not an Ada compiler. > > Is this still true? The latest GNAT has overflow checking on by default... or > are there other issues? GNAT has generally required -gnata to activate assertion checks, -gnatn to activate cross-pkg inlining, -gnato to activate overflow checks, -fstack-check to give Storage_Error rather than a segfault, and -gnatE to use the ARM dynamic elaboration checks. Even if overflow checking is now on by default, I suspect GNAT is still not an Ada compiler by default. -- Jeff Carter "C++ is like giving an AK-47 to a monk, shooting him full of crack and letting him loose in a mall and expecting him to balance your checking account 'when he has the time.'" Drew Olbrich 52 ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-23 12:42 ` Jeffrey R. Carter @ 2015-05-23 17:48 ` Simon Wright 2015-05-25 8:34 ` Pascal Obry 0 siblings, 1 reply; 111+ messages in thread From: Simon Wright @ 2015-05-23 17:48 UTC (permalink / raw) "Jeffrey R. Carter" <spam.jrcarter.not@spam.not.acm.org> writes: > On 05/23/2015 04:14 AM, Peter Chapin wrote: >> On Fri, 22 May 2015, Jeffrey R. Carter wrote: >> >>> GNAT, for example, by default is not an Ada compiler. >> >> Is this still true? The latest GNAT has overflow checking on by >> default... or are there other issues? > > GNAT has generally required -gnata to activate assertion checks, > -gnatn to activate cross-pkg inlining, -gnato to activate overflow > checks, -fstack-check to give Storage_Error rather than a segfault, > and -gnatE to use the ARM dynamic elaboration checks. Even if overflow > checking is now on by default, I suspect GNAT is still not an Ada > compiler by default. -gnato, -fstack-check: point taken. -gnata: pretty sure that pragma Assertion_Policy is implemented? but just using -gnata is a lot easier. -gnatn: does the language require this? -gnatE: static elaboration checks are so clearly the Right Thing I'm surprised the ARM hasn't legalised them! ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-23 17:48 ` Simon Wright @ 2015-05-25 8:34 ` Pascal Obry 2015-05-25 10:22 ` Simon Wright 0 siblings, 1 reply; 111+ messages in thread From: Pascal Obry @ 2015-05-25 8:34 UTC (permalink / raw) Le samedi 23 mai 2015 à 18:48 +0100, Simon Wright a écrit : > "Jeffrey R. Carter" <spam.jrcarter.not@spam.not.acm.org> writes: > > GNAT has generally required -gnata to activate assertion checks, > > -gnatn to activate cross-pkg inlining, -gnato to activate overflow > > checks, -fstack-check to give Storage_Error rather than a segfault, > > and -gnatE to use the ARM dynamic elaboration checks. Even if overflow > > checking is now on by default, I suspect GNAT is still not an Ada > > compiler by default. > > -gnato, -fstack-check: point taken. -gnato is on by default in recent version of GNAT. -- Pascal Obry / Magny Les Hameaux (78) The best way to travel is by means of imagination http://v2p.fr.eu.org http://www.obry.net gpg --keyserver keys.gnupg.net --recv-key F949BD3B ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-25 8:34 ` Pascal Obry @ 2015-05-25 10:22 ` Simon Wright 2015-05-25 18:12 ` Georg Bauhaus 0 siblings, 1 reply; 111+ messages in thread From: Simon Wright @ 2015-05-25 10:22 UTC (permalink / raw) Pascal Obry <pascal@obry.net> writes: > -gnato is on by default in recent version of GNAT. Including FSF GCC 5.1.0. Thanks for the pointer. BTW, gnatmake -h still says -gnato Enable overflow checking mode to CHECKED (off by default) There doesn't seem to be a way to turn overflow checking off, other than -gnatp. Should float overflow be added to the list of things to "make GNAT into a real Ada compiler"? -gnateF Check overflow on predefined Float types ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-25 10:22 ` Simon Wright @ 2015-05-25 18:12 ` Georg Bauhaus 0 siblings, 0 replies; 111+ messages in thread From: Georg Bauhaus @ 2015-05-25 18:12 UTC (permalink / raw) On 25.05.15 12:22, Simon Wright wrote: > There doesn't seem to be a way to turn overflow checking off, other than > -gnatp. IIUC, -gnato has become -gnato[M[N]], where digits M and N refer to values of pragma Overflow_Mode, as per GNAT UG D.3 on "Specifying the Desired Mode" of overflow checking. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-22 20:04 ` kalvin.news 2015-05-22 20:32 ` Jeffrey R. Carter @ 2015-05-22 20:39 ` jan.de.kruyf 2015-05-28 22:33 ` Randy Brukardt 2015-05-23 12:40 ` Georg Bauhaus 2 siblings, 1 reply; 111+ messages in thread From: jan.de.kruyf @ 2015-05-22 20:39 UTC (permalink / raw) On Friday, May 22, 2015 at 10:04:17 PM UTC+2, kalvi...@gmail.com wrote: > perjantai 22. toukokuuta 2015 22.41.15 UTC+3 J-P. Rosen kirjoitti: > > Le 22/05/2015 19:51, kalvin-nospamhere-.news@gmail.com a écrit : > > > Yes, I understand. I just wanted to make a point here, that an int > > should not be considered type compatible with another int if they are > > declared using different typedefs. Neverthless, my argument is still > > valid if I had used unsigned int, uint16_t or uint32_t: > > > > > > typedef uint16_t Cylinder; > > > typedef uint16_t Head; > > > typedef uint32_t Sector; > > > > > > The variables of type Cyliner, Head and Sector should be treated by > > > the compiler as incompatible and different types unless they are > > > explicitly typecasted. > > Of course, being a long time supporter of strong typing, I agree with > > that view. But if you think in terms of abstract types and problem > > domain rather than bits and addresses, don't use C. I see no point in > > trying to make a low-level language higher level: use a language > > designed to support higher level views. > > > > To take an analogy: nobody would be so fool as to use a language > > designed for making animations on web pages in a real-time context ;-) > > > > -- > > J-P. Rosen > > Adalog > > 2 rue du Docteur Lombard, 92441 Issy-les-Moulineaux CEDEX > > Tel: +33 1 45 29 21 52, Fax: +33 1 45 29 25 00 > > http://www.adalog.fr > > Reality bites. It is very easy to get a decent and free/inexpensive compiler for almost any microcontroller on the market. And it is quite easy the find developers how are familiar with C/C++. And it is very hard to convince managers to invest to new tools that they do not know or understand, or their knowledge is based on outdated information (like "Yeah, I know Ada. One of my friends worked with Ada in 80's and it was *very* slow, the compiler produced terrible code and they needed Vax-cluster to run the compiler. Ada is so big."). So, we are dealing with a cultural, economical and practical challenges as well as historical burden and bad reputation. The historical burden and the bad reputation have not kept me away. And just read the blurp on the adacore website about all the military-, aircraft-, and financial applications. It certainly convinces my customers. so it must be cultural, or tribal if you wish, this whole issue. > > I do not claim that even Ada would be the ultimate solution. Someone made a good point above that, for example Oberon manual is only like 17 pages and Ada RM is over 1000 pages. There might be something wrong here, and may explain partly why Ada has not gain popularity. I was told in good faith the other day by some small business owner that hacks code at times for his products, after I explained what I was doing at the moment and what tools I use, that I should invest in Java. I would be up and running in 14 days he said. So now, what do we deduce: 1. java has glamour (this has been discussed here before) 2. the basics of java are easily grasped by a weekend hacker 3. he obviously has friends that keep him nice and cosy within the circle of the believers. And I think the last point is the deciding factor. At least research in the process of religious conversion says so. You join a crowd because you like some of the people, and after a while you start to think that there is something in what they teach there. > > In my opinion, one of Ada's problem is that it is not allowed to call a compiler an Ada compiler if it implements only a subset of the language and the compiler has not beed certified. Please correct me if I am wrong here. I would consider a subset of Ada quite attractive if it provided same functionality as a C99, providing Ada's strong type checking and better grammar etc. - and if the compiler would be available even for the smaller microcontrollers for free (in the similar manner as C is available). Well uh . . I have not yet had a gpl ada compiler out of Adacore that was certified or complete. I was just part of Adacores quality control system. More users catch more bugs. And rest assured most compiler vendors know this trick. And otherwise: a person is free to use a subset of the animal if that is what you like to do. Just look around. some runtimes for microcontrollers are available. And they are not difficult to make yourself. If gcc has a back end, I am sure the gnat front end will work. j. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-22 20:39 ` jan.de.kruyf @ 2015-05-28 22:33 ` Randy Brukardt 2015-05-29 6:56 ` jan.de.kruyf 0 siblings, 1 reply; 111+ messages in thread From: Randy Brukardt @ 2015-05-28 22:33 UTC (permalink / raw) <jan.de.kruyf@gmail.com> wrote in message news:7ac8be18-bf22-4e7b-afcc-4da5c92049f3@googlegroups.com... ... > And I think the last point is the deciding factor. At least research in > the process > of religious conversion says so. You join a crowd because you like some of > the > people, and after a while you start to think that there is something in > what they > teach there. Of course, I doubt this group is immune to that. We're worshiping in the church of Ada here. ;-) Randy. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-28 22:33 ` Randy Brukardt @ 2015-05-29 6:56 ` jan.de.kruyf 0 siblings, 0 replies; 111+ messages in thread From: jan.de.kruyf @ 2015-05-29 6:56 UTC (permalink / raw) On Friday, May 29, 2015 at 12:33:38 AM UTC+2, Randy Brukardt wrote: > ... > > And I think the last point is the deciding factor. At least research in > > the process > > of religious conversion says so. You join a crowd because you like some of > > the > > people, and after a while you start to think that there is something in > > what they > > teach there. > > Of course, I doubt this group is immune to that. We're worshiping in the > church of Ada here. ;-) > > Randy. Yes and I am the irreligious christian. "The Ada church is not a church, it is stone-age tribalism" ha ha. Here is another Dijkstra for you also: "As you all remember, the first and foremost objective was the development of the Elixir that would give the one that drank it Eternal Youth. But since there is not much point in eternal poverty, the world of science quickly embarked on its second project, viz. the Philosopher's Stone that would enable you to make as much Gold as you needed. Needless to say, the planning of these two grandiose research projects went far beyond the predictive powers of the seers of that day and, for sound reasons of management, the accurate prediction of the future became the third hot scientific issue." (EDW898) j. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-22 20:04 ` kalvin.news 2015-05-22 20:32 ` Jeffrey R. Carter 2015-05-22 20:39 ` jan.de.kruyf @ 2015-05-23 12:40 ` Georg Bauhaus 2015-05-25 7:14 ` jan.de.kruyf 2 siblings, 1 reply; 111+ messages in thread From: Georg Bauhaus @ 2015-05-23 12:40 UTC (permalink / raw) On 22.05.15 22:04, kalvin.news@gmail.com wrote: > perjantai 22. toukokuuta 2015 22.41.15 UTC+3 J-P. Rosen kirjoitti: >> >> To take an analogy: nobody would be so fool as to use a language >> designed for making animations on web pages in a real-time context ;-) >> >> -- >> J-P. Rosen >> Adalog >> 2 rue du Docteur Lombard, 92441 Issy-les-Moulineaux CEDEX >> Tel: +33 1 45 29 21 52, Fax: +33 1 45 29 25 00 >> http://www.adalog.fr > > Reality bites. Sort of. > And it is quite easy the find developers how are familiar with C/C++. HR staff think they find people who think they are familiar with C or even C++. That's good enough, though, if employment is evidence. People who write C scarcely know what they really are writing. But. It is perceived risk, though, both on the part of programmers and on the part of management that counts, also perceived quality of software in general. So, the risk of using C is reduced if every programmer and every manager takes the same risks. (If cheaper Ada could help, than I think that remembering DOT.COM business will prevent a situation that makes Ada have C-like pricing for microcontrollers.) C is tricky, and its ISO standard is impressively long for a reason, even though it omits many things to be documented per implementation. (Some 150 pages for the core language, excl. the library, for a total of around 500 pages.) C++---a language that for reasons of historic incident is believed to be some sort of C, and mentioned curiously in contexts such as in "C/C++"---is a different beast entirely. How many microcontrollers can one program in C++ without using some C++ -> C translator? > And it is very hard to convince managers to invest to new tools that they do not know or understand, or their knowledge is based on outdated information (like "Yeah, I know Ada. One of my friends worked with Ada in 80's and it was *very* slow, the compiler produced terrible code and they needed Vax-cluster to run the compiler. Ada is so big."). So, we are dealing with a cultural, economical and practical challenges as well as historical burden and bad reputation. > > I do not claim that even Ada would be the ultimate solution. Someone made a good point above that, for example Oberon manual is only like 17 pages Actually … > and Ada RM is over 1000 pages. What corresponds to the Oberon-1 "manual" (Wirth's 1987 report, I take it?) in Ada's ISO reference would be the core language. About 1/3 of the LRM, some 350 pages. Now why is the Ada LRM still 10x that of Component Pascal (current Oberon)? In part because of ISO requirements, needed for solid works of industry, when not "soldering". Precision is needed. In part, because Ada has task types generic units and elaboration and so one, as has already been mentioned; things that were needed, and will be needed even more in the future, provided that microcontrollers, too, will get more ALUs working in parallel. (ActiveOberon formed Object + Semaphore constructs; another dozen pages, and again offloading much on programmers, see below.) E.g., quoting from the "Component Pascal Language report" (about 30 pages), on CASE statements: "If the value of the expression does not occur as a label of any case, the statement sequence following the symbol ELSE is selected, if there is one, otherwise the program is aborted." Abort? That would not have been acceptable to an Ada compiler from day one. But, surely, all programmers will do the right thing, won't they? And good testing should find the hole in the Oberon program before it is deployed, right? To me, this report is a example of how a language definition shifts responsibility (and definitions) to programmers doing all the work of, say, keeping case statements right… This might work well for the self-employed or for small groups of programmers, and for programs that are sufficiently small; but how should this help refactoring, say? Changes? What I want to point out is this: it is not that surprising, then, if the Oberon "manual" can be very short. > There might be something wrong here, and may explain partly why Ada has not gain popularity. Yes. History and pricing. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-23 12:40 ` Georg Bauhaus @ 2015-05-25 7:14 ` jan.de.kruyf 2015-05-25 12:26 ` Georg Bauhaus ` (2 more replies) 0 siblings, 3 replies; 111+ messages in thread From: jan.de.kruyf @ 2015-05-25 7:14 UTC (permalink / raw) On Saturday, May 23, 2015 at 2:40:25 PM UTC+2, Georg Bauhaus wrote: > > People who write C scarcely know what they really are writing. That sir is a rather shallow statement to make. I would rather say they are experts in that they can produce so much good code with such an oldfashioned language. > (If cheaper Ada could help, than I think that remembering DOT.COM > business will prevent a situation that makes Ada have C-like pricing > for microcontrollers.) > Wel, just of my head: there is Ada for avr and for ARM Cortex. Both free of charge, waiting for you to make a good runtime for the processor you want to use. > > What corresponds to the Oberon-1 "manual" (Wirth's 1987 report, > I take it?) in Ada's ISO reference would be the core language. > About 1/3 of the LRM, some 350 pages. George your Oberon commentary is way off the mark. And your argumentation is weak, but I dont need to elaborate on that, since this is not a language shoot out. I merely used it as an example to prove a point. And statistics prove that point. I have written 1000th's of lines in Oberon and 1000th's of lines in Ada. Both highly technical software. And I got exactly the same kind of errors on compiling and running: errors caused by my sloppy habits. And both the Oberon compiler that fits on a floppy (a floppy, not a stiffy) and Gcc which stands at over 1Gig of source in the latest implementation, caught them equally well and also the runtime errors that I caused were exactly the same. And otherwise: the precision was exquisite. Oberon has a long and proud history of making things smaller and more precise. While experience teaches that Ada tries to make things more precise, but causes bloat in the process. So please explain to me why on earth I or DoD or ISO or anybody else needs all the bloat to confuse us. 1. Does a program become easier to prove formally when the language has more baroque features? 2. Does it become easier to write when the language has more baroque features? 3. Does the program production process become faster when the language used has more baroque features? 4. Does the program become easier to maintain when the language has more baroque features? 5. Do we attract more programmers to a language that is clearly over-specified and difficult to learn? And the group on this list is getting frightfully small and is getting on in years! 6. Do we convince more managers to use a language of which the essence is difficult to grasp at first sight? You may answer, I rest my case. Cheers, j. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-25 7:14 ` jan.de.kruyf @ 2015-05-25 12:26 ` Georg Bauhaus 2015-05-25 18:44 ` Shark8 2015-05-28 22:46 ` Randy Brukardt 2 siblings, 0 replies; 111+ messages in thread From: Georg Bauhaus @ 2015-05-25 12:26 UTC (permalink / raw) On 25.05.15 09:14, jan.de.kruyf@gmail.com wrote: > And statistics prove that point. I have written The mixture of "statistics" and "I have" is a little irritating, but OTOH may be expected whenever the word "we" is understood as a generalization of "I". Since this is about proving a point about a full LRM as opposed to a short language report and productivity: The scope of Oberon is indicated spcefically at projectoberon.com: "Its simplicity and clarity enables a single person to know and implement the entire system" Wirth is said to have immediately recommended Ada for anything of larger scope. Ichbiah has addressed the "single person know-everything" in his 1984 interview. To answer your list of suggestive remarks, put as questions, briefly: Yes, one needs precision whenever one gets out of ones garage (alternatively, one's corner). Proves are much less vague if the assumptions are (and can be!) actually stated, or referred to. Speaking of assumptions, Hoare's latest (2004) edition of CSP has some 230 pages. Is it "baroque", too? Do programmers not need to know anything from it, just the Active Oberon report instead? Kindly indicate the mark which my "commentary" on the Component Pascal report was off. That is, would the report still be short if its authors had liked to handle case distinctions in the way that Ada does, or Haskell-OCaml-F#, or static C analyzers, etc. Doesn't a more expressive fundamental type system result in higher productivity and better code, easier to keep correct during maintenance, even though it takes a little longer to learn, although not much, according to McCormick's repeated findings? ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-25 7:14 ` jan.de.kruyf 2015-05-25 12:26 ` Georg Bauhaus @ 2015-05-25 18:44 ` Shark8 2015-05-25 19:54 ` jan.de.kruyf 2015-05-25 20:01 ` Nasser M. Abbasi 2015-05-28 22:46 ` Randy Brukardt 2 siblings, 2 replies; 111+ messages in thread From: Shark8 @ 2015-05-25 18:44 UTC (permalink / raw) On Monday, May 25, 2015 at 1:14:56 AM UTC-6, jan.de... wrote: > > > 1. Does a program become easier to prove formally when the language has more baroque features? Quite possibly. One simple instance of this is case-coverage -- Ada is one of the [relatively] few languages that requires all possibilities to be specified, this is due to the prevalence of C and its influence on language design (in particular its choice to make enumerations an alias for int-values) -- wich is a feature Ada has had since its inception. > 2. Does it become easier to write when the language has more baroque features? Quite possibly. The TASK construct provides a fairly natural way to implement a protocol, in addition to providing a logically parallel thread. There's also Ada's GENERIC, which is more complex than many other languages, which can have values in addition to types (or packages) as parameters. > 3. Does the program production process become faster when the language used has more baroque features? Quite possibly. Consider Ada's package system: it is essentially a module-system, but in conjunction with generics provides a much saner parametrization/template mechanism than text-substitution mechanisms. > 4. Does the program become easier to maintain when the language has more baroque features? Given the above: quite possibly. (You have to take advantage of the facilities to gain the benefit, obviously.) > 5. Do we attract more programmers to a language that is clearly over-specified and difficult to learn? I'm not sure it's difficult to learn. It's different than the C-family syntax that many younger programmers are familiar with, but that says nothing about the ease of learning. Further, given the results of McCormick's model-train course I would venture to say that it isn't too difficult -- now, granted there is a dearth of easy-to-find tutorials and fun/open projects (esp for Ada 2012)... but that is a tangential issue. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-25 18:44 ` Shark8 @ 2015-05-25 19:54 ` jan.de.kruyf 2015-05-25 21:25 ` Shark8 ` (2 more replies) 2015-05-25 20:01 ` Nasser M. Abbasi 1 sibling, 3 replies; 111+ messages in thread From: jan.de.kruyf @ 2015-05-25 19:54 UTC (permalink / raw) On Monday, May 25, 2015 at 8:44:37 PM UTC+2, Shark8 wrote: > On Monday, May 25, 2015 at 1:14:56 AM UTC-6, jan.de... wrote: > > > > > > 1. Does a program become easier to prove formally when the language has more baroque features? > > Quite possibly. > One simple instance of this is case-coverage -- Ada is one of the [relatively] few languages that requires all possibilities to be specified, this is due to the prevalence of C and its influence on language design (in particular its choice to make enumerations an alias for int-values) -- wich is a feature Ada has had since its inception. It is also in the 17 pages, notwithstanding Georg's doubts. If it is not it is an oversight in the editing. > > > 2. Does it become easier to write when the language has more baroque features? > > Quite possibly. > The TASK construct provides a fairly natural way to implement a protocol, in addition to providing a logically parallel thread. There's also Ada's GENERIC, which is more complex than many other languages, which can have values in addition to types (or packages) as parameters. My example is lame in this respect since obviously Tasks are needed, which were not in original Oberon, although they were easily constructed, but you were in charge and had to watch your running times. That was still single processor world. You might find the Generic / Template idea indispensable perhaps. I have used it on occasion and to me it is easy to use, but at the same time I am happy without it if it makes the language overly complex. > > > 3. Does the program production process become faster when the language used has more baroque features? > > Quite possibly. > Consider Ada's package system: it is essentially a module-system, but in conjunction with generics provides a much saner parametrization/template mechanism than text-substitution mechanisms. The package system comes from the days of Modula and is firmly embedded in the 17 pages. > > > 4. Does the program become easier to maintain when the language has more baroque features? > > Given the above: quite possibly. > (You have to take advantage of the facilities to gain the benefit, obviously.) Shark, the features you bring up are not at all the issue. It is much deeper than that and I would love a good discussion about it, because to be honest I am totally puzzled by the 1500 pages.there is something deeply wrong with the thinking behind it. And I am the least of all to say that. Much greater brains have before me. I love the language, I like working in it, except when the compiler is throwing its toys. And dont misunderstand me, it is always for good reasons (according to the RM, and my logic brain tells me it is right) but the dichotomy stays: How is it possible to _not_ have all these issues and work fast with the _same_ precision and security and provability as what we are used to in Ada. It boggles the mind. > > > 5. Do we attract more programmers to a language that is clearly over-specified and difficult to learn? > > I'm not sure it's difficult to learn. > It's different than the C-family syntax that many younger programmers are familiar with, but that says nothing about the ease of learning. Further, given the results of McCormick's model-train course I would venture to say that it isn't too difficult -- now, granted there is a dearth of easy-to-find tutorials and fun/open projects (esp for Ada 2012)... but that is a tangential issue. True and I am aware of the McCormick paper, And broadly speaking I would agree with it. And yes the C crowd gets pissed off because the lack of features in Oberon. But then you have not worked in overdrive :) I think that the problem lies partly a difference in concepts between the 2 languages, although they look surprisingly similar. When you know the one you think you can program the other, but that then proves to be a falleximble. Oberon is very much a reduced instruction set language. Anything complex is either a library package or a code pattern. So formal proof, for those who need that, is relatively easy. And for me production-wise it was a big bonus. When you are coding, your immediate working knowledge consists of exactly those 17 pages. And you know them off by heart in no time, from doing them again and again. And when you do your program design you dont get sidetracked by language complexities. So obviously it was ever only a teaching language and it needs a lot of deep thinking and hard work to get it up to todays needs. The few tries were rather feeble (Georg's component pascal was one of them) since there were no deep pockets behind it. So I can sit and wish for that to happen but that is not very productive. I would rather make a positive contribution to some language like Ada. And in the mean time I will just put a small single pass compiler together for the ARM work I do.I did it before for AVR. It is very enjoyable. And by the way let me say it again: this is _not_ a language shoot out. I have not got time for such crap. But I would certainly like some light over the issues I raised (And beyond "we need it" and "we always done it this way", that for me merely points to a vested interest). Cheers, j. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-25 19:54 ` jan.de.kruyf @ 2015-05-25 21:25 ` Shark8 2015-05-26 7:46 ` Georg Bauhaus 2015-05-26 8:12 ` Georg Bauhaus 2 siblings, 0 replies; 111+ messages in thread From: Shark8 @ 2015-05-25 21:25 UTC (permalink / raw) On Monday, May 25, 2015 at 1:54:28 PM UTC-6, jan.de... wrote: > On Monday, May 25, 2015 at 8:44:37 PM UTC+2, Shark8 wrote: > > On Monday, May 25, 2015 at 1:14:56 AM UTC-6, jan.de... wrote: > > > > > And by the way let me say it again: this is _not_ a language shoot out. I have not got time for such crap. But I would certainly like some light over the issues I raised (And beyond "we need it" and "we always done it this way", that for me merely points to a vested interest). Oh, no, I didn't mean to come off like it _was_ a language shoot-out. Just pointing out that the 'baroqueness' (complexity) certainly can have a positive answer to your questions. I am in agreement as to wanting understanding on the size of the RM though. (I suspect that it derives from equal parts structured format and "we always done it this way".) > Shark, the features you bring up are not at all the issue. It is much deeper than that and I would love a good discussion about it, because to be honest I am totally puzzled by the 1500 pages.there is something deeply wrong with the thinking behind it. And I am the least of all to say that. Much greater brains have before me. No, they aren't -- but they are answers to the question of complexity, which is tangential to the RM's size (it must define the features, and should specify interactions between features like, say, a function returning a task with an extended return, or an expression function returning an access to a task). > I love the language, I like working in it, except when the compiler is throwing its toys. And dont misunderstand me, it is always for good reasons (according to the RM, and my logic brain tells me it is right) but the dichotomy stays: How is it possible to _not_ have all these issues and work fast with the _same_ precision and security and provability as what we are used to in Ada. It boggles the mind. Yes; I think the RM could possibly be shorter... but I think we would lose much of its topical-structure* if we did that. -- It might have been acceptable to restructure in Ada 95, but the problem of doing it now is it would be backwards incomparable /w section numbers. * -- The structure makes the TOC and Index very usable. The Ada LRM's index is one of the better ones, IMO. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-25 19:54 ` jan.de.kruyf 2015-05-25 21:25 ` Shark8 @ 2015-05-26 7:46 ` Georg Bauhaus 2015-05-26 8:12 ` Georg Bauhaus 2 siblings, 0 replies; 111+ messages in thread From: Georg Bauhaus @ 2015-05-26 7:46 UTC (permalink / raw) On 25.05.15 21:54, jan.de.kruyf@gmail.com wrote: >> One simple instance of this is case-coverage -- Ada is one of the [relatively] few languages that requires all possibilities to be specified, this is due to the prevalence of C and its influence on language design (in particular its choice to make enumerations an alias for int-values) -- wich is a feature Ada has had since its inception. > It is also in the 17 pages, notwithstanding Georg's doubts. If it is not it is an oversight in the editing. > The CASE construct of the Oberons should be what the reports say it is. Any the report does establish a foggy idea. Reiser and Wirth repeat the same in their accompanying text book from 1992(en)/1994(de). In 9.5, "The Programming Language Oberon" states for CASE: "If the value of the expression does not occur as a label of any case, the statement sequence following the symbol ELSE is selected, if there is one. Otherwise it is considered as an error." Difficulty arises from the report's language here: the pronoun "it" just does not clearly point to anything serving as a noun. The word "error" has no definition. What is the programmer to expect? (C-style approach, of course: be pragmatic, try it with your implementation, do what a proper engineer does, etc. etc..) But the style of the report blends well with the idea of one person writing and entire system, including OS, compilers, GUI, and tools alone, since case coverage seems a bit more demanding than Wirth's pragmatic shortcut would allow. Oberon-07 does not even address the issue, since ELSE is gone. Easy. So, I guess, CASE acts like an IF-ELSIF-... without an ELSE. The report does not say. But it adds some other uses of CASE for type extensions, quite clearly quoting from some unknown contexts, and not introducing things like Si. Not surprising, then, that the report can be shorter than usual. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-25 19:54 ` jan.de.kruyf 2015-05-25 21:25 ` Shark8 2015-05-26 7:46 ` Georg Bauhaus @ 2015-05-26 8:12 ` Georg Bauhaus 2 siblings, 0 replies; 111+ messages in thread From: Georg Bauhaus @ 2015-05-26 8:12 UTC (permalink / raw) On 25.05.15 21:54, jan.de.kruyf@gmail.com wrote: > Oberon is very much a reduced instruction set language. Anything complex is either a library package or a code pattern. So formal proof, for those who need that, is relatively easy. Why is formal proof any easier, then? If anything complex is either a library package or a code pattern, then formal proof would have to include these. Patterns are useful, of course, but they do not establish proof by just being patterns? > And for me production-wise it was a big bonus. When you are coding, your immediate working knowledge consists of exactly those 17 pages. How is it that you know the libraries and the code patterns? Can't be from the 17 pages of the report as it mentions none of them. WRT the Ada LRM, this "works" for me: *if* a text book or other introduction(*) or the rationale won't do: employ the structure of the RM: - The core language is text before Annex A. (Some 350 pages) (This would be the equivalent of the Oberon report.) - In there, every section N has a few short paragraphs that introduce the section's topics formally, using definitions. - Many subsections N.M start like the Oberon report, giving grammar; others focus on one subtopic. Note the recurring headings like _Syntax_ for a good guess at where you need to look. > And you know them off by heart in no time, from doing them again and again. Yet what is it that you know from 17 pages? It might feel good, but that isn't good enough for a reference. > And when you do your program design you dont get sidetracked by language complexities. Can we get sidetracked by, say, improper choice of the code pattern? __ (*) http://www.adaic.org/wp-content/uploads/2010/05/Ada-Distilled-24-January-2011-Ada-2005-Version.pdf ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-25 18:44 ` Shark8 2015-05-25 19:54 ` jan.de.kruyf @ 2015-05-25 20:01 ` Nasser M. Abbasi 2015-05-25 20:04 ` Nasser M. Abbasi 1 sibling, 1 reply; 111+ messages in thread From: Nasser M. Abbasi @ 2015-05-25 20:01 UTC (permalink / raw) Since there was some discussion on sizes of RM for languages, I tried to find a reference that lists such information, but not able to find one. It is hard to find these online, but this is what I found: C++ : 1366 Ada : 944 C : 552 Pascal: 98 If you find more, feel free to update the list or correct it. --------------------------------- C++ working draft from http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3797.pdf shows it is 1366 pages. ---------------------------------------- Ada RM ISO/IEC 8652:2012(E) is 944 pages (dated December 2012) http://www.ada-auth.org/standards/12rm/RM-Final.pdf ----------------------------------------- C ISO ISO/IEC 9899:TC3, dated 2007 http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf is 552 pages ------------------------------------- Fortran ISO WD 1539-1 ISO/IEC JTC 1/SC 22/WG5/N2014 ftp://ftp.nag.co.uk/sc22wg5/N2001-N2050/N2014.pdf dated May 2014 675 pages --------------------------------------------- Pascal ISO 7185 :1990 http://www.pascal-central.com/docs/iso7185.pdf 98 pages ------------------------------------------------- --Nasser ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-25 20:01 ` Nasser M. Abbasi @ 2015-05-25 20:04 ` Nasser M. Abbasi 2015-05-25 20:37 ` jan.de.kruyf 2015-05-25 23:05 ` Peter Chapin 0 siblings, 2 replies; 111+ messages in thread From: Nasser M. Abbasi @ 2015-05-25 20:04 UTC (permalink / raw) I forgot Fortran. Here is the list again C++ : 1366 pages Ada : 944 pages Fortran : 675 pages C : 552 pages Pascal : 98 pages On 5/25/2015 3:01 PM, Nasser M. Abbasi wrote: > Since there was some discussion on sizes of RM for languages, I > tried to find a reference that lists such information, but not > able to find one. It is hard to find these online, but this is what > I found: > > C++ : 1366 > Ada : 944 > C : 552 > Pascal: 98 > > If you find more, feel free to update the list or correct it. > > > --------------------------------- > C++ working draft from > http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3797.pdf > > shows it is 1366 pages. > ---------------------------------------- > > Ada RM ISO/IEC 8652:2012(E) is 944 pages (dated December 2012) > http://www.ada-auth.org/standards/12rm/RM-Final.pdf > ----------------------------------------- > > C ISO ISO/IEC 9899:TC3, dated 2007 > http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf > is 552 pages > ------------------------------------- > > Fortran ISO WD 1539-1 ISO/IEC JTC 1/SC 22/WG5/N2014 > ftp://ftp.nag.co.uk/sc22wg5/N2001-N2050/N2014.pdf > dated May 2014 > 675 pages > > --------------------------------------------- > Pascal ISO 7185 :1990 > http://www.pascal-central.com/docs/iso7185.pdf > 98 pages > > ------------------------------------------------- > > --Nasser > > > > > > ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-25 20:04 ` Nasser M. Abbasi @ 2015-05-25 20:37 ` jan.de.kruyf 2015-05-26 7:52 ` Jacob Sparre Andersen 2015-05-25 23:05 ` Peter Chapin 1 sibling, 1 reply; 111+ messages in thread From: jan.de.kruyf @ 2015-05-25 20:37 UTC (permalink / raw) On Monday, May 25, 2015 at 10:04:05 PM UTC+2, Nasser M. Abbasi wrote: > I forgot Fortran. Here is the list again > > C++ : 1366 pages > Ada : 944 pages > Fortran : 675 pages > C : 552 pages > Pascal : 98 pages > > > On 5/25/2015 3:01 PM, Nasser M. Abbasi wrote: > > Since there was some discussion on sizes of RM for languages, I > > tried to find a reference that lists such information, but not > > able to find one. It is hard to find these online, but this is what > > I found: > > > > C++ : 1366 > > Ada : 944 > > C : 552 > > Pascal: 98 > > > > If you find more, feel free to update the list or correct it. > > > > > > --------------------------------- > > C++ working draft from > > http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3797.pdf > > > > shows it is 1366 pages. > > ---------------------------------------- > > > > Ada RM ISO/IEC 8652:2012(E) is 944 pages (dated December 2012) > > http://www.ada-auth.org/standards/12rm/RM-Final.pdf > > ----------------------------------------- > > > > C ISO ISO/IEC 9899:TC3, dated 2007 > > http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf > > is 552 pages > > ------------------------------------- > > > > Fortran ISO WD 1539-1 ISO/IEC JTC 1/SC 22/WG5/N2014 > > ftp://ftp.nag.co.uk/sc22wg5/N2001-N2050/N2014.pdf > > dated May 2014 > > 675 pages > > > > --------------------------------------------- > > Pascal ISO 7185 :1990 > > http://www.pascal-central.com/docs/iso7185.pdf > > 98 pages > > > > ------------------------------------------------- > > > > --Nasser > > > > > > > > > > > > https://bitbucket.org/trijezdci/m2r10/downloadsM2R10.2014-01-31.tracked.pdf modula2 revision 10 This is a new development no ISO yet The previous revisions' ISO documents are only for sale. 163 pages ftp://ftp.ethoberon.ethz.ch/Oberon/OberonV4/Docu/OberonReport.ps Oberon (1990 version) 17 pages http://www.inf.ethz.ch/personal/wirth/Oberon/Oberon07.Report.pdf Oberon-07 17 pages ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-25 20:37 ` jan.de.kruyf @ 2015-05-26 7:52 ` Jacob Sparre Andersen 2015-05-26 11:43 ` jan.de.kruyf 2015-05-27 13:41 ` jan.de.kruyf 0 siblings, 2 replies; 111+ messages in thread From: Jacob Sparre Andersen @ 2015-05-26 7:52 UTC (permalink / raw) jan.de.kruyf@gmail.com writes: > On Monday, May 25, 2015 at 10:04:05 PM UTC+2, Nasser M. Abbasi wrote: >> C++ : 1366 pages >> Ada : 944 pages >> Fortran : 675 pages >> C : 552 pages > modula2 revision 10 [...] 163 pages >> Pascal : 98 pages > Oberon (1990 version) 17 pages > Oberon-07 17 pages How much shorter would those texts be if: 1) All optional sections were removed. 2) All informative sections were removed. 3) All libraries, which can be implemented using only non-optional language features, were removed. And how well would a team of student manage John McCormick's train modeling course with each language? (I think McCormick is still teaching? Can we get him to run that experiment?) Greetings, Jacob -- ACRONYM: A Contrived Reduction Of Nomenclature Yielding Mnemonics ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-26 7:52 ` Jacob Sparre Andersen @ 2015-05-26 11:43 ` jan.de.kruyf 2015-05-26 15:38 ` jan.de.kruyf 2015-05-28 23:39 ` Randy Brukardt 2015-05-27 13:41 ` jan.de.kruyf 1 sibling, 2 replies; 111+ messages in thread From: jan.de.kruyf @ 2015-05-26 11:43 UTC (permalink / raw) On Tuesday, May 26, 2015 at 9:52:39 AM UTC+2, Jacob Sparre Andersen wrote: > And how well would a team of student manage John McCormick's train > modeling course with each language? (I think McCormick is still > teaching? Can we get him to run that experiment?) > Yess! Jacob, I like that idea. If we want to learn anything this will be one of the things to do. Language wars are a very inefficient way of using time, so I have tried to refrain from it. But it seems answers are needed on the matter of Oberon. So now you guys have put so much (thank you) that I will have to read a bit of compiler code. That is where old man Wirth will have hidden his answers. Since there is and never was meant to be an ISO document. So bear with me please, I need some time. There are strong similarities between Modula and Ada, they were both designed in the same years: 1977 onward. And both grew from Pascal. Ada in request to a Dod requirement, and Modula as a teaching language. Now Ada has grown with the crowd. Ada95's syntax volume stands at roughly 3000 lexemes on par with C#. C++ is slightly less at 2500 or so. The old man (working in Georg's garage :) found scientific reason to follow the 'reduced instruction set' trend, that was and still is, popular in hardware CPU design. And came up with Oberon, with stands at 700 lexemes. (data according to S.Z.Sverdlov "Programming languages and translation methods", Piter Press, 2007) My suggestion is not: "Ada must be like Oberon." That is childish bull. And also my question to you is not "what is wrong with Oberon" I know most of that. My question is "can we learn something, is it worth it to see if Ada could be more compact perhaps. (In my experience it definitely is, but that is speaking from where I stand) Could the immense brain power of some of the highest paid software engineers be applied to the issue of 'progressive refinement' of what exists in Ada? Could we find scientific reason for a critical look at where Ada in particular (and IT in general) is going? I mean a few high visibility software projects are again suffering of "misinformation over the final cost". The JSF comes to mind. And talking about JSF: is it possible to outbid the C crowd? So we do not see any more of this running to C programmers ("yes, we still have all the Ada methodologies in place, it will not be a problem") (this should be filed under famous last words!) cheers, j. -- "We have to learn how to use our words. It's a fantastic thing--we humans are so easily trapped in our own words. The word time, for instance--we run into puzzles about the concept of time and then we say, oh, what a terrible thing. We don't realize we're the source of the puzzles because we invented the word.... John Archibald Wheeler. > Greetings, > > Jacob > -- > ACRONYM: A Contrived Reduction Of Nomenclature Yielding Mnemonics ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-26 11:43 ` jan.de.kruyf @ 2015-05-26 15:38 ` jan.de.kruyf 2015-05-28 23:39 ` Randy Brukardt 1 sibling, 0 replies; 111+ messages in thread From: jan.de.kruyf @ 2015-05-26 15:38 UTC (permalink / raw) Here is a follow up to my previous post: I happen to find the system TRAP list of native Oberon for pc. (so not the latest version 07) If my memory serves me right the compiler was written for a master thesis at eth. It is not a military strength compiler obviously, but for industrial use it has proven itself. A trap would automatically give a stack trace. the location could be found back by compiling with debug info. Georg, please note TRAP2 :) Perhaps we are here just discussing 25 years after the fact. And perhaps the language report is what it is to encourage the discussion which led to this: -------------------------------------------- Trap numbers fall into the following ranges: Traps -39 to -32 are generated by the floating-point unit of the processor. By default floating-point checks are disabled and the special overflow and error values INF and NaN are generated (see module Reals). Traps -31 to 0 are generated by the processor. Traps 1 to 10 are generated by compiler-inserted checks. Traps 11 to 19 are generated by system modules. Traps 20 and above are generated by HALT or ASSERT statements. More detailed information about specific traps: TRAP -35 Floating-point stack fault: The floating-point unit made an incorrect memory reference. TRAP -34 Floating-point operation invalid: The floating-point stack overflowed or underflowed, or an invalid arithmetic operand was encountered (disabled by default). TRAP -33 Floating-point overflow: Caused by an arithmetic overflow (disabled by default). TRAP -32 Floating-point division by 0: Caused by an attempt to divide by 0 (disabled by default). TRAP -16 Floating-point error: Generic floating-point error. TRAP -14 NIL reference / Stack overflow / Page fault: An incorrect memory reference occured. This could be the result of a NIL pointer reference or a stack overflow. TRAP -13 General protection fault: This is a generic exception generated by the processor. Refer to the processor documentation for more information. TRAP -12 Stack overflow: An incorrect memory reference occured in a stack segment. TRAP -6 Invalid instruction: An invalid machine instruction was encountered. This could be the result of a corrupted module in the heap. TRAP -4 Overflow: An integer overflow. These checks are disabled by default and can be enabled with the \v switch of the compiler. TRAP 0 Division by zero: A DIV (or MOD) by 0 occured, or the result of a divide was too big for the destination type. TRAP 1 WITH guard failed: The type guard in a WITH statement failed (can be disabled with the \t compiler switch). TRAP 2 CASE invalid: A CASE expression evaluated to a value that has no label, and the CASE has no ELSE clause. TRAP 3 RETURN missing: A function procedure ended without a RETURN statement. TRAP 4 Overflow: See TRAP -4. TRAP 5 Implicit type guard failed: An implicit type guard generated as part of an assignment failed (can be disabled with the \t compiler switch). TRAP 6 Type guard failed: An explicit type guard failed (can be disabled with the \t compiler switch). TRAP 7 Index out of range: An array index was out of range (can be disabled with the \x compiler switch). TRAP 8 ASSERT failed: A programmed ASSERT statement failed (can be disabled with the \a compiler switch). TRAP 9 Array dimension error: A dynamically computed array dimension was incorrect (e.g. negative dimension in a NEW). TRAP 13 Keyboard interrupt: A keyboard interrupt was generated with Ctrl-Break. TRAP 14 Out of memory: The requested memory allocation (NEW) could not be fulfilled. TRAP 15 Bad sector number: An incorrect sector number was detected. This could be the result of an error with on-disk file system structures, or memory corruption. TRAP 16 Disk full: The disk is almost full. Reboot to have the disk garbage collector run during startup. TRAP 17 Disk error: The disk driver encountered a hardware error. The local variable "err" or "res" contains further information. TRAP 18 File too large: A file was generated that is too large for the file system. TRAP 19 Buffer overflow: Generated by Files.ReadBytes and WriteBytes if the supplied buffer is too small. ------------------------------------------- cheers, j. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-26 11:43 ` jan.de.kruyf 2015-05-26 15:38 ` jan.de.kruyf @ 2015-05-28 23:39 ` Randy Brukardt 2015-05-29 8:51 ` Stefan.Lucks 1 sibling, 1 reply; 111+ messages in thread From: Randy Brukardt @ 2015-05-28 23:39 UTC (permalink / raw) <jan.de.kruyf@gmail.com> wrote in message news:20c56bea-2803-4aa9-a626-2d25e480df20@googlegroups.com... ... >Now Ada has grown with the crowd. >Ada95's syntax volume stands at roughly 3000 lexemes on par with C#. >C++ is slightly less at 2500 or so. > >The old man (working in Georg's garage :) found scientific reason to follow >the 'reduced >instruction set' trend, that was and still is, popular in hardware CPU >design. And came >up with Oberon, with stands at 700 lexemes. Other people mentioned it, but the number of pages is a horrible measure. Ada's standard was designed to be readable by actual programmers, thus it uses lots of extra descriptive text, shows lots of examples, and has lots of space-wasting internal headers. And, the Oberon standards contain no runtime library, that's a huge part of the Ada Standard. We've also got lots of reference indexes which are intended to make it easier to find things. So looking at the current Ada 2012+TC1 document: Total: 951 pages (PDF). Non-normative indexes, summarys, and tables: (Annex K-Q [106 pages], Table of Contents [10 pages], Index [53 pages]) [169 pages] ISO mandated boilerplate, acknowledgements, other useless cruft: 16 pages. Description of how the standard is organized (Chapter 1): 8 pages. Clauses totally devoted to examples: 9.11 (3 pages); 12.8 (2 pages); 11.4.3 (1 page); 13.11.6 (3 pages). [9 pages] Libraries included in the core description (half of 3.9 - 2 pages; most of 9.6, 9.6.1 - 8 pages; most of 13.11, 13.11.4, 13.11.5 - 5 pages). The core library (Annex A): 227 pages. Interfacing to foreign languages (mostly libraries): 28 pages. Specialized needs annexes (these are optional - Annex C-H): 138 pages. Obsolete stuff (Annex J): 14 pages. That leaves the actual language definition at 337 pages. To be fair, one could eliminate stuff not even contemplated by Oberon - tasks (Chapter 9, 40 pages), generics (Chapter 12, 18 pages not including the example removed earlier), and low-level programming (Chapter 13, 51 pages excluding the example removed earlier). So now we're at 228 pages. With some reformatting, and removing all of the introductory text, notes, and examples, we'd save at least 20% of that (probably more). So that means that an equivalently formatted Ada standard would probably be roughly 180 pages (or maybe 270 if we left everything in). Surely I could get the core of the Standard into 17 pages if I reformatted it enough (you'd probably need a magnifying glass to read it, though). Meaning that the number of pages doesn't mean much. Is that bloat? Dunno. It's certainly a lot of extra precision in describing things, making code following the standard more likely to be portable. Hardly any programming languages describe the process of elaboration, or carefully define how finalization happens, including in weird corner cases that aren't likely to actually happen. And so on. Assuming that your description of the syntax is accurate, the Oberon manual is clearly leaving out vast amounts of needed detail. (And no, you can't look at source of a compiler to "augment" a language standard!). The Ada syntax alone takes up 21 pages in the Ada standard. That means that the Oberon syntax should take up 21/3000*700 = 4.9 pages of text. That leaves precious little space to describe the visibility rules for packages (to take one nasty example). And, of course, Wirth himself has a long history of writing sloppy language standards and leaving when other people try to clean them up (Algol-W, Pascal, Modula, Modula 2, ...). He's a brilliant language designer, but he always has underdescribed standards. (That surely includes building standards without any library description, which is nonsense for any purpose.) Summary: standard page counts are meaningless. One can change them wildly by removing non-normative stuff, by reformatting, by leaving out the libraries that every programmer will need, and other stuff that has nothing whatsoever to do with content. Randy Brukardt, ARG Editor. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-28 23:39 ` Randy Brukardt @ 2015-05-29 8:51 ` Stefan.Lucks 2015-05-29 18:04 ` Jeffrey R. Carter 2015-05-29 21:51 ` Randy Brukardt 0 siblings, 2 replies; 111+ messages in thread From: Stefan.Lucks @ 2015-05-29 8:51 UTC (permalink / raw) [-- Attachment #1: Type: TEXT/PLAIN, Size: 3553 bytes --] On Thu, 28 May 2015, Randy Brukardt wrote: > That leaves the actual language definition at 337 pages. To be fair, one > could eliminate stuff not even contemplated by Oberon - tasks (Chapter 9, 40 > pages), generics (Chapter 12, 18 pages not including the example removed > earlier), and low-level programming (Chapter 13, 51 pages excluding the > example removed earlier). > > So now we're at 228 pages. With some reformatting, and removing all of the > introductory text, notes, and examples, we'd save at least 20% of that > (probably more). So that means that an equivalently formatted Ada standard > would probably be roughly 180 pages (or maybe 270 if we left everything in). Actually, you could get away with significantly less (I'd say, less than 100 pages) if you rewrote the manual in an Oberon-like (or Wirthian) style, i.e., a manual that tells the programmer what he or she needs to know, but leaves plenty of details unspecified which the compiler writer would need to know. Such as overloading and visibility rules. For programmers, some simple rules of thumb work most of the time. And if not, then the compiler will give a (somewhat unexpected) error message, giving the programmer the chance to fix the issue. I don't remember that by ignoring the rules I ever got an executable doing something unexpected. On the other hand, for independent and compatible implementations, the reference manual is a lot more specific. Hmmm, I wonder if a new "simplistic Ada reference manual" would be appreciated by programmers ... > And, of course, Wirth himself has a long history of writing sloppy language > standards and leaving when other people try to clean them up (Algol-W, > Pascal, Modula, Modula 2, ...). He's a brilliant language designer, but he > always has underdescribed standards. (That surely includes building > standards without any library description, which is nonsense for any > purpose.) Now *that* is unfair to Wirth! (Not the part with the brilliant language designer, but the other part.) Firstly, compare the Algol-W and Pascal reports with other language reports and standards proposed at the same time. Which of these had a remotely reasonable standard library? Even the Ada 83 standard library is rather unimpressive, IMHO. Both Algol-W and Pascal are much older than Ada 83. (I am too lazy to look up when Modula has been proposed.) Secondly, Oberon is younger than Ada 83, but is has been developed for a specific purpose. At least initially, Oberon was not meant to become a general purpose language. Also, even if there isn't much of a "Oberon standard library", there is the Oberon operating system and its library. Thirdly, there are two general alternative approaches to language design: 1. Design a language precisely specifying almost everything (and defining unspecified details explicitly as unspecified), like Ada, or 2. Design a language with the specification omitting plenty of minor details. Let peaople argue about it. Over time, and with practical experience from using that language, fill the gaps. Either approach has advantages and disadvantages. Of course, Ada was not an academic proposal, but a standard from the beginning, so approach 2 was never an option for Ada. ------ I love the taste of Cryptanalysis in the morning! ------ uni-weimar.de/de/medien/professuren/mediensicherheit/people/stefan-lucks --Stefan.Lucks (at) uni-weimar.de, Bauhaus-Universität Weimar, Germany-- ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-29 8:51 ` Stefan.Lucks @ 2015-05-29 18:04 ` Jeffrey R. Carter 2015-05-29 21:51 ` Randy Brukardt 1 sibling, 0 replies; 111+ messages in thread From: Jeffrey R. Carter @ 2015-05-29 18:04 UTC (permalink / raw) On 05/29/2015 01:51 AM, Stefan.Lucks@uni-weimar.de wrote: > > Hmmm, I wonder if a new "simplistic Ada reference manual" would be appreciated > by programmers ... That's a good idea. We could call it "Ada Distilled". -- Jeff Carter "Drown in a vat of whiskey. Death, where is thy sting?" Never Give a Sucker an Even Break 106 ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-29 8:51 ` Stefan.Lucks 2015-05-29 18:04 ` Jeffrey R. Carter @ 2015-05-29 21:51 ` Randy Brukardt 2015-05-30 10:28 ` jan.de.kruyf 1 sibling, 1 reply; 111+ messages in thread From: Randy Brukardt @ 2015-05-29 21:51 UTC (permalink / raw) <Stefan.Lucks@uni-weimar.de> wrote in message news:alpine.DEB.2.11.1505291006310.28509@debian... >On Thu, 28 May 2015, Randy Brukardt wrote: >> So now we're at 228 pages. With some reformatting, and removing all of >> the >> introductory text, notes, and examples, we'd save at least 20% of that >> (probably more). So that means that an equivalently formatted Ada >> standard >> would probably be roughly 180 pages (or maybe 270 if we left everything >> in). > >Actually, you could get away with significantly less (I'd say, less than >100 pages) if you rewrote the manual in an Oberon-like (or Wirthian) >style, i.e., a manual that tells the programmer what he or she needs to >know, but leaves plenty of details unspecified which the compiler writer >would need to know. Which only works if there is never going to be more than one compiler (i.e. Oberon, Eiffel). Otherwise, it will eventually be a disaster, or the details will get filled in, or both. ... >> And, of course, Wirth himself has a long history of writing sloppy >> language >> standards and leaving when other people try to clean them up (Algol-W, >> Pascal, Modula, Modula 2, ...). He's a brilliant language designer, but >> he >> always has underdescribed standards. (That surely includes building >> standards without any library description, which is nonsense for any >> purpose.) > >Now *that* is unfair to Wirth! (Not the part with the brilliant language >designer, but the other part.) Not really. He complained about other people's language designs not being precise (in his Turing Award speech in particular vis-a-vis PL/I), but his don't seem to need the same amount of detail. I call BS on that. Randy. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-29 21:51 ` Randy Brukardt @ 2015-05-30 10:28 ` jan.de.kruyf 2015-05-30 11:12 ` Dmitry A. Kazakov 0 siblings, 1 reply; 111+ messages in thread From: jan.de.kruyf @ 2015-05-30 10:28 UTC (permalink / raw) On Friday, May 29, 2015 at 11:51:40 PM UTC+2, Randy Brukardt wrote: > > >> So now we're at 228 pages. With some reformatting, and removing all of > >> the > >> introductory text, notes, and examples, we'd save at least 20% of that > >> (probably more). So that means that an equivalently formatted Ada > >> standard > >> would probably be roughly 180 pages (or maybe 270 if we left everything > >> in). > > > >Actually, you could get away with significantly less (I'd say, less than > >100 pages) if you rewrote the manual in an Oberon-like (or Wirthian) > >style, i.e., a manual that tells the programmer what he or she needs to > >know, but leaves plenty of details unspecified which the compiler writer > >would need to know. > > Which only works if there is never going to be more than one compiler (i.e. > Oberon, Eiffel). Otherwise, it will eventually be a disaster, or the details > will get filled in, or both. > > ... > >> And, of course, Wirth himself has a long history of writing sloppy > >> language > >> standards and leaving when other people try to clean them up (Algol-W, > >> Pascal, Modula, Modula 2, ...). He's a brilliant language designer, but > >> he > >> always has underdescribed standards. (That surely includes building > >> standards without any library description, which is nonsense for any > >> purpose.) > > > >Now *that* is unfair to Wirth! (Not the part with the brilliant language > >designer, but the other part.) > > Not really. He complained about other people's language designs not being > precise (in his Turing Award speech in particular vis-a-vis PL/I), but his > don't seem to need the same amount of detail. I call BS on that. > > Randy. Randy, I think his comments were deeply grounded, but in something I have not seen discussed in connection with Ada, or a few other languages for that matter. So I understand what you are saying, but I think it is groundless. For the old man a language is "right" when the EBNF diagram is "right" or perhaps "beautiful". (EBNF : Extended Backer Naus Formalism) Beautiful for a swiss person would then translate to: rather minimalistic, so you can see the structure well. This is a culture thing. And "right" would be mathematically right, because that is the whole object of drawing up an EBNF in the first place. He has a strong base in that, as he was a pupil of old Dijkstra, who programmed by contract in his day. The contract being the spec of the hardware not build yet. Those programs generally were faultless, since the mathematical basis was right. All his life Wirth has striven to get that part right, which is why he started over a few times to see if he could beautify that part a bit more. A good clear EBNF is for him (and for me) a very strong indicator of the precision and the ease of use of any language. Almost _everything_ follows from the 2 pages of EBNF. The compiler structure. The error detection. You name it. And from the discussion here it was quite clear that where Oberon needs text over and beyond the EBNF things immediately were murky and open to critique. In youthful courage (or silliness, depending where you stand) I once set out to "fix" something in Oberon. In those days memory was still expensive on a microcontroller so I set out to add a bit type, which would then be part of a byte (this being 8 bit world), which was very useful to me. I succeeded reasonably well and it worked ok. But the EBNF was bludgeoned beyond recognition and strangely so was the compiler. Especially the type tree. So I will not fall for that temptation again, I plainly do not have the mathematical background for such an undertaking, in hindsight it was not worth it. Before I could just consult the EBNF if I was unclear about some language construct, now I had to find my notes back. nah! So if you want to do any cleaning up I would say lets start with drawing up a EBNF of Ada. It will explain the critique from Dijkstra and Wirth, and it will explain the calls for a simpler Ada that we have heard since day 1 according to JPRosen. And the biggest bonus will be that we will be able to work faster, once we have a good understanding of the mathematical underpinnings of the language. j. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-30 10:28 ` jan.de.kruyf @ 2015-05-30 11:12 ` Dmitry A. Kazakov 2015-05-30 13:21 ` jan.de.kruyf 0 siblings, 1 reply; 111+ messages in thread From: Dmitry A. Kazakov @ 2015-05-30 11:12 UTC (permalink / raw) On Sat, 30 May 2015 03:28:51 -0700 (PDT), jan.de.kruyf@gmail.com wrote: > For the old man a language is "right" when the EBNF diagram is "right" or perhaps "beautiful". BNF describes the language syntax or a formal language. Formal language <<< programming language. Since 60's there is nothing interesting you could describe in BNF or in any other syntactic formalism. We do know how "good" syntax looks like. > All his life Wirth has striven to get that part right, You mean IF-THEN-ELSE, did he? (:-)) BTW, in all Wirth books I ever read he used directed graphs for syntax definitions instead of BNF. > So if you want to do any cleaning up I would say lets start with drawing > up a EBNF of Ada. ARM Annex P. That is less than 0.1% of what constitutes a programming language. > It will explain the critique from Dijkstra and Wirth, It wasn't for Ada syntax AFAIK. > And the biggest bonus will be that we will be able to work faster, once we > have a good understanding of the mathematical underpinnings of the > language. Which ones? There is no problem parsing Ada. It is trivial, in fact. There is little or nothing to understand there from a mathematical point of view. And this is not a problem people have with Ada. Even those, who dearly want curly brackets and = for assignment, should understand that grammatically there would be absolutely NO difference. Whether the end token is "end" or "}" matters only aesthetically. Few syntax problems Ada has come straight from Wirth himself. E.g. different syntax for declarations of subprogram types and values (bodies) from other types and values. Wirth seems never cared much about types. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-30 11:12 ` Dmitry A. Kazakov @ 2015-05-30 13:21 ` jan.de.kruyf 2015-05-30 15:00 ` Simon Clubley 2015-05-30 16:40 ` Dmitry A. Kazakov 0 siblings, 2 replies; 111+ messages in thread From: jan.de.kruyf @ 2015-05-30 13:21 UTC (permalink / raw) On Saturday, May 30, 2015 at 1:12:20 PM UTC+2, Dmitry A. Kazakov wrote: > BNF describes the language syntax or a formal language. Formal language <<< > programming language. Since 60's there is nothing interesting you could > describe in BNF or in any other syntactic formalism. We do know how "good" > syntax looks like. yes we do know that. But you did not address what I said yet. I am trying to stress this here: "The mathematical aspect dictates that the language be elegant, but simple to describe mathematically. Lisp-like languages are an example of languages for which this aspect is especially noticeable. Other ways to describe this aspect are to say that the language should have an inherent simplicity and be easy to learn, expressive and orthogonal. Expressiveness is the power of a language to solve problems. Orthogonality requires combinations of legal constructs to be themselves legal constructs." (fom http://web.cs.wpi.edu/~kal/courses/cs4533/module2/grammars.html) And please save me your comment about lisp, I do not know it, and it is immaterial in this discussion. > You mean IF-THEN-ELSE, did he? (:-)) It is funny that I dont recall ever having a problem with it. I do recall being caught for a sucker because I did not forsee the consequences of my own doings. Unless you talk of an issue before my time? . . > > BTW, in all Wirth books I ever read he used directed graphs for syntax > definitions instead of BNF. Did not see any lately but I vaguely remember the Apple Pascal book had them. > > > So if you want to do any cleaning up I would say lets start with drawing > > up a EBNF of Ada. > > ARM Annex P. Thank you! I missed that. The question to be resolved next is whether I can use it in day to day coding practice. > > That is less than 0.1% of what constitutes a programming language. No it is not, unless you call the library the other 99.9 %. In other words I suspect we are arguing about semantics here. > > > It will explain the critique from Dijkstra and Wirth, > > It wasn't for Ada syntax AFAIK. No I did not hear or see that either. It was much rougher than that, in good swiss (and dutch) fashion. :) > > > And the biggest bonus will be that we will be able to work faster, once we > > have a good understanding of the mathematical underpinnings of the > > language. > > Which ones? There is no problem parsing Ada. It is trivial, in fact. Yes it _is_ trivial . . . for a computer or a highly trained person like you. But we are talking here about the class of programmers you refer to in your next paragraph. > > And this is not a problem people have with Ada. Even those, who dearly want > curly brackets and = for assignment, should understand that grammatically > there would be absolutely NO difference. Whether the end token is "end" or > "}" matters only aesthetically. So now we could argue that it will be good to have both ways in the language. I mean it will be trivial to put into the ebnf and trivial to parse. And that specific group of programmers will like it, etc, etc. Or we can argue that they need to be educated in the syntax of Ada, as you say. Because clearly from other fields of human experience we know that it will only cause confusion. So similarly I argue ---Not that this language or that language is Better--- but that there is room for improvement in Ada, And where this improvement can be made will follow from the reading and trying to understand appendix P as the core document of the language. But the crowd likes to turn this into a language war around every corner, perhaps because from other fields of human experience it is also known that it is very difficult to do self refection. > Few syntax problems Ada has come straight from Wirth himself. E.g. > different syntax for declarations of subprogram types and values (bodies) > from other types and values. Wirth seems never cared much about types. > Believe it or not he did, but he has never been known to be paranoid. Dmitry, when I first got to know Ada I jumped on it specially for the nice multitude of types (since that is what I learned from the old man, to be typesafe) But after a few years of experience I find that I have often confused myself plainly with having too many types. So you could perhaps say that that was for lack of solid design. Could be. But then I find the same multitude of unchecked conversions back in gnat. So apparently it is not only me. By the way the other day I looked at your website and I stood in awe of the artworks you display there. Thank you. j. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-30 13:21 ` jan.de.kruyf @ 2015-05-30 15:00 ` Simon Clubley 2015-05-30 18:40 ` jan.de.kruyf 2015-05-30 16:40 ` Dmitry A. Kazakov 1 sibling, 1 reply; 111+ messages in thread From: Simon Clubley @ 2015-05-30 15:00 UTC (permalink / raw) On 2015-05-30, jan.de.kruyf@gmail.com <jan.de.kruyf@gmail.com> wrote: > On Saturday, May 30, 2015 at 1:12:20 PM UTC+2, Dmitry A. Kazakov wrote: >> You mean IF-THEN-ELSE, did he? (:-)) > > It is funny that I dont recall ever having a problem with it. I do > recall being caught for a sucker because I did not forsee the > consequences of my own doings. > Unless you talk of an issue before my time? . . It was a very well known issue in the early versions of some languages. Some reading for you: http://en.wikipedia.org/wiki/Dangling_else Simon. -- Simon Clubley, clubley@remove_me.eisner.decus.org-Earth.UFP Microsoft: Bringing you 1980s technology to a 21st century world ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-30 15:00 ` Simon Clubley @ 2015-05-30 18:40 ` jan.de.kruyf 0 siblings, 0 replies; 111+ messages in thread From: jan.de.kruyf @ 2015-05-30 18:40 UTC (permalink / raw) On Saturday, May 30, 2015 at 5:01:22 PM UTC+2, Simon Clubley wrote: http://en.wikipedia.org/wiki/Dangling_else Ah, that stinker. I remember still using some homegrown language about 15 years ago that had it. From a very well known motion control company in the US. In any case I just had a lovely time reading history. http://heerdebeer.org/ALGOL/The_History_of_ALGOL.pdf Beer has nothing about it, but the dangling else was in the original algol60 and Wirth did not notice when he did algol-W. It still is in his first ebnf. Sortly therafter it was found and fixed by everybody. I dont seem to be able to trace whodone it. But Algol was very much a laguage being born in those days, And lots of people were involved He brings the issue up in his Compiler construction book. As an exercise in spotting errors. j. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-30 13:21 ` jan.de.kruyf 2015-05-30 15:00 ` Simon Clubley @ 2015-05-30 16:40 ` Dmitry A. Kazakov 2015-05-30 20:52 ` jan.de.kruyf 2015-06-01 21:36 ` Randy Brukardt 1 sibling, 2 replies; 111+ messages in thread From: Dmitry A. Kazakov @ 2015-05-30 16:40 UTC (permalink / raw) On Sat, 30 May 2015 06:21:01 -0700 (PDT), jan.de.kruyf@gmail.com wrote: > On Saturday, May 30, 2015 at 1:12:20 PM UTC+2, Dmitry A. Kazakov wrote: > >> BNF describes the language syntax or a formal language. Formal language <<< >> programming language. Since 60's there is nothing interesting you could >> describe in BNF or in any other syntactic formalism. We do know how "good" >> syntax looks like. > > yes we do know that. But you did not address what I said yet. > > I am trying to stress this here: > "The mathematical aspect dictates that the language be elegant, but simple > to describe mathematically. I think this is untrue. Mathematical descriptions are based on the language of mathematics. Actually there are a lot of such languages depending on the sets of axioms taken and the methods of proofs considered acceptable, e.g. constructive mathematics etc. But that is beside the point, which is that whatever mathematical language you took, it is far more powerful than any programming language because its "computational" framework is infinite, sometimes uncountable infinite etc. Trivial mathematical descriptions may be incomputable, thus whatever elegancy of triviality they posses, you could not express that in any programming language. And conversely, trivial things in a programming language might be quite impossible to describe mathematically. E.g. anything that involves constraints. For example, brute force methods working fine just because it is a finite number of states. > Lisp-like languages are an example of > languages for which this aspect is especially noticeable. Or pattern matching languages, or relational algebra languages, elegant to someone's, should I say pervert, mind and unusable for decent software developing. > Other ways to describe this aspect are to say that the language should > have an inherent simplicity and be easy to learn, expressive and > orthogonal. Expressiveness is the power of a language to solve problems. That yardstick is too crude. Most languages are Turing-complete, you can solve any solvable problem in practically any programming language. It is the programming techniques and paradigms that make problems, not solvable, that is a precondition, but manageable, solutions economically feasible, safe etc. > Orthogonality requires combinations of legal constructs to be themselves > legal constructs." I understand the intention, but taken literally this is an evident rubbish. There are certain rules (an algebra) to apply to the language entities in order to obtain new entities. It is not just combinations (there are operations in the algebra) and not any combinations (there are constraints to which operations apply to which entities, yep, those pesky types again). >> That is less than 0.1% of what constitutes a programming language. > > No it is not, unless you call the library the other 99.9 %. > In other words I suspect we are arguing about semantics here. Of course it is the semantics which makes these 99.9%. Of course the popularity vote disregards semantics and see if there are curly brackets here. >>> And the biggest bonus will be that we will be able to work faster, once we >>> have a good understanding of the mathematical underpinnings of the >>> language. >> >> Which ones? There is no problem parsing Ada. It is trivial, in fact. > > Yes it _is_ trivial . . . for a computer or a highly trained person like you. Nobody ever claimed Ada less readable than C, Lisp, you name it. But yes, the language must be comfortable for trained people. How much of your productive time do you stay untrained? Either it takes one month to learn and then you are using it professionally all your time, or it is wasting time altogether. Ergo, learning curve is irrelevant. Though I bet that Ada is far easier to learn than C, C++ or any other fancy language. > Or we can argue that they need to be educated in the syntax of Ada, as you say. We can safely say that Ada is far more readable than EBNF. Even highly trained people could not say whether given sequence were legal according to given EBNF. > But the crowd likes to turn this into a language war around every corner, Not really. What I am trying to stress is that problems lie elsewhere. These problems are huge and nobody gives a damn. Curly brackets that's important! >> Few syntax problems Ada has come straight from Wirth himself. E.g. >> different syntax for declarations of subprogram types and values (bodies) >> from other types and values. Wirth seems never cared much about types. > > Believe it or not he did, but he has never been known to be paranoid. He himself wrote as a title: Algorithms + Data Structures = Programs > Dmitry, when I first got to know Ada I jumped on it specially for the nice > multitude of types (since that is what I learned from the old man, to be > typesafe) But after a few years of experience I find that I have often > confused myself plainly with having too many types. There is never too many types. It is simply so that you probably confined to the idea of algorithms and data being programs. > So you could perhaps say that that was for lack of solid design. Could be. > But then I find the same multitude of unchecked conversions back in gnat. > So apparently it is not only me. Even in c.l.a lot of people honestly believe in that idea. Then GNAT was started in Ada 83 times. And even now Ada's type system is too weak to express great many things. That is how you get Unchecked_Conversion, access types and Constraint_Error. > By the way the other day I looked at your website and I stood in awe of > the artworks you display there. Thanks. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-30 16:40 ` Dmitry A. Kazakov @ 2015-05-30 20:52 ` jan.de.kruyf 2015-05-31 8:31 ` Nasser M. Abbasi 2015-05-31 8:52 ` Dmitry A. Kazakov 2015-06-01 21:36 ` Randy Brukardt 1 sibling, 2 replies; 111+ messages in thread From: jan.de.kruyf @ 2015-05-30 20:52 UTC (permalink / raw) On Saturday, May 30, 2015 at 6:40:59 PM UTC+2, Dmitry A. Kazakov wrote: > I think this is untrue. Mathematical descriptions are based on the language > of mathematics. Actually there are a lot of such languages depending on the > sets of axioms taken and the methods of proofs considered acceptable, e.g. > constructive mathematics etc. But that is beside the point, which is that > whatever mathematical language you took, it is far more powerful than any > programming language because its "computational" framework is infinite, > sometimes uncountable infinite etc. Trivial mathematical descriptions may > be incomputable, thus whatever elegancy of triviality they posses, you > could not express that in any programming language. And conversely, trivial > things in a programming language might be quite impossible to describe > mathematically. E.g. anything that involves constraints. For example, brute > force methods working fine just because it is a finite number of states. The Dijkstra - Wirth school differs from you here, whether justified or not I cannot say, I am not a trained mathematician. All I can say is that 1. they came to their conclusions mainly because of their experience teaching undergraduates and through struggling with the matter themselves. 2. that I personally work a lot easier in a well defined elegant language. 3. Some great discoveries in computer science were made in those days by applying their homegrown mathematical rules. it is fascinating reading. At the same time I gladly give you that something as strictly defined as that does not fit well with Windows or Linux or you name it. I am doing a kernel module adaption at the moment and also Ada and Linux kernel fit very badly. > > Or pattern matching languages, or relational algebra languages, elegant to > someone's, should I say pervert, mind and unusable for decent software > developing. Yes I did try to make emacs behave on the odd occasion, but then I did not want to destroy the quote since it brings some worthwhile issues to debate. > > > Other ways to describe this aspect are to say that the language should > > have an inherent simplicity and be easy to learn, expressive and > > orthogonal. Expressiveness is the power of a language to solve problems. > > That yardstick is too crude. Most languages are Turing-complete, you can > solve any solvable problem in practically any programming language. True but not all are easily applied to a particular problem. Ada is very nice for big technical projects, C is good if you want curly brackets, Oberon is excellent when you dont know yet which language fits best, because you make up what you need out of the lowlevel blocks, but as soon as there is an operating system involved you are stuffed again. So perhaps the expressiveness and the simplicity are in relation to the problem you want to solve. > > > Orthogonality requires combinations of legal constructs to be themselves > > legal constructs." > > I understand the intention, but taken literally this is an evident rubbish. > There are certain rules (an algebra) to apply to the language entities in > order to obtain new entities. It is not just combinations (there are > operations in the algebra) and not any combinations (there are constraints > to which operations apply to which entities, yep, those pesky types again). > I am with you but Perhaps he means to say something, more in relation to the dangling else and similar issues. An if then else might be legal, but the combination of 2 of them might not be in some circumstances. After all this piece of text was written for an undergraduate class. > Of course it is the semantics which makes these 99.9%. Of course the > popularity vote disregards semantics and see if there are curly brackets > here. I note that here we move away from computer science and into woollen socks science. (Named after the habitual foot wear of the members of faculty) i.e. we will have to look at social science for an answer here. I am attracted to the D-W school exactly because it was shaped by the daily interaction with dumb people. Although Wirth might deny that. We may sit and talk here till the cows come home, but the convincing arguments will only come about in discussion with the curly bracket programmers. > We can safely say that Ada is far more readable than EBNF. Even highly > trained people could not say whether given sequence were legal according to > given EBNF. I just meant to say that I am comfortable using the EBNF as a reference to Oberon. It tells me everything I need to know in almost all cases. I just had a giggle and tried to look up "pure" in the bnf. It is not there. Then I went back to the index which referred me to some place about 10 lines below where I should have read.On reading the right section I decided better wait until tomorrow when I am fresh, my digestion will work better. So all in all I might perhaps say that the social sciences where not involved when the ARM was written, because believe it or not, there are certain editing rules that promote clarity. This is not to drag the ARM editors down, its just to point out that logically it is no doubt correct, but there are almost no people whose first language is "logic". > > > But the crowd likes to turn this into a language war around every corner, > > Not really. What I am trying to stress is that problems lie elsewhere. > These problems are huge and nobody gives a damn. Curly brackets that's > important! I was not blaming you really. But it does get annoying when a person has to take a week fighting all kind of attacks, just to get the crowd to do at least some reflexion on where we all are going with Ada. And based on social science I would say that the picture is not good. But then there is a lot of money behind it from a source that will never dry up (armaments) > > He himself wrote as a title: Algorithms + Data Structures = Programs Yes I got that book. What it covers is not bad, What is left out is the problem. But types hardly belong there. They are in chapter 2, 8, 9, 11 and 12 of the undergraduate book (at least in the Oberon version of those books) He turns that issue over and over and over until it is correct and elegant. That is not to say we cant expand on it, but the basis and more importantly the reason why, are there. > There is never too many types. It is simply so that you probably confined > to the idea of algorithms and data being programs. > My first experience of the issue was when I was barely literate in basic and started to do assemlby. I learned then to draw some circles representing the functions (algorithms if you like) and lines connecting them, representing function calls. In those function-call-lines I used to draw a big spiel, meticulously specifying the data that was exchanged. Those interfaces were much bigger than any of the rest. That was my first experience with (homegrown) typing of my data. And it worked like a bomb. All of a sudden I saw structure. This was long before the universities tought anything like it. So I am all for types, they bring clarity and abstraction in my programs, they might indicate units for physical quantities etc. But once we get to the very same unsigned quantity or menory address defined in 5 different places by 5 different people who then at the last minute quickly made a kludge to be able to read each others data, then I say let types be damned. I need to get on with the job here. > > Even in c.l.a lot of people honestly believe in that idea. Then GNAT was > started in Ada 83 times. And even now Ada's type system is too weak to > express great many things. That is how you get Unchecked_Conversion, access > types and Constraint_Error. > Yes I am aware of your work with unit measures. So there I agree. But when the programmers just use types cause you need to use types cause the boss says so, then the problem is not having this type or that type, then the problem is a lack of knowledge, clarity and elegance in the methods those programmers have been taught. This problem can only be fixed by taking there toys away from them for a bit. Then all the typing becomes meaningless, and suprise suprise gnat also suffers of that. I posted an example the other day involving passing a string to printk. I am aware that part of gnat is quite old, but then we come to the issue of the vested interests, which also must be listened to of course, but that is not about language that is about money. So we will have to see how the 2 can meet. cheers, j. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-30 20:52 ` jan.de.kruyf @ 2015-05-31 8:31 ` Nasser M. Abbasi 2015-05-31 8:52 ` Dmitry A. Kazakov 1 sibling, 0 replies; 111+ messages in thread From: Nasser M. Abbasi @ 2015-05-31 8:31 UTC (permalink / raw) On 5/30/2015 3:52 PM, jan.de.kruyf@gmail.com wrote: > I am doing a kernel module adaption at the moment and also Ada and Linux kernel fit very badly. > fyi, There was lots of discussion in making an Ada kernel/OS many years ago. I do not know what happend to these activities. Here are some threads: https://groups.google.com/forum/#!topic/comp.lang.ada/c9QzntBcAbI https://groups.google.com/forum/#!topic/comp.lang.ada/9FsfbVPsuuQ http://compgroups.net/comp.lang.ada/ada-os-based-on-minix3/1411184 http://compgroups.net/comp.lang.ada/open-source-ada-os/1412511 and more. --Nasser ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-30 20:52 ` jan.de.kruyf 2015-05-31 8:31 ` Nasser M. Abbasi @ 2015-05-31 8:52 ` Dmitry A. Kazakov 2015-06-04 15:31 ` jan.de.kruyf 1 sibling, 1 reply; 111+ messages in thread From: Dmitry A. Kazakov @ 2015-05-31 8:52 UTC (permalink / raw) On Sat, 30 May 2015 13:52:56 -0700 (PDT), jan.de.kruyf@gmail.com wrote: > On Saturday, May 30, 2015 at 6:40:59 PM UTC+2, Dmitry A. Kazakov wrote: > >>> Other ways to describe this aspect are to say that the language should >>> have an inherent simplicity and be easy to learn, expressive and >>> orthogonal. Expressiveness is the power of a language to solve problems. >> >> That yardstick is too crude. Most languages are Turing-complete, you can >> solve any solvable problem in practically any programming language. > > True but not all are easily applied to a particular problem. Yes, repeating the old saying - if C is a solution what was the problem? > So perhaps the expressiveness and the simplicity are in relation to the > problem you want to solve. That is abstraction level in relation to the problem space. But, Ada, C, etc thought to be universal purpose languages. If you wanted to define expressiveness for such languages you should forget the escape to relativism. > I note that here we move away from computer science and into woollen socks > science. (Named after the habitual foot wear of the members of faculty) > i.e. we will have to look at social science for an answer here. As if social "science" could give answers. > I am attracted to the D-W school exactly because it was shaped by the > daily interaction with dumb people. Students aren't dumb, not as programmers are! (:-)) >> We can safely say that Ada is far more readable than EBNF. Even highly >> trained people could not say whether given sequence were legal according to >> given EBNF. > > I just meant to say that I am comfortable using the EBNF as a reference to > Oberon. It tells me everything I need to know in almost all cases. That is strange because syntax is such a minor part and because in case of Ada it is very difficult (at least to me) to understand its BNF, because they tried to push precedence (and some other) rules into it. Luckily nobody, except maybe you, cares, since precedence rules are evident from the titles of ARM table of contents. >>> But the crowd likes to turn this into a language war around every corner, >> >> Not really. What I am trying to stress is that problems lie elsewhere. >> These problems are huge and nobody gives a damn. Curly brackets that's >> important! > > I was not blaming you really. But it does get annoying when a person has > to take a week fighting all kind of attacks, just to get the crowd to do > at least some reflexion on where we all are going with Ada. Since 1995, nowhere. > And based on social science I would say that the picture is not good. Well, bringing relativism back, since there is no progress in programming languages anyway Ada's position remains basically same. Nothing lost, nothing gained. Some bad features added, but we are free not to use them. > But > then there is a lot of money behind it from a source that will never dry > up (armaments) There is no money behind. Even if military contractors were interested in Ada, they are not, their money is miniscule compared to what is thrown into rubbish languages by civilians and that together is nothing compared to what is wasted on so-called tool-chains. >> He himself wrote as a title: Algorithms + Data Structures = Programs > > Yes I got that book. What it covers is not bad, What is left out is the problem. > But types hardly belong there. They do. The error is in trying to decompose any problem in terms of standard numeric types. This starts with the notion of algorithm (operating this rudimentary set of types) and data structures (amorph aggregation of the same limited set of entities). This is inherently low-level with no chance of abstraction to address complex or large problems. It looks minimalist and fine only in a text book. But those "dumb students" must become software engineers, some day... > But once we get to the very same unsigned quantity or menory address > defined in 5 different places by 5 different people who then at the last > minute quickly made a kludge to be able to read each others data, then I > say let types be damned. I need to get on with the job here. And? You will use some type for that anyway. What you describe, provided it is indeed the *same* problem space entity, is lack of reuse. This can have reasons as well, e.g. being a result of modular, separate design. This is solvable without Unchecked_Conversion, e.g. by ad-hoc supertypes, if Ada had them. > But when > the programmers just use types cause you need to use types cause the boss > says so, Really? I never saw such bosses. Usually a boss does not even know that there are types. > then the problem is not having this type or that type, then the > problem is a lack of knowledge, clarity and elegance in the methods those > programmers have been taught. See above. You still believe that everything is int. This is a clarity and elegance of machine code. Good luck with that! > I posted an example the other day involving passing a string to printk. As I said Ada lacks means for handle this. Just look at [Wide_][Wide_]{Character|String} mess in ARM. This is a mess because there is no way to sort it out. It must be the mess. Considering Wide_String and String same type would not resolve that mess. You will still have to convert one to another, because they are different entities in the *problem space*. They are there, whether you wanted or not. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-31 8:52 ` Dmitry A. Kazakov @ 2015-06-04 15:31 ` jan.de.kruyf 2015-06-04 17:23 ` Dmitry A. Kazakov 0 siblings, 1 reply; 111+ messages in thread From: jan.de.kruyf @ 2015-06-04 15:31 UTC (permalink / raw) On Sunday, May 31, 2015 at 10:52:03 AM UTC+2, Dmitry A. Kazakov wrote: > > Yes, repeating the old saying - if C is a solution what was the problem? Apparently writing a Linux Kernel?? (could not resist that one :) > > As if social "science" could give answers. I will tell my wife. To me they stumble and fall just like we do, but perhaps together we will gain a bit more knowledge. > > Students aren't dumb, not as programmers are! (:-)) So then I am still a student that walks wide eyed into any crap. :) > > That is strange because syntax is such a minor part and because in case of > Ada it is very difficult (at least to me) to understand its BNF, because > they tried to push precedence (and some other) rules into it. That is one of the issues I tried to argue. > Nothing lost, > nothing gained. Some bad features added, but we are free not to use them. I try just that and it has saved me from some more advanced stages of mental degradation. > what is wasted on so-called tool-chains. Because complexity breeds toolchains. Or: mankind wants to be fooled so fool them. > > But types hardly belong there. > > They do. This is the main reason why I wanted to answer this post: I tried to do some thinking while driving over the last few days. And I got the hint for what follows out of one of your old posts (I think) about having units of measurement as a type, etc. I came to the conclusion that perhaps 2 things got confused over the years in the typing scheme: 1. structural equivalence. (i.e. a storage specification) 2. name equivalence. (as long as the type names are equivalent it will work) These days we go for name equivalence and make new types or rename types to our hearts content. And so confuse things horribly for the person that tries to understand our code later, as I tried to indicate before. The whole type system originated with structural equivalence. On which we can build some interesting tricks then. We can use the type structure to admit or not admit a variable to an algebraic algorithm, and if this record is equivalent to, or a subset of that record we can feed them to some procedure for processing. It is just an algebraic assurance that the calculation will be successful. But the type system, as it has evolved over the years, has been overloaded with the name equivalence idea. And this to me is important in this discussion: it has not succeeded in solving all our problems. Ada did not fully fulfil the Dod spec in this respect. Read the Steelman document. And you were complaining that you could not put any safeguards into your iso units software. And I just complain bitterly that at times that I do not see the wood for the trees when trying to interface Ada to the kernel. So my solution would be to have, besides the "structural type" attribute to a variable, also a "what it is" or a "functional type" attribute to a variable. (perhaps the "functional" word is a bit overloaded here, bit it will work for the purpose of the discussion) The structural type is fine for the algebra and the storage. The functional type would serve to help us with all the other issues we have. Like naming the physical quality we deal with. Like assuring that our formulas work out according to the International System of Units. And we dont multiply apples with apples, etc. You name it, there is a wide field here. And to put that into the symbol table parse tree of a compiler is trivial, it is just a copy more or less of the existing type tree. At least to my understanding. But we will have to find the correct way of describing the operational interaction limitations of the different functional types we use. In using the language we will now have a choice: just use structural equivalence (what you blame me of :) or use the functional stuff as well. in order to build a secure program. In this way I would think that we will do away with a lot of 'unchecked conversions' which to my understanding were designed to fit a character onto an integer and the like. But at the moment 2 reasons for using them are confused: the perfectly legitimate ways (converting from one derived type to another) are mixed up with non-portable ways of use (fixing up the storage specification of a variable). By the way I did look at your scanner and parser stuff, it is impressive. but I thought Sparre might perhaps be better served when he understands the very basics first, and perhaps it is enough for what he wants. Only he can judge. > This is solvable without Unchecked_Conversion, e.g. by ad-hoc supertypes, > if Ada had them. Yes, I think what I described above would cater for that. > > Really? I never saw such bosses. Usually a boss does not even know that > there are types. Ah, they made the salesman the boss, shame! > They are there, whether you wanted or not. Yes, but not dreaming is deadly. So even if Ada might not see here way open to solve all this, perhaps her children might. The Ada design basics are from 1977 - 1983. And today it is still very compatible, so what do we expect. It is fantastic that it has stood up so long. Read this if you want to get some perspective on the speed of development: http://heerdebeer.org/ALGOL/The_History_of_ALGOL.pdf cheers, j. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-06-04 15:31 ` jan.de.kruyf @ 2015-06-04 17:23 ` Dmitry A. Kazakov 2015-06-04 20:14 ` Shark8 0 siblings, 1 reply; 111+ messages in thread From: Dmitry A. Kazakov @ 2015-06-04 17:23 UTC (permalink / raw) On Thu, 4 Jun 2015 08:31:14 -0700 (PDT), jan.de.kruyf@gmail.com wrote: > On Sunday, May 31, 2015 at 10:52:03 AM UTC+2, Dmitry A. Kazakov wrote: > >> Yes, repeating the old saying - if C is a solution what was the problem? > > Apparently writing a Linux Kernel?? (could not resist that one :) Oh, that problem! They should have let it be... (:-)) >> As if social "science" could give answers. > > I will tell my wife. > To me they stumble and fall just like we do, but perhaps together we will > gain a bit more knowledge. Yeah, so far answers social "science" ever gave, ultimately led to brainwashing closely followed by concentration camps... >> what is wasted on so-called tool-chains. > > Because complexity breeds toolchains. And the complexity is bred by mental laziness. >>> But types hardly belong there. >> >> They do. > > This is the main reason why I wanted to answer this post: > I tried to do some thinking while driving over the last few days. And I > got the hint for what follows out of one of your old posts (I think) about > having units of measurement as a type, etc. > > I came to the conclusion that perhaps 2 things got confused over the years > in the typing scheme: > 1. structural equivalence. (i.e. a storage specification) ? Structural equivalence is an attempt to infer the behavior of an object from its internal structure, or, more generally, from the way of its construction. A mathematician would not even bother with that idea because it clearly incomputable for anything beyond trivial. An engineer would tell you that it is rubbish because it does not abstract the problem space. How would you put the internal structure of the planet Mars to know if it were a planet different from Earth? > 2. name equivalence. (as long as the type names are equivalent it will work) Nominal equivalence is when things are known to be equivalent a priory, usually from the problem space, or per design. > These days we go for name equivalence and make new types or rename types > to our hearts content. And so confuse things horribly for the person that > tries to understand our code later, as I tried to indicate before. Sure, because he or she must share that a priory knowledge with you. If you name something Pi, the reader must know trigonometry already. What puzzles me, is why do you think that writing instead an infinite continued fraction would be better to communicate Pi? Pi is incomputable for humans as well. If all men were as silly as people believing in structural types equivalence we would still be living in stone age... > The whole type system originated with structural equivalence. Type systems appeared in mathematics after the disaster of naive set theories. http://en.wikipedia.org/wiki/Type_theory > So my solution would be to have, besides the "structural type" attribute > to a variable, also a "what it is" or a "functional type" attribute to a > variable. There is no "is". Neither in real world or in programming. Equivalence in mathematics is just a binary relation of certain properties. http://en.wikipedia.org/wiki/Equivalence_relation > Like assuring that our formulas work out according to the International > System of Units. And we dont multiply apples with apples, etc. Oh, but you do. Add diagonal of your monitor to the width of the button "A" on the Logitech keyboard. The measurement unit is exactly same: [m]. > And to put that into the symbol table parse tree of a compiler is trivial, > it is just a copy more or less of the existing type tree. At least to my > understanding. But we will have to find the correct way of describing the > operational interaction limitations of the different functional types we > use. You cannot handle measurement units on the syntax level. It is useless for most practical reasons. As an example consider writing a calculator dealing with dimensioned values. > In using the language we will now have a choice: > just use structural equivalence (what you blame me of :) or use the > functional stuff as well. in order to build a secure program. See the example above. Structural equivalence is fundamentally unsafe. It is a well known fact any C programmer learns on his hide - the "structure" of int is same even if one int is a file descriptor and another is the Avogadro constant... Why don't you look into the standard output descriptor when comparing 1 to 1? > In this way I would think that we will do away with a lot of 'unchecked > conversions' which to my understanding were designed to fit a character > onto an integer and the like. We do it away by making conversions checked, but automated. What Ada really lacks is subtyping beyond merely constrained instances. >> This is solvable without Unchecked_Conversion, e.g. by ad-hoc supertypes, >> if Ada had them. > > Yes, I think what I described above would cater for that. It would not, because the structures are evidently different. Here lies the fundamental flaw of the idea. The difference and the similarity do not come from the structure, they come from the problem space. The structures of Character 'A' and Wide_Character 'A' are different. Yet the problem space entity is exactly same. See? A software architect would say that the structure is an implementation detail, deserving no attention, never to be trusted at the client side. Deducing anything about the program logic from structures is a *bug* on the client's part. > The Ada design basics are from 1977 - 1983. And today it is still very > compatible, so what do we expect. It is fantastic that it has stood up so > long. It is because nothing interesting happened since 1995. We are living through the Dark Ages of computing... -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-06-04 17:23 ` Dmitry A. Kazakov @ 2015-06-04 20:14 ` Shark8 2015-06-04 23:12 ` Nasser M. Abbasi 0 siblings, 1 reply; 111+ messages in thread From: Shark8 @ 2015-06-04 20:14 UTC (permalink / raw) On Thursday, June 4, 2015 at 11:23:51 AM UTC-6, Dmitry A. Kazakov wrote: > > It is because nothing interesting happened since 1995. We are living > through the Dark Ages of computing... I blame the popularity of C/C++ and *nix. Perhaps the best things to come out of the FP domain is (a) a more widespread disdain for C's fast/loose typing, (b) the realization that global state and side-effects can/should be avoided when possible, and (c) the realization that C language-family syntax is not indicative of "a real programming language". ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-06-04 20:14 ` Shark8 @ 2015-06-04 23:12 ` Nasser M. Abbasi 0 siblings, 0 replies; 111+ messages in thread From: Nasser M. Abbasi @ 2015-06-04 23:12 UTC (permalink / raw) On 6/4/2015 3:14 PM, Shark8 wrote: > On Thursday, June 4, 2015 at 11:23:51 AM UTC-6, Dmitry A. Kazakov wrote: >> >> It is because nothing interesting happened since 1995. We are living >> through the Dark Ages of computing... > > I blame the popularity of C/C++ and *nix. In software, inertia is everything. Once something takes hold, it is very hard to impossible to change it or replace it, due to the huge inertia it has and the amount of investment made in it. For example, almost all software games are in C/C++, it is almost impossible to make the industry change this now. > Perhaps the best things to come out of the FP domain is (a) a more widespread >disdain for C's fast/loose typing, Well, it seems most of the new and popular languages these days are based on loose typing. Python? duck typing? Javascript? PHP? Perl? etc... Who needs strong typing, when there is a good debugger? :) >(b) the realization that global state and side-effects can/should be >avoided when possible, and (c) the realization that C language-family >syntax is not indicative of "a real programming language". > --Nasser ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-30 16:40 ` Dmitry A. Kazakov 2015-05-30 20:52 ` jan.de.kruyf @ 2015-06-01 21:36 ` Randy Brukardt 2015-06-04 15:22 ` jan.de.kruyf 1 sibling, 1 reply; 111+ messages in thread From: Randy Brukardt @ 2015-06-01 21:36 UTC (permalink / raw) "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> wrote in message news:1066il1b5nk21.ioykgza5bnsw.dlg@40tude.net... > On Sat, 30 May 2015 06:21:01 -0700 (PDT), jan.de.kruyf@gmail.com wrote: ... >>> Few syntax problems Ada has come straight from Wirth himself. E.g. >>> different syntax for declarations of subprogram types and values >>> (bodies) >>> from other types and values. Wirth seems never cared much about types. >> >> Believe it or not he did, but he has never been known to be paranoid. > > He himself wrote as a title: Algorithms + Data Structures = Programs Ah, yes, one of my old college textbooks. The professor of the class had never used it before, and we ended up spending lots of class-time trying to figure out how the algorithms should work. They were riddled with errors. Apparently, running the sample programs was a novel concept. (Dunno if those problems were fixed in a later edition, hopefully. I've heard from others that they thought the book was useful, so YMMV) Randy. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-06-01 21:36 ` Randy Brukardt @ 2015-06-04 15:22 ` jan.de.kruyf 0 siblings, 0 replies; 111+ messages in thread From: jan.de.kruyf @ 2015-06-04 15:22 UTC (permalink / raw) On Monday, June 1, 2015 at 11:36:57 PM UTC+2, Randy Brukardt wrote: > Ah, yes, one of my old college textbooks. The professor of the class had > never used it before, and we ended up spending lots of class-time trying to > figure out how the algorithms should work. They were riddled with errors. > Apparently, running the sample programs was a novel concept. (Dunno if those > problems were fixed in a later edition, hopefully. I've heard from others > that they thought the book was useful, so YMMV) > > Randy. Randy, you are confusing Stone Age with post-modernity again ;> From you writing I gather that that must have been shortly after the ALGOL age as described in the HeerdeBeer thesis above. I was trying my hand at basic at the time, so perhaps we all came a long way since then. cheers and keep smiling j. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-26 7:52 ` Jacob Sparre Andersen 2015-05-26 11:43 ` jan.de.kruyf @ 2015-05-27 13:41 ` jan.de.kruyf 1 sibling, 0 replies; 111+ messages in thread From: jan.de.kruyf @ 2015-05-27 13:41 UTC (permalink / raw) On Tuesday, May 26, 2015 at 9:52:39 AM UTC+2, Jacob Sparre Andersen wrote: > And how well would a team of student manage John McCormick's train > modeling course with each language? (I think McCormick is still > teaching? Can we get him to run that experiment?) > Half the experiment is done already. I forgot a bit. Since at the time I was not into motion control so much. http://www.ifr.mavt.ethz.ch/research/xoberon/ http://www.ifr.mavt.ethz.ch/research/xoberon/performance.html. A hexaglide is a 6 axes single head motion configuration that can be used as a milling machine for instance. Various universities have made many promises about it. But the market is slow. And there is an evening of free beer for those who can beat these performance figures on an stm32f7xx. in Ada. There should be little difference in raw speed. At the most the 604 is 1.5 times as fast but not as measured inside an Apple, Then the are about equal. I will see if I can twist an arm for the software. So far I only saw the package spec files of the system. Otherwise I am unfortunately still a bit overloaded at the moment cheers, j. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-25 20:04 ` Nasser M. Abbasi 2015-05-25 20:37 ` jan.de.kruyf @ 2015-05-25 23:05 ` Peter Chapin 2015-05-26 8:01 ` Sylvain Laperche 2015-05-26 8:17 ` Georg Bauhaus 1 sibling, 2 replies; 111+ messages in thread From: Peter Chapin @ 2015-05-25 23:05 UTC (permalink / raw) On Mon, 25 May 2015, Nasser M. Abbasi wrote: > I forgot Fortran. Here is the list again > > C++ : 1366 pages > Ada : 944 pages > Fortran : 675 pages > C : 552 pages > Pascal : 98 pages The size of the reference manual may (probably) says something about the complexity of the language, but I'm not sure what. It may also say something about the care with which the description was written. Many specifications are incomplete to one degree or another. Fully specifying all the fine details of even a simple language is likely to result in a longish reference manual. Fully specifying all the fine details of a complex language is likely to result in an enormous reference manual. That's only natural. Another point to keep in mind is that the size of the reference manuals above include, at least in most cases, information about the associated standard libraries. A simple language with a huge library will have a large manual. A language reference without any information about the library will, of course, be much smaller. I haven't read the Oberon Report but I can't help but wonder if it's leaving out a lot. Peter ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-25 23:05 ` Peter Chapin @ 2015-05-26 8:01 ` Sylvain Laperche 2015-05-26 8:20 ` Georg Bauhaus 2015-05-26 8:49 ` J-P. Rosen 2015-05-26 8:17 ` Georg Bauhaus 1 sibling, 2 replies; 111+ messages in thread From: Sylvain Laperche @ 2015-05-26 8:01 UTC (permalink / raw) On 2015-05-25, Peter Chapin <PChapin@vtc.vsc.edu> wrote: > I haven't read the Oberon Report but I can't help but wonder if it's > leaving out a lot. For a simple exemple: what happen when an integer overflow? - The program aborts? - The value silently wrap-around (2-complement behavior)? - Is it an undefined behavior (like in C)? Another one: what happens when there is an access out of the bounds of an array? A crash? A runtime check? undefined behavior (like C)? I did not find the answer in these 17 pages. It seems that it leaving out a lot indeed… ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-26 8:01 ` Sylvain Laperche @ 2015-05-26 8:20 ` Georg Bauhaus 2015-05-26 8:49 ` J-P. Rosen 1 sibling, 0 replies; 111+ messages in thread From: Georg Bauhaus @ 2015-05-26 8:20 UTC (permalink / raw) On 26.05.15 10:01, Sylvain Laperche wrote: > Another one: what happens when there is an access out of the bounds of an array? > A crash? A runtime check? undefined behavior (like C)? An answer might be in a suggestion to look at what your implementation happens to support. Vishap Oberon-2: r - check value ranges x - turn off array indices check ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-26 8:01 ` Sylvain Laperche 2015-05-26 8:20 ` Georg Bauhaus @ 2015-05-26 8:49 ` J-P. Rosen 2015-05-26 12:36 ` Simon Clubley 2015-05-26 17:11 ` Jeffrey R. Carter 1 sibling, 2 replies; 111+ messages in thread From: J-P. Rosen @ 2015-05-26 8:49 UTC (permalink / raw) Le 26/05/2015 10:01, Sylvain Laperche a écrit : > On 2015-05-25, Peter Chapin <PChapin@vtc.vsc.edu> wrote: >> I haven't read the Oberon Report but I can't help but wonder if >> it's leaving out a lot. > > For a simple exemple: what happen when an integer overflow? - The > program aborts? - The value silently wrap-around (2-complement > behavior)? - Is it an undefined behavior (like in C)? > > Another one: what happens when there is an access out of the bounds > of an array? A crash? A runtime check? undefined behavior (like C)? > > I did not find the answer in these 17 pages. It seems that it leaving > out a lot indeed… > I also downloaded the Oberon report and had a look at it (easy, only 17 pages). I'd say it is not to be compared with anything close to a standard. It's just a "report" that gives a vague idea of the language without addressing any serious issue. TBH, it claims that its fuzzy definitions are intended: "What remains unsaid is mostly left so intentionally, either because it is derivable from stated rules of the language, or because it would unnecessarily restrict the freedom of implementors." Translate: we don't care for portability. Another good one: Oberon's definition of a static expression: "A constant expression can be evaluated by a mere textual scan without actually executing the program." And the list of missing features is stunning, just some of them: No user defined integer types (only two integer types: BYTE and INTEGER, and they are /not/ incompatible), no enumeration types, no fixed points, arrays indexed from 0, no variant records, no exceptions, no tasking, no generics, no representation clauses, structural equivalence for array parameters, no user defined operators, no overloading, no overriding, etc... Looks more like a slightly improved Pascal appropriate for teaching than an industrial language. In short: if you miss most important features, and have only weak definitions for the rest, it is easy to have a small reference manual! -- J-P. Rosen Adalog 2 rue du Docteur Lombard, 92441 Issy-les-Moulineaux CEDEX Tel: +33 1 45 29 21 52, Fax: +33 1 45 29 25 00 http://www.adalog.fr ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-26 8:49 ` J-P. Rosen @ 2015-05-26 12:36 ` Simon Clubley 2015-05-26 13:39 ` J-P. Rosen 2015-05-26 17:11 ` Jeffrey R. Carter 1 sibling, 1 reply; 111+ messages in thread From: Simon Clubley @ 2015-05-26 12:36 UTC (permalink / raw) On 2015-05-26, J-P. Rosen <rosen@adalog.fr> wrote: > > "What remains unsaid is mostly left so intentionally, either because it > is derivable from stated rules of the language, or because it would > unnecessarily restrict the freedom of implementors." > > Translate: we don't care for portability. > The latter bit made me uneasy as well. > Another good one: Oberon's definition of a static expression: > "A constant expression can be evaluated by a mere textual scan without > actually executing the program." > > And the list of missing features is stunning, just some of them: > No user defined integer types (only two integer types: BYTE and INTEGER, > and they are /not/ incompatible), no enumeration types, no fixed points, > arrays indexed from 0, no variant records, no exceptions, no tasking, no > generics, no representation clauses, structural equivalence for array > parameters, no user defined operators, no overloading, no overriding, etc... > Be careful you don't turn Oberon into another Ada with slightly different syntax. While Oberon is too minimal, there is real potential for a easy to learn lightweight language which is safer than C and which can be used for all the things C is currently used for. When I was thinking about the possibility of a half-way language between C and Ada (I was thinking about something safer than C which wasn't as heavyweight as Ada) the above was the list of things I came up with which was missing from Oberon. I would have certainly added things like user defined integer types with ranges, enumeration types and a user definable array base index. (Basically the core low level features of Ada). I would not have added tasking or generics (this was a C language replacement). Given potential implementation issues (code written in this Oberon variant would have to interact with other languages), I wasn't sure about exceptions. Maybe local exceptions only. I was undecided about how strict to make the type conversion as well. I would never have tolerated silent conversions which cause data loss (integer to byte for example) but I was undecided about how strict to make things when going in the other direction. Given the goal in this theoretical exercise was to create a language to attract C programmers I was wondering how much the type system could be relaxed without compromising safety too much. (The language doesn't have to be as safe as Ada, it just has to be a lot better than C.) In addition, I would also have added syntax to implement atomic updating of partial aggregates as per my proposal which was turned into an AI (ai12-0127). This would allow you to get rid of C style bitmasks when updating device registers. I would also have dropped Oberon's case sensitivity or at least made the keywords lower case. I/O would be via an I/O library, not as part of the language. > Looks more like a slightly improved Pascal appropriate for teaching than > an industrial language. > But with the correct amendments, there's potential for growth just as happened with Pascal. Simon. -- Simon Clubley, clubley@remove_me.eisner.decus.org-Earth.UFP Microsoft: Bringing you 1980s technology to a 21st century world ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-26 12:36 ` Simon Clubley @ 2015-05-26 13:39 ` J-P. Rosen 2015-05-26 14:21 ` Dmitry A. Kazakov 2015-05-26 16:19 ` Shark8 0 siblings, 2 replies; 111+ messages in thread From: J-P. Rosen @ 2015-05-26 13:39 UTC (permalink / raw) Le 26/05/2015 14:36, Simon Clubley a écrit : > When I was thinking about the possibility of a half-way language between > C and Ada (I was thinking about something safer than C which wasn't as > heavyweight as Ada) the above was the list of things I came up with > which was missing from Oberon. (my collection of features was just to stress that the "17 pages" didn't mean a simpler language, only an incomplete an mostly undefined language - which reminds me of another good one: BYTE is compatible (both ways) with INTEGER, but there isn't a single word to tell what happens when you convert to BYTE a value outside 0..255) Now to your point. I've seen people wanting a "simpler Ada" ever since I attended the first presentation of the language by JDI in 1979... But things rapidly get tied together. You want user defined integer types, and no magic for IOs? Then you'll need packages and generics. Safe IOs also require exceptions. And you certainly want aggregates, because they are sooo convenient. The only things that could be detached are tasking and OOP. Of course not having the latter would be highly politically incorrect, which leaves us only with tasking. And this is not the hardest part to implement. (Note on the examples I took: in a previous life, I worked on an Ada83 compiler. It took me much more time to implement code generation for array aggregates than the whole design and implementation of the tasking system). -- J-P. Rosen Adalog 2 rue du Docteur Lombard, 92441 Issy-les-Moulineaux CEDEX Tel: +33 1 45 29 21 52, Fax: +33 1 45 29 25 00 http://www.adalog.fr ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-26 13:39 ` J-P. Rosen @ 2015-05-26 14:21 ` Dmitry A. Kazakov 2015-05-26 16:19 ` Shark8 1 sibling, 0 replies; 111+ messages in thread From: Dmitry A. Kazakov @ 2015-05-26 14:21 UTC (permalink / raw) On Tue, 26 May 2015 15:39:06 +0200, J-P. Rosen wrote: > You want user defined integer > types, and no magic for IOs? Then you'll need packages Yes, but unrelated to user-defined types. Packages are for modularity and separate compilation. Wirth's languages are notably weak in that respect. > and generics. No. Classes can be obtained without generics. It is static vs. dynamic polymorphism. > Safe IOs also require exceptions. And you certainly want aggregates, > because they are sooo convenient. Aggregates could be primitive subprograms. The syntax sugar of aggregates could be made open for user definitions. > The only things that could be detached are tasking and OOP. None of them could, and Ada's unsuccessful attempts perfectly illustrate that. > Of course > not having the latter would be highly politically incorrect, It has nothing to do with PC in any sense. If the language should support generic programming, there is no alternative to run-time classes. Generics are not a substitute because they do not prove named typed class-wide objects. They are simply untyped. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-26 13:39 ` J-P. Rosen 2015-05-26 14:21 ` Dmitry A. Kazakov @ 2015-05-26 16:19 ` Shark8 2015-05-26 20:51 ` J-P. Rosen 1 sibling, 1 reply; 111+ messages in thread From: Shark8 @ 2015-05-26 16:19 UTC (permalink / raw) On Tuesday, May 26, 2015 at 7:39:08 AM UTC-6, J-P. Rosen wrote: > > (Note on the examples I took: in a previous life, I worked on an Ada83 > compiler. It took me much more time to implement code generation for > array aggregates than the whole design and implementation of the tasking > system). That is amazing -- I never would have guessed that array aggregates would be more difficult than the entire tasking system. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-26 16:19 ` Shark8 @ 2015-05-26 20:51 ` J-P. Rosen 0 siblings, 0 replies; 111+ messages in thread From: J-P. Rosen @ 2015-05-26 20:51 UTC (permalink / raw) Le 26/05/2015 18:19, Shark8 a écrit : > On Tuesday, May 26, 2015 at 7:39:08 AM UTC-6, J-P. Rosen wrote: >> >> (Note on the examples I took: in a previous life, I worked on an Ada83 >> compiler. It took me much more time to implement code generation for >> array aggregates than the whole design and implementation of the tasking >> system). > > That is amazing -- I never would have guessed that array aggregates would be more difficult than the entire tasking system. > Yes. The order of evaluation of ranges and components, and the rule about empty arrays not raising Constraint_Error, makes any naive evaluation order wrong. And the order of evaluation is not the same for a bidimensional array and an array of arrays that have the same aggregate! Note: I mentionned it was Ada83. IIRC, things have been a bit relaxed since - quite a long time I didn't look into it. -- J-P. Rosen Adalog 2 rue du Docteur Lombard, 92441 Issy-les-Moulineaux CEDEX Tel: +33 1 45 29 21 52, Fax: +33 1 45 29 25 00 http://www.adalog.fr ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-26 8:49 ` J-P. Rosen 2015-05-26 12:36 ` Simon Clubley @ 2015-05-26 17:11 ` Jeffrey R. Carter 2015-05-28 23:49 ` Randy Brukardt 1 sibling, 1 reply; 111+ messages in thread From: Jeffrey R. Carter @ 2015-05-26 17:11 UTC (permalink / raw) On 05/26/2015 01:49 AM, J-P. Rosen wrote: >> > I also downloaded the Oberon report and had a look at it (easy, only 17 > pages). I'd say it is not to be compared with anything close to a > standard. It's just a "report" that gives a vague idea of the language > without addressing any serious issue. TBH, it claims that its fuzzy > definitions are intended: > > "What remains unsaid is mostly left so intentionally, either because it > is derivable from stated rules of the language, or because it would > unnecessarily restrict the freedom of implementors." > > Translate: we don't care for portability. That was my reaction to that sentence as well. Of course, the ARM has some of those, as well. There's no reason Integer couldn't be defined as type Integer is range -(2 ** 15) + 1 .. (2 ** 15) - 1; rather than being implementation defined with at least that range. That would enhance portability and decrease overuse of the predefined type. > And the list of missing features is stunning, just some of them: > No user defined integer types (only two integer types: BYTE and INTEGER, > and they are /not/ incompatible), no enumeration types, no fixed points, > arrays indexed from 0, no variant records, no exceptions, no tasking, no > generics, no representation clauses, structural equivalence for array > parameters, no user defined operators, no overloading, no overriding, etc... > > Looks more like a slightly improved Pascal appropriate for teaching than > an industrial language. Those are differences between Ada and Oberon. Whether they're "missing" from Oberon is a matter of opinion; clearly jan.de.kruyf@gmail.com doesn't think so. As to being "a slightly improved Pascal", having modules and terminators for compound statements is an improvement, but Pascal had enumeration types and array ranges with differing low bounds, and lacking those is going in the wrong direction IMO, so the overall improvement seems pretty close to nil. Anyway, if you took the ARM, got rid of all the things Oberon doesn't have, eliminated the precision of the definitions and any "unnecessary" verbiage, you'd probably end up close to Oberon's 17 pp. -- Jeff Carter "What's special about Agile is that it's a mix of the best and the worst." Bertrand Meyer 148 ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-26 17:11 ` Jeffrey R. Carter @ 2015-05-28 23:49 ` Randy Brukardt 2015-05-29 21:54 ` Randy Brukardt 0 siblings, 1 reply; 111+ messages in thread From: Randy Brukardt @ 2015-05-28 23:49 UTC (permalink / raw) "Jeffrey R. Carter" <spam.jrcarter.not@spam.not.acm.org> wrote in message news:mk29dv$l47$2@dont-email.me... ... > Anyway, if you took the ARM, got rid of all the things Oberon doesn't > have, > eliminated the precision of the definitions and any "unnecessary" > verbiage, > you'd probably end up close to Oberon's 17 pp. I think you could leave in most of the Ada features and still describe them with that level of precision. The one sentence that J-P quoted could replace the entirety of 4.9-4.9.1(5 pages). One probably could come up with a similar description of visibility, replacing the majority of Chapter 8 (16 pages). Shrink the fonts, eliminate the white-space, and voila! About 17 pages. Ergo, the whole discussion is silly. Which is probably why we're having it. :-) Randy. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-28 23:49 ` Randy Brukardt @ 2015-05-29 21:54 ` Randy Brukardt 2015-05-29 22:32 ` Jeffrey R. Carter 0 siblings, 1 reply; 111+ messages in thread From: Randy Brukardt @ 2015-05-29 21:54 UTC (permalink / raw) I wrote: > "Jeffrey R. Carter" <spam.jrcarter.not@spam.not.acm.org> wrote in message > news:mk29dv$l47$2@dont-email.me... > ... >> Anyway, if you took the ARM, got rid of all the things Oberon doesn't >> have, >> eliminated the precision of the definitions and any "unnecessary" >> verbiage, >> you'd probably end up close to Oberon's 17 pp. > > I think you could leave in most of the Ada features and still describe > them with that level of precision. The one sentence that J-P quoted could > replace the entirety of 4.9-4.9.1(5 pages). One probably could come up > with a similar description of visibility, replacing the majority of > Chapter 8 (16 pages). Shrink the fonts, eliminate the white-space, and > voila! About 17 pages. Besides, no one said anything about the page size. If we use coffee-table art book page sizes, and 6 point type, we can probably get the entire core RM in 17 pages without changes. ;-) > Ergo, the whole discussion is silly. Which is probably why we're having > it. :-) I couldn't have said it better myself. :-) :-) Randy. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-29 21:54 ` Randy Brukardt @ 2015-05-29 22:32 ` Jeffrey R. Carter 0 siblings, 0 replies; 111+ messages in thread From: Jeffrey R. Carter @ 2015-05-29 22:32 UTC (permalink / raw) On 05/29/2015 02:54 PM, Randy Brukardt wrote: > > Besides, no one said anything about the page size. If we use coffee-table > art book page sizes, and 6 point type, we can probably get the entire core > RM in 17 pages without changes. ;-) The PDF of the Oberon report linked to earlier in this thread used what looked like A4 pages with what appeared to be a 12-pt font, so let's use what that PDF used as the requirement for page and font size. -- Jeff Carter "Drown in a vat of whiskey. Death, where is thy sting?" Never Give a Sucker an Even Break 106 ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-25 23:05 ` Peter Chapin 2015-05-26 8:01 ` Sylvain Laperche @ 2015-05-26 8:17 ` Georg Bauhaus 1 sibling, 0 replies; 111+ messages in thread From: Georg Bauhaus @ 2015-05-26 8:17 UTC (permalink / raw) On 26.05.15 01:05, Peter Chapin wrote: > On Mon, 25 May 2015, Nasser M. Abbasi wrote: > >> I forgot Fortran. Here is the list again >> >> C++ : 1366 pages >> Ada : 944 pages >> Fortran : 675 pages >> C : 552 pages >> Pascal : 98 pages > > The size of the reference manual may (probably) says something about the complexity of the language, but I'm not sure what. It may also say something about the care with which the description was written. Many specifications are incomplete to one degree or another. Fully specifying all the fine details of even a simple language is likely to result in a longish reference manual. Fully specifying all the fine details of a complex language is likely to result in an enormous reference manual. That's only natural. Additionally, Ada, like others on this list, would be developed with backwards compatibility in mind. Wirth seems to have approached the matter differently. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-25 7:14 ` jan.de.kruyf 2015-05-25 12:26 ` Georg Bauhaus 2015-05-25 18:44 ` Shark8 @ 2015-05-28 22:46 ` Randy Brukardt 2015-05-28 23:18 ` Nasser M. Abbasi ` (2 more replies) 2 siblings, 3 replies; 111+ messages in thread From: Randy Brukardt @ 2015-05-28 22:46 UTC (permalink / raw) <jan.de.kruyf@gmail.com> wrote in message news:ac78c8c6-de94-4f92-afcb-c1ae78523245@googlegroups.com... ... > And statistics prove that point. I have written 1000th's of lines in > Oberon and > 1000th's of lines in Ada. Both highly technical software. >And I got exactly the same kind of errors on compiling and running: errors >caused > by my sloppy habits. And both the Oberon compiler that fits on a floppy (a > floppy, > not a stiffy) and Gcc which stands at over 1Gig of source in the latest > implementation, caught them equally well and also the runtime errors that > I caused > were exactly the same. Uh-huh. Janus/Ada 83 fit on and ran on floppies. (Heck, there wasn't anything else available on early MS-DOS.) Even the relatively tiny 5 1/4" floppies. It still would if you could find a machine that has floppies. The bloat is in GCC, not necessarily in Ada. The bloat in the Standard (such as it is) came from adding lots of stuff that people thought was necessary (but argubly isn't): tagged types and dispatching, interfaces, prefix calls, assertions, and (especially) containers. >So please explain to me why on earth I or DoD or ISO or anybody else needs >all the bloat to confuse us. We don't. As with all old languages, it's political. We can't remove old features (as that would break existing programs), so the only possibility is for the Standard to get bigger. It's also getting bigger because we've (me in particular) have been insisting on adding wording to fill holes, rather than just ignoring them. Based on my experience, I think a language standard with 17 pages is about 90% hole (unless, of course, the language doesn't actually do anything). I'd think it's getting close to time to start over with Ada, not because of any major problem, but simply the accumulation of cruft. The problem is that if you think its hard to convince people to use Ada with all of its track record, try doing that with a new language with no record. So I don't think there would be much of a market for that. Randy. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-28 22:46 ` Randy Brukardt @ 2015-05-28 23:18 ` Nasser M. Abbasi 2015-05-29 21:27 ` Randy Brukardt 2015-05-29 7:55 ` jan.de.kruyf 2015-05-29 9:31 ` Jacob Sparre Andersen 2 siblings, 1 reply; 111+ messages in thread From: Nasser M. Abbasi @ 2015-05-28 23:18 UTC (permalink / raw) On 5/28/2015 5:46 PM, Randy Brukardt wrote: > The problem is that > if you think its hard to convince people to use Ada with all of its track > record, try doing that with a new language with no record. So I don't think > there would be much of a market for that. If you mean it is hard to get people to get interested in new language with no record, then how can one explain the sudden popularity of many new languages such as swift, C# and others like them when they first appeared? They became popular from first day. Swift now is ranked 18 now on http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html and it was released by Apple, what, less than one year ago? http://en.wikipedia.org/wiki/Swift_%28programming_language%29 More are using Swift now than Ada. And Swift has no track record to speak of. But of course, it is from Apple, so this explains all of this popularity. May be if Apple releases an Ada version for the iPhone, call it "iAda" with GUI build in to make apps, then Ada would become popular overnight :) --Nasser ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-28 23:18 ` Nasser M. Abbasi @ 2015-05-29 21:27 ` Randy Brukardt 0 siblings, 0 replies; 111+ messages in thread From: Randy Brukardt @ 2015-05-29 21:27 UTC (permalink / raw) "Nasser M. Abbasi" <nma@12000.org> wrote in message news:mk87oj$hle$1@speranza.aioe.org... > On 5/28/2015 5:46 PM, Randy Brukardt wrote: > >> The problem is that >> if you think its hard to convince people to use Ada with all of its track >> record, try doing that with a new language with no record. So I don't >> think >> there would be much of a market for that. > > If you mean it is hard to get people to get interested in > new language with no record, then how can one explain the > sudden popularity of many new languages such as swift, C# and > others like them when they first appeared? You answer your own question below: it's the sponsor, not the language that matters. That's even true for Ada; something like it would have never gotten off the ground without the DoD support. > They became popular from first day. Swift now is ranked 18 now > on http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html > and it was released by Apple, what, less than one year ago? > > http://en.wikipedia.org/wiki/Swift_%28programming_language%29 > > More are using Swift now than Ada. And Swift has no track record > to speak of. But of course, it is from Apple, so this explains > all of this popularity. May be if Apple releases an Ada version for > the iPhone, call it "iAda" with GUI build in to make apps, then Ada > would become popular overnight :) Certainly. Randy. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-28 22:46 ` Randy Brukardt 2015-05-28 23:18 ` Nasser M. Abbasi @ 2015-05-29 7:55 ` jan.de.kruyf 2015-05-29 9:27 ` Simon Wright 2015-05-29 9:31 ` Jacob Sparre Andersen 2 siblings, 1 reply; 111+ messages in thread From: jan.de.kruyf @ 2015-05-29 7:55 UTC (permalink / raw) On Friday, May 29, 2015 at 12:46:28 AM UTC+2, Randy Brukardt wrote: > than just ignoring them. Based on my experience, I think a language standard > with 17 pages is about 90% hole (unless, of course, the language doesn't > actually do anything). Yes, the 17 pages say that things have been left unsaid, but the compiler stopped any adventures. Perhaps it was assumed known in those days, at least in Zurich, that you do the job properly or not at all? > > I'd think it's getting close to time to start over with Ada, not because of > any major problem, but simply the accumulation of cruft. The problem is that > if you think its hard to convince people to use Ada with all of its track > record, try doing that with a new language with no record. So I don't think > there would be much of a market for that. > > Randy. Yes . . . and then No. A telling sign is that Ada has not forked yet. That is either a sign of the great wisdom of the Ada high priests, or it does not evoke dreams . . . I would say that we could do with a 100 or 200 page "Ada language report" for the kids that have not learned how to read in this modern age. Otherwise I like to observe that a 'language X' program from the nineties normally does not compile anymore on Gcc. You have to fix the changes in technology first; and please spare me the reasons why, I know about it. But Also in Ada ways of doing things change slowly over time. So I'd say that we could have a compiler switch if needed once the cruft has been identified (new laguage war. . . ) Two practical observations worth their own thread perhaps: In the thread about the shortest path through a task Simon came up with some number for interrupt latency in Ravenscar that horrifies me. Surely the object of the exercise of having interrupts at all is defeated by now, At least in my application. (High speed motion control) -- In the example kernel module in the pegasoft book Ken does the following: ------------------------ -- Kernel Calls procedure Printk( s : string ); pragma import( C, printk, "printk" ); . . Printk("Hello,World!" & Character'val(10) & character'val(0)); . . ------------------------- This is off course a highly irreligious way of doing things. So I set out to do it the proper way via Interfaces.C and what,what. In the end after many lines of converting Ada string to C string, I could only point out to myself that at least I now had unchecked conversions and System.Addresses. So then, how do I assign a value to these observations, what is the lesson to be applied next time over? cheers, j. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-29 7:55 ` jan.de.kruyf @ 2015-05-29 9:27 ` Simon Wright 2015-05-29 10:23 ` jan.de.kruyf 2015-05-29 15:32 ` Simon Wright 0 siblings, 2 replies; 111+ messages in thread From: Simon Wright @ 2015-05-29 9:27 UTC (permalink / raw) jan.de.kruyf@gmail.com writes: > In the thread about the shortest path through a task Simon came up > with some number for interrupt latency in Ravenscar that horrifies > me. Surely the object of the exercise of having interrupts at all is > defeated by now, At least in my application. (High speed motion > control) To me, 6 us didn't seem too bad. You have to pay for using high-level constructs (high-ish, in the case of Ravenscar, of course). But then, I remember the manual-guide-torpedo-by-wire system where the team were pleased they'd got the feedback loop time (move joystick to response from torpedo on screen) down from 50 s to 15 s. When asked whether he found it a problem, the CPO said that submariners are used to taking things slowly :-) I should add, the RTS that I timed is based on FreeRTOS. Guess I should do the same timing with AdaCore's RTS. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-29 9:27 ` Simon Wright @ 2015-05-29 10:23 ` jan.de.kruyf 2015-05-29 12:01 ` G.B. 2015-05-29 15:32 ` Simon Wright 1 sibling, 1 reply; 111+ messages in thread From: jan.de.kruyf @ 2015-05-29 10:23 UTC (permalink / raw) On Friday, May 29, 2015 at 11:27:54 AM UTC+2, Simon Wright wrote: > To me, 6 us didn't seem too bad. You have to pay for using high-level > constructs (high-ish, in the case of Ravenscar, of course). Perhaps it was one of my notorious impercise expressions. I should have said "instructions" or may be "cpu cycles" > > But then, I remember the manual-guide-torpedo-by-wire system where the > team were pleased they'd got the feedback loop time (move joystick to > response from torpedo on screen) down from 50 s to 15 s. When asked > whether he found it a problem, the CPO said that submariners are used to > taking things slowly :-) In my previous life I was an officer at sea. I once stood for about 3 or 4 minutes waiting patiently for a big crash that could not be avoided anymore. We fully knew the magnitude of the error, but the PID output was limiting, so to speak. > > I should add, the RTS that I timed is based on FreeRTOS. Guess I should > do the same timing with AdaCore's RTS. Perhaps, but you will also find things. Here it is not a matter of having a bigger amplifier. I have to accept that technology that works well in a washing machine, is too slow for a high speed set-up. And I will have to adapt the basic premises of my technology. j. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-29 10:23 ` jan.de.kruyf @ 2015-05-29 12:01 ` G.B. 2015-05-29 13:43 ` jan.de.kruyf 0 siblings, 1 reply; 111+ messages in thread From: G.B. @ 2015-05-29 12:01 UTC (permalink / raw) On 29.05.15 12:23, jan.de.kruyf@gmail.com wrote: > I have to accept that technology that works well in a washing machine, is too slow for a high speed set-up. Nitpick: todays better washing machines would need to respond quickly to unbalance. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-29 12:01 ` G.B. @ 2015-05-29 13:43 ` jan.de.kruyf 0 siblings, 0 replies; 111+ messages in thread From: jan.de.kruyf @ 2015-05-29 13:43 UTC (permalink / raw) > > I have to accept that technology that works well in a washing machine, is too slow for a high speed set-up. > > Nitpick: todays better washing machines would need to > respond quickly to unbalance. specially when the shocks are worn. I dont think though that our Miele goes much beyond 20 or maybe 10 msec cycletime. From watching it doing its thing. I was merely referring to the micro controller and its common programming environment. As soon as you want to go below say 2 or 3 milliseconds control loop cycle time everything changes, whatever language you use. Unless you throw money at it and go for a high speed cpu. j. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-29 9:27 ` Simon Wright 2015-05-29 10:23 ` jan.de.kruyf @ 2015-05-29 15:32 ` Simon Wright 2015-05-29 15:57 ` jan.de.kruyf 1 sibling, 1 reply; 111+ messages in thread From: Simon Wright @ 2015-05-29 15:32 UTC (permalink / raw) Simon Wright <simon@pushface.org> writes: > I should add, the RTS that I timed is based on FreeRTOS. Guess I > should do the same timing with AdaCore's RTS. OK: same setup (at least as far as this exercise is concerned), compiled with -O2: 890 cycles, 5 us (on the 180 MHz STM32F429I-DISCO). ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-29 15:32 ` Simon Wright @ 2015-05-29 15:57 ` jan.de.kruyf 0 siblings, 0 replies; 111+ messages in thread From: jan.de.kruyf @ 2015-05-29 15:57 UTC (permalink / raw) On Friday, May 29, 2015 at 5:32:13 PM UTC+2, Simon Wright wrote: > > > I should add, the RTS that I timed is based on FreeRTOS. Guess I > > should do the same timing with AdaCore's RTS. > > OK: same setup (at least as far as this exercise is concerned), compiled > with -O2: 890 cycles, 5 us (on the 180 MHz STM32F429I-DISCO). Thank you Simon. So on a 407 it will be like 5.6 usecs. So we must not assume, but rather measure. Have a nice weekend. j. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-28 22:46 ` Randy Brukardt 2015-05-28 23:18 ` Nasser M. Abbasi 2015-05-29 7:55 ` jan.de.kruyf @ 2015-05-29 9:31 ` Jacob Sparre Andersen 2015-05-29 10:37 ` jan.de.kruyf ` (3 more replies) 2 siblings, 4 replies; 111+ messages in thread From: Jacob Sparre Andersen @ 2015-05-29 9:31 UTC (permalink / raw) Randy Brukardt wrote: > We don't. As with all old languages, it's political. We can't remove > old features (as that would break existing programs), But aren't the existing programs being compiled with compilers for the appropriate (old) versions of the language? How large is the actual benefit of maintaining practically full backwards compatibility? Isn't it more a matter of not being able to agree on what is important to keep, and what isn't? > I'd think it's getting close to time to start over with Ada, not > because of any major problem, but simply the accumulation of > cruft. The problem is that if you think its hard to convince people to > use Ada with all of its track record, try doing that with a new > language with no record. So I don't think there would be much of a > market for that. Isn't that in itself an argument for letting Ada 2020 be a major change, where backwards compatibility isn't as important as using our current knowledge to improve the language? I wouldn't want an Ada 2012 program to be accepted by an Ada 2020 compiler with a different meaning, but I wouldn't mind it if the Ada 2020 compiler told me that I have to do things differently in Ada 2020. Greetings, Jacob -- "It is very easy to get ridiculously confused about the tenses of time travel, but most things can be resolved by a sufficiently large ego." ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-29 9:31 ` Jacob Sparre Andersen @ 2015-05-29 10:37 ` jan.de.kruyf 2015-05-29 10:56 ` Björn Lundin ` (2 subsequent siblings) 3 siblings, 0 replies; 111+ messages in thread From: jan.de.kruyf @ 2015-05-29 10:37 UTC (permalink / raw) On Friday, May 29, 2015 at 11:31:33 AM UTC+2, Jacob Sparre Andersen wrote: > Randy Brukardt wrote: > > > We don't. As with all old languages, it's political. We can't remove > > old features (as that would break existing programs), > > But aren't the existing programs being compiled with compilers for the > appropriate (old) versions of the language? > > How large is the actual benefit of maintaining practically full > backwards compatibility? > > Isn't it more a matter of not being able to agree on what is important > to keep, and what isn't? > > > I'd think it's getting close to time to start over with Ada, not > > because of any major problem, but simply the accumulation of > > cruft. The problem is that if you think its hard to convince people to > > use Ada with all of its track record, try doing that with a new > > language with no record. So I don't think there would be much of a > > market for that. > > Isn't that in itself an argument for letting Ada 2020 be a major change, > where backwards compatibility isn't as important as using our current > knowledge to improve the language? I wouldn't want an Ada 2012 program > to be accepted by an Ada 2020 compiler with a different meaning, but I > wouldn't mind it if the Ada 2020 compiler told me that I have to do > things differently in Ada 2020. > > Greetings, > > Jacob > -- > "It is very easy to get ridiculously confused about the > tenses of time travel, but most things can be resolved > by a sufficiently large ego." Let me try to put in my 2 cents here: A while back I was asked to solve an issue on a 486 board, which you will still find in older industrial machines here. So first things first: do a full memory test. And there I was stuck for a full week trying to find / construct a stiffy that would boot and have a working memtest. I remember that I pulled out a very old gcc to re-compile the memtest source. Although gcc is supposedly fully backward compatible. I there had been a concious decision to change, and documemt the change, it would have been easy. But by trying to stay backward compatible a booboo slipped through. j. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-29 9:31 ` Jacob Sparre Andersen 2015-05-29 10:37 ` jan.de.kruyf @ 2015-05-29 10:56 ` Björn Lundin 2015-05-29 12:03 ` Peter Chapin 2015-05-29 20:57 ` Shark8 2015-05-29 21:45 ` Randy Brukardt 3 siblings, 1 reply; 111+ messages in thread From: Björn Lundin @ 2015-05-29 10:56 UTC (permalink / raw) On 2015-05-29 11:31, Jacob Sparre Andersen wrote: > Randy Brukardt wrote: > >> We don't. As with all old languages, it's political. We can't remove >> old features (as that would break existing programs), > > But aren't the existing programs being compiled with compilers for the > appropriate (old) versions of the language? Not necessarily. Our system often has a life expectancy of 15 +- 5 years. But the os/database/other tools does not. Once say Oracle say - no support available - which they do relatively fast - most customers wants a platform upgrade . That is - make the same system run on a newer os/db/whatever. And that includes a new Ada compiler. Ans one really nice thing about Ada is that is usually compiles and works right away. If compiler-vendor-change took place, some fiddling is usually present, but upgrading a system from one gnat to another is painless. You get tons of more warnings - and that is it. Another scenario is when a customer wants some 'newer' technology, like webbish stuff. To add AWS a relatively new compiler is needed. And that should compile that rest of the system too - even if old. > > How large is the actual benefit of maintaining practically full > backwards compatibility? > To us - very large. > Isn't it more a matter of not being able to agree on what is important > to keep, and what isn't? If you ask around enough, you will likely get answers that wants to keep 'odd' features. I - for example - love the separate construct. we use it allot. But I think not too many use it. -- Björn ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-29 10:56 ` Björn Lundin @ 2015-05-29 12:03 ` Peter Chapin 2015-05-29 21:00 ` Shark8 0 siblings, 1 reply; 111+ messages in thread From: Peter Chapin @ 2015-05-29 12:03 UTC (permalink / raw) [-- Attachment #1: Type: TEXT/PLAIN, Size: 520 bytes --] On Fri, 29 May 2015, Björn Lundin wrote: > If you ask around enough, you will likely get answers that wants to keep > 'odd' features. I - for example - love the separate construct. we use it > a lot. But I think not too many use it. I also like using subunits now and then. It seems like a good fit when I have a package with one unusually large subprogram that dominates the package's physical content, but is just not important enough, or logically distinct enough, to make into its own unit. Peter ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-29 12:03 ` Peter Chapin @ 2015-05-29 21:00 ` Shark8 0 siblings, 0 replies; 111+ messages in thread From: Shark8 @ 2015-05-29 21:00 UTC (permalink / raw) On Friday, May 29, 2015 at 6:03:12 AM UTC-6, Peter Chapin wrote: > On Fri, 29 May 2015, Björn Lundin wrote: > > > If you ask around enough, you will likely get answers that wants to keep > > 'odd' features. I - for example - love the separate construct. we use it > > a lot. But I think not too many use it. > > I also like using subunits now and then. It seems like a good fit when I > have a package with one unusually large subprogram that dominates the > package's physical content, but is just not important enough, or logically > distinct enough, to make into its own unit. > > Peter I find that happens in parsing; especially unserialization. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-29 9:31 ` Jacob Sparre Andersen 2015-05-29 10:37 ` jan.de.kruyf 2015-05-29 10:56 ` Björn Lundin @ 2015-05-29 20:57 ` Shark8 2015-05-29 21:36 ` Randy Brukardt 2015-05-29 21:45 ` Randy Brukardt 3 siblings, 1 reply; 111+ messages in thread From: Shark8 @ 2015-05-29 20:57 UTC (permalink / raw) On Friday, May 29, 2015 at 3:31:33 AM UTC-6, Jacob Sparre Andersen wrote: > > Isn't that in itself an argument for letting Ada 2020 be a major change, > where backwards compatibility isn't as important as using our current > knowledge to improve the language? I wouldn't want an Ada 2012 program > to be accepted by an Ada 2020 compiler with a different meaning, but I > wouldn't mind it if the Ada 2020 compiler told me that I have to do > things differently in Ada 2020. If we accept a breaking change, then we could clean up the [[Wide_]Wide_]Character and [[Wide_]Wide_]Strings. -- Randy had an interesting idea about that a while back (I forget the details though). If we went with a sort of "abstract type" idea we could we could simplify the Character/String-packages in the standard library. It might also give us a chance to look at allowing User-defined attributes... though that might be a bad idea (I like being able to look any particular attribute up in the standard Another thing that would be nice is a way to initialize containers in-source w/o functions -- but overloading the aggregates more than they already are to handle that might be far too much effort for the comparatively little gain. Also, a way to refer to indices when in an array-aggrigare would be nice; Ex: I:Array(1..4,1..4) of Integer := (others => (if I'Index(1) = I'Index(2) then 1 else 0)); ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-29 20:57 ` Shark8 @ 2015-05-29 21:36 ` Randy Brukardt 2015-06-01 22:20 ` Shark8 0 siblings, 1 reply; 111+ messages in thread From: Randy Brukardt @ 2015-05-29 21:36 UTC (permalink / raw) "Shark8" <onewingedshark@gmail.com> wrote in message news:288e200f-8379-45b3-8eb7-342564c920ef@googlegroups.com... On Friday, May 29, 2015 at 3:31:33 AM UTC-6, Jacob Sparre Andersen wrote: ... > Also, a way to refer to indices when in an array-aggrigare would be nice; > Ex: I:Array(1..4,1..4) of Integer := (others => (if I'Index(1) = > I'Index(2) then 1 else 0)); See AI12-0061-1. It was considered too big a change to put into the Corrigendum, else you'd already have it. The original proposal was part of Ada 9x, but it was one of many "nice-to-haves" that got dropped in the "scope reduction". And we didn't think of it again until it came here in 2013 (causing Adam to formally propose it on Ada-Comment). Randy. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-29 21:36 ` Randy Brukardt @ 2015-06-01 22:20 ` Shark8 0 siblings, 0 replies; 111+ messages in thread From: Shark8 @ 2015-06-01 22:20 UTC (permalink / raw) On Friday, May 29, 2015 at 3:36:15 PM UTC-6, Randy Brukardt wrote: > "Shark8" wrote in message > news:288e200f-8379-45b3-8eb7-342564c920ef... > On Friday, May 29, 2015 at 3:31:33 AM UTC-6, Jacob Sparre Andersen wrote: > ... > > Also, a way to refer to indices when in an array-aggrigare would be nice; > > Ex: I:Array(1..4,1..4) of Integer := (others => (if I'Index(1) = > > I'Index(2) then 1 else 0)); > > See AI12-0061-1. It was considered too big a change to put into the > Corrigendum, else you'd already have it. The original proposal was part of > Ada 9x, but it was one of many "nice-to-haves" that got dropped in the > "scope reduction". And we didn't think of it again until it came here in > 2013 (causing Adam to formally propose it on Ada-Comment). > > Randy. Nice! I did not know about that one. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-29 9:31 ` Jacob Sparre Andersen ` (2 preceding siblings ...) 2015-05-29 20:57 ` Shark8 @ 2015-05-29 21:45 ` Randy Brukardt 2015-05-29 23:12 ` Peter Chapin 3 siblings, 1 reply; 111+ messages in thread From: Randy Brukardt @ 2015-05-29 21:45 UTC (permalink / raw) "Jacob Sparre Andersen" <sparre@nbi.dk> wrote in message news:87a8wnu3v0.fsf@adaheads.sparre-andersen.dk... > Randy Brukardt wrote: > >> We don't. As with all old languages, it's political. We can't remove >> old features (as that would break existing programs), > > But aren't the existing programs being compiled with compilers for the > appropriate (old) versions of the language? Until they need some part upgraded. For example, I'm (slowly) moving my web and mail servers from Janus/Ada on a W2K machine to GNAT on a new Linux machine. It's likely that I'll want/need to use some new capabilities when that's done. Changing lots of code because someone didn't like some existing feature is unappealing. Similarly, I know that pretty much any Ada code that I have will still work if I need it in some program. Reuse is a valuable benefit of Ada, and that cuts across time as well as projects. > How large is the actual benefit of maintaining practically full > backwards compatibility? It's hard to say. Some people (Robert Dewar in particular) think we abandon compatibility far too easily in the ARG as it is. And we don't do that lightly as it is. He claims that compatibility issues discouraged many from using Ada 2005; the aspects and preconditions in Ada 2012 were enough to break through that barrier, but it would be easy for Ada 202y to fall into a similar trap (not enough important to make up for incompatibilities). > Isn't it more a matter of not being able to agree on what is important > to keep, and what isn't? No. There definitely is a group that think that almost any incompatibility is unacceptable. And someone is using every core feature (even stuff like generic formal in out parameters); how do you decide who's code is not important enough to support. >> I'd think it's getting close to time to start over with Ada, not >> because of any major problem, but simply the accumulation of >> cruft. The problem is that if you think its hard to convince people to >> use Ada with all of its track record, try doing that with a new >> language with no record. So I don't think there would be much of a >> market for that. > > Isn't that in itself an argument for letting Ada 2020 be a major change, > where backwards compatibility isn't as important as using our current > knowledge to improve the language? I wouldn't want an Ada 2012 program > to be accepted by an Ada 2020 compiler with a different meaning, but I > wouldn't mind it if the Ada 2020 compiler told me that I have to do > things differently in Ada 2020. Sure, it's an argument. But what's typically happened when languages made big breaks is that the new version is much less used than the original. That goes all the way back to Algol 60 vs. Algol 68. I doubt Ada could survive a much less used version. Randy. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-29 21:45 ` Randy Brukardt @ 2015-05-29 23:12 ` Peter Chapin 2015-05-30 9:10 ` Georg Bauhaus 0 siblings, 1 reply; 111+ messages in thread From: Peter Chapin @ 2015-05-29 23:12 UTC (permalink / raw) On Fri, 29 May 2015, Randy Brukardt wrote: >> Isn't that in itself an argument for letting Ada 2020 be a major >> change, where backwards compatibility isn't as important as using our >> current knowledge to improve the language? I wouldn't want an Ada 2012 >> program to be accepted by an Ada 2020 compiler with a different >> meaning, but I wouldn't mind it if the Ada 2020 compiler told me that I >> have to do things differently in Ada 2020. > > Sure, it's an argument. But what's typically happened when languages > made big breaks is that the new version is much less used than the > original. That goes all the way back to Algol 60 vs. Algol 68. I doubt > Ada could survive a much less used version. I'd hold up Python as an example of how things don't work well when you make too many breaking changes. Python 3 is incompatible with Python 2, yet after 6.5 years there are still (many? most?) projects out there that require Python 2. I don't follow the Python community that closely but my impression is that the plan to entice everyone over to Python 3 failed. Now they are stuck with maintaining two incompatible versions of the language into the arbitrary future. Peter ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-29 23:12 ` Peter Chapin @ 2015-05-30 9:10 ` Georg Bauhaus 0 siblings, 0 replies; 111+ messages in thread From: Georg Bauhaus @ 2015-05-30 9:10 UTC (permalink / raw) On 30.05.15 01:12, Peter Chapin wrote: > Now they are stuck with maintaining two incompatible versions of the language into the arbitrary future. Ruby and Perl got stuck too, here and there. One of the causes being when their string type was relying on C's char. At some point, the eighth's bit became meaningful, encoding and better types needing support in the language. (Just consider C's 127 + 1 if CHAR_BIT is 8, and dynamically linked libraries being used.) One effect on Python is that programmers cannot easily use many libraries that were built with 7 bit I/O in mind. Python's creator Guido van Rossum has left Google, so maybe Google will use their own Go language now, Python loosing a sponsor. From the technical point of view: 12345.67e9 does not make a programmer think about encoding of numeric literals, does it? Whereas "π" does, in all sorts of ways. While programmers do need numbers all the time, the same is perhaps not true about text. So, possibly computer scientists have created a huge language problem by building on the assumption that "text stuff", rarely needed as it is, is just like numeric literals. But "'A'" /= "65 ". Dammit! ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-22 19:41 ` J-P. Rosen 2015-05-22 20:04 ` kalvin.news @ 2015-05-23 13:01 ` Luke A. Guest 1 sibling, 0 replies; 111+ messages in thread From: Luke A. Guest @ 2015-05-23 13:01 UTC (permalink / raw) "J-P. Rosen" <rosen@adalog.fr> wrote: > To take an analogy: nobody would be so fool as to use a language > designed for making animations on web pages in a real-time context ;-) What? Like Java? ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-22 17:39 ` Simon Clubley 2015-05-22 17:51 ` kalvin.news @ 2015-05-22 17:57 ` Simon Wright 2015-05-22 18:31 ` jan.de.kruyf 1 sibling, 1 reply; 111+ messages in thread From: Simon Wright @ 2015-05-22 17:57 UTC (permalink / raw) Simon Clubley <clubley@remove_me.eisner.decus.org-Earth.UFP> writes: > What I would hope is that the designer uses unsigned integers for > those variables and, in order to make the code portable across > platforms, they used uint32_t and friends to encode within the program > what the actual required size of those variables need to be. When I was translating STM32F4 headers into Ada, I was able to convert the -fdump-ada-spec generated uint32_t into Interfaces.Unsigned_32, which seemed to work very well (though exceedingly thin, of course!) Bit of sed script: # Unsigned types in parameters/record components s/stdint_h.uint(8|16|32|64)_t/Interfaces.Unsigned_\1/g ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-22 17:57 ` Simon Wright @ 2015-05-22 18:31 ` jan.de.kruyf 0 siblings, 0 replies; 111+ messages in thread From: jan.de.kruyf @ 2015-05-22 18:31 UTC (permalink / raw) On Friday, May 22, 2015 at 7:57:23 PM UTC+2, Simon Wright wrote: > > When I was translating STM32F4 headers into Ada, I was able to convert > the -fdump-ada-spec generated uint32_t into Interfaces.Unsigned_32, > which seemed to work very well (though exceedingly thin, of course!) > > Bit of sed script: > > # Unsigned types in parameters/record components > s/stdint_h.uint(8|16|32|64)_t/Interfaces.Unsigned_\1/g Well Simon I would never feel bad about it. I bought myself a big bottle of variable-type stripper for doing the kernel module interface. I find life gets much easier that way.And the code more understandable. In the end it all means nothing, it is often just a whim of the coder. But to get serious: Yes they did mean something when the people first had the problem seeing the difference between 32bit code and 64bit code, little endian and big endian etc. But in Ada the only time it bites you is when you do low level ethernet stuff, and even then there are some tricks to keep it all straight without going to the extremes of having 5 different type names for the same thing. j. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-22 12:57 ` J-P. Rosen 2015-05-22 14:01 ` kalvin.news @ 2015-05-22 14:03 ` jan.de.kruyf 2015-05-22 15:21 ` David Botton 2015-05-22 15:31 ` Bob Duff 2015-05-22 14:25 ` G.B. ` (2 subsequent siblings) 4 siblings, 2 replies; 111+ messages in thread From: jan.de.kruyf @ 2015-05-22 14:03 UTC (permalink / raw) Well, Here is my 2 cents worth: I learned to program in basic and assembler in the 70's. Then I dabbled a bit in C and forgot quickly I ever did such a thing. All this until I found old Wirth's last creation: Oberon. I performed wonders in that language, with just a post-mortem stackframe debugger, if you can call it that. Strongly typed, concise, object oriented were I needed that, and expressive enough to do everything that needs doing, for any size project. And to cap it all the latest RM is all of 17 pages. Does that mean I have something against Ada? No not really, it is a very nice and cosy work environment, I enjoy it. But I will surely enjoy the day when the language lawyers learn to stop being logical and start to think, to quote Niels Bohr. The simple fact that there is only 17 pages to learn off by hart makes a person that knows the trade extremely productive. And far fewer mistakes are made as a result _because we know what we are doing_ and we are willing to do it!. The same cannot be said for Ada. If I must count the hours searching out how to do a thing in Ada, then it will not be very far of trying to figure out how to interface with C for instance. Please people if the basics are in place we do not need 1200 pages of ifs and buts. It is nonsense. All it does is show that show that we have the money and the brain power to carry on on the road chosen, just like has happened in any other language, as was enumerated above in this thread. Again I do not mean to say I have something against Ada, I enjoy it. But I do say that old Dijkstra was right when he said that Ada was a mess. We merely managed to make the mess managable enough since then, so we can work and so that it is at least better than some of the other creations around. Do I mean to say that George and Randy and Dmitry and others are not working hard and putting in lots of valuable time to make Ada better, off course not. I am merely making a plea for lean and mean. Because I know it _works_. Thank you j. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-22 14:03 ` jan.de.kruyf @ 2015-05-22 15:21 ` David Botton 2015-05-22 15:23 ` jan.de.kruyf 2015-05-22 15:31 ` Bob Duff 1 sibling, 1 reply; 111+ messages in thread From: David Botton @ 2015-05-22 15:21 UTC (permalink / raw) > All this until I found old Wirth's last creation: Oberon. What open source compilers (if there are) have a community right now for Oberon? David Botton ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-22 15:21 ` David Botton @ 2015-05-22 15:23 ` jan.de.kruyf 0 siblings, 0 replies; 111+ messages in thread From: jan.de.kruyf @ 2015-05-22 15:23 UTC (permalink / raw) On Friday, May 22, 2015 at 5:21:06 PM UTC+2, David Botton wrote: > > All this until I found old Wirth's last creation: Oberon. > > What open source compilers (if there are) have a community right now for Oberon? > > David Botton about 3 or 4 go look for them. I was not pushing Oberon, merely pushing lean and mean. It is worth the reflection. j. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-22 14:03 ` jan.de.kruyf 2015-05-22 15:21 ` David Botton @ 2015-05-22 15:31 ` Bob Duff 2015-05-22 15:48 ` jan.de.kruyf 1 sibling, 1 reply; 111+ messages in thread From: Bob Duff @ 2015-05-22 15:31 UTC (permalink / raw) jan.de.kruyf@gmail.com writes: > But I do say that old Dijkstra was right when he said that Ada was a > mess. Yeah, and look what we got instead. C++, for example. - Bob ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-22 15:31 ` Bob Duff @ 2015-05-22 15:48 ` jan.de.kruyf 0 siblings, 0 replies; 111+ messages in thread From: jan.de.kruyf @ 2015-05-22 15:48 UTC (permalink / raw) On Friday, May 22, 2015 at 5:31:05 PM UTC+2, Bob Duff wrote: > > > But I do say that old Dijkstra was right when he said that Ada was a > > mess. > > Yeah, and look what we got instead. C++, for example. > > - Bob Yes, and that was not Dijkstra's doing. It was mankind that chose. And I did say that I was not uncomfortable with Ada. Please read my post. This thread seems to think that we will look better if we can heap scorn on other languages. Well it says a lot about the people that participate, and surprisingly little about those other languages. Lets just pull together and make Ada better, That would be time well spend and much more enjoyable. j. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-22 12:57 ` J-P. Rosen 2015-05-22 14:01 ` kalvin.news 2015-05-22 14:03 ` jan.de.kruyf @ 2015-05-22 14:25 ` G.B. 2015-05-22 15:04 ` Bill White 2015-05-22 15:28 ` Bob Duff 4 siblings, 0 replies; 111+ messages in thread From: G.B. @ 2015-05-22 14:25 UTC (permalink / raw) On 22.05.15 14:57, J-P. Rosen wrote: > Le 22/05/2015 13:29, kalvin.news@gmail.com a écrit : >> Even C could be made more robust, if simple type checking is >> performed at compile time. For example, >> >> typedef int apples; >> >> typedef int oranges; >> >> apples a = 5; oranges o = a; >> >> should generate type check error as the types are definitely >> different types. Also, assigning enums to ints and ints to enums >> should be considered illegal. >> > I don't agree. C is a low level language, and good at that. Its types > are those of the machine: bytes and addresses, the rest is a (small > quantity of) syntactic sugar. Not sure this description of what C is in the eye of an Adaist will win an argument; first, it is not exactly right. (If myths say that int was influenced by PDP hardware 40 years ago, this doesn't seem to reflect C compilers in use today, or yesterday.) While the C type int is defined by the C standard, one needs to consult the implementation's docs to learn the specifics of int for a given implementation. Same for Ada! There would have been an opportunity to point out the extended possibilities that Ada offers for expressing expectations on types. But LS : String(1 .. 100_000); is not defined by the Ada LRM as an unequivocally valid piece of Ada source text, since Positive, and therefore String, are only defined to much the same extent that C's int is defined by C. OTOH, what happens if I'd write *(p + 100000-1) in a C program? Then, the C standard is explicit about what a byte is. A C int cannot be expressed as bytes of C. Nor is the behavior of int objects in borderline situations devoid of context in the standard. There also is no forced relationship of machine words and int for a C implementation: 32 bits on a 64 bit architecture is a valid choice. But that _is_ a source of trouble! The issues are elsewhere, and it seems like a good opportunity to show that, with Ada, there is actually more in the hands of a programmer to address issues that cannot be addressed in portable C source text; e.g., reactions to overflow. C is in many ways as strongly typed as Ada, just not everywhere, and that's worth pointing out, specifically addressing the typical problems that C programs tend to run into. C, in addition, has neither subtype constraints, nor derived types, nor language-defined representation expressions etc.. But is _does_ have named type equivalence: typedef struct apples { int amount; } Apples; typedef struct oranges { int amount; } Oranges; Oranges f() { Apples a = { .amount = 5 }; return a; } The definition triggers a compile time error: it is nor permissible to return a structurally equivalent struct apples when instead a struct oranges was named as the return type in f's profile. If the error is corrected, then the code produced, even when just modest optimization is requested, will be the same as if only a scalar type had been used. That is not to say that I'd expect C programmers to avoid bare int. Nor that the "solution" looks attractive. But it does confirm that to say that C is a weakly typed _language_ will be ignored by any C programmer in charge. Doing so falls short of being an argument. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-22 12:57 ` J-P. Rosen ` (2 preceding siblings ...) 2015-05-22 14:25 ` G.B. @ 2015-05-22 15:04 ` Bill White 2015-05-22 15:28 ` Bob Duff 4 siblings, 0 replies; 111+ messages in thread From: Bill White @ 2015-05-22 15:04 UTC (permalink / raw) On 2015-05-22, J-P. Rosen <rosen@adalog.fr> wrote: > Le 22/05/2015 13:29, kalvin.news@gmail.com a ?crit : >> Even C could be made more robust, if simple type checking is >> performed at compile time. For example, >> >> typedef int apples; >> >> typedef int oranges; >> >> apples a = 5; oranges o = a; >> >> should generate type check error as the types are definitely >> different types. Also, assigning enums to ints and ints to enums >> should be considered illegal. >> > I don't agree. C is a low level language, and good at that. C isn't good at anything except to serve as a bad example! > Its types are those of the machine: bytes and addresses Rather, C's types are those of C's virtual machine- C's view of the hardware. And that makes C unsuitable for systems programming and not very portable without defining your own types. Just because something is widely used doesn't mean it's suitable. There are other factors like price, availability, etc. Cheap (free) won long ago. > If you need strong typing, use a strongly typed language. But don't > blame C for not being strongly typed, it was simply not part of the > requirements. Agreed. But then the only requirements C ever really had were for ease of implementation. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-22 12:57 ` J-P. Rosen ` (3 preceding siblings ...) 2015-05-22 15:04 ` Bill White @ 2015-05-22 15:28 ` Bob Duff 2015-05-22 17:46 ` Simon Clubley 4 siblings, 1 reply; 111+ messages in thread From: Bob Duff @ 2015-05-22 15:28 UTC (permalink / raw) "J-P. Rosen" <rosen@adalog.fr> writes: > I don't agree. C is a low level language, and good at that. I say Ada is far superior to C for doing low-level programming. Address clauses, representation clauses, packed arrays, ... And Ada has the huge advantage that it doesn't force you into low-level programming when you don't need that. - Bob ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-22 15:28 ` Bob Duff @ 2015-05-22 17:46 ` Simon Clubley 2015-05-22 18:16 ` jan.de.kruyf 0 siblings, 1 reply; 111+ messages in thread From: Simon Clubley @ 2015-05-22 17:46 UTC (permalink / raw) On 2015-05-22, Bob Duff <bobduff@theworld.com> wrote: > "J-P. Rosen" <rosen@adalog.fr> writes: > >> I don't agree. C is a low level language, and good at that. > > I say Ada is far superior to C for doing low-level programming. > Address clauses, representation clauses, packed arrays, ... > Unfortunately, C has one major advantage over Ada which is why it's used for this kind of thing. Practically every platform out there has a freely available C compiler which supports the platform as a target so you can be sure you don't have to rewrite your C code in another language when you want to port your code to a new environment. Simon. -- Simon Clubley, clubley@remove_me.eisner.decus.org-Earth.UFP Microsoft: Bringing you 1980s technology to a 21st century world ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-22 17:46 ` Simon Clubley @ 2015-05-22 18:16 ` jan.de.kruyf 2015-05-22 19:01 ` Simon Wright 0 siblings, 1 reply; 111+ messages in thread From: jan.de.kruyf @ 2015-05-22 18:16 UTC (permalink / raw) On Friday, May 22, 2015 at 7:47:27 PM UTC+2, Simon Clubley wrote: > > > >> I don't agree. C is a low level language, and good at that. > > > > I say Ada is far superior to C for doing low-level programming. > > Address clauses, representation clauses, packed arrays, ... > > > > Unfortunately, C has one major advantage over Ada which is why it's > used for this kind of thing. Practically every platform out there has > a freely available C compiler which supports the platform as a target > so you can be sure you don't have to rewrite your C code in another > language when you want to port your code to a new environment. > > Simon. > > -- There is more to it than that Simon. I am looking at the moment at Linux Kernel code in order to write a module at least partly in Ada. What I find is that (based on C) the Kernel writers have developed their own idiom that interfaces extremely badly to any language of the Algol family, of which Ada is one. The inummerable #defines for inline routines are an example. (And it is proven that those inlines slow the system down by the way, but that Linus did not know when he started the bad habit). So basically its like writing your next novel in German. It might be a superior language ;) but it takes a real hobbyist to do it. So besides any compilers, or the quality (or the lack thereof) of any computer language, there is a deeply cultural aspect involved. j. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-22 18:16 ` jan.de.kruyf @ 2015-05-22 19:01 ` Simon Wright 2015-05-22 19:41 ` jan.de.kruyf 0 siblings, 1 reply; 111+ messages in thread From: Simon Wright @ 2015-05-22 19:01 UTC (permalink / raw) jan.de.kruyf@gmail.com writes: > (And it is proven that those inlines slow the system down by the way, > but that Linus did not know when he started the bad habit). I found that pragma Inline/Inline_Always slowed our PowerPC application quite a bit. Cache effects, I suppose. ^ permalink raw reply [flat|nested] 111+ messages in thread
* Re: Build language with weak typing, then add scaffolding later to strengthen it? 2015-05-22 19:01 ` Simon Wright @ 2015-05-22 19:41 ` jan.de.kruyf 0 siblings, 0 replies; 111+ messages in thread From: jan.de.kruyf @ 2015-05-22 19:41 UTC (permalink / raw) On Friday, May 22, 2015 at 9:01:11 PM UTC+2, Simon Wright wrote: > > > (And it is proven that those inlines slow the system down by the way, > > but that Linus did not know when he started the bad habit). > > I found that pragma Inline/Inline_Always slowed our PowerPC application > quite a bit. Cache effects, I suppose. Most likely, I did see some numbers but I forget where. j. ^ permalink raw reply [flat|nested] 111+ messages in thread
end of thread, other threads:[~2015-06-04 23:12 UTC | newest] Thread overview: 111+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2015-05-21 19:11 Build language with weak typing, then add scaffolding later to strengthen it? Nasser M. Abbasi 2015-05-21 19:29 ` AdaMagica 2015-05-22 7:27 ` Dmitry A. Kazakov 2015-05-22 7:42 ` Georg Bauhaus 2015-05-22 8:54 ` Nasser M. Abbasi 2015-05-22 11:29 ` kalvin.news 2015-05-22 12:57 ` J-P. Rosen 2015-05-22 14:01 ` kalvin.news 2015-05-22 14:34 ` kalvin.news 2015-05-23 11:09 ` Peter Chapin 2015-05-22 15:37 ` J-P. Rosen 2015-05-22 16:29 ` kalvin.news 2015-05-22 17:39 ` Simon Clubley 2015-05-22 17:51 ` kalvin.news 2015-05-22 19:41 ` J-P. Rosen 2015-05-22 20:04 ` kalvin.news 2015-05-22 20:32 ` Jeffrey R. Carter 2015-05-22 21:22 ` kalvin.news 2015-05-23 11:14 ` Peter Chapin 2015-05-23 12:42 ` Jeffrey R. Carter 2015-05-23 17:48 ` Simon Wright 2015-05-25 8:34 ` Pascal Obry 2015-05-25 10:22 ` Simon Wright 2015-05-25 18:12 ` Georg Bauhaus 2015-05-22 20:39 ` jan.de.kruyf 2015-05-28 22:33 ` Randy Brukardt 2015-05-29 6:56 ` jan.de.kruyf 2015-05-23 12:40 ` Georg Bauhaus 2015-05-25 7:14 ` jan.de.kruyf 2015-05-25 12:26 ` Georg Bauhaus 2015-05-25 18:44 ` Shark8 2015-05-25 19:54 ` jan.de.kruyf 2015-05-25 21:25 ` Shark8 2015-05-26 7:46 ` Georg Bauhaus 2015-05-26 8:12 ` Georg Bauhaus 2015-05-25 20:01 ` Nasser M. Abbasi 2015-05-25 20:04 ` Nasser M. Abbasi 2015-05-25 20:37 ` jan.de.kruyf 2015-05-26 7:52 ` Jacob Sparre Andersen 2015-05-26 11:43 ` jan.de.kruyf 2015-05-26 15:38 ` jan.de.kruyf 2015-05-28 23:39 ` Randy Brukardt 2015-05-29 8:51 ` Stefan.Lucks 2015-05-29 18:04 ` Jeffrey R. Carter 2015-05-29 21:51 ` Randy Brukardt 2015-05-30 10:28 ` jan.de.kruyf 2015-05-30 11:12 ` Dmitry A. Kazakov 2015-05-30 13:21 ` jan.de.kruyf 2015-05-30 15:00 ` Simon Clubley 2015-05-30 18:40 ` jan.de.kruyf 2015-05-30 16:40 ` Dmitry A. Kazakov 2015-05-30 20:52 ` jan.de.kruyf 2015-05-31 8:31 ` Nasser M. Abbasi 2015-05-31 8:52 ` Dmitry A. Kazakov 2015-06-04 15:31 ` jan.de.kruyf 2015-06-04 17:23 ` Dmitry A. Kazakov 2015-06-04 20:14 ` Shark8 2015-06-04 23:12 ` Nasser M. Abbasi 2015-06-01 21:36 ` Randy Brukardt 2015-06-04 15:22 ` jan.de.kruyf 2015-05-27 13:41 ` jan.de.kruyf 2015-05-25 23:05 ` Peter Chapin 2015-05-26 8:01 ` Sylvain Laperche 2015-05-26 8:20 ` Georg Bauhaus 2015-05-26 8:49 ` J-P. Rosen 2015-05-26 12:36 ` Simon Clubley 2015-05-26 13:39 ` J-P. Rosen 2015-05-26 14:21 ` Dmitry A. Kazakov 2015-05-26 16:19 ` Shark8 2015-05-26 20:51 ` J-P. Rosen 2015-05-26 17:11 ` Jeffrey R. Carter 2015-05-28 23:49 ` Randy Brukardt 2015-05-29 21:54 ` Randy Brukardt 2015-05-29 22:32 ` Jeffrey R. Carter 2015-05-26 8:17 ` Georg Bauhaus 2015-05-28 22:46 ` Randy Brukardt 2015-05-28 23:18 ` Nasser M. Abbasi 2015-05-29 21:27 ` Randy Brukardt 2015-05-29 7:55 ` jan.de.kruyf 2015-05-29 9:27 ` Simon Wright 2015-05-29 10:23 ` jan.de.kruyf 2015-05-29 12:01 ` G.B. 2015-05-29 13:43 ` jan.de.kruyf 2015-05-29 15:32 ` Simon Wright 2015-05-29 15:57 ` jan.de.kruyf 2015-05-29 9:31 ` Jacob Sparre Andersen 2015-05-29 10:37 ` jan.de.kruyf 2015-05-29 10:56 ` Björn Lundin 2015-05-29 12:03 ` Peter Chapin 2015-05-29 21:00 ` Shark8 2015-05-29 20:57 ` Shark8 2015-05-29 21:36 ` Randy Brukardt 2015-06-01 22:20 ` Shark8 2015-05-29 21:45 ` Randy Brukardt 2015-05-29 23:12 ` Peter Chapin 2015-05-30 9:10 ` Georg Bauhaus 2015-05-23 13:01 ` Luke A. Guest 2015-05-22 17:57 ` Simon Wright 2015-05-22 18:31 ` jan.de.kruyf 2015-05-22 14:03 ` jan.de.kruyf 2015-05-22 15:21 ` David Botton 2015-05-22 15:23 ` jan.de.kruyf 2015-05-22 15:31 ` Bob Duff 2015-05-22 15:48 ` jan.de.kruyf 2015-05-22 14:25 ` G.B. 2015-05-22 15:04 ` Bill White 2015-05-22 15:28 ` Bob Duff 2015-05-22 17:46 ` Simon Clubley 2015-05-22 18:16 ` jan.de.kruyf 2015-05-22 19:01 ` Simon Wright 2015-05-22 19:41 ` jan.de.kruyf
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox