comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Running a preprocessor from GPS?
Date: Sat, 1 Aug 2015 09:48:16 +0200
Date: 2015-08-01T09:48:16+02:00	[thread overview]
Message-ID: <1skv40112ytpq.1natkyhrl6jk7$.dlg@40tude.net> (raw)
In-Reply-To: 7e653a88-e690-431a-9df9-3fc691466e08@googlegroups.com

On Fri, 31 Jul 2015 11:20:35 -0700 (PDT), EGarrulo wrote:

> On Friday, July 31, 2015 at 7:54:52 PM UTC+2, Jeffrey R. Carter wrote:
>> Many of the "design patterns" are actually implementation patterns to work
>> around deficiencies in the languages used in the book. An obvious example is the
>> "singleton pattern". In Ada, a singleton is simply a pkg. It's only a problem
>> that needs a pattern in languages that lack modules.
> 
> But a singleton would be instantiated when the "Get_Instance" function gets
> called by client code, not when a module gets loaded.  Or does Ada load a package
> at the first call?

Well, since other responses regarding singletons were IMO wrong. Here is an
answer from the OO POV.

In Ada singleton is achieved directly by the language means.

[ When Ada was designed there was no pattern stuff, which Jeffrey correctly
characterized as workarounds.  Yet Ada designers understood the problem,
maybe unconsciously, and resolved it at the language level. ]

Ada's singleton is an object of anonymous type. Many types allow object
declarations of anonymous types, which guarantees single instance, because
the type has no name.

Array singleton:

   Singleton : array (1..3) of Integer;

Task singleton:

   task Singleton is
      ...
   end task;

Protected object singleton:

   protected Singleton is
      ...
   end task;

Access type singleton (note access, not the target):

   Singleton : [not null] access ...;

For other types the singleton pattern is a declaration of the type and the
instance in the package body. This is probably what Jeffrey meant talking
about packages:

package body P is
   type Nobody_See_Me is ...;
   Singleton : Nobody_See_Me;

P.S. Get_Instance is C++ gibberish because it cannot create/return
unconstrained instances. In Ada you declare an object, singleton or not,
and that creates it. End of story.

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


  parent reply	other threads:[~2015-08-01  7:48 UTC|newest]

Thread overview: 175+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-27 14:28 Running a preprocessor from GPS? EGarrulo
2015-07-27 16:47 ` David Botton
2015-07-27 17:17   ` EGarrulo
2015-07-27 20:26 ` Randy Brukardt
2015-07-27 21:14   ` Jeffrey R. Carter
2015-07-27 22:23     ` EGarrulo
2015-07-28  7:23       ` Simon Wright
2015-07-28 11:36   ` EGarrulo
2015-07-28 21:12     ` Randy Brukardt
2015-07-28 22:11       ` EGarrulo
2015-07-28 22:41         ` EGarrulo
2015-07-29  9:52           ` G.B.
2015-07-29 20:32         ` Randy Brukardt
2015-07-29 22:32           ` EGarrulo
2015-07-29 23:51             ` Jeffrey R. Carter
2015-07-30  0:10               ` EGarrulo
2015-07-30  6:01                 ` Niklas Holsti
2015-07-30  7:33                   ` Björn Lundin
2015-07-30  8:03                     ` EGarrulo
2015-07-30  8:08                       ` Jacob Sparre Andersen
2015-07-30  8:37                         ` EGarrulo
2015-07-30  8:49                           ` Georg Bauhaus
2015-07-30 12:15                             ` EGarrulo
2015-07-30 14:11                               ` G.B.
2015-07-30 19:29                           ` Jeffrey R. Carter
2015-07-30 20:53                             ` EGarrulo
2015-07-30 22:52                               ` Jeffrey R. Carter
2015-07-31  7:29                               ` Georg Bauhaus
2015-07-31  7:53                               ` gautier_niouzes
2015-07-31  8:26                               ` Simon Wright
2015-07-31  9:13                                 ` Dmitry A. Kazakov
2015-07-31  9:31                                   ` EGarrulo
2015-07-31 11:01                                     ` Dmitry A. Kazakov
2015-07-31 13:50                                       ` EGarrulo
2015-07-31 16:29                                         ` Dmitry A. Kazakov
2015-07-31 11:26                               ` Brian Drummond
2015-07-31 12:12                                 ` EGarrulo
2015-07-31 12:15                                 ` EGarrulo
2015-07-31 17:54                                 ` Jeffrey R. Carter
2015-07-31 18:20                                   ` EGarrulo
2015-07-31 18:51                                     ` Jeffrey R. Carter
2015-08-01  7:20                                     ` Simon Wright
2015-08-01  8:06                                       ` EGarrulo
2015-08-01  8:33                                         ` Simon Wright
2015-08-01 10:47                                           ` EGarrulo
2015-08-01 11:27                                             ` Simon Wright
2015-08-01 11:44                                             ` Niklas Holsti
2015-08-01 12:19                                               ` EGarrulo
2015-08-01 17:49                                                 ` Jeffrey R. Carter
2015-08-01 18:15                                                   ` Paul Rubin
2015-08-01 18:59                                                     ` Jeffrey R. Carter
2015-08-01 20:30                                                     ` Georg Bauhaus
2015-08-01 20:44                                                   ` EGarrulo
2015-08-01 22:44                                                     ` Jeffrey R. Carter
2015-08-01 23:39                                                       ` EGarrulo
2015-08-02  0:02                                                         ` Jeffrey R. Carter
2015-08-02  0:18                                                           ` EGarrulo
2015-08-02  0:30                                                           ` EGarrulo
2015-08-02  6:05                                                             ` Jeffrey R. Carter
2015-08-02  8:29                                                               ` EGarrulo
2015-08-02 19:21                                                                 ` Jeffrey R. Carter
2015-08-02 21:37                                                                   ` EGarrulo
2015-08-03  2:35                                                                     ` Jeffrey R. Carter
2015-08-02  2:53                                                       ` Paul Rubin
2015-08-02  6:07                                                         ` Jeffrey R. Carter
2015-08-02  8:36                                                         ` EGarrulo
2015-08-01 16:53                                         ` Jeffrey R. Carter
2015-08-01 17:00                                       ` Jeffrey R. Carter
2015-08-01  7:48                                     ` Dmitry A. Kazakov [this message]
2015-07-30  8:23                       ` Georg Bauhaus
2015-07-30  8:45                         ` EGarrulo
2015-07-30  9:19                           ` Dmitry A. Kazakov
2015-07-30 11:22                           ` Niklas Holsti
2015-07-30 13:00                             ` EGarrulo
2015-07-30 13:30                               ` Dmitry A. Kazakov
2015-07-30 13:51                                 ` EGarrulo
2015-07-30 14:13                                   ` Dmitry A. Kazakov
2015-07-30 14:46                                     ` Simon Wright
2015-07-30 14:31                           ` G.B.
2015-07-30 18:46                           ` Randy Brukardt
2015-07-30  9:18                         ` EGarrulo
2015-07-30 18:55                           ` Randy Brukardt
2015-07-30 19:32                             ` EGarrulo
2015-07-31  0:10                               ` Randy Brukardt
2015-07-30 11:35                         ` Brian Drummond
2015-07-30 13:30                           ` EGarrulo
2015-07-31 11:07                             ` Brian Drummond
2015-07-30  8:28                       ` Pascal Obry
2015-07-30 12:00                         ` EGarrulo
2015-07-30 10:01                       ` Björn Lundin
2015-07-30 10:59                         ` Pascal Obry
2015-07-30 11:21                       ` gautier_niouzes
2015-07-30 18:35                   ` Randy Brukardt
2015-07-31 15:21                     ` Stefan.Lucks
2015-07-31 17:28                       ` Pascal Obry
2015-08-01 11:38                       ` Björn Lundin
2015-08-01 20:07                         ` Stefan.Lucks
2015-08-03 23:26                       ` Randy Brukardt
2015-07-30  6:08             ` Dmitry A. Kazakov
2015-07-30  6:37             ` Georg Bauhaus
2015-07-30  8:27             ` Pascal Obry
2015-07-30  9:22               ` Dmitry A. Kazakov
2015-07-30 11:51               ` EGarrulo
2015-07-30 12:23                 ` Dmitry A. Kazakov
2015-07-30 13:55                   ` Niklas Holsti
2015-08-30  7:03                     ` David Thompson
2015-07-30 14:07                   ` EGarrulo
2015-07-30 18:12                 ` Jeffrey R. Carter
2015-07-30 18:51                   ` EGarrulo
2015-07-30 19:27                     ` Jeffrey R. Carter
2015-07-30 19:54                       ` EGarrulo
2015-07-30 22:53                         ` Jeffrey R. Carter
2015-07-30 23:58                     ` Randy Brukardt
2015-07-30 11:54               ` EGarrulo
2015-07-30 12:42                 ` Pascal Obry
2015-07-30 13:21                   ` EGarrulo
2015-07-30 13:38                     ` Dmitry A. Kazakov
2015-07-30 13:55                       ` EGarrulo
2015-07-30 15:23             ` Niklas Holsti
2015-07-30 19:32             ` Randy Brukardt
2015-07-30 20:10               ` EGarrulo
2015-07-31  0:23                 ` Randy Brukardt
2015-07-31  6:29                   ` Dmitry A. Kazakov
2015-08-02 10:08                   ` EGarrulo
2015-08-02 12:15                     ` EGarrulo
2015-07-29 23:45           ` EGarrulo
2015-07-30  0:25             ` Jeffrey R. Carter
2015-07-30  8:12               ` EGarrulo
2015-07-30 18:01                 ` Jeffrey R. Carter
2015-07-29  6:46       ` Simon Wright
2015-07-29  7:17         ` Dmitry A. Kazakov
2015-07-29 19:57         ` Randy Brukardt
2015-07-29 20:09           ` Jeffrey R. Carter
2015-07-30 18:16             ` Randy Brukardt
2015-07-29 20:38           ` Simon Wright
2015-07-30  7:50             ` Jacob Sparre Andersen
2015-07-30 14:48               ` G.B.
2015-07-30 15:58                 ` Simon Wright
2015-07-30 15:13             ` EGarrulo
2015-07-30 15:21               ` EGarrulo
2015-07-30 15:29               ` G.B.
2015-07-30 16:02               ` Simon Wright
2015-07-30 16:15               ` Simon Wright
2015-07-30 16:29                 ` EGarrulo
2015-07-30 17:31                   ` Simon Wright
2015-07-28 10:28 ` Brian Drummond
2015-07-28 11:39   ` EGarrulo
2015-07-29 10:02     ` Brian Drummond
2015-07-29 10:29     ` Brian Drummond
2015-07-29 12:00       ` EGarrulo
2015-07-29 19:23         ` gautier_niouzes
2015-07-28 11:43 ` Björn Lundin
2015-07-28 11:51   ` Dmitry A. Kazakov
2015-07-28 12:06     ` EGarrulo
2015-07-28 12:54       ` Dmitry A. Kazakov
2015-07-28 13:18         ` EGarrulo
2015-07-28 13:49           ` EGarrulo
2015-07-28 14:02             ` Bob Duff
2015-07-28 14:57             ` G.B.
2015-07-28 15:36           ` Dmitry A. Kazakov
2015-07-29  7:15           ` Stefan.Lucks
2015-07-29  7:52             ` EGarrulo
2015-07-29 17:30               ` Stefan.Lucks
2015-07-29 18:49                 ` Jeffrey R. Carter
2015-07-29 20:40                   ` Randy Brukardt
2015-07-30  7:40                     ` gautier_niouzes
2015-07-30 19:22                       ` Randy Brukardt
2015-07-28 13:06       ` G.B.
2015-07-28 13:19         ` EGarrulo
2015-07-28 20:55           ` Randy Brukardt
2015-07-28 22:31             ` EGarrulo
2015-07-29 20:09               ` Randy Brukardt
2015-07-29 22:40                 ` EGarrulo
2015-07-28 12:07     ` Björn Lundin
2015-07-31 19:44 ` Per Sandberg
replies disabled

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