comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Ada in command / control systems
Date: Wed, 6 Mar 2019 15:14:58 +0100
Date: 2019-03-06T15:14:58+01:00	[thread overview]
Message-ID: <q5okl1$ioe$1@gioia.aioe.org> (raw)
In-Reply-To: 1c62f33a-d3a0-4a64-b66f-c82328cfb52a@googlegroups.com

On 2019-03-06 10:05, Maciej Sobczak wrote:
>> Because the tool is claimed to state the "requirements". There can be
>> nothing above that.
> 
> What do you mean "nothing above that"? There can be many levels of requirements. Simulink (and such) is typically used at the level called Low Level Requirements (LLR for short). There is *a lot* above that. There might be even other models above that. And Simulink might not be the only thing used at its level, or not for all artifacts.

Thus it is simply code in some mostly declarative language. As such it 
must undergo testing, verification, validation etc.

> The fact that Simulink can generate code automatically is actually not important here,

It is a key feature allowing to circumvent normal software quality 
assertion and developing process.

> because that functionality need not be used - which,

I don't think there are many people who could write code from a 
non-trivial Simulink diagram. It is far more difficult than writing 
assembler code from Ada program.

>> The source code is complete per definition, otherwise you could not
>> compile and build the solution from it.
> 
> Which also means that it is the lowest level representation of the system that we should care about. The question is, whether it is the only representation that we need. If we need something above that, what it should be?

The question is the purpose of? For example, the purpose of writing pay 
checks for the developers team. Certainly you might have something 
useful for that. Or something more close, getting the top managers off 
the back of developers. Some PPT presentation would be of great help. 
You should state the purpose first.

>> There are lots of concerns when calling s-function, e.g. when the block
>> containing this function is in the feedback loop.
> 
> Sure, and there are concerns about source code being reentrant or not, or being thread-safe or not, or being exception-safe or not, or being recursive when it should not be, and so on. It's not like source is concern-free.

This is not comparable. When writing code in a normal language 
programmers know the limitation of the mental model they use, e.g. 
single thread of control, ignored side effects on the CPU, on memory, on 
peripheral states, time sharing etc. There are lots of red lines and 
alarm bells each competent programmer knows. With Simulink models and 
black boxes of s-functions nobody knows anything. Moreover, nobody is 
competent as the proclaimed purpose of all exercise was: any moron can 
design quality software in Simulink knowing nothing about programming. 
But that is a blatant lie. One must know everything about programming, 
control, about numeric methods, and about domain-space problem in order 
to use Simulink en large.

>> Programming languages have means
>> for proper encapsulation and insulation the side effects.
>> Domain-specific languages have nothing of this sort.
> 
> Why? I see no reason why they should not have it.

Because they do not focus on software design, but rather on the domain. 
General-purpose languages address software design problems and design 
artifacts as well as second-order problems arising from solutions of the 
first-order ones. These issues are absent in the problem space. There is 
no way to map the problem space into a finite state machine with a full 
load of other constraints. If we could we would not need programmers at all.

>> It is the same paradigm and after a half of century we more or less know
>> how to write reusable components in C and Ada.
> 
> And you have the whole libraries (built-in and COTS) of reusable modules or operators in Simulink (and similar), too. People just drag'n'drop filters, amplifiers, counters, and whatever other stuff they need into their projects and it seems to work. Why should they come back to source?

Because a large software system cannot be built this way. It is way too 
low-level. The filter corresponds to an algorithm like bubble sort. You 
come nowhere with only that sort of things in a normal language without 
a huge language machinery of all sorts of polymorphism, substitutability 
checks, modularity support etc.

BTW. A classic example with filters is changing filter parameters. You 
do it in Simulink and the roller dynamometer goes to the ground, race 
condition.

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de


  reply	other threads:[~2019-03-06 14:14 UTC|newest]

Thread overview: 84+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-02-25  6:51 Ada in command / control systems Jesper Quorning
2019-02-25  8:24 ` Dmitry A. Kazakov
2019-02-25  9:44   ` Jesper Quorning
2019-02-25 15:54     ` Dmitry A. Kazakov
2019-02-25 13:50   ` russ lyttle
2019-02-25 14:29     ` gautier_niouzes
2019-02-25 15:25     ` Simon Wright
2019-02-25 19:21       ` russ lyttle
2019-02-26  4:50         ` J-P. Rosen
2019-02-26 15:50           ` Simon Wright
2019-02-26 22:10             ` lyttlec
2019-02-26 22:39               ` Niklas Holsti
2019-02-26 23:09               ` Simon Wright
2019-02-27 13:22                 ` russ lyttle
2019-02-27 14:17                   ` Niklas Holsti
2019-02-27 17:49                     ` russ lyttle
2019-02-25 19:53     ` Tero Koskinen
2019-02-25 20:15       ` russ lyttle
2019-03-01 14:56     ` fabien.chouteau
2019-03-01 16:58       ` Simon Wright
2019-03-01 21:19         ` russ lyttle
2019-03-01 22:32           ` fabien.chouteau
2019-03-01 23:24             ` russ lyttle
2019-02-25 21:18   ` Jesper Quorning
2019-02-26  9:28     ` Maciej Sobczak
2019-02-26 11:01       ` Dmitry A. Kazakov
2019-02-26 21:25         ` Maciej Sobczak
2019-02-27  9:33           ` Dmitry A. Kazakov
2019-02-27 20:46             ` Maciej Sobczak
2019-02-27 21:55               ` Dmitry A. Kazakov
2019-02-28 13:12                 ` Maciej Sobczak
2019-02-28 17:43                   ` Dmitry A. Kazakov
2019-03-01  9:22                     ` Maciej Sobczak
2019-03-01 10:46                       ` Dmitry A. Kazakov
2019-03-04  7:03                         ` Maciej Sobczak
2019-03-04 14:38                           ` Dmitry A. Kazakov
2019-03-05  9:33                             ` Maciej Sobczak
2019-03-05 16:09                               ` Dmitry A. Kazakov
2019-03-06  9:05                                 ` Maciej Sobczak
2019-03-06 14:14                                   ` Dmitry A. Kazakov [this message]
2019-03-07  7:02                                     ` Maciej Sobczak
2019-03-07  9:25                                       ` Dmitry A. Kazakov
2019-03-08  7:19                                         ` Maciej Sobczak
2019-03-08 11:08                                           ` Dmitry A. Kazakov
2019-03-08 17:00                                             ` Simon Wright
2019-03-08 17:38                                               ` Dmitry A. Kazakov
2019-03-05  7:18                   ` G. B.
2019-03-05  9:28                     ` Dmitry A. Kazakov
2019-03-05  9:51                       ` Maciej Sobczak
2019-03-05 16:15                         ` Dmitry A. Kazakov
2019-03-06 22:02                           ` Randy Brukardt
2019-03-05 17:55                         ` Niklas Holsti
2019-03-05 21:06                           ` Simon Wright
2019-03-06  7:26                           ` G. B.
2019-03-06  8:22                             ` Dmitry A. Kazakov
2019-03-06 12:04                               ` Simon Wright
2019-03-07  7:35                               ` G. B.
2019-03-07  9:25                                 ` Dmitry A. Kazakov
2019-03-06  9:17                           ` Maciej Sobczak
2019-03-08 22:45                           ` russ lyttle
2019-03-09  8:16                             ` Simon Wright
2019-03-09  8:59                               ` Dmitry A. Kazakov
2019-03-09 18:47                                 ` russ lyttle
2019-03-09 20:06                                 ` G.B.
2019-03-09 20:38                                   ` Dmitry A. Kazakov
2019-03-09 18:34                               ` russ lyttle
2019-03-09 19:28                                 ` Simon Wright
2019-03-10 21:13                                   ` lyttlec
2019-03-11  8:56                                     ` Simon Wright
2019-03-11 14:27                                       ` russ lyttle
2019-03-11 17:01                                         ` Simon Wright
2019-03-11 21:55                                           ` russ lyttle
2019-03-05 11:59                       ` russ lyttle
2019-03-05 18:18                         ` Dmitry A. Kazakov
2019-03-06  2:01                           ` lyttlec
2019-03-06  8:29                             ` Dmitry A. Kazakov
2019-02-26 15:54       ` Simon Wright
2019-02-26 21:43         ` Maciej Sobczak
2019-02-26 22:45           ` Simon Wright
2019-02-27  8:41             ` Dmitry A. Kazakov
2019-02-27 20:55             ` Maciej Sobczak
2019-02-27 21:26               ` Simon Wright
2019-02-27 22:08                 ` Dmitry A. Kazakov
2019-02-27 11:04       ` Jesper Quorning
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox