2011-05-05 3 views
18

Est-ce que quelqu'un fait du développement web sérieux dans Ada? Existe-t-il des bibliothèques ou des frameworks disponibles pour de telles tâches? Je suis particulièrement intéressé par ceux qui sont libres et open source.Programmation Web dans Ada?

Tous les indicateurs pertinents sont appréciés.

Répondre

10

Essayez AWS, seul solution appropriée je pouvais trouver ...

http://libre.adacore.com/libre/tools/aws/

MAIS -

Je recommande toujours vous d'apprendre une langue qui est plus conçu pour le développement web tel que: PHP, asp.net, JSP ....

2

En général, les utilisations les plus sérieuses d'Ada se produisent dans les cercles d'entrepreneurs de la Défense, et non dans la foule du Web 2.0.

Il y a de bien meilleures langues pour faire du développement web, mais je n'ai pas trouvé de bibliothèques ou de frameworks pré-construits pour le web-dev avec ada sur google et mes collègues m'ont donné un look vide. Cela dit, vous pourriez probablement construire quelque chose pour compiler du code HTML et le déplacer vers les dossiers appropriés de votre serveur dans ada si vous voulez utiliser le marteau-piqueur pour résoudre le problème. Ou peut-être faire un peu de fantaisie juste à temps la compilation du code HTML pour revenir par apache..painful, mais je suppose que faisables

+2

Je suppose que cela dépend de ce que vous entendez par "sérieux". Dans le fait que diriger des missiles est une affaire plus sérieuse que de diriger des requêtes HTTP vers des images LOLcat, je suppose que je devrais être d'accord. Cependant, il y a beaucoup de gens qui font du développement web à Ada. Si vos collègues n'ont jamais entendu parler d'AWS, peut-être qu'ils doivent en sortir plus? C'est un projet assez utilisé. –

+1

Ce qui signifie des projets avec le plus d'argent derrière eux. Grande entreprise, grands projets, en dehors d'Acadème. Des bases de code massives. Produits livrés réels. Logiciel Life/Flight/Space-critical. Diriez-vous que les utilisateurs les plus lourds sont DOD/Defense Related (compte tenu du DOD requis Ada depuis longtemps, et ce n'est que quelques années depuis qu'ils ont commencé à essayer de l'empêcher dans les cercles de la défense.)? Utiliser le bon outil pour le bon travail serait ma recommandation. – Caladain

+0

... rien comme Apache bien sûr. –

10

AWS est probablement ce que vous ar Vous cherchez, si vous voulez écrire des programmes Ada qui incluent un serveur Web ou un client. C'est probablement l'un des projets Open Source Ada les plus actifs, donc je suis sûr qu'il y a beaucoup de gens qui l'utilisent aussi.

Je l'ai moi-même utilisé pour fournir une interface de configuration et de surveillance basée sur le Web pour un service Windows. Cela fonctionne très bien et est assez facile à utiliser.

Si vous voulez juste écrire des scripts cgi, les autres ont raison de dire qu'il existe d'autres langages conçus pour cela. Cependant, je l'ai déjà fait à Ada, et ça marche très bien. Un grand nombre de langages de script encouragent l'écriture de programmes qui ne s'adaptent pas bien au fur et à mesure que le programme se développe. Les programmes Ada ont tendance à ne pas avoir ce problème. D'un autre côté, les langages comme C et C++ n'effectuent aucune détection automatique sur les limites des tableaux et sont très basés sur des pointeurs. Cela fait des cgi écrits avec eux une menace active lorsqu'ils sont exposés au monde sur Internet. Certains langages de script ont aussi ce problème. Souvent, vous ne pouvez pas facilement le voir ou le corriger, car il est caché dans l'exécution de la langue elle-même. Particulièrement quand ils étaient eux-mêmes écrits en C ou en C++. Donc j'encourage en fait l'utilisation d'Ada pour les scripts de serveur web dans tous les cas sauf les plus triviaux.

Si vous faites des scripts dans Ada, mais que vous manquez les fonctions de gestion de chaînes plus puissantes que les langages de script ont tendance à fournir, envisagez de regarder Gnat's Spitbol package. Cela implémente la plupart des facilités de manipulation de chaînes SNOBOL dans Ada. Si vous souhaitez effectuer une analyse de chaîne beaucoup plus compliquée, une autre option est OpenToken, ce qui vous permet de créer vos propres analyseurs et analyseurs lexicaux complets dans Ada.

Toutefois, si vous cherchez à développer un site Web complet, il vaut probablement mieux utiliser un système de gestion de contenu (par exemple: Drupal). Je ne connais aucun CMS basé sur Ada, mais la plupart des utilisateurs du CMS ne se soucient pas de tomber dans la langue de la mise en œuvre de toute façon. Idéalement, il vous suffit de brancher les composants ensemble.

15

J'ai été très heureux avec AWS/Templates_Parser, XML/Ada et GNATColl. Ce sont trois paquets solides qui vous permettront de faire des choses passionnantes avec Ada.

Je suis en train de m'éloigner de PHP (j'ai beaucoup d'outils internes construits en PHP dans mon entreprise) et jusqu'ici, Ada s'est avéré un compagnon très fiable. C'est arrivé à un point où je n'aime vraiment pas devoir retourner à PHP. J'attends vraiment le jour où tous mes outils sont alimentés par Ada.

Préparez-vous à faire plus de travail que dans un langage Web "normal". La récompense est beaucoup moins buggée et un produit final beaucoup plus performant (par rapport à PHP). Au moins c'est mon expérience.

Quelqu'un a déjà publié un lien vers AWS. Voici les liens pour GNATColl et XML/Ada: http://libre.adacore.com/libre/tools/gnat-component-collection/ http://libre.adacore.com/libre/tools/xmlada/

+0

J'ai vu vos messages sur c.l.ada et trouve ça bien d'entendre parler d'un entrepreneur "mettant son argent là où sa bouche est" WRT l'argument "choisir de meilleurs outils". Malheureusement, je n'ai pas réussi à obtenir une bonne version d'AWS à partir de maintenant: MinGW et tout ça. – Shark8

4

Si vous souhaitez activer votre grille-pain sur le Web, vous pouvez essayer un serveur Web intégré tel que EWS. N'a même pas besoin d'un système de fichiers sur le serveur.

+1

-1: Je ne vois pas comment cela répond à la question –

+2

@John, je pense que le grille-pain était une blague. EWS est écrit en Ada, donc c'est très bien lié à la question. – oenone

5

AWS vous a déjà été présenté, vous avez juste besoin d'un framework. Je peux recommander le projet ada-awa.

Voici une vidéo sur la façon de commencer: youtube.com

3

La réponse à la question de savoir si vous pouvez faire du développement Web lourds utilisant Ada dépend de ce que vous voulez faire. Si vous pouvez être satisfait d'une approche cgi-bin, il y a un paquet Ada qui fera le travail et vous pouvez attacher des feuilles de style en cascade comme vous le feriez avec n'importe quelle interface web. Vous pouvez également utiliser Ada/XML si vous voulez traiter l'analyse XML. Il y a des cas où c'est utile, bien que vous pourriez vouloir penser si XML est ce dont vous avez besoin. Étant donné qu'une procédure Ada pour la gestion des interfaces Web est compilée, elle doit être comparable à C en termes de performances. En outre, vous pouvez effectuer l'analyse des entrées de caractères avec le package Bounded_Strings qui peut vous permettre de tester que les chaînes de caractères d'entrée ne contiennent pas de caractères inacceptables et ne sont pas trop longues. Ces deux vérifications sont importantes sur les sites Web pour réduire la probabilité d'attaques réussies de pirates informatiques. Si vous travaillez sur des bases de données dans votre conception de site Web, vous devez consulter le serveur Web Ada (AWS), qui inclut des liens vers des bases de données. Pour un travail encore plus lourd, vous pouvez regarder le projet Ada-AWA, qui est open source. Si vous avez affaire à des bases de données relationnelles, vous voudrez probablement considérer PolyORB, qui peut gérer CORBA et l'annexe Ada Distributed Systems. Ceci est des choses très lourdes si vous travaillez en tant que développeur unique. Vous aurez presque certainement besoin de quelqu'un pour gérer le travail quotidien d'administration du système - et vous aurez besoin de la permission de votre fournisseur d'accès Internet pour héberger un site Web. Si vous voulez une interface Web qui devra supporter un travail numérique intensif, sachez qu'Ada a des tâches qui supportent les applications multithread - et typiquement le compilateur Ada et l'éditeur de liens assigneront un thread à chaque tâche . Le langage est conçu pour prendre en charge la communication thread-to-thread directement en utilisant rendezvous. En outre, les concepteurs de langage ont dû s'inquiéter des problèmes d'ordonnancement difficiles, dans lesquels manquer une communication d'un fil à l'autre est considéré comme une défaillance du programme.Si vous voulez faire de la communication multi-agent, vous devriez probablement avoir un outil de conception UML qui vous permettra d'utiliser des diagrammes de synchronisation pour concevoir ces types de programmes, car ce type de calcul est très différent de la programmation séquentielle.

Comme une note, Ada a été conçu pour la programmation intégrée, ce qui signifie qu'il a été conçu pour un environnement dans lequel il existe de nombreux ordinateurs, chacun pouvant communiquer avec d'autres ordinateurs d'égal à égal. Il a été utilisé à l'origine par le DOD américain, mais il a également été utilisé dans un logiciel d'avionique qui contrôle les volets et autres surfaces dans les avions, ainsi que des systèmes équivalents dans les automobiles. Le logiciel avionique Boeing 777 a été écrit en Ada. Il me semble me rappeler que Daimler-Chrysler a utilisé Ada - notant que les automobiles actuelles ont quelque chose comme 80 ordinateurs embarqués. Le coût de développement de logiciel est probablement environ 20% du coût actuel d'une nouvelle voiture.

+0

Juste un sidenote ... Mis à part le 777, une grande partie du logiciel sur les avions militaires Tornado et Typhoon construits en Europe, et leur équipement au sol associé, est écrit en Ada. –