démarrons l'année par un coup de racket
des benchmarks étonnants
Logiciels / Programmation

Jybz Membre non connecté
-
- Voir le profil du membre Jybz
- Inscrit le : 10/10/2018
- Groupes :
-
Administrateur
-
Forgeron
Reprise du message précédent
marc-andré :
et en plus, ça marche pas!
c'est vraiment une peine ces machins qu'on sait jamais comment s'en servir
et c'est d'autant plus vicieux que j'avais fait une prévisualisation et que ça avait l'air d'être bon et au final rien!
Jybz :
Utiiser [ code]...[ code] au lieu de [ quote][ /quote]
et en plus, ça marche pas!
c'est vraiment une peine ces machins qu'on sait jamais comment s'en servir
et c'est d'autant plus vicieux que j'avais fait une prévisualisation et que ça avait l'air d'être bon et au final rien!
En fait, il n'y a aucune espace, je les ai rajouté pour ne pas être interpreté.
Oui il y a un bouton, il faut développé la barre-menu tout à droite.
Téléverser une image : /wiki/hebergement-de-fichiers-sur-mlo
Arch | Machine | OS |
x86_64 | lenovo x250 | mga9 |
armv7hl | bananapro | mga9 |
aarch64 | Raspberry Pi 4B | mga9 |

marc-andré Membre non connecté
-
- Voir le profil du membre marc-andré
- Inscrit le : 29/09/2015
- Groupes :
Jybz :
En fait, il n'y a aucune espace, je les ai rajouté pour ne pas être interpreté.
Oui il y a un bouton, il faut développé la barre-menu tout à droite.
marc-andré :
et en plus, ça marche pas!
c'est vraiment une peine ces machins qu'on sait jamais comment s'en servir
et c'est d'autant plus vicieux que j'avais fait une prévisualisation et que ça avait l'air d'être bon et au final rien!
Jybz :
Utiiser [ code]...[ code] au lieu de [ quote][ /quote]
et en plus, ça marche pas!
c'est vraiment une peine ces machins qu'on sait jamais comment s'en servir
et c'est d'autant plus vicieux que j'avais fait une prévisualisation et que ça avait l'air d'être bon et au final rien!
En fait, il n'y a aucune espace, je les ai rajouté pour ne pas être interpreté.
Oui il y a un bouton, il faut développé la barre-menu tout à droite.
oui, super, j'ai trouvé, merci;
du coup, j'ai modifié tous mes messages de sorte que le code soit lisible;
mais c'est triste qu'il ne connaisse pas racket, donc, on a l'indentation mais pas la coloration syntaxique comme en C;
mais c'est déjà mieux!
HP ProDesk ;
Mageia8 Gnome
Liberté et sécurité sont les arguments classiques pour LINUX. En prime il y a aussi la dignité et la confiance ressentie depuis que je suis sous Mageia
Mageia8 Gnome
Liberté et sécurité sont les arguments classiques pour LINUX. En prime il y a aussi la dignité et la confiance ressentie depuis que je suis sous Mageia

Jybz Membre non connecté
-
- Voir le profil du membre Jybz
- Inscrit le : 10/10/2018
- Groupes :
-
Administrateur
-
Forgeron
marc-andré :
oui, super, j'ai trouvé, merci;
du coup, j'ai modifié tous mes messages de sorte que le code soit lisible;
mais c'est triste qu'il ne connaisse pas racket, donc, on a l'indentation mais pas la coloration syntaxique comme en C;
mais c'est déjà mieux!
Jybz :
En fait, il n'y a aucune espace, je les ai rajouté pour ne pas être interpreté.
Oui il y a un bouton, il faut développé la barre-menu tout à droite.
marc-andré :
et en plus, ça marche pas!
c'est vraiment une peine ces machins qu'on sait jamais comment s'en servir
et c'est d'autant plus vicieux que j'avais fait une prévisualisation et que ça avait l'air d'être bon et au final rien!
Jybz :
Utiiser [ code]...[ code] au lieu de [ quote][ /quote]
et en plus, ça marche pas!
c'est vraiment une peine ces machins qu'on sait jamais comment s'en servir
et c'est d'autant plus vicieux que j'avais fait une prévisualisation et que ça avait l'air d'être bon et au final rien!
En fait, il n'y a aucune espace, je les ai rajouté pour ne pas être interpreté.
Oui il y a un bouton, il faut développé la barre-menu tout à droite.
oui, super, j'ai trouvé, merci;
du coup, j'ai modifié tous mes messages de sorte que le code soit lisible;
mais c'est triste qu'il ne connaisse pas racket, donc, on a l'indentation mais pas la coloration syntaxique comme en C;
mais c'est déjà mieux!
Pour la coloration syntaxique il faut au choix : le faire soi-mêmi, faire la demande à phpboost
Téléverser une image : /wiki/hebergement-de-fichiers-sur-mlo
Arch | Machine | OS |
x86_64 | lenovo x250 | mga9 |
armv7hl | bananapro | mga9 |
aarch64 | Raspberry Pi 4B | mga9 |

marc-andré Membre non connecté
-
- Voir le profil du membre marc-andré
- Inscrit le : 29/09/2015
- Groupes :
pour compléter le tableau, je viens de faire la version C de l'algorithme optimisé en fortran de Yuusha;
Code C :
#include <stdio.h> 3 int main (int argc, char** argv){ 2 int compteur = 1; 1 int diviseur; 5 for(int num = 3; num < 250001; num += 2){ 1 diviseur = 3; 2 while((diviseur * diviseur < num) && (num % diviseur)) diviseur += 2; 3 if(diviseur * diviseur > num) compteur += 1; 4 } 5 printf("nombre de premier : %d\n",compteur); 6 return 0; 7 }
et le résultat est conforme aux attentes
Code BASH :
[marc@ficus5 bid]$ time ./YT2_test nombre de premier : 22044 real 0m0,072s user 0m0,071s sys 0m0,001s
ouf, le C retrouve sa place!
HP ProDesk ;
Mageia8 Gnome
Liberté et sécurité sont les arguments classiques pour LINUX. En prime il y a aussi la dignité et la confiance ressentie depuis que je suis sous Mageia
Mageia8 Gnome
Liberté et sécurité sont les arguments classiques pour LINUX. En prime il y a aussi la dignité et la confiance ressentie depuis que je suis sous Mageia

Papoteur Membre non connecté
-
- Voir le profil du membre Papoteur
- Inscrit le : 03/10/2011
- Groupes :
-
Modérateur
-
Équipe Mageia
-
Administrateur
-
Forgeron
marc-andré :
pour compléter le tableau, je viens de faire la version C de l'algorithme optimisé en fortran de Yuusha;
et le résultat est conforme aux attentes
ouf, le C retrouve sa place!
et le résultat est conforme aux attentes
Code BASH :
[marc@ficus5 bid]$ time ./YT2_test nombre de premier : 22044 real 0m0,072s user 0m0,071s sys 0m0,001s
ouf, le C retrouve sa place!

Et pour ne pas laisser penser que le FORTRAN est 4 x plus performant que le C :
Code BASH :
time ./primec nombre de premiers : 22044 real 0m0,014s user 0m0,014s sys 0m0,000s
Yves

marc-andré Membre non connecté
-
- Voir le profil du membre marc-andré
- Inscrit le : 29/09/2015
- Groupes :
Papoteur :
Et pour ne pas laisser penser que le FORTRAN est 4 x plus performant que le C :
c'est le même code C sur ton i7?
il est 4-5 fois plus rapide que le mien!
as tu eu l'envie suite à cette conversation de tester racket?
ça vaudrait le coup de voir ce que ça donne sur une machine rapide!
HP ProDesk ;
Mageia8 Gnome
Liberté et sécurité sont les arguments classiques pour LINUX. En prime il y a aussi la dignité et la confiance ressentie depuis que je suis sous Mageia
Mageia8 Gnome
Liberté et sécurité sont les arguments classiques pour LINUX. En prime il y a aussi la dignité et la confiance ressentie depuis que je suis sous Mageia

marc-andré Membre non connecté
-
- Voir le profil du membre marc-andré
- Inscrit le : 29/09/2015
- Groupes :
après cette mise en bouche sur un exemple trivial, il est temps de vous faire partager mon enthousiasme pour ce langage, scheme, et son implémentation racket.
La référence du site :
https://racket-lang.org/index.html
et la documentation pour se donner une idée de la chose ;
https://docs.racket-lang.org/index.html
elle est écrite en « scrible », un DSL (domain specific langage) spécialement conçu (en racket) ;
je n’ai pas eu l’occasion de m’en servir (du langage) mais le résultat (la documentation elle-même) est nickel, aussi bien au niveau de la forme que du contenu, c’est un bonheur à utiliser.
Un dialecte de LISP ;
LISP est aussi vieux que FORTRAN et est toujours là, sous diverses formes, pour de bonnes raisons.
On se représente souvent les langages de programmation sur un axe qui va de la machine à l’humain, et où, au plus le langage serait user-friendly, au plus il y aurait un coût en efficacité ;
c’est le cas typique entre C et python par exemple ;
mais il y a une absence sur cette échelle, ce sont les mathématiques ;
LISP et ses dialectes introduisent les mathématiques dans le jeu sous diverses formes ;
déjà les nombres, ne sont pas limités par le hardware, mais correspondent aux maths ;
https://en.wikipedia.org/wiki/Numerical_tower
ceci est fondamental, pour conserver la précision dans des calculs types astronomiques, car avec le type rationnel, tant que l’on ne demande pas son affichage sous forme inexacte (réelle avec float), on conserve l’absolu précision des mesures ;
donc,il y a du matériel embarqué dans les satellites qui tourne avec du LISP.
première conséquence, indirecte, un garbage collector ; en effet, les nombres entiers sont infinis ; si on veut implémenter sur une machine finie cette illusion de l’infini, fallait un garbage collector ;
ensuite, il y a l’aspect fonctionnel de la programmation, qui dérive du lambda calculus, et aussi l’aspect symbolique ;
les choses que l’on manipule ce sont des symboles, comme en math, et on les nomme variables que s’ils sont liés à une valeur ; mais ils peuvent aussi bien être liés à une procédure ;
Pourquoi choisir scheme plutôt que common lisp ?
Au départ, quand j’ai découvert cet univers il y a 2 ans, j’ai flotté un moment avant de choisir ;
ce qui m’a décidé, c’est 2 choses :
- d’abord le problème de l’outil : la plupart des « lispers » utilisent emacs ;
d’entrée, cela m’est apparu beaucoup plus compliqué que vim, et ensuite, cela crée de la confusion, car emacs est écrit en « elisp » un autre dialecte lisp, mais la version actuelle à la mode c’est sbcl (steel bank common lisp … j’ignore l’origine de ce nom) ;
toujours est-il que c’est un vrai problème pour débuter et avoir un outil opérationnel ;
alors que DrRacket fonctionne parfaitement « out of the box ».
- ensuite, c’est mon parcours pédagogique ; tout a commencé par cette lecture du prof. Jerry Cain de Stanford et les 3 suivantes, qui sont une intro à scheme ; (les 18 précédentes traitent du paradigme « impératif », soit le C et sont excellentes) ;
https://www.youtube.com/watch?v=_cV8NWQCxnE
et s’est poursuivi, grâce à l’algo de YT par cette formidable série du MIT, sicp pour « structure & interprétation of computer programs » ; 20 lectures formidables qui « ouvrent » l’esprit ;
https://www.youtube.com/watch?v=-J_xL4IGhJA&list=PLE18841CABEA24090
elles sont anciennes mais sont vraiment « cultes » ;
et cela a causé un peu de flottement, car dans ces lectures, il est encore question de lisp, mais on assiste en fait à la naissance de scheme ; très rapidement, je me suis rendu compte que pour suivre ces lectures, faire les exercices, la version actuelle de scheme dans DrRacket est beaucoup plus proche que le common lisp sbcl ;
pour compléter ces lectures de 1985, il y a le même enseignement, mais au lieu d’être des cours magistraux au tableau, ce sont des slides commentés, et c’est plus récent (2004) ; mais c’est le même contenu pour l’essentiel ;
https://www.youtube.com/watch?v=FIUJd_ZFmGo&t=54s
pour compléter le tout, il y a cette chaîne qui a fait récemment une série qu’on pourrait considérer comme des TD (travaux dirigés) sur ces lectures du MIT ;
https://www.youtube.com/watch?v=oA-FdE3KV88
donc, globalement, il existe un matériel pédagogique abondant et de haut niveau pour apprendre le scheme et disponible sur YT.
C’est ce qui manque dans d’autres langages comme le C++ entre autre, des gens capables de l’enseigner.
Alors que scheme, est utilisé pour l’enseignement.
Plus précisément, racket serait né, d’une idée apparue chez 3 profs en même temps, en faisant le constat des difficultés rencontrés chez les collégiens lors de leur initiation à l’informatique, déconnectée de l’enseignement des maths et de l’algèbre ; alors que lisp serait l’idéal ; oui, mais voilà, à l’époque, pour faire du lisp, il n’y avait que emacs ; et ça c’était le problème : on peut initier les enfants à l’informatique avec scheme, en synergie avec les maths, mais il est impossible de leur demander d’apprendre à se servir d’emacs ; et c’est ainsi que leur est venu l’idée de faire un éditeur sympa et utilisable par les débutants et les enfants ;
et aujourd’hui, avec DrRacket on peut dire que c’est une réussite.
Et pourtant, très peu de gens en ont entendu parler, surtout en France.
En fait, il semble être utilisé par certains profs aux USA dans des collèges comme prévu ; c’est pourquoi, il y a ce choix du langage dans drracket, avec toute une progression prévue pour les débutants, intermédiaires ou avancés, qui correspondent au bouquin ‘how to design programs ».
Réservés aux enfants ?
Non de l’autre côté, il est utilisé par les chercheurs pour sa capacité, via les macros, de créer des DSL, un enrichissement du langage, voire même à créer d’autres langages ;
il y a des exemples dans la doc, en particuliers datalog, une implémentation de « prolog » en racket !
Alors cela fait peur, et d’ailleurs il y a un chapitre intitulé « fear of macros » propre à dissuader le néophyte ; et puis créer un DSL, à quoi bon ?
Oui, pour l’instant, je me suis contenté de lire un peu la doc sur les macros, et je ne me suis pas encore lancé ; c’est un exercice particuliers de l’esprit, car on écrit pas du code destiné à être exécuté au run time, mais il s’agit d’expliquer à l’interpréteur, quel code il devra générer lorsqu’il rencontrera un certain « pattern » ;
donc, dans l’ensemble, racket est soit utilisé comme initiation pour les enfants, et il est super pour ça, soit il est utilisé par des étudiants chercheurs qui développent de nouveau langage où il est aussi très apprécié.
Mais l’utiliser comme langage multi-purpose ?
Et bien c’est mon choix, car en plus d’être très élégant, il a une certaine maturité, et une quantité prodigieuse de librairies dans des tas de domaines. Et au niveau efficacité, il se situe pas mal comme vous avez pu le constater avec ces essais.
On pourrait remarquer que même au MIT ils ont abandonné scheme pour python depuis plusieurs années et sont entrain de passer à julia ;
cela veut pas dire que python est « mieux », mais tout simplement qu’il correspond plus à la demande du marché ;
De toute façon, je ne suis qu’un bricoleur saisonnier qui fait de l’informatique pour le fun ; (cette année, j’ai arrêté l’informatique en avril pour ne reprendre qu’en novembre) et je me fiche du marché ;
concernant python, j’en ai fait pendant tout un hiver, puis ça c’est arrêté sur un tuto où il était question de « plot » qui ne marchait pas dans « spyder » mais qui marchait dans le terminal ; une vraie confusion cet environnement : le même code va marcher dans le terminal mais pas si on le lance depuis un éditeur pourtant dédié à python ; bonjour la portabilité du truc !
En fait python semble victime de son succès, comme le C++ et alors, ça devient le capharnaum !
Mais avec le recul, en relisant mes cahiers de brouillons et mon dossier formation en python, je me suis aperçu que je n’avais rien créer en python, cela ne m’a jamais inspiré le moindre désir ni passage à l’acte ; frustrant et ennuyeux donc !
Tandis que scheme, ça stimule l’imagination de façon formidable. Et ça reste une niche très cohérente.
Et alors que je n’ai jamais réussi à faire le moindre truc en GUI, ni en C++ Qt ou WxWidget, ni en python, avec racket, d’entrée je m’amuse bien ;
faut dire que leur framework, est minimaliste, mais c’est tout juste à ma mesure, il est possible de l’envisager.
https://docs.racket-lang.org/gui/Windowing_Classes.html
en fait j’aime bien ce langage car j’arrive à en tirer de la satisfaction à faire ce que j’ai envie.
Et c’est un produit très soigné à tous les niveaux, l’éditeur, la documentation, la pédagogie.
La communauté racket aujourd’hui ?
Il semble y avoir un core de quelques personnes, prof d’universités pour la plupart et un groupe de 70-80 contributeurs qui gravitent autour ;
un extrait de leur conférence annuelle qui a eu lieu en novembre :
https://www.youtube.com/watch?v=7uGJJmjcxzY
voilà, j’espère que ça vous aura intéressé.
HP ProDesk ;
Mageia8 Gnome
Liberté et sécurité sont les arguments classiques pour LINUX. En prime il y a aussi la dignité et la confiance ressentie depuis que je suis sous Mageia
Mageia8 Gnome
Liberté et sécurité sont les arguments classiques pour LINUX. En prime il y a aussi la dignité et la confiance ressentie depuis que je suis sous Mageia

Jybz Membre non connecté
-
- Voir le profil du membre Jybz
- Inscrit le : 10/10/2018
- Groupes :
-
Administrateur
-
Forgeron
Merci pour ton retour. Je me permets, le collège aux usa c'est un peu comme les IUT, c'est après le lycée. Ce n'est pas comme nos collèges avant le lycée. Le public sont des jeunes (je n'aurais pas dit enfants) personnes qui font leurs études "professionalisantes".
Quand regarderas-tu le Perl ?

Téléverser une image : /wiki/hebergement-de-fichiers-sur-mlo
Arch | Machine | OS |
x86_64 | lenovo x250 | mga9 |
armv7hl | bananapro | mga9 |
aarch64 | Raspberry Pi 4B | mga9 |

Papoteur Membre non connecté
-
- Voir le profil du membre Papoteur
- Inscrit le : 03/10/2011
- Groupes :
-
Modérateur
-
Équipe Mageia
-
Administrateur
-
Forgeron
marc-andré :
c'est le même code C sur ton i7?
il est 4-5 fois plus rapide que le mien!
as tu eu l'envie suite à cette conversation de tester racket?
ça vaudrait le coup de voir ce que ça donne sur une machine rapide!
Papoteur :
Et pour ne pas laisser penser que le FORTRAN est 4 x plus performant que le C :
c'est le même code C sur ton i7?
il est 4-5 fois plus rapide que le mien!
as tu eu l'envie suite à cette conversation de tester racket?
ça vaudrait le coup de voir ce que ça donne sur une machine rapide!
Ton premier code
Code BASH :
time racket prime-1l.racket cpu time: 120 real time: 120 gc time: 16 22044 real 0m0,749s user 0m0,620s sys 0m0,097s
Le deuxième, avec l'algo de Yuusha.
Code BASH :
time racket prime-y.racket cpu time: 70 real time: 69 gc time: 0 22044 real 0m0,389s user 0m0,352s sys 0m0,038s
Yves

