2) Le C est difficile parce qu'il n'est pas un langage objet dans le sens d'ADA.
…
4) Le langage assembleur est très lié au matériel, donc votre remarque n'est pas pertinent sur le sujet.
C'est parce qu'il a une vocation différente qu'il est toujours délicat de le comparer à ADA. C est pensé comme un assembleur portable. De son côté, Ada est un langage de haut niveau permettant énormément d'abstractions impossibles en C (les enums sont plus que des entiers, les tableaux sont plus qu'un pointeur vers le premier élément, la sémantique du multi-tache construite dans le langage et bien d'autres encore…).
Le choix du C peut donc se montrer pertinent pour développer des couches bas niveau (même s'il n'est pas nécessairement le seul choix possible), mais il atteint ses limites dans des applications de plus haut niveaux.
Quoi qu'il en soit, par philosophie le C est permissif et pré-suppose que le développeur sait exactement ce qu'il fait. Il laisse faire même si parfois c'est une erreur évidente. C'est d'ailleurs (en partie) source de failles de sécurités en tout type (genre cela). De son côté Ada empêche tant que faire se peu que le développeur fasse des choses «risquées» (genre écrire en dehors des bornes d'un tableau), est parfois verbeux pour éviter tout ambiguïté, et dispose de compilateurs pointilleux.
Bien sur, une discipline importante permet de faire du C très propre et fiable, et bon nombre de systèmes extrêmement robustes en sont la preuve indiscutable. Cependant, il peut être intéressant de placer des garde fous au niveau du langage en plus de ceux permettant de faire du bon C.
En ce qui me concerne je considère que c'est un atout significatif.
5) J'aurais aimé lire des remarques sur Java vs ADA, ça aurait été intéressant.
Dans les grandes lignes : Ada est compilé nativement alors que Java nécessite un VM. Il est ainsi plus aisé de faire du bas niveau en Ada qu'en Java (constructions permettant d'être très précis sur la représentation machine des objets utilisés, on peu faire comme en C et accéder directement à la mémoire si vraiment on en a besoin, …). Après Java a d'autres avantages, dont notamment la capacité de faire de l'introspection ce qui n'est pas envisageable en Ada.
Il est en général plus intéressant de comparer Ada à C++ car ils se ressemblent plus sur ces aspects (et bien d'autres).
Bon, j'avoue que je prêche un peu pour ma paroisse, mais sachez que je ne dénigre pas le reste pour autant ! L'ensemble des langages disponibles offrent une diversité très profitable, surtout si on regarde ce qui se fait chez les voisins. Ça donne de bonnes idées et permet d’acquérir de bonnes pratiques parfois.
[^] # Re: Proust alors.
Posté par lancelotsix . En réponse au journal Ada, langage et ressources. Évalué à 6.
C'est parce qu'il a une vocation différente qu'il est toujours délicat de le comparer à ADA. C est pensé comme un assembleur portable. De son côté, Ada est un langage de haut niveau permettant énormément d'abstractions impossibles en C (les enums sont plus que des entiers, les tableaux sont plus qu'un pointeur vers le premier élément, la sémantique du multi-tache construite dans le langage et bien d'autres encore…).
Le choix du C peut donc se montrer pertinent pour développer des couches bas niveau (même s'il n'est pas nécessairement le seul choix possible), mais il atteint ses limites dans des applications de plus haut niveaux.
Quoi qu'il en soit, par philosophie le C est permissif et pré-suppose que le développeur sait exactement ce qu'il fait. Il laisse faire même si parfois c'est une erreur évidente. C'est d'ailleurs (en partie) source de failles de sécurités en tout type (genre cela). De son côté Ada empêche tant que faire se peu que le développeur fasse des choses «risquées» (genre écrire en dehors des bornes d'un tableau), est parfois verbeux pour éviter tout ambiguïté, et dispose de compilateurs pointilleux.
Bien sur, une discipline importante permet de faire du C très propre et fiable, et bon nombre de systèmes extrêmement robustes en sont la preuve indiscutable. Cependant, il peut être intéressant de placer des garde fous au niveau du langage en plus de ceux permettant de faire du bon C.
En ce qui me concerne je considère que c'est un atout significatif.
Dans les grandes lignes : Ada est compilé nativement alors que Java nécessite un VM. Il est ainsi plus aisé de faire du bas niveau en Ada qu'en Java (constructions permettant d'être très précis sur la représentation machine des objets utilisés, on peu faire comme en C et accéder directement à la mémoire si vraiment on en a besoin, …). Après Java a d'autres avantages, dont notamment la capacité de faire de l'introspection ce qui n'est pas envisageable en Ada.
Il est en général plus intéressant de comparer Ada à C++ car ils se ressemblent plus sur ces aspects (et bien d'autres).
Bon, j'avoue que je prêche un peu pour ma paroisse, mais sachez que je ne dénigre pas le reste pour autant ! L'ensemble des langages disponibles offrent une diversité très profitable, surtout si on regarde ce qui se fait chez les voisins. Ça donne de bonnes idées et permet d’acquérir de bonnes pratiques parfois.