5 ms·
I'd really love to use ada for some real world application. Is there a gRPC implementation?
by ithkuil 4y ago
I'd really love to use ada for some real world application. Is there a gRPC implementation?
- KronisLV 4y agoI feel like most of the older languages are a bit difficult to use in a modern setting. 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.
- foerbert 4y agoIt depends a lot on what exactly you need or want to use. Sometimes you find something great, or nothing, or something in-between. One nice thing with Ada is how easily it binds to C, and that just got some improvements. Not as easy and nice as somebody else doing it for you, but still. It's something I actually consider, which is more than I can say for any other language. 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.
- KronisLV 4y ago> One nice thing with Ada is how easily it binds to C, and that just got some improvements. 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/ 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.
- foerbert 4y ago> It's still a good option for various native GUI software and the occasional bit of number crunching/utilities, especially when used with Lazarus 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.
- imaltont 4y ago> 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. Racket does all of these afaik outside of the built in WYSIWYG editor for GUIs. There probably are 3rd party designers around though.
- chadcmulligan 4y ago> (REST, SOAP, gRPC, connecting to RabbitMQ etc.) 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.
- KronisLV 4y ago> There's a pantheon of various components for Internet protocols available that work well, I have used REST and SOAP amongst others. 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 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 https://github.com/risoflora/brookfreepascal) There is a nice page about web development on the Wiki: https://wiki.freepascal.org/Portal:Web_Development 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 https://wiki.lazarus.freepascal.org/fcl-web) and fpWeb (https://wiki.lazarus.freepascal.org/fpWeb_Tutorial 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/ https://docs.djangoproject.com/en/4.0/intro/tutorial01/
- chadcmulligan 4y agoThere's spring4d, though I haven't used it, though have used parts of it. I've developed a number of servers in delphi for windows, they're as performant as C# services (which I've also developed, there's very little difference). I've developed TCP/IP server, SOAP server, and REST servers talking to a few databases and remote servers. There is no limit to what you can develop in it, since you have access to the Windows API's just like any C application. > 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 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.
- thesuperbigfrog 4y agoAda has a distributed systems annex: http://www.ada-auth.org/standards/rm12_w_tc1/html/RM-E.html 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-84 https://www.adacore.com/gems/gem-85the-distributed-systems-annex-2-distributed-objects https://www.adacore.com/gems/gem-85the-distributed-systems-a... https://www.adacore.com/gems/gem-87-the-distributed-systems-annex-part-3-mailboxes https://www.adacore.com/gems/gem-87-the-distributed-systems-... https://www.adacore.com/gems/gem-90-the-distributed-systems-annex-part-4-dsa-and-c 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: https://github.com/AdaCore/PolyORB https://github.com/AdaCore/PolyORB
- jannie123 4y agojoin a defense contractor