Yuusha Membre non connecté
-
- Voir le profil du membre Yuusha
- Inscrit le : 04/07/2017
- Groupes :
-
Modérateur
-
Administrateur
-
Forgeron

Le problème du LISP : Lots of Irritating and Silly Parentheses

marc-andré :
- d’abord le problème de l’outil : la plupart des « lispers » utilisent emacs ;
d’entrée, cela m’est apparu beaucoup plus compliqué que vim
d’entrée, cela m’est apparu beaucoup plus compliqué que vim
Ça c'est marrant car je n'ai jamais pu me faire à vim. Ce truc du mode insertion/visualisation et autre, je trouve cela contre intuitif. Il faut sans cesse changer de mode. Et les commandes de type :wq ne sont pas facile à retenir.
marc-andré :
concernant python, j’en ai fait pendant tout un hiver, puis ça c’est arrêté sur un tuto où il était question de « plot » qui ne marchait pas dans « spyder » mais qui marchait dans le terminal ; une vraie confusion cet environnement : le même code va marcher dans le terminal mais pas si on le lance depuis un éditeur pourtant dédié à python ; bonjour la portabilité du truc !
Ça c'est étrange. Je n'en ai jamais entendu parler et n'est jamais été confronté au problème. Je n'ai jamais été un fan de spyder non plus. Je n'ai pas testé les dernières versions. Mais mon test en 2018 ne m'avait pas convaincu.
marc-andré :
Mais avec le recul, en relisant mes cahiers de brouillons et mon dossier formation en python, je me suis aperçu que je n’avais rien créer en python, cela ne m’a jamais inspiré le moindre désir ni passage à l’acte ; frustrant et ennuyeux donc !
Je te conseilles les tuto de Swinnen disponible sur developpez.com. Il part direct sur la programmation d'un petit jeu en graphique (en utilisant Tk) pour intéresser les étudiants (se sont des supports de cours). J'avais suivi le tutoriel en Python 2 mais voici celui en Python 3 : https://python.developpez.com/cours/apprendre-python3/.
Merci encore pour l'explication sur ce langage que je ne connaissais pas.
Actuellement pour les étudiants ingénieurs qui vont se servir de l'informatique pour faire de la simulation, modélisation, le Fortran 90 (en fait son extension 95) est très bien pour débuter. Le langage est simple et très mathématiques.

Papoteur Membre non connecté
-
- Voir le profil du membre Papoteur
- Inscrit le : 03/10/2011
- Groupes :
-
Modérateur
-
Équipe Mageia
-
Administrateur
-
Forgeron
Chaque langage a ses avantages et ces défauts.
Ce serait dommage de disqualifier LISP uniquement sur le critère de l'usage des parenthèses, même si Python est franchement supérieur à tous les autres à ce niveau : c'est l'indentation qui code le niveau d'imbrication.
Je n'avais pas entendu pour l'instant de l'avantage d'un calcul symbolique de Lisp qui ferait obtenir un haut niveau de précision.
On a démontré la performance de Fortran sur les calculs. Pour autant, je ne le prendrais pas pour développer une interface graphique.
Il ne faut pas oublier non plus les interfaçages des langages entre eux. Python par exemple peut faire appel à des routines en C ou en FORTRAN, en utilisant par exemple SWIG pour le C/C++. Histoire de conjuguer le meilleur de chaque monde. D'ailleurs, bon nombre des modules Python sont écrits en C. Pyside et PyQt5 sont des interfaces aux bibliothèque Qt qui sont écrites en C++.
Yves

