Does anyone do serious web development in Ada? Are there libraries or frameworks available for such tasks? I'm particularly interested in those that are free and open source.
Any relevant pointers are appreciated.
Yes, since Ada is used where mission critical devices can cause major disasters in case of a software bug (like in avionics, air traffic control and of course military), it is still used in those industries and I doubt they will change. In civil aircraft (e.g. Airbus) C is extensively used (with some formal methods).
Because of Ada's safety-critical support features, it is now used not only for military applications, but also in commercial projects where a software bug can have severe consequences, e.g., avionics and air traffic control, commercial rockets such as the Ariane 4 and 5, satellites and other space systems, railway ...
Ada is a state-of-the art programming language that development teams worldwide are using for critical software: from microkernels and small-footprint, real-time embedded systems to large-scale enterprise applications, and everything in between.
False. If you include features automatically supported with Ada, such as lint checking, range checking, etc. that normally require add-on tool support for other languages, the costs become comparable. Besides, GNAT Ada is free, comes on many different platforms, and is starting to be used in embedded systems.
Try AWS, Only proper solution I could find...
http://libre.adacore.com/libre/tools/aws/
BUT -
I would still recommend you to learn a language that is more designed to web development Such as: PHP, asp.net, JSP ....
I've been very pleased with AWS/Templates_Parser, XML/Ada and GNATColl. Those are three solid packages that will enable you do to exciting things with Ada.
I'm in the process of moving away from PHP (got a lot of internal tools build in PHP in my business) and so far Ada has proven a very reliable companion. It has come to a point where I truly dislike having to go back to PHP. I really look forward to the day where all my tools are powered by Ada.
Just be prepared to do some more legwork than with a "normal" web language. The reward is a much less buggy and a much better performing end-product (compared to PHP). At least that is my experience.
Someone already posted a link to AWS. Here are links for GNATColl and XML/Ada: http://libre.adacore.com/libre/tools/gnat-component-collection/ http://libre.adacore.com/libre/tools/xmlada/
AWS is probably what you are looking for, if you want to write Ada programs that include a web server or client in them. It is probably one of the most actively maintained Open Source Ada projects around, so I'm pretty sure there are a lot of folks out there using it too.
I've used it myself to provide a web-based configuration and monitoring interface for a Windows-based service. It works very well, and is quite easy to use.
If you just want to write cgi scripts, the other folks are right that there are other languages out there designed for that. However, I've done it in Ada before, and it works just great. A lot of scripting languages encourage writing programs that don't scale well as the program expands. Ada programs tend not to have that problem.
On the flip side, languages like C and C++ don't do any automatic detection on array bounds and are very pointer-based. This makes cgi written with them an active menace when exposed to the world on the internet. Some scripting languages have that problem too. Often you can't easily see or fix it, because it is hidden in the language runtime itself. Particularly when they themselves were written in C or C++. So I actually encourage the use of Ada for web-server scripting in all but the most trivial of cases.
If you are doing scripting in Ada, but miss the more powerful string-handling facilities that scripting languages tend to provide, consider looking at Gnat's Spitbol package. That implements most of the SNOBOL string handling facilies in Ada. If you want to do much more complicated string parsing, another option is OpenToken, which allows you to build your own full-blown lexical analyzers and parsers in Ada.
However, if you are looking to develop a slick full-blown complex website, you are probably best off using some kind of Content Management System (eg: Drupal). I don't know of any CMS built on Ada, but most CMS users don't bother to drop into the implementation language much anyway. Ideally you just plug the components together.
AWS was already introduced to you, now you just need a framework. I can recommend the ada-awa project.
Here's a video on how to get started: youtube.com
You could have a look at http://blog.vacs.fr/index.php?tag/JSF to see examples of how you can use Ada Server Faces.
If you wanted to web-enable your toaster you could try an embedded web server like EWS. Doesn't even need a filesystem on the server.
The answer to the question of whether you can do heavy duty Web development using Ada depends on what you want to do. If you can be satisfied with a cgi-bin approach, there's an Ada package that will do the work and you can attach cascading style sheets as you would with any web interface. You can also use Ada/XML if you want to deal with XML parsing. There are cases where that's useful, although you might want to think about whether XML is what you need. Because an Ada procedure for handling web interfaces is compiled, it should be comparable to C in performance. Also, you can do character input parsing with the Bounded_Strings package that can let you test that input character strings don't contain unacceptable characters and are not too long. Both of these checks are important on web sites to reduce the probability of successful hacker attacks.
If you are working databases into your web design, then you should look at the Ada Web Server (AWS), which includes links to databases. For even heavier duty work, you may want to look at the Ada-AWA project, which is open source. If you are dealing with object-relational databases, then you will probably also want to consider PolyORB, which can handle CORBA and the Ada Distributed Systems Annex. This is pretty heavy duty stuff if you're working as a single developer. You'll almost certainly need to have someone to handle the day-to-day System Administration work - and you'll need permission from your Internet Service Provider to host a web site.
If you want a web interface that will have to support heavy duty numerical work, then you should be aware that Ada has tasks that support multi-threaded applications - and typically the Ada compiler and linker will assign a thread to each task. The language is designed to support thread-to-thread communication directly using rendezvous. Furthermore, the language designers have had to worry about hard scheduling problems, in which missing a communication from one thread to another is regarded as a program failure. If you're going to do multi-agent communication, you should probably get a UML design tool that will let you use synchronization diagrams to design these kinds of programs since wrapping your mind around that kind of computing is very different from sequential programming.
As a note, Ada was designed for embedded programming, which means that it has been designed for an environment in which there are many computers, each of which may communicate with other computers in a peer-to-peer manner. It was originally used by the U.S. DOD, but it has also been used in avionics software that controls the flaps and other surfaces in aircraft, as well as equivalent systems in automobiles. The Boeing 777 avionics software was written in Ada. I seem to recall that Daimler-Chrysler used Ada - noting that current automobiles have something like 80 embedded computers. The software development cost is probably about 20% of the current cost of a new car.
In general, the most serious uses of Ada occur within the Defense Contractor circles, not the web 2.0 crowd.
There are much better languages to do web development in, but i found no pre-built libraries or frameworks for web-dev with ada on google and my coworkers gave me a blank look.
That said, you could probably build something to compile HTML code and move it to the proper folders in your server in ada if you wanted to use the ada-hammer to solve the problem. Or maybe do some fancy Just-in-time compiling of the HTML to return through apache..painful, but i suppose doable
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With