From: "Björn Lundin" <b.f.lundin@gmail.com>
Subject: Re: If not Ada, what else...
Date: Wed, 29 Jul 2015 20:52:23 +0200
Date: 2015-07-29T20:52:23+02:00 [thread overview]
Message-ID: <mpb76v$4nr$1@dont-email.me> (raw)
In-Reply-To: <877fpiom3q.fsf@jester.gateway.sonic.net>
On 2015-07-29 20:27, Paul Rubin wrote:
> Björn Lundin <b.f.lundin@gmail.com> writes:
>> See Ada.Containers.*
>
> Will look there, but those kinds of containers are more useful with GC.
I think you are missing the point.
Many things in Ada is done without allocating with 'new'
And things that are, if OO, may inherit from
Ada.Finalized, which gives a call to the objects'
'Finalize' method where deallcation - if necessary - can be done.
So, the user does not fiddle with new/free.
declare
package Stuff_Pkg is new Ada.Containers.Doubly_Linked_Lists(Stuff_Type);
Stuff_data : Stuff_type;
Stuff_List : Stuff_Pkg.List
begin
for i in 1 ..100 loop
Stuff_list.Append(Stuff_data):
end loop;
-- use stuff_list here
end;
--no mem leak here
>
>> How is Haskell doing in Ada territory, like concurrency etc ?
>
> It's partly on the implementation, but GHC's concurrency is far superior
> to GNAT's in my opinion. GNAT uses Posix threads while GHC supports
> lightweight threads with parallel garbage collection. It can handle
> millions of concurrent threads on a large server:
>
> http://haskell.cs.yale.edu/wp-content/uploads/2013/08/hask035-voellmy.pdf
>
> GHC also supports software transactional memory (STM), that let threads
> composably share mutable data without the traditional hazards of lock
> inversion etc. Haskell's type system statically verifies that STM
> operations aren't improperly mixed with I/O that could wedge the runtime:
>
> http://book.realworldhaskell.org/read/software-transactional-memory.html
>
> GHC also supports various kinds of deterministic parallelism, like the
> "par" operator that lets you very simply annotate that two operations
> can be done in parallel (on separate cpu cores):
>
> https://donsbot.wordpress.com/2007/11/29/use-those-extra-cores-and-beat-c-today-parallel-haskell-redux/
>
> The cool thing about this is it doesn't affect the datatypes in the
> program, and if you use it improperly, your program might run slower
> instead of faster, but it will still find the right answers.
>
> There are also data parallelism libraries that will let you spin array
> computations off to SIMD units or GPU's, but Ada probably has similar
> libraries.
>
> There is an online book about parallel and concurrent programming in
> Haskell (scroll down for the TOC):
>
> http://chimera.labs.oreilly.com/books/1230000000929/index.html
>
> ================
>
> Where Ada beats Haskell is in deterministic timing and memory footprint.
> SPARK has ways to verify that an Ada function can't possibly throw an
> exception. That's difficult in Haskell, because programs constantly use
> the memory allocator, and there can also be unpredictable GC pauses at
> any time in the program. Ada can also compile to small cpu targets
> because of its small or nonexistent runtime system.
>
> So I'd see the archetypal Ada application as a critical embedded system
> like a jet engine controller, while the archetypal Haskell application
> is something like a compiler or internet server that must not give wrong
> answers, but where a pause in execution (or even an OOM crash followed
> by a failover or workaround) is annoying but not disastrous.
>
Interesting reading
--
--
Björn
next prev parent reply other threads:[~2015-07-29 18:52 UTC|newest]
Thread overview: 168+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-04-20 10:39 If not Ada, what else Alex R. Mosteo
2011-04-20 10:51 ` Ludovic Brenta
2011-04-21 8:47 ` Alex R. Mosteo
2011-04-20 11:53 ` Maciej Sobczak
2011-04-21 8:46 ` Alex R. Mosteo
2011-04-23 2:08 ` Peter C. Chapin
2011-04-21 17:19 ` Robert Matthews
2011-04-21 19:02 ` Georg Bauhaus
2011-04-21 19:25 ` Florian Weimer
2011-04-22 15:50 ` Robert Matthews
2011-04-22 17:49 ` Brad Cantrell
2011-04-23 2:20 ` Peter C. Chapin
2011-04-23 9:55 ` Georg Bauhaus
2011-04-23 11:17 ` Peter C. Chapin
2011-04-22 21:39 ` Florian Weimer
2011-04-23 2:26 ` Peter C. Chapin
2011-04-23 9:52 ` björn lundin
2011-04-23 11:50 ` Piotr Trojanek
2011-04-23 12:23 ` Dmitry A. Kazakov
2011-04-23 14:30 ` Georg Bauhaus
2011-04-23 15:04 ` Dmitry A. Kazakov
2011-04-23 16:16 ` Piotr Trojanek
2011-04-28 12:55 ` C++/cmake project, injecting Ada... (was Re: If not Ada, what else...) Alex R. Mosteo
2011-04-28 16:34 ` C++/cmake project, injecting Ada Ludovic Brenta
2011-04-29 8:17 ` Alex R. Mosteo
2011-04-29 12:45 ` stefan-lucks
2015-07-02 10:44 ` Alejandro R. Mosteo
2011-05-28 17:33 ` C++/cmake project, injecting Ada... (was Re: If not Ada, what else...) Dirk Heinrichs
2015-07-03 19:21 ` If not Ada, what else luvhed
2015-07-03 20:50 ` Paul Rubin
2015-07-04 8:19 ` Rod Kay
2015-07-08 18:11 ` jm.tarrasa
2015-07-08 20:33 ` Anh Vo
2015-07-09 6:36 ` jm.tarrasa
2015-07-08 22:15 ` David Botton
2015-07-09 7:28 ` jm.tarrasa
2015-07-09 9:54 ` G.B.
2015-07-09 12:57 ` Dennis Lee Bieber
2015-07-09 18:25 ` David Botton
2015-07-09 21:15 ` Bob Duff
2015-07-09 22:23 ` David Botton
2015-07-09 22:39 ` Paul Rubin
2015-07-10 0:20 ` David Botton
2015-07-10 4:26 ` Paul Rubin
2015-07-10 15:01 ` David Botton
2015-07-10 16:07 ` David Botton
2015-07-10 17:39 ` Bob Duff
2015-07-10 18:22 ` Paul Rubin
2015-07-10 19:10 ` David Botton
2015-07-10 19:43 ` Patrick Noffke
2015-07-11 10:46 ` Brian Drummond
2015-07-11 10:59 ` Björn Lundin
2015-07-11 13:41 ` Georg Bauhaus
2015-07-11 14:11 ` Björn Lundin
2015-07-13 14:02 ` Patrick Noffke
2015-07-13 14:16 ` David Botton
2015-07-13 14:54 ` Maciej Sobczak
2015-07-16 20:19 ` Serge Robyns
2015-07-17 1:50 ` David Botton
2015-07-17 17:07 ` Anh Vo
2015-07-17 21:28 ` Serge Robyns
2015-07-17 22:53 ` Anh Vo
2015-07-19 14:31 ` David Botton
2015-07-19 16:20 ` Paul Rubin
2015-07-19 20:55 ` Jeffrey R. Carter
2015-07-19 21:15 ` Paul Rubin
2015-07-20 16:08 ` Tero Koskinen
2015-07-20 17:31 ` Paul Rubin
2015-07-21 1:16 ` Dennis Lee Bieber
2015-07-21 3:09 ` Shark8
2015-07-21 12:46 ` Dennis Lee Bieber
2015-07-21 5:43 ` J-P. Rosen
2015-07-21 12:47 ` Dennis Lee Bieber
2015-07-21 12:55 ` J-P. Rosen
2015-07-19 22:38 ` David Botton
2015-07-21 6:30 ` Gour
2015-07-21 16:24 ` David Botton
2015-07-21 17:29 ` Niklas Holsti
2015-07-21 18:51 ` Simon Wright
2015-07-21 19:36 ` David Botton
2015-07-22 8:44 ` Pascal Obry
2015-07-22 12:00 ` Jean François Martinez
2015-07-27 22:59 ` Randy Brukardt
2015-07-28 7:00 ` Georg Bauhaus
2015-07-28 7:22 ` Paul Rubin
2015-07-28 10:36 ` darkestkhan
2015-07-28 10:58 ` G.B.
2015-07-28 20:33 ` Randy Brukardt
2015-07-28 10:40 ` darkestkhan
2015-07-29 7:30 ` Jacob Sparre Andersen
2015-07-29 8:55 ` Simon Wright
2015-07-29 12:38 ` EGarrulo
2015-07-29 13:06 ` EGarrulo
2015-07-29 15:41 ` Paul Rubin
2015-07-29 17:01 ` Björn Lundin
2015-07-29 18:27 ` Paul Rubin
2015-07-29 18:52 ` Björn Lundin [this message]
2015-07-29 22:18 ` Paul Rubin
2015-07-30 6:23 ` Dmitry A. Kazakov
2015-07-30 16:48 ` David Botton
2015-07-30 18:10 ` Randy Brukardt
2015-07-29 19:18 ` Georg Bauhaus
2015-07-29 19:42 ` Randy Brukardt
2015-07-30 4:54 ` Paul Rubin
2015-07-30 6:15 ` Niklas Holsti
2015-07-30 6:34 ` Dmitry A. Kazakov
2015-07-30 6:47 ` Paul Rubin
2015-07-30 7:20 ` Dmitry A. Kazakov
2015-07-30 23:13 ` Paul Rubin
2015-07-29 17:07 ` Stefan.Lucks
2015-07-29 17:47 ` Paul Rubin
2015-08-21 23:03 ` Waldek Hebisch
2015-08-22 3:24 ` Paul Rubin
2015-08-23 16:26 ` Waldek Hebisch
2015-08-23 17:18 ` Jeffrey R. Carter
2015-08-23 17:31 ` Waldek Hebisch
2015-08-23 19:32 ` Jeffrey R. Carter
2015-08-23 23:01 ` Waldek Hebisch
2015-07-29 19:32 ` Georg Bauhaus
2015-07-30 5:17 ` Paul Rubin
2015-07-30 7:38 ` Georg Bauhaus
2015-07-30 18:26 ` Paul Rubin
2015-07-30 18:37 ` Paul Rubin
2015-07-31 7:14 ` Georg Bauhaus
2015-07-30 10:59 ` darkestkhan
2015-08-19 22:19 ` rriehle
2015-08-19 22:58 ` Anh Vo
2015-08-19 23:32 ` rriehle
2015-08-20 1:08 ` Peter Chapin
2015-08-21 15:14 ` Anh Vo
2015-08-21 16:07 ` Anh Vo
2015-08-21 17:17 ` Patrick Noffke
2015-07-21 19:51 ` Dmitry A. Kazakov
2015-07-21 21:06 ` Simon Wright
2015-07-21 21:51 ` Dmitry A. Kazakov
2015-07-21 22:55 ` Jeffrey R. Carter
2015-07-22 7:26 ` Dmitry A. Kazakov
2015-07-22 9:05 ` Mart van de Wege
2015-07-22 10:27 ` Dmitry A. Kazakov
2015-07-22 7:01 ` Simon Wright
2015-07-22 7:35 ` Dmitry A. Kazakov
2015-07-27 23:02 ` Randy Brukardt
2015-07-27 22:44 ` Randy Brukardt
2015-07-28 7:30 ` Simon Wright
2015-07-28 20:39 ` Randy Brukardt
2015-07-29 7:12 ` Simon Wright
2015-07-29 11:11 ` vincent.diemunsch
2015-07-29 19:31 ` Randy Brukardt
2015-07-22 12:53 ` Vincent
2015-07-22 13:59 ` Dmitry A. Kazakov
2015-07-21 20:05 ` J-P. Rosen
2015-07-21 21:02 ` Simon Wright
2015-07-21 23:40 ` Shark8
2015-07-22 12:58 ` vincent.diemunsch
2015-07-22 13:40 ` J-P. Rosen
2015-07-22 14:29 ` Vincent
2015-07-21 19:30 ` David Botton
[not found] ` <30336c64-ceaa-4887-adee-18cc58aef012@googlegroups.com>
2015-08-21 5:21 ` Shark8
2015-08-21 17:39 ` David Botton
2015-07-11 2:31 ` Paul Rubin
2015-07-11 6:00 ` J-P. Rosen
2015-07-11 7:51 ` Georg Bauhaus
2015-07-11 8:47 ` Dmitry A. Kazakov
2015-07-21 1:34 ` Luke A. Guest
2015-07-27 9:09 ` Assertions in SPARK (Was: If not Ada, what else...) Jacob Sparre Andersen
2015-07-27 10:56 ` G.B.
2015-07-27 21:59 ` Peter Chapin
2015-07-11 11:10 ` If not Ada, what else Pascal Obry
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox