http://www.ada-auth.org/standards/rm12_w_tc1/html/RM-E.html
(An annex in Ada is an optional portion of the language designed for a particular use case that a given Ada implementation may or may not implement.)
AdaCore tutorials about using the distributed systems annex:
https://www.adacore.com/gems/gem-84
https://www.adacore.com/gems/gem-85the-distributed-systems-a...
https://www.adacore.com/gems/gem-87-the-distributed-systems-...
https://www.adacore.com/gems/gem-90-the-distributed-systems-...
It is not exactly gRPC because it was designed before gRPC was created, but the purpose is mostly the same.
PolyORB might also be interesting:
For example, consider how Pascal/Lazarus (a different language, sure, but in similar circumstances to Ada) support MySQL 5.7 at the latest (TMySQL57Connection) and might have certain challenges when you attempt to use them for web development or anything of the sort (REST, SOAP, gRPC, connecting to RabbitMQ etc.).
A brief search doesn't turn up any gRPC support for Ada, it feels like using something like Go for components that connect over the network and Ada for actual data processing with interop inbetween might actually be a better setup. It might also just be an uphill battle outside of niche domains where Ada (or even Pascal/Delphi) are established.
FWIW, in my brief dalliance with Pascal, I got the impression it's a good bit more, uh, fossilized than Ada. I didn't try too hard to find a pulse there at the time, but I don't think I tried much harder with Ada. Yet here I am, shamelessly shilling.
This is an excellent point and will probably keep lots of similar languages out there viable for a bit longer.
For example, I wouldn't start a serious project in Prolog either, but if there's a really good use case for it and there's a way to integrate it with other languages/runtimes, be it C/C++ or anything else, then I might consider it.
> FWIW, in my brief dalliance with Pascal, I got the impression it's a good bit more, uh, fossilized than Ada.
It depends. It's still a good option for various native GUI software and the occasional bit of number crunching/utilities, especially when used with Lazarus: https://www.lazarus-ide.org/
That said, it's definitely showing its age and the whole Delphi/Pascal divide isn't helping much either. Generally .NET and Go do most of the things I would have considered it for 5-10 years ago, though, maybe only the GUI part isn't entirely solved just yet.
I'm not sure why, but most of the newer runtimes/languages don't really have strong built in GUI options, perhaps because developing those and supporting multiple platforms takes a lot of time. I can't stop wishing for something that's as stable as Java Swing or even OpenJFX for something like .NET: Avalonia UI seems like a third party project and using something like Qt/GTK binds isn't always easy to pull off.
Just give me a simple and easy to use language that has built in packages for doing most of the common stuff (working with different data formats, network interaction etc.) and has a built in cross platform GUI library, with an IDE that lets you use a designer with drag & drop functionality for laying stuff out, before you connect all of the components in code. Somehow the wisdom of RAD (rapid application development) seems to have waned in the last decade.
Yeah, that was definitely quite the bright spot. At the time GUIs weren't really what I was interested in, so ultimately I moved on. But for a long while since I'd fire up Lazarus again whenever I started thinking about native GUIs.
Never did much with it though, as I was never inclined to do everything in Pascal and it didn't seem worth the trouble to make it work with whatever I was wanting to use for the rest of it.
Racket does all of these afaik outside of the built in WYSIWYG editor for GUIs. There probably are 3rd party designers around though.
This hasn't been my experience (for Delphi anyway). There's a pantheon of various components for Internet protocols available that work well, I have used REST and SOAP amongst others. If there's a library with a c or C++ interface then you can connect it to Delphi. Lazarus I have less experience with, but likewise can interface to anything.
Clients, sure. But something like the Spring framework for Java or ASP.NET for .NET, or even Ruby on Rails or Django for Python? Not quite.
Closest that I could find was Brook: https://wiki.freepascal.org/Brook_for_Free_Pascal but it appears that it isn't in very active development at all (last release was 3 years ago: https://github.com/risoflora/brookfreepascal)
There is a nice page about web development on the Wiki: https://wiki.freepascal.org/Portal:Web_Development
But for the most part, even there you won't find the "one true way" to develop new enterprise apps or other larger projects.
There is fcl-web (https://wiki.lazarus.freepascal.org/fcl-web) and fpWeb (https://wiki.lazarus.freepascal.org/fpWeb_Tutorial) but both lean more towards writing your own web server and handling the lower level HTTP interaction, vs what something like Django would let you do, mostly thinking of what your app should do, not so much about how it will look on a per-request basis: https://docs.djangoproject.com/en/4.0/intro/tutorial01/
> But something like the Spring framework for Java or ASP.NET for .NET, or even Ruby on Rails or Django for Python
You've outlined a number of different things there and you could make your own with delphi, since again its just like C as to what it can do. You could, if you wanted, make a Django for delphi, though it's not something I'd do. Though your initial statement was Delphi couldn't do a lot of modern services either server or client. This isn't true. If it's all these other things, well, thats a matter of opinion, but there's no technical limitation with Delphi as far as protocols go.
Edit: There's this to which is interesting - a drag and drop web development set of components for SPA's https://www.tmssoftware.com/site/tmswebcore.asp which doesn't exist in other environments afaik. Though not sure I'd use it, I know of people who have and it works fine.