Je suis le developpeur qui vas google «Best php fibonnaci algorythm» et qui vas la commenter, l'indenter, et la couvrir de quelques tests.
Je suis le developpeur qui vas google «Best php fibonnaci algorythm» et qui vas la commenter, l'indenter, et la couvrir de quelques tests.
Il manque le code du développeur en SSII
Avec l'ajout de 250Mo de jar dans le classpath
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 import com.math.allYouNeed.Fibonacci ... /** * TODO document me */ public long getFibonaci(long i){ return Fibonacci.valueOf(i); }
Je ne suis pas mort, j'ai du travail !
Salut à tous.
Le meilleur code, selon moi, est celui qui est lisible. Trop de commentaire nuit à sa lisibilité.Envoyé par Victor Vincent
Un commentaire est nécessaire quand le code ne suffit pas à comprendre ce qu'il fait.
De plus, le code doit être concis, sans fioriture, juste l'essentiel, mais doit répondre à l'usage que l'on va en faire.
J'ai donc une préférence pour "Développeur 1 : L'étudiant débutant".
Celui de "Développeur 2: Le programmeur au Hackaton" ne répond pas à la fonctionnalité demandée.
Car si on demande que faut 'getFibonnaciNumber(10)', il ne saura pas donner la solution.
Celui de "Développeur 3: le programmeur dans une startup" surcharge avec trop de commentaire les explications de sa fonction.
Celui de "Développeur 4: le programmeur dans une grande compagnie", les noms des variables sont trop longs à écrire. C'est sujet à des erreurs.
Celui de "Développeur 5: le programmeur Docteur en Maths" complexifie à outrance, sans que cela corresponde à un besoin réel.
Celui de "Développeur 6: Tom le chat" son code est incompréhensible !
C'est le plus mauvais exemple de ce qu'il ne faut pas faire.
1) Un code doit être lisible !Envoyé par Victor Vincent
2) Pas des astuces connues que du seul programmeur. Il doit être compréhensible par quelqu'un qui a la connaissance du langage.
3) Il doit répondre aux contraintes du développement (programmation structurée, modulaire, POO, réutilisable, réentrance ...), voire la méthodologie utilisé dans l'entreprise.
4) Il doit répondre à des besoins fonctionnelles (traiter tous les cas).
5) Il doit être performant et occupé le moins de place en occupation mémoire.
6) Il doit être facilement maintenable.
Maintenant, je ne sais à qui s'adresse l'utilisation de ce code consacré à Fibonacci.
Un mathématicien n'a rien à voir avec un débutant en informatique. Et pour faire quel genre de calcul ?
Juste pour démontrer l'usage de la récursivité ou bien pour faire des calculs de haut niveau ?
Car sachant que la pile servant à gérer la récursivité est fréquemment limité à 255, il est dans ce cas de figure impossible de calculer une valeur de la fonction Fibonacci au delà de 255.
@+
Si vous êtes de mon aide, vous pouvez cliquer sur .
Mon site : http://www.jcz.fr
C’est un peu un marronnier ce poste ^^
Faire un bon code ou être un bon développeur, ça revient souvent ces derniers temps.
Moi je suis faignant.
Je n'ai plus envie de faire du travail d’orfèvre, comme à mes débuts, quand je faisais de l'assembleur sur Amiga et qui fallait optimiser à mort.
Maintenant c'est contreproductif de bosser comme ça.
Peut-être sur les projets personnels, je peux finasser.
En informatique de gestion tu es souvent amené à casser ce que tu as fait il y a 3 mois
Alors je vais à l’essentiel.
Mais ça ne veut pas dire que je fais du mauvais code, je ne veux pas me casser la tête pour rien.
Je fais de la modularité surtout pour m’économiser de l’écriture, et de la maintenance
Mais au boulot ce n’est pas moi, qui ai le dernier mot pour la factorisation.
Et tant mieux, si tout le monde ajoutait des fonctions de son propre chef, le workspace serait pollué.
Alors où suis-je, où vais-je qui suis être ou ne pas être un bon codeur telle est la question ^^
Consultez mes articles sur l'accessibilité numérique :
Comment rendre son application SWING accessible aux non voyants
Créer des applications web accessibles à tous
YES WE CAN BLANCHE !!!
Rappelez-vous que Google est le plus grand aveugle d'Internet...
Plus c'est accessible pour nous, plus c'est accessible pour lui,
et meilleur sera votre score de référencement !
Un code clair, concis et bien documenté, ça existe aussi hein :p
Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
Un peu de programmation réseau ?
Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.
Un code pour répondre à un besoin ? ...Un code n'est pas écrit pour être optimal mais d'abord pour répondre à ses besoins
!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 caca();
Bon, je suis malade, j'ai la fièvre, etc,etc .. faut m'excuser
Current StatusAux persévérants aucune route n'est interdite.
Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
Faîtes quelque chose de bien avec vos petits sous: Enfants du MekongAvec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
C'est pas en avril d'habitude les poissons d'avril ?Pour les professionnels ... gérer une suite de Fibonacci.
Bof, trop classique manque d'originalité dans le code. 0/20
il a répondu à la problématique.. bon, d'accord, dans une certaine limite
Après, on nous reproche de ne pas faire de doc. Bon là, certes, ce ne sont que des TODO mais au moins on sait ce que fait (ou ne fait pas) son code
C'est du Chateaubriand et puis avec l'autocomplétion, il est facile de retrouver les noms de variables
Si cela répond à un besoin : celui du docteur en maths. D'ailleurs il n'y a qu'eux qui le comprennent, c'est l'essentiel.
Au contraire, c'est parfait ! On voit là tout le génie des chats, c'est simplement magnifique, fantastique, merveilleux ! C'est époustouflant, étonnifiant, bouleversifiant !
Il y a aussi la version itérative toute simple et la version recursive terminale. Elles ne sont pas en O(1), certes, mais en O(n) et les débutants savent les écrire (ok, pour la version récursive terminale faut pas être complètement stupide non plus).
Salut à tous
CodeurPlusPlus: tu me piques l'idée...
Aucune des solutions ne me convient même si j'ai trouvé la solution 4 assez amusante et hélas possible, j'ai malheureusement déjà vu des choses pareilles, cela doit paraître technique. Au final, on ne sait pas ce que le code fait au premier coup d'oeil, les mainteneurs devront être patients.
L'exemple est "scolaire", la récursivité est intéressante quand elle est pertinente et pratique. Ici, tout faux, le code est inefficace, la mémoïsation apporte une optimisation mais consomme de la mémoire, enfin, vous le savez tous.
La solution itérative est plus efficace, tout aussi concise et simple à comprendre même si elle est éloignée de la solution mathématique. Soit en Python:
En plus, cette solution est facile à implémenter dans tout langage impératif, ce qui n'est pas toujours le cas avec la récursivité.
Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 def fibo(nmax): x,y = 1,1 for i in range(nmax-2): x,y = y, x+y return y
Sur le fond de la question, cela dépend aussi de l'environnement professionnel : outils à disposition, niveau techniques des équipes, normes locales. Cela n'empêche pas quand même de chercher une certaine optimalité...
Cdlt
M E N S . A G I T A T . M O L E M
Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal
"La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."
La première fois que l'on m'a demandé d'écrire la suite de Fibonacci en Java, je l'ai écrite en itératif, je comprenais pas pourquoi contrairement aux autres je n'avais pas la fameuse "Stack Overflow" que l'on devait constater pour un n>14 en TP, et pourquoi mes scores de performance étaient totalement différents de ceux attendus.
"Le train de tes injures roule sur le rail de mon indifférence."
"Monde de merde !!"
Georges Abitbol.
Encore un truc qui me dérange en Python (bien que la forme x, y = 1, 2 soit pratique).
Niveau ordre d'exécution ça donne quoi ?
Sinon la solution itérative, c'est la solution "évidente" non ? Enfin de ce que je me rappelle des cours de maths, c'est comme ça que la suite était définie.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 x, y = y, x + y // equivalent à x = y y = x + y // ou y = x + y x = y // ou l'ordre est non spécifié ?
Salut,
Le plus logiquement du monde : évaluation des valeurs du t-uple de la partie droite de l'affectation PUIS copie des valeurs dans les variables de la partie gauche.
Ce n'est une séquence d'instructions déguisée, sinon on aurait le type de problème que tu évoques, ce qui rendrait ce genre de construction beaucoup moins attrayante.
Rien n'empêche cependant de décomposer cette affectation "double" en 2 affectations simples.
Cdlt
M E N S . A G I T A T . M O L E M
Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal
"La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."
L'opérateur virgule en C est un gros panneau "Alerte Danger" : l'évaluation expression par expression, se fait de droite à gauche, et l'expression la plus à gauche est retournée
Ou un truc comme cela
Édit: Iradrille officiant souvent dans la section C/ C++, il a des mécanismes/ habitudes/ tics automatiques/ ...
Salut à tous.
Pour solutionner ceci :
il faut faire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part x, y = y, x + y
Par contre les deux solutions proposées ne fonctionnent pas du tout !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 z = y y = x + y x = z
Pourquoi ? Car il manque une étape afin de ne pas venir écraser une valeur (le x ou le y) lors de la première affectation.
Donc :donne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 x = y y = x + y
--> x = y (le x a été écrasé par la valeur de y).
--> y = 2*y
De même pour :donne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 y = x + y x = y
--> y = x + y (le y a été écrasé par la valeur de x+y).
--> x = x + y
@+
Si vous êtes de mon aide, vous pouvez cliquer sur .
Mon site : http://www.jcz.fr
Salut
Tout cela montre bien l'intérêt des tuples.
Bon WE à tous
Cdlt
M E N S . A G I T A T . M O L E M
Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal
"La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."
"Un peuple prêt à sacrifier un peu de liberté pour un peu de sécurité ne mérite ni l'une ni l'autre, et finit par perdre les deux."
Benjamin Franklin
A ce jeu là, on peut encore gagner beaucoup. Fibonacci c'est une exponentielle de matrice c'est très clair avec ton code.
Fibo(n + 1) = A.Fibo(n) donc Fibo(n) = A^n.Fibo(0). (je note ^ la puissance)
Et pour calculer A^n on calcule A^1, A^2, A^4, A^8,... et ensuite on fait les produits qu'il faut pour trouver A^n.... cela est utile si n est grand (et donc que l'on utilise des grands entiers pour la gestion des nombres). On passe alors de n à log(n).
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager