|
Publicité ' | ||||||||||||||||||||||||
|
|
#121 | |
![]() ![]() ![]() Nicolas ValléeIngénieur d'études Inscription : décembre 2005 Messages : 9 962 ![]() |
Citation:
merci de ne pas le laisser repartir sur une autre polémique... donc oui, c'est possible dans des domaines très spécifiques (langages synchrones utilisant des signaux, et ayant une syntaxe fonctionnelle) |
|
|
|
00
|
|
|
#122 | |
|
Inactif
![]() Inscription : octobre 2004 Messages : 3 894 ![]() |
Citation:
Et donc, que mesurer le nombre de lignes de code n'a pas beaucoup d'intérêt, l'important étant plutôt le temps passé à les écrire et le temps de recherche diverses et variées nécessaires à cette écriture (notamment dans la doc du langage). |
|
|
|
00
|
|
|
#123 | ||||||||||||
|
Expert Confirmé Sénior
![]() ![]() |
Citation:
Citation:
Citation:
Citation:
![]() Citation:
Citation:
Citation:
Citation:
Citation:
Citation:
Citation:
Citation:
-- Jedaï |
||||||||||||
|
|
00
|
|
|
#124 | |||||||||||
|
Invité(e)
![]() Messages : n/a ![]() |
Citation:
On parle de débutants ici. Comment est ce que tu peux prétendre que dire à un débutant "L'application de f à x retourne toujours la même chose" et "L'application de f à x retourne toujours la même chose à condition que tu n'aies rien changé, ce qui est impossible puisque la base même de la programmation impérative est de changer les chose" c'est pareil ? Si tu arrives à prétendre que c'est pareil, tu as gagné, j'abandonne et te classe définitivement dans la catégorie des mecs les plus bornés du monde. Citation:
Citation:
Citation:
Citation:
Je ne pense pas que dire à un débutant que toute fonction, quel qu'elle soit, a un argument implicite qui est "l'intégralité de l'environnement pouvant potentiellement affecté son exécution" (cet environnement ayant d'ailleurs une définition plus que floue, puisque justement il dépend de l'environnement, qui lui même dépend de l'exécution des autres fonctions, qui elle même...) soit un plus. Et on parle de débutant, mais même pour un non débutant, pouvoir se détacher de l'environnement est un plus non négligeable. (Mais j'imagine que quand les gars de chez Intel expliquent que l'avenir pour la programmation multi-coeur, c'est le paradigme fonctionnel, c'est parce que c'est une grosse bande de charlots qui ne comprennent rien au bas niveau) Citation:
http://caml.inria.fr/pub/docs/manual...es.html#VALfst Convention de nomage différente = coder crade. Nan c'est sûr, c'est bien. On va progresser comme ça. Nan et puis en plus ça change le fait que la fonction retourne une valeur différente sur le même argument, c'est sûr. Enfin t'es quand même d'accord que "return a[0];" est la bonne solution maintenant ? Et ? Comment on fait pour programmer sans aucune notion de maths ? Comment on fait pour prouver que son algo ne fait pas de la merde si on ne comprend rien à la notion de récursion, d'induction structurelle ? Si on ne sait pas ce qu'est une fonction ? Ah bah oué, on fait pas. On regarde le programme et on se dit "bah, ça doit bien marcher". Et puis de toutes façons, puisqu'on a mis des optims bas niveau, on ne peut plus rien prouver. Parce que pour le débutant, lui inculquer qu'un algo, ça se PROUVE, ça ne fait pas que se coder, il faudrait peut être lui fournir les outils pour. Genre des bases de maths, et un langage qui s'y prête. Et non, prouver l'algo sur du pseudo-code puis l'implémenter dans un langage qui n'a plus rien à voir n'est pas une bonne solution. Il y a qu'à voir le nombre monstrueux de faille qui sont dues à des implems foireuse alors que l'algo de base était correct. Et oui, je pense qu'un langage de haut niveau est bien plus adapté qu'un langage "médian" pour prouver ses algos, ce que tout débutant un peu sérieux (qui suit des cours, pas l'auto-didacte, et encore) devrait faire. Citation:
Citation:
Citation:
Nan mais je pense effectivement que pour expliquer à un débutant ce qu'est une fonction, lui dire "en fait on pousse les arguments dans la pile, du moins ceux qu'on n'a pas pu affecter aux différents registres, on sauve le PC, et après on saute au code de la fonction", c'est vachement plus clair que lui expliquer ce qu'est un appel de fonction d'un point de vue un poil plus abstrait : "pour calculer "f(3)", tu exécutes le corps de la fonction en remplaçant partout x par 3". Tu as aussi des branchements dans les boucles, les sorties de boucles, les retours de procédures / fonctions, les tests... "Branchement" est le terme générique recouvrant tout ça. Citation:
Citation:
Et finalement, comment tu l'implémentes dans ton langage "médian" de façon moins "bordélique" que moi en Caml ? Et donc à un débutant, il ne faut pas lui expliquer ce que sont les arbres et les listes chaînées, parce que s'il font des super liens gigabits \\o youhou o// ça risque d'être trop lent ? |
|||||||||||
00
|
|
|
#125 |
|
Membre Expert
![]() Inscription : août 2006 Messages : 1 141 ![]() |
Ce serait intéressant pour les débutants d'avoir un exemple de code sur la hauteur d'un arbre dans les différents langages: C, pascal, langage fonctionnel.
Il n'y a rien de mieux qu'un exemple. |
|
|
00
|
|
|
#126 | |||
|
Invité(e)
![]() Messages : n/a ![]() |
Citation:
Code :
|
|||
00
|
|
|
#127 | ||||||||||||
|
Inactif
![]() Inscription : octobre 2004 Messages : 3 894 ![]() |
Citation:
Citation:
Citation:
Moi, je te dis que quelqu'un qui a appris à trop haut niveau sera toujours une buse en bas niveau, tout comme quelqu'un qui a appris à trop bas niveau sera toujours une buse à haut niveau. Axiome hélas vérifié sans arrêt... Citation:
Ce qui est à peu près aussi crade que programmer de la récursion en fonctionnel en écrivant à la main les "f(f(f(f(f(f(a))))))", mais bon... Citation:
Faudrait arrêter de croire que tous les programmes impératifs sont écrits comme dans "bidouillez.com", hein... Citation:
Je me demande vraiment comment on fait pour faire des programmes impératifs qui marchent, et ceci depuis 50 ans, tandis que pendant la même durée (à quatre ans près) les langages fonctionnels n'ont jamais percé "lourdement" au point de déloger la programmation impérative, nettement majoritaire pourtant. Citation:
Citation:
Citation:
Encore faut-il que l'enseignant le sache lui-même !! La première fois qu'un prof m'a expliqué les pointeurs (un ancien prof de maths reconverti, tiens, d'ailleurs...), alors que je savais déjà ce que c'était, j'ai fini par douter et me demander si j'avais bien tout lu tellement il a été confus, peu clair et souvent à côté de la plaque... Et en y passant deux heures de cours, en plus. J'ai re-expliqué le tout à mes camarades après, en quinze minutes, et tout le monde a pigé du premier coup. Faudrait quand même arrêter de confondre "difficulté du paradigme impératif" et "absence de pédagogie des enseignants" : ce n'est pas la même chose. Le problème, c'est aussi d'avoir des profs de maths reconvertis en profs d'info, ou des informaticiens formés sur le tas à partir du bas niveau et qui ne savent pas expliquer un concept de haut niveau sans passer par les registres du CPU. J'ai eu la chance d'avoir des profs formés "à l'école médiane", j'ai nettement vu la différence entre ceux provenant du "haut niveau" et ceux provenant du "bas niveau"... Y'a pas photo. Citation:
Si tu n'arrives pas à expliquer un algo à quelqu'un qui n'a pas de base mathématique, c'est que tu expliques mal. Citation:
Citation:
La seule nuance, c'est qu'en impératif, tu peux décider d'en tenir compte ou pas, en fonctionnel tu n'as pas le choix. Reste après à correctement l'apprendre en impératif (ce qui est l'ouverture vers le fonctionnel, entre autres, tout comme le chaînage d'appels), la programmation parallèle a bien aidé justement à rendre plus "visible" les conséquences d'un code de porc... Reste le fait suivant : tandis que je recherche à ouvrir l'esprit d'un débutant vers les différents concepts du développement, tu cherches à l'enfermer dans un seul... J'adhère moyennement pour ma part, j'ai toujours eu horreur des œillères posées de force aux gens. |
||||||||||||
|
|
00
|
|
|
#128 |
|
Membre habitué
![]() Inscription : juillet 2009 Messages : 193 ![]() |
|
|
|
00
|
|
|
#129 |
|
Membre Expert
![]() Inscription : août 2006 Messages : 1 141 ![]() |
Quelle a été ta démarche F.Saad au tout début. Quel est ton premier langage et tes premiers essais (réussites, échecs).
alex_pi: je découvre le langage fonctionnel avec ton exemple. A chaud, je dirais que c'est une approche très mathématique, en plus l'exemple utilise la récursivité 1) procédural et pointeurs. 2) générics et méthodes anonymes (Delphi 2009 Le premier me semble plus "Hack" tandis que l'autre est plus élégant, du moins ce sont les approches que j'ai à l'esprit pour l'instant ... j'en vois pas d'autres. |
|
|
00
|
|
|
#130 | ||
![]() ![]() Damien GuichardInscription : juin 2007 Messages : 1 512 ![]() |
Citation:
Citation:
Pour le programmeur impératif la lisibilité c'est avant tout une notion syntaxique, avec pleins de conventions (bien indenter, bien nommer ses variables, toujours utiliser la portée de déclaration la plus petite,...). Pour le programmeur fonctionnel la lisibilité c'est ces mêmes conventions plus une supplémentaire :
Les débutants recherchent-ils un tel niveau de lisibilité ? À mon avis dans leur majorité ils ne le souhaitent pas. Dans leur majorité les débutants sont autodidactes, souvent même ils arrivent avec une idée naivement ambitieuse dans le genre "je veux concevoir une IA pour un RPG distribué persistant en 3D". Déjà pour leur faire accepter les bons usages il faut lutter contre le penchant naturel à croire qu'il suffit de l'imaginer pour que l'ordinateur l'exécute. Les bons usages s'apprennent mieux pas à pas, l'un après l'autre. Donc je serais plutôt de l'avis de Mac LAK, un programmeur qui a acquis les bons reflexes (bien indenter, bien nommer ses variables, toujours utiliser la portée de déclaration la plus petite,...) est devenu autonome et libre de choisir s'il veut aller davantage du côté de la qualité (par exemple avec un langage déclaratif), du protypage (par exemple avec un langage dynamique), de la programmation système, des web services .... Ceci dit je suis d'accord pour dire que le principe de récurrence n'est pas assez prégnant dans l'apprentissage de la programmation. Toutefois aller jusqu'à l'imposer à ceux qui se destinent aux web services, non seulement ça me paraît overkill mais surtout je doute que beaucoup l'acceptent. Evidemment, il y aura toujours des personnes plus motivées et plus douées que les autres, qui n'auront jamais besoin ni qu'on les aide ni qu'on les oriente, et qui débuteront directement avec un langage exigeant.
__________________
Du même auteur: le cours OCaml, le dernier article publié, le projet, le blog dvp et le jeu vidéo. Avant de poser une question je lis les règles du forum. |
||
|
00
|
|
|
#131 | |
|
Expert Confirmé Sénior
![]() ![]() |
Citation:
Note que ta solution (2) est aujourd'hui possible en grande partie grâce à l'influence des langages fonctionnels type ML (large) sur les langages et les standards modernes. Les génériques entre autres sont issues principalement des recherches sur les systèmes de types menées sur des langages fonctionnels à l'origine. -- Jedaï |
|
|
|
00
|
|
|
#132 |
|
Membre Expert
![]() Inscription : août 2006 Messages : 1 141 ![]() |
Je n'ai rien contre d'utiliser la récursivité pour parcourir les arbres et je ne rabaisse absolument pas les maths.
Cependant, je suis pas certain que beaucoup(ie tous) de gens soient à l'aise avec la récursivité (suite arithmétique/géométrique, programme 1ère S... à l'époque En fait il peut s'agir de gens qui décident de faire de l'informatique sans avoir un bagage mathématique conséquent. Cela ne m'empèche pas d'être (agréablement) étonné par la concision du langage fonctionnel qui me rappel Mapple même si c'est différent. |
|
|
00
|
|
|
#133 | |
|
Membre à l'essai
![]() Inscription : juillet 2009 Messages : 21 ![]() |
Citation:
|
|
|
|
00
|
|
|
#134 |
|
Membre Expert
![]() Inscription : août 2006 Messages : 1 141 ![]() |
On peut aussi faire de la récursivité sans les pointeurs, autrement dit on peut étudier l'un indépendamment de l'autre, puis les deux en même temps, quand les deux notions sont comprises individuellements.
Commencer tout de suite avec un langage objet, j'y crois pas. |
|
|
00
|
|
|
#135 | |
|
Invité(e)
![]() Messages : n/a ![]() |
Citation:
1) Je ne pense pas que ce soit "très mathématique". C'est, j'insiste, finalement très proche de la définition "haut niveau" de la hauteur d'un arbre, et il n'y a vraiment rien de bien complexe. La syntaxe peut être un brin déroutante, mais pour un débutant, pas plus que celle de C ou Java 2) Et même si c'est un peu mathématique, est ce un vrai problème ? Si tu veux raisonner au sujet de tes programme, si tu veux te convaincre qu'ils font bien ce que tu veux, un approche un peu "rigoureuse" et "mathématique" est indispensable. Et si on essayait de convaincre les débutant que la correction de leur programme est bien plus primordiale que leur vitesse, ils seraient sans doute plus enclin à tenter de franchir le pas (qui n'est vraiment pas gros). Et si on arrêtait de penser que "ceux qui font du Web n'ont pas besoin de 'prouver' leur programme", on aurait peut être un peu moins de bouse comme certains site d'achat de billet de train ou autre. Quel exemple te semblerait mieux pour "commencer" ? Histoire que je te montre ce que c'est en fonctionnel |
|
00
|
|
|
#136 | |
|
Membre Expert
![]() Inscription : août 2006 Messages : 1 141 ![]() |
Citation:
Pour débuter, le "reproche" que je fais à ton exemple, c'est que je ne vois pas de découpage du programme comme il existe en Pascal: - interface (déclarations) +uses +constantes +types - implémentation (code) +uses + codes des fonctions (function/procedure) Avec des blocs de séparations (begin ... end), une section de déclaration des variables ainsi que leurs portées (fonction, unité, variables locales/globales) . En ayant fait du Fortran, C, Java, quand j'ai découvert Delphi, je retrouvais un domaine de recouvrement entre les différents environnements: impératif/POO/Performance comme en C/C++. |
|
|
|
00
|
|
|
#137 | |
|
Expert Confirmé
![]() frederic francesConsultant informatique Inscription : juin 2009 Messages : 1 848 ![]() |
Citation:
|
|
|
|
00
|
|
|
#138 | |
![]() ![]() Damien GuichardInscription : juin 2007 Messages : 1 512 ![]() |
Citation:
__________________
Du même auteur: le cours OCaml, le dernier article publié, le projet, le blog dvp et le jeu vidéo. Avant de poser une question je lis les règles du forum. |
|
|
00
|
|
|
#139 | |
|
Expert Confirmé
![]() frederic francesConsultant informatique Inscription : juin 2009 Messages : 1 848 ![]() |
personellement je n'ai rien contre le haut niveau, mais je pense qu'il faut voir les deux. car ce sont les deux face d'une même pièce.
Citation:
|
|
|
|
00
|
|
|
#140 | |
|
Membre habitué
![]() Inscription : juillet 2009 Messages : 193 ![]() |
Citation:
http://code.google.com/p/sleeptime/s...wse/#svn/trunk je dirais que le seul echec jusqu'a maintenant c'est le temps que ca me prend pour justement faire ces trucs tres simple 3h pour mon petit sleeptime, 2h 30 de recherche de classes adéquate et 10 min de tappage de code + 20 min de débogage et un autre probleme lié a la facilité de C#; j'abuse GRAVE des public static ;( |
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com