Yuusha Membre non connecté
-
- Voir le profil du membre Yuusha
- Inscrit le : 04/07/2017
- Groupes :
-
Modérateur
-
Administrateur
-
Forgeron
Papoteur :
Ce serait dommage de disqualifier LISP uniquement sur le critère de l'usage des parenthèses
Il s'agissait d'une blague connue à propos du LISP. Il faut dire que lorsque l'on voit la tête des fichiers de configuration d'emacs, ça ne rend pas le LISP très attractif.
Papoteur :
On a démontré la performance de Fortran sur les calculs. Pour autant, je ne le prendrais pas pour développer une interface graphique.
Il ne faut pas oublier non plus les interfaçages des langages entre eux. Python par exemple peut faire appel à des routines en C ou en FORTRAN, en utilisant par exemple SWIG pour le C/C++. Histoire de conjuguer le meilleur de chaque monde. D'ailleurs, bon nombre des modules Python sont écrits en C. Pyside et PyQt5 sont des interfaces aux bibliothèque Qt qui sont écrites en C++.
Il ne faut pas oublier non plus les interfaçages des langages entre eux. Python par exemple peut faire appel à des routines en C ou en FORTRAN, en utilisant par exemple SWIG pour le C/C++. Histoire de conjuguer le meilleur de chaque monde. D'ailleurs, bon nombre des modules Python sont écrits en C. Pyside et PyQt5 sont des interfaces aux bibliothèque Qt qui sont écrites en C++.
En effet. La plupart des bibliothèques de calcul matricielles sont basées sur LAPACK qui est en Fortran. Depuis le Fortran95, les pointeurs ont d'ailleurs été introduits pour pouvoir s'interfacer avec le C. Un pointeur Fortran et C sont ainsi équivalents. Ce qui permet de développer les interfaces en C tandis que le code est en Fortran (même s'il existe des fous qui font des interfaces graphiques en Fortran). Il existe aussi le Cython pour précompiler du Python. Autre avantage de ce dernier, il suffit d'un terminal (sous Linux) pour écrire du code Python vu qu'il est directement interprété. Je m'en sert souvent de calculatrice.
Le C++ a lui l'avantage de la modularité grâce à la programmation orientée objet que n'ont pas le Fortran (même si le Fortran2003 a introduit la POO dans le langage) ni le C (même si on peut faire du pseudo orienté objet en C grâce aux structures).

marc-andré Membre non connecté
-
- Voir le profil du membre marc-andré
- Inscrit le : 29/09/2015
- Groupes :
Jybz :
Ouhlà, flashé pour excès de youtube !
Merci pour ton retour. Je me permets, le collège aux usa c'est un peu comme les IUT, c'est après le lycée. Ce n'est pas comme nos collèges avant le lycée. Le public sont des jeunes (je n'aurais pas dit enfants) personnes qui font leurs études "professionalisantes".
Quand regarderas-tu le Perl ?
Merci pour ton retour. Je me permets, le collège aux usa c'est un peu comme les IUT, c'est après le lycée. Ce n'est pas comme nos collèges avant le lycée. Le public sont des jeunes (je n'aurais pas dit enfants) personnes qui font leurs études "professionalisantes".
Quand regarderas-tu le Perl ?

bonjour
oui, excès de YT, mais cela permet d'accéder à des ressources précieuses, comme des cours dans des grandes universités;
et puis, c'est sur 2 ans, j'ai commencé avec scheme fin 2019;
bon, racket est effectivement utilisé dans les collèges américains, mais il me semble avoir vu des vidéos s'adressant à des plus jeunes, je dirais la tranche 10-15 ans, tout comme les exemples dans la partie "beginner" de "how to design program"; c'est pour ça que j'ai utilisé "enfant";
et d'ailleurs si j'avais à conseiller un langage et un écosystème pour l'apprentissage de l'informatique chez les enfants, c'est ce que je recommanderais.
Perl?
je me suis tapé un tuto de Derek Banas sur YT (une chaîne où l'on trouve toute sorte de tuto, en format d'une heure environ) puis celui d'Adrien Linuxtrick (en français);
c'est une sorte de "bash" amélioré, utile je pense pour gérer des services, des serveurs,...
moi, pour bidouiller sur mon PC, j'ai pas l'utilité d'un tel truc.
si j'ai lancé cette discussion, c'est pour parler de racket, certes, mais on pourrait dire, encore un langage de plus, qui rajoute de la complexité;
j'ai vu récemment une vidéo qui parlait de 3 nouveaux arrivant, rust qui allait remplacer le C/C++, julia qui allait remplacer python et go qui allait remplacer java;
sur ce thème, il y a beaucoup de chose à lire avant d'avoir un avis;
mais le plus important, pour résumer mon enthousiame pour racket, c'est une citation d'Edgar Dijkstra (un algorithme dans les graphes porte son nom).
"Lisp has jokingly been described as the most intelligent way to misuse a computer. I think that description a great compliment because it transmits the full flavour of liberation : it has assisted a number of our most gifted fellow humans in thinking previously impossible thoughts".
Lisp a été décrit, en plaisant comme la manière la plus intelligente de mal utiliser un ordinateur. Je pense que cette description est un grand compliment car elle transmet la pleine saveur de la libération : elle a aidé un grand nombre de nos collègues humains les plus doués à penser des idées préalablement impensables.
voilà pourquoi, on dit "mind blowing", à propos de scheme, ça permet de penser et d'avoir des idées qu'on aurait jamais eu sinon.
et on retrouve la dépendance entre les pensées et le langage qui existe avec les langages naturels : on ne pense pas de la même façon en français, en anglais, ou en espagnol ou chinois ou arabe; nos pensées sont contraintes pas la langue utilisée;
et en informatique, c'est pareil, ça marche surtout quand on découvre la programmation fonctionnelle avec lisp et ses descendants.
HP ProDesk ;
Mageia8 Gnome
Liberté et sécurité sont les arguments classiques pour LINUX. En prime il y a aussi la dignité et la confiance ressentie depuis que je suis sous Mageia
Mageia8 Gnome
Liberté et sécurité sont les arguments classiques pour LINUX. En prime il y a aussi la dignité et la confiance ressentie depuis que je suis sous Mageia

marc-andré Membre non connecté
-
- Voir le profil du membre marc-andré
- Inscrit le : 29/09/2015
- Groupes :
Papoteur :
Ton premier code
Le deuxième, avec l'algo de Yuusha.
marc-andré :
c'est le même code C sur ton i7?
il est 4-5 fois plus rapide que le mien!
as tu eu l'envie suite à cette conversation de tester racket?
ça vaudrait le coup de voir ce que ça donne sur une machine rapide!
Papoteur :
Et pour ne pas laisser penser que le FORTRAN est 4 x plus performant que le C :
c'est le même code C sur ton i7?
il est 4-5 fois plus rapide que le mien!
as tu eu l'envie suite à cette conversation de tester racket?
ça vaudrait le coup de voir ce que ça donne sur une machine rapide!
Ton premier code
Code BASH :
time racket prime-1l.racket cpu time: 120 real time: 120 gc time: 16 22044 real 0m0,749s user 0m0,620s sys 0m0,097s
Le deuxième, avec l'algo de Yuusha.
Code BASH :
time racket prime-y.racket cpu time: 70 real time: 69 gc time: 0 22044 real 0m0,389s user 0m0,352s sys 0m0,038s
bonjour
des résultat contradictoires?
chez moi, la première version fonctionnelle en 1 seule ligne prenait environ 300ms avec le time interne, tandis que la version impérative avec l'algo de la version en fortran prenait environ 800 ms;
chez toi, cela semble être l'inverse!
quand à la différence entre le temps interne et celui du shell comment explique-t-on la différence?
(chez moi, j'ai testé, j'ai la même différence)
est ce que ça serait le temps de lancement de l'interpréteur?
Papoteur :
Je n'avais pas entendu pour l'instant de l'avantage d'un calcul symbolique de Lisp qui ferait obtenir un haut niveau de précision.
le haut niveau de précision vient de l'héritage de la "tower number" de Lips;
les vrais nombres des maths sont implémentés, et non pas des sous ensembles contraints par le hard ware;
en particuliers, il y a la notion d'exact-number dans laquelle se trouve les entiers ET les rationnels.
et tant que tes calculs restent dans ce domaine des nombres exacts, tu as la meilleure précision;
d'ailleurs, on peut le faire dans n'importe quel langage;
quand j'apprenais le python, j'étais tombé sur un tuto qui créait des rationnel en python;
il suffit de créer une classe avec 2 integer, numérateur et dénominateur;
dans le constructeur, il est bon de faire appel au "gcd" afin de stocker le rationnel sous une forme réduite (donc divisé par leur gcd);
ensuite, reste à implémenter les opérations arithmétiques, + - * / pour avoir un truc qui marche;
si tu as besoin de les comparer, il faudra une méthode =, et pour les trier, les méthodes < et >
et pour finir, une "print" où là, tu fait la coercition en float ou double pour que ça soit lisible;
s'il y a beaucoup de calculs, ça va rajouter de l'overhead, mais tu conserves l'absolue précision jusqu'au print final;
sinon, dans le monde de flottants, dans n'importe quel langage, à chaque opération arithmétique, tu perds des miettes, inexorablement.
avec lisp et scheme, il n'y a pas ce souci, les rationnels sont built-in, toutes les opérations sur eux sont implémentées et on les manipule comme n'importe quel nombre; c'est très pratique; et si cela concerne des milliers d'opérations, ça conserve la précision maximum; bon ça occupe en mémoire 2 integer au lieu d'un double ? ça vaut la peine dans certains cas.
Édité par marc-andré Le 18/01/2022 à 09h19
HP ProDesk ;
Mageia8 Gnome
Liberté et sécurité sont les arguments classiques pour LINUX. En prime il y a aussi la dignité et la confiance ressentie depuis que je suis sous Mageia
Mageia8 Gnome
Liberté et sécurité sont les arguments classiques pour LINUX. En prime il y a aussi la dignité et la confiance ressentie depuis que je suis sous Mageia

marc-andré Membre non connecté
-
- Voir le profil du membre marc-andré
- Inscrit le : 29/09/2015
- Groupes :
Yuusha :
Merci pour cette longue explication
.
Le problème du LISP : Lots of Irritating and Silly Parentheses
(merci Wikipédia, je ne me rappelai plus la phrase exacte).
Ça c'est marrant car je n'ai jamais pu me faire à vim. Ce truc du mode insertion/visualisation et autre, je trouve cela contre intuitif. Il faut sans cesse changer de mode. Et les commandes de type :wq ne sont pas facile à retenir.
Ça c'est étrange. Je n'en ai jamais entendu parler et n'est jamais été confronté au problème. Je n'ai jamais été un fan de spyder non plus. Je n'ai pas testé les dernières versions. Mais mon test en 2018 ne m'avait pas convaincu.
Je te conseilles les tuto de Swinnen disponible sur developpez.com. Il part direct sur la programmation d'un petit jeu en graphique (en utilisant Tk) pour intéresser les étudiants (se sont des supports de cours). J'avais suivi le tutoriel en Python 2 mais voici celui en Python 3 : https://python.developpez.com/cours/apprendre-python3/.
Merci encore pour l'explication sur ce langage que je ne connaissais pas.
Actuellement pour les étudiants ingénieurs qui vont se servir de l'informatique pour faire de la simulation, modélisation, le Fortran 90 (en fait son extension 95) est très bien pour débuter. Le langage est simple et très mathématiques.

Le problème du LISP : Lots of Irritating and Silly Parentheses

marc-andré :
- d’abord le problème de l’outil : la plupart des « lispers » utilisent emacs ;
d’entrée, cela m’est apparu beaucoup plus compliqué que vim
d’entrée, cela m’est apparu beaucoup plus compliqué que vim
Ça c'est marrant car je n'ai jamais pu me faire à vim. Ce truc du mode insertion/visualisation et autre, je trouve cela contre intuitif. Il faut sans cesse changer de mode. Et les commandes de type :wq ne sont pas facile à retenir.
marc-andré :
concernant python, j’en ai fait pendant tout un hiver, puis ça c’est arrêté sur un tuto où il était question de « plot » qui ne marchait pas dans « spyder » mais qui marchait dans le terminal ; une vraie confusion cet environnement : le même code va marcher dans le terminal mais pas si on le lance depuis un éditeur pourtant dédié à python ; bonjour la portabilité du truc !
Ça c'est étrange. Je n'en ai jamais entendu parler et n'est jamais été confronté au problème. Je n'ai jamais été un fan de spyder non plus. Je n'ai pas testé les dernières versions. Mais mon test en 2018 ne m'avait pas convaincu.
marc-andré :
Mais avec le recul, en relisant mes cahiers de brouillons et mon dossier formation en python, je me suis aperçu que je n’avais rien créer en python, cela ne m’a jamais inspiré le moindre désir ni passage à l’acte ; frustrant et ennuyeux donc !
Je te conseilles les tuto de Swinnen disponible sur developpez.com. Il part direct sur la programmation d'un petit jeu en graphique (en utilisant Tk) pour intéresser les étudiants (se sont des supports de cours). J'avais suivi le tutoriel en Python 2 mais voici celui en Python 3 : https://python.developpez.com/cours/apprendre-python3/.
Merci encore pour l'explication sur ce langage que je ne connaissais pas.
Actuellement pour les étudiants ingénieurs qui vont se servir de l'informatique pour faire de la simulation, modélisation, le Fortran 90 (en fait son extension 95) est très bien pour débuter. Le langage est simple et très mathématiques.
bonjour
un truc pour surmonter la difficultés des (((()))) en lisp? et la notation préfix dite polonaise;
il suffit de penser au début de tout programme C : int main(int argc, char* argv[])
cette horrible syntaxe char** argv en étant un équivalent;
de quoi est-il question?
un tableau de chaînes terminées par un NULL, dans lequel, la première chaîne est le nom de la fonction, et les suivantes, sont les arguments.
mais c'est exactement la structure générale d'un programme en lisp, et du call de n'importe quelle fonction;
juste que en lisp, c'est minimaliste, dans argv il y a tout ce qui est nécessaire, le nom de la fonction et ses arguments, le reste étant superflu (comme le mot réservé "return" d'ailleurs).
et en lisp, ce n'est pas un tableau de chaîne, mais une liste puisque c'est la data structure de base et quelle se représente dans des ();
et, les arguments, ne sont pas de simples valeurs, mais peuvent être à leur tour une liste = call de fonction, imbriqués récursivement;
sur la différence vim/emacs, c'est très simple:
vim est un éditeur un peu compliqué quand on l'ouvre pour la première fois;c'est incontestable.
mais il y a un tuto interne, faut prendre 2 heures pour le faire, et c'est bon, vim est utilisable;
ensuite, au fil du temps, en regardant quelques tutos, on peut améliorer l'expérience en enrichissant son .vimrc, et rajoutant quelques plug-in;
lorsque j'ai voulu essayer emacs il y a 2 ans pour faire du lisp sbcl, au bout d'une semaine d'errance sur le net et dans la doc, je n'avais toujours pas un truc utilisable; la doc emacs, c'est un peu comme celle de Qt, c'est un labyrinthe: quand tu y entres, tu t'y perds, sans jamais trouver la sortie avec la réponse à la question que tu cherchais; rien à voir avec celle de vim de ce point de vue!
quand j'ai vu qu'il y avait DrRacket dans les dépôts de mageia, je l'ai installé et 1 heures après, j'étais heureux à écrire mon premier code scheme;
et la doc de racket, c'est tout le contraire : chaque fois que je cherche quelque chose, je le trouve en moins de deux.
ce n'est pas un labyrinthe infernal!
Édité par marc-andré Le 18/01/2022 à 13h03
HP ProDesk ;
Mageia8 Gnome
Liberté et sécurité sont les arguments classiques pour LINUX. En prime il y a aussi la dignité et la confiance ressentie depuis que je suis sous Mageia
Mageia8 Gnome
Liberté et sécurité sont les arguments classiques pour LINUX. En prime il y a aussi la dignité et la confiance ressentie depuis que je suis sous Mageia
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie