Dites, je suis quand même pas le seul à utiliser le patron de conception des états, si ?
Ok, faut l'adapter pour chaque projet.
Ok, ça gère pas le hiérarchique (enfin, avec un peu de jugeotte, ça se fait).
Je suis impressionné qu'on puisse voir ça comme un problème.
Si on cassait jamais la compatibilité, on aurait encore que 640Ko de RAM disponible et on ferait encore des pirouettes pour les dépasser.
Maintenant, dans Java, c'est un problème parce que cela pousse certains à continuer à utiliser des trucs deprecated donc non maintenus et potentiellement troués comme pas possible. Ca alourdit la bibliothèque et sa doc.
Si tu veux continuer à faire du JDK 1.2, utilises un JDK 1.2 mais ne demandes pas au 1.7 de traîner les boulets de ses ancêtres.
D'ailleurs, plus haut tu parlais d'Ada, certaines constructions sont interdites dans la dernière version alors qu'elles étaient autorisées avant. Ce n'est pas sale pour autant !!
C'est même plutôt sain que de retirer ce qui peut poser problème ou qui n'a plus lieu d'être.
En quoi elle est paralysée ? L'accès au fichier a subit 2 grosses mises à jour (nio et nio2), l'IHM en eu une grosse (swing pour remplacer awt). Oui on pourrait peut être espérer plus de nouveautés (swing commence à moisir par exemple), mais ça n'a rien à voir avec la compatibilité.
Effectivement, cela n'a rien à voir avec la compatibilité puisque AWT, io et Date, dont plus de la moitié de l'API est deprecated, se trouvent toujours dans l'API…
La dénomination commerciale/publique du langage depuis Java 5 est justement « Java 5 », « Java 6 » et « Java 7 », mais l'API est en version 1.5, 1.6 et 1.7. Ils se permettront de casser la compatibilité pour la version 2.x (pas prévue à ce que je sache).
Ayant commencé avec du Java 1.2-beta4 en 1998, je sais, merci !! Et donc, ça fait donc 15 ans que la compatibilité n'a pas été cassée.
Finalement, peut-être que pour 1.99 aka Java99, on aura virer les trucs qui ne servent plus à rien :)
Personnellement je ne vois pas en quoi c'est un problème une API qui ne plaît pas il suffit de ne pas l'utiliser.
Le problème, ce n'est pas qu'elle ne me plaît pas mais simplement, comme le dit Cykl, elle est paralysée.
Personnellement, je pense que quelque chose qui est deprecated devrait sortir de l'API au bout de deux ou trois révisions du langage, quitte à y revenir sous une autre forme plus tard.
Java à un énorme problème de ce côté là. Le langage et la lib standard se retrouvent paralysées. Y'a un moment ou il faut faire quelque chose (et on peut le faire sans rien, ou trop, casser) mais le JDK à du mal.
Carrément d'accord !!! Combien de choses sont en deprecated de puis plus de dix ans dans la "lib standard" du JDK ?
Il y a un moment où il faut aussi dire que l'appli développée il y a dix ans a peut-être besoin d'être nettoyée si elle veut sauter d'un seul coup trois versions de JDK !
Rien qu'en virant l'ensemble des classes ou méthodes qui sont deprecated depuis 2 versions majeures, on gagnerait en lisibilité.
Je suis vraiment surpris de voir que les concepteurs d'Ada ont sélectionné un comportement privilégiant la performance a la "fiabilité" par rapport au C (par défaut puisque le C99 a restrict)..
Surtout qu'en plus, je trouve que le in out sur fonction n'était pas franchement indispensable mais bon, c'est comme partout, il doit y avoir des lobbys :)
Au passage, pas d'erreur de compilation non plus sur le gnat d'Adacore… :-/
Bien pour les performances, mais je me demande comment ça marche en pratique: c'est assez simple de faire du code ou le compilateur ne peut pas savoir s'il y a des alias ou pas:
f(A[i], A[j])..
Surtout qu'en fait, sur le gnat installé sur mon Ubuntu 12.04, ça compile sans problème… Et ça fonctionne mais avec un résultat surprenant.
On voit bien que Var1 n'a été incrémenté qu'une seule fois alors qu'on aurait pu imaginer qu'il le soit deux fois mais c'est certainement lié au mode de passage de paramètre.
A voir si la version Adacore fait la même chose :)
En me baladant sur le site de MaRTE OS, j'ai pu retrouver ce lien qui montre une utilisation sympa d'Ada dans son domaine de prédilection, le multitâche temps réel.
De fil en aiguille, je suis arrivé sur cette petite vidéo via une page de l'ENST.
Que des petits trucs sympas quoi ! :)
Tu n'as pas non plus toutes les bibliothèques disponibles pour Java en Ada.
Oui, enfin c'est pas non plus les bindings vers des bibliothèques C qui manquent et quand elles n'existent pas, c'est quand même assez simple à faire.
C'est juste une question de volonté, de nombre d'utilisateurs et donc de mode car il ne faut pas oublier qu'à ses débuts, Java n'était pas non plus autant fourni, que ce soit dans sa bibliothèque standard que dans les externes.
L'outillage est quand même la clef du succès d'un langage en entreprise.
C'est une des clés, pas LA clé car sinon, on ne ferait plus de C ni de C++, ni plein d'autres langages car il n'y en a franchement pas beaucoup qui disposent d'un IDE comme Eclipse.
mon baril de C++, ce serait pour de meilleures performances.
Pour les performances, c'est jouable, il suffit de regarder là. Bon, en relativisant les résultats parce que le site, c'est un peu le jeu du "c'est moi qui ai la plus grosse". Mais, les performances d'Ada se rapproche plus du C que de C++.
mon baril de Java, ce serait pour des outils (IDE, debugger, refactoring, gestion de dépendances, GUI designer…) plus productifs.
Là, autant être objectif, non.
- IDE : GPS qui n'est pas mal mais pas au niveau d'un Eclipse ou GnatBench que je n'ai pas encore essayé
- Debugger : comme je te le disais, on utilise les mêmes outils que pour du C/C++ à savoir pour le debugger gdb ou mieux ddd
- Gestion des dépendances : C'est un langage compilé avec les problèmes inhérents de différences entre architectures donc il est difficile de partager des bouts de binaires et puis, il n'y a aucun outil pour (si tu pensais à un maven-like)
- GUI designer : avec les dernières versions de GtkADA, on peut utiliser le GtkBuiler et donc créer des IHMS avec Glade mais comme je suis un vieux con, moi, je le fais à la main :D
mon baril de python/django, ce serait pour du rad web encore plus rad!
Là encore, non. On ne fait pas de RAD en Ada, on réfléchit ;)
On peut quand même trouver quelques trucs un poil avancés chez Stéphane Carrez en termes de programmation Web notamment Ada Server Pages mais ce n'est pas du RAD.
Au niveau de quoi ? Des outils ? Gnat, c'est du GCC donc on peut faire du profiling, du debugging, il y a un environnement nommé Gnat-GPS, des bibliothèques…
Il parait que c'est super pratique et les développeurs ruby en sont des grands fans.
Ouais avec le magnifique yield
moduleTestclassMaClasse# Ici un attributattr_accessor:nawakdefinitialize@nawak=12enddefuse_nawakyield@nawakendendendrequire'ma_classe'mon_instance=Test::MaClasse.newmon_instance.nawak+=2mon_instance.use_nawakdo|le_nawak_param|puts"Donnes-moi ton nawak qui vaut #{le_nawak_param}"end
Sachant que les ponteurs sont des types Access, il suffit de regarder la partie dédiée dans l'Ada Reference Manual.
Pour être précis, il suffit de regarder la ligne 26 de cette page dans la norme ou sur la page Wikibooks.
Pour ce qui est de Java, il faut aussi bien voir qu'il y avait la promesse du Write once, run everywhere et surtout la possibilité d'embarquer du vrai code dans une page web avec les applets.
Quand j'ai commencé en Java en 97, c'est d'ailleurs ce dernier point qui était mis en avant et qui aujourd'hui peut sembler délirant tant les applets ont quasi disparu de la circulation.
Pour plusieurs raisons :
- lors de sa sortie au début des années 80, étant un langage demandé par le département de la défense américain, il a été boudé par les universitaires et donc n'a que très peu été enseigné à cette époque
- les premiers compilateurs coûtaient extrêmement cher avec une fâcheuse tendance à être buggué
- il est souvent vu comme trop verbeux, trop complexe et trop contraignant
Disons qu'il a toutefois un marché de niche dans les équipements où la sûreté de fonctionnement est plus importante que tout. Du coup, on trouve de l'Ada dans l'aéronautique, l'aérospatiale ou la défense.
Mais bon, C++ a pris en partie sa place dans certains programmes de ces secteurs mais c'est aussi en grande partie dû au fait qu'il est moins enseigné que C++ ou Java.
Personnellement, je trouve ça assez dommage surtout quand on voit la complexité de la dernière norme C++, complexité qui a longtemps été reprochée à Ada.
D'ailleurs, j'ai oublié de le préciser dans la dépêche mais les pre- et post-conditions génèrent un code d' assert levant une exception de type AssertionError si je me rappelle bien.
le but c'est plutôt de pouvoir exprimer les pre- et post-condition ainsi que les invariants plus simplement
Comme je le disais plus haut, du sucre syntaxique beaucoup plus qu'une remise en cause du paradigme.
mais bien dans l'évaluation d'une expression par application d'une fonction, avec des possibilités plus étendues sur les fonctions qu'on peut mettre dans ces expressions.
Enfin, c'est relativement limité quand même et c'est la raison pour laquelle je penche plus pour du sucre syntaxique qu'autre chose.
D'ailleurs, est-ce que les fonctions sont des objets primaires en Ada ?
Là, c'est moi qui ne connais pas assez la programmation fonctionnelle :D
Mais a priori et d'après ce que j'ai compris du fonctionnel, non. On ne manipule pas les fonctions comme on pourrait le faire avec un objet, hormis le célèbre pointeur de fonction mais c'est la même chose qu'en C… Mais bon, j'ai peut-être pas bien compris ce que tu voulais dire :D
[^] # Re: Eurocontrol
Posté par Blackknight (site web personnel, Mastodon) . En réponse au journal Ada au FOSDEM 2013. Évalué à 0.
Oui, oui mais Eurocontrol, ça claque plus que ETFMS ou IFPS ;)
# Y a pas que moi quand même ?
Posté par Blackknight (site web personnel, Mastodon) . En réponse à la dépêche Pourquoi les développeurs n'utilisent pas plus de machines à état ?. Évalué à 3.
Dites, je suis quand même pas le seul à utiliser le patron de conception des états, si ?
Ok, faut l'adapter pour chaque projet.
Ok, ça gère pas le hiérarchique (enfin, avec un peu de jugeotte, ça se fait).
Mais bon, globalement, ça peut le faire.
[^] # Re: Usine
Posté par Blackknight (site web personnel, Mastodon) . En réponse à la dépêche Nouvelle version de Scub Foundation, usine logicielle Java libre. Évalué à 3.
Si on cassait jamais la compatibilité, on aurait encore que 640Ko de RAM disponible et on ferait encore des pirouettes pour les dépasser.
Maintenant, dans Java, c'est un problème parce que cela pousse certains à continuer à utiliser des trucs deprecated donc non maintenus et potentiellement troués comme pas possible. Ca alourdit la bibliothèque et sa doc.
Si tu veux continuer à faire du JDK 1.2, utilises un JDK 1.2 mais ne demandes pas au 1.7 de traîner les boulets de ses ancêtres.
D'ailleurs, plus haut tu parlais d'Ada, certaines constructions sont interdites dans la dernière version alors qu'elles étaient autorisées avant. Ce n'est pas sale pour autant !!
C'est même plutôt sain que de retirer ce qui peut poser problème ou qui n'a plus lieu d'être.
[^] # Re: Usine
Posté par Blackknight (site web personnel, Mastodon) . En réponse à la dépêche Nouvelle version de Scub Foundation, usine logicielle Java libre. Évalué à 1.
Effectivement, cela n'a rien à voir avec la compatibilité puisque AWT, io et Date, dont plus de la moitié de l'API est deprecated, se trouvent toujours dans l'API…
Ayant commencé avec du Java 1.2-beta4 en 1998, je sais, merci !! Et donc, ça fait donc 15 ans que la compatibilité n'a pas été cassée.
Finalement, peut-être que pour 1.99 aka Java99, on aura virer les trucs qui ne servent plus à rien :)
[^] # Re: Usine
Posté par Blackknight (site web personnel, Mastodon) . En réponse à la dépêche Nouvelle version de Scub Foundation, usine logicielle Java libre. Évalué à 1.
Le problème, ce n'est pas qu'elle ne me plaît pas mais simplement, comme le dit Cykl, elle est paralysée.
Personnellement, je pense que quelque chose qui est deprecated devrait sortir de l'API au bout de deux ou trois révisions du langage, quitte à y revenir sous une autre forme plus tard.
[^] # Re: Usine
Posté par Blackknight (site web personnel, Mastodon) . En réponse à la dépêche Nouvelle version de Scub Foundation, usine logicielle Java libre. Évalué à 1.
Carrément d'accord !!! Combien de choses sont en deprecated de puis plus de dix ans dans la "lib standard" du JDK ?
Il y a un moment où il faut aussi dire que l'appli développée il y a dix ans a peut-être besoin d'être nettoyée si elle veut sauter d'un seul coup trois versions de JDK !
Rien qu'en virant l'ensemble des classes ou méthodes qui sont deprecated depuis 2 versions majeures, on gagnerait en lisibilité.
[^] # Re: Révoltante ingratitude
Posté par Blackknight (site web personnel, Mastodon) . En réponse à la dépêche Meilleurs contributeurs LinuxFr.org : les gagnants de décembre 2012. Évalué à 1.
Ben moi, je trouve que finalement, ce classement est franchement pas mal :)
[^] # Re: Comme la Stasi
Posté par Blackknight (site web personnel, Mastodon) . En réponse au journal Bull : Architect of an Open World. Évalué à 1.
C'est clair, c'est quand ils disent juste ministère de l'Intérieur que ça devient suspect :D
# Comme la Stasi
Posté par Blackknight (site web personnel, Mastodon) . En réponse au journal Bull : Architect of an Open World. Évalué à 2. Dernière modification le 15 janvier 2013 à 17:42.
La DST, ça n'existe plus alors si quelqu'un te dit qu'il est de la DST, c'est un fake… Par contre, la DCRI, oui.
[^] # Re: warning donné par GNAT sur les paramètres aliasés
Posté par Blackknight (site web personnel, Mastodon) . En réponse à la dépêche Publication de la nouvelle norme Ada 2012. Évalué à 1.
Merci Yannick. voilà une information dont la source est on ne peut plus fiable ce qui n'est pas toujours évident par ici :D
[^] # Re: 2 paramètres 'in out' doivent être différents
Posté par Blackknight (site web personnel, Mastodon) . En réponse à la dépêche Publication de la nouvelle norme Ada 2012. Évalué à 1.
Surtout qu'en plus, je trouve que le in out sur fonction n'était pas franchement indispensable mais bon, c'est comme partout, il doit y avoir des lobbys :)
Au passage, pas d'erreur de compilation non plus sur le gnat d'Adacore… :-/
[^] # Re: 2 paramètres 'in out' doivent être différents
Posté par Blackknight (site web personnel, Mastodon) . En réponse à la dépêche Publication de la nouvelle norme Ada 2012. Évalué à 2.
Surtout qu'en fait, sur le gnat installé sur mon Ubuntu 12.04, ça compile sans problème… Et ça fonctionne mais avec un résultat surprenant.
puisque ça retourne
On voit bien que Var1 n'a été incrémenté qu'une seule fois alors qu'on aurait pu imaginer qu'il le soit deux fois mais c'est certainement lié au mode de passage de paramètre.
A voir si la version Adacore fait la même chose :)
[^] # Re: Erreur possible ?
Posté par Blackknight (site web personnel, Mastodon) . En réponse à la dépêche Publication de la nouvelle norme Ada 2012. Évalué à 1.
Merci pour la ré-écriture, je m'étais mal exprimé et j'aurais dû coller l'exemple du Rationale ici.
# Temps réel
Posté par Blackknight (site web personnel, Mastodon) . En réponse à la dépêche Publication de la nouvelle norme Ada 2012. Évalué à 2.
En me baladant sur le site de MaRTE OS, j'ai pu retrouver ce lien qui montre une utilisation sympa d'Ada dans son domaine de prédilection, le multitâche temps réel.
De fil en aiguille, je suis arrivé sur cette petite vidéo via une page de l'ENST.
Que des petits trucs sympas quoi ! :)
[^] # Re: Popularité
Posté par Blackknight (site web personnel, Mastodon) . En réponse à la dépêche Publication de la nouvelle norme Ada 2012. Évalué à 2.
Oui, enfin c'est pas non plus les bindings vers des bibliothèques C qui manquent et quand elles n'existent pas, c'est quand même assez simple à faire.
C'est juste une question de volonté, de nombre d'utilisateurs et donc de mode car il ne faut pas oublier qu'à ses débuts, Java n'était pas non plus autant fourni, que ce soit dans sa bibliothèque standard que dans les externes.
C'est une des clés, pas LA clé car sinon, on ne ferait plus de C ni de C++, ni plein d'autres langages car il n'y en a franchement pas beaucoup qui disposent d'un IDE comme Eclipse.
[^] # Re: Popularité
Posté par Blackknight (site web personnel, Mastodon) . En réponse à la dépêche Publication de la nouvelle norme Ada 2012. Évalué à 3.
Moi, j'aime bien les messages du compilo
qui après tentative de compilation donne
Les messages de gnatgcc sont généralement assez clairs y compris dans les generics (contrairement à ceux fournis pour les templates C++).
En fait, il faut prendre le compilo comme une aide au développement, pas comme un truc qui est là pour faire chier.
[^] # Re: Popularité
Posté par Blackknight (site web personnel, Mastodon) . En réponse à la dépêche Publication de la nouvelle norme Ada 2012. Évalué à 3.
Pour les performances, c'est jouable, il suffit de regarder là. Bon, en relativisant les résultats parce que le site, c'est un peu le jeu du "c'est moi qui ai la plus grosse". Mais, les performances d'Ada se rapproche plus du C que de C++.
Là, autant être objectif, non.
- IDE : GPS qui n'est pas mal mais pas au niveau d'un Eclipse ou GnatBench que je n'ai pas encore essayé
- Debugger : comme je te le disais, on utilise les mêmes outils que pour du C/C++ à savoir pour le debugger gdb ou mieux ddd
- Gestion des dépendances : C'est un langage compilé avec les problèmes inhérents de différences entre architectures donc il est difficile de partager des bouts de binaires et puis, il n'y a aucun outil pour (si tu pensais à un maven-like)
- GUI designer : avec les dernières versions de GtkADA, on peut utiliser le GtkBuiler et donc créer des IHMS avec Glade mais comme je suis un vieux con, moi, je le fais à la main :D
Là encore, non. On ne fait pas de RAD en Ada, on réfléchit ;)
On peut quand même trouver quelques trucs un poil avancés chez Stéphane Carrez en termes de programmation Web notamment Ada Server Pages mais ce n'est pas du RAD.
[^] # Re: Popularité
Posté par Blackknight (site web personnel, Mastodon) . En réponse à la dépêche Publication de la nouvelle norme Ada 2012. Évalué à 2. Dernière modification le 18 décembre 2012 à 10:32.
Au niveau de quoi ? Des outils ? Gnat, c'est du GCC donc on peut faire du profiling, du debugging, il y a un environnement nommé Gnat-GPS, des bibliothèques…
[^] # Re: Vive le fonctionnel
Posté par Blackknight (site web personnel, Mastodon) . En réponse à la dépêche Publication de la nouvelle norme Ada 2012. Évalué à 2.
Ouais avec le magnifique yield
Trop de la balle, de l'injection de code !! :D
[^] # Re: Vive le fonctionnel
Posté par Blackknight (site web personnel, Mastodon) . En réponse à la dépêche Publication de la nouvelle norme Ada 2012. Évalué à 1.
C'est déjà un exemple largement avancé et puis il y aurait deux trois trucs à dire sur la définition de type accès anonyme :)
[^] # Re: Vive le fonctionnel
Posté par Blackknight (site web personnel, Mastodon) . En réponse à la dépêche Publication de la nouvelle norme Ada 2012. Évalué à 3.
Sachant que les ponteurs sont des types Access, il suffit de regarder la partie dédiée dans l'Ada Reference Manual.
Pour être précis, il suffit de regarder la ligne 26 de cette page dans la norme ou sur la page Wikibooks.
[^] # Re: Popularité
Posté par Blackknight (site web personnel, Mastodon) . En réponse à la dépêche Publication de la nouvelle norme Ada 2012. Évalué à 5.
Pour ce qui est de Java, il faut aussi bien voir qu'il y avait la promesse du Write once, run everywhere et surtout la possibilité d'embarquer du vrai code dans une page web avec les applets.
Quand j'ai commencé en Java en 97, c'est d'ailleurs ce dernier point qui était mis en avant et qui aujourd'hui peut sembler délirant tant les applets ont quasi disparu de la circulation.
[^] # Re: Popularité
Posté par Blackknight (site web personnel, Mastodon) . En réponse à la dépêche Publication de la nouvelle norme Ada 2012. Évalué à 6.
Pour plusieurs raisons :
- lors de sa sortie au début des années 80, étant un langage demandé par le département de la défense américain, il a été boudé par les universitaires et donc n'a que très peu été enseigné à cette époque
- les premiers compilateurs coûtaient extrêmement cher avec une fâcheuse tendance à être buggué
- il est souvent vu comme trop verbeux, trop complexe et trop contraignant
Disons qu'il a toutefois un marché de niche dans les équipements où la sûreté de fonctionnement est plus importante que tout. Du coup, on trouve de l'Ada dans l'aéronautique, l'aérospatiale ou la défense.
Mais bon, C++ a pris en partie sa place dans certains programmes de ces secteurs mais c'est aussi en grande partie dû au fait qu'il est moins enseigné que C++ ou Java.
Personnellement, je trouve ça assez dommage surtout quand on voit la complexité de la dernière norme C++, complexité qui a longtemps été reprochée à Ada.
[^] # Re: Vive le fonctionnel
Posté par Blackknight (site web personnel, Mastodon) . En réponse à la dépêche Publication de la nouvelle norme Ada 2012. Évalué à 2.
D'ailleurs, j'ai oublié de le préciser dans la dépêche mais les pre- et post-conditions génèrent un code d' assert levant une exception de type AssertionError si je me rappelle bien.
Comme je le disais plus haut, du sucre syntaxique beaucoup plus qu'une remise en cause du paradigme.
[^] # Re: Vive le fonctionnel
Posté par Blackknight (site web personnel, Mastodon) . En réponse à la dépêche Publication de la nouvelle norme Ada 2012. Évalué à 1.
Enfin, c'est relativement limité quand même et c'est la raison pour laquelle je penche plus pour du sucre syntaxique qu'autre chose.
Là, c'est moi qui ne connais pas assez la programmation fonctionnelle :D
Mais a priori et d'après ce que j'ai compris du fonctionnel, non. On ne manipule pas les fonctions comme on pourrait le faire avec un objet, hormis le célèbre pointeur de fonction mais c'est la même chose qu'en C… Mais bon, j'ai peut-être pas bien compris ce que tu voulais dire :D