Je dirais plutôt la capacité de réfléxion de l'auteur du programme, je trouve un peut éxagérer de dire la capacité de réfléxion d'un programme .C'est une IA ou quoi ?
Je dirais plutôt la capacité de réfléxion de l'auteur du programme, je trouve un peut éxagérer de dire la capacité de réfléxion d'un programme .C'est une IA ou quoi ?
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Je ne vois qu'une seule chose qui nécessite des gotos en C : l'implémentation d'un module permettant de déclencher des exceptions ! Cela peut être utile puisque les exceptions n'existent nativement pas en C... et que les programmeurs d'aujourd'hui sont incapables de faire quoi que ce soit sans mettre des exceptions partout.
Bonjour,
Je propose de continuer le hors sujet sur les goto en langage C ici :
http://www.developpez.net/forums/d14...s/#post8779432
Ce n'est pas tant le premier langage ou le langage préféré qui influe sur la manière de penser «informatiquement». C'est l'apprentissage de la résolution de problème qui formatte l'esprit. Le langage préféré vient ensuite : c'est celui qui est le mieux adapté à notre démarche de résolution.
Pour paraphraser Wilson dans House M.D.(5.01 Dying Changes Everything ) : «I'm an oncologist. I see cancer. Show it to an immunologist, they'll see autoimmune..»
On peut tout faire sans goto; on peut aussi tout faire sans fonctions ou sans structures.
Mais quand ça simplifie le code (ou le rend plus lisible) ça serait une erreur de ne pas l'utiliser. (pour la gestion d'erreur par exemple)
Sinon, le premier langage qu'on apprend formate notre façon de penser et de résoudre un problème.
Quelqu'un qui commence par le C n'imaginera pas une solution orienté objet naturellement par exemple (ça demande un effort supplémentaire de penser différemment); l'inverse et aussi vrai.
Mais c'est qu'une question d'habitude et de pratique, et les habitudes peuvent se changer.
On croirait effectivement que tout a été dit au sein du fil sus-cité mais le fait que les prédicateurs de « bonnes pratiques » reviennent régulièrement nous péter les noix comme ici montre qu'il reste une certaine longueur de clou à marteler dans certains crânes.
Ânonner à tout vent le contenu de « Goto considered harmful » est une profonde irrévérence à Edsger Dijkstra qui, lui, savait de quoi il causait. Toute personne qui s'y surprendrait est donc priée de prendre connaissance de cet article, en apportant une attention particulière à l'introduction (l'emphase est mienne) :
This paper was written at a time when the accepted way of programming was to code iterative loops, if-thens, and other control structures by hand using goto statements. Most programming languages of the time did not support the basic control flow statements that we take for granted today, or only provided very limited forms of them. Dijkstra did not mean that all uses of goto were bad, but rather that superior control structures should exist that, when used properly, would eliminate most of the uses of goto popular at the time. Dijkstra still allowed for the use of goto for more complicated programming control structures.
L'article ne fait rien que d'enfoncer des portes ouverte !
Il y a un principe en psychologie qu'on nomme l'effet d'ancrage.
Le fait d'avoir du mal à se détacher d'une première impression.
Exemple avec des allumettes :
En ne bougeant qu'une allumette, rendre les équations valides (/ ou \ n'est pas I, et bonne notation romaine seulement )
EDIT: une allumette par equation et elles sont toutes indépendantes
I - II = I
V+II=V
X-IV=V
et pour finir...
VI+VI=VI
Notre premier langage de programmation ... souvenir, souvenir...
On était jeune et ignorant et on découvre ce que signifie programmer et comment. On a pas encore de base comparative.
Pour les langages suivant ou tout autre, comme un nouveau jeu vidéo, on a tendance à comparer avec ce que l'on connait personnellement (ho, c'est un peu comme minecraft mais en différent ! )
La même logique s'applique à tout ce qui a un rapport direct ou non à l'apprentissage.
La comparaison avec les langues vivantes est correcte (mais pas à cause du rapport du "langage" en particulier )
Une personne n'ayant fait que de la POO, aura du mal à s'en passer (mais pas aussi impossible que prétend l'article faut pas déconner ).
Une personne ayant fait du C,C++,Java, etc... se trouvera en difficulté avec le PROLOG, et va essayer de retrouver ses billes.
Dans un défis que j'avais proposé en C
de recoder une fonction pour vérifier si un entier dans un int était premier, avec l'interdiction d'utiliserles mots while,for,goto,if,switch, ?, et interdiction d'utiliser les opérateurs arithmétiques de base "+,-,/,*,%"
La seul opérateur d'affectation autorisé : =
Et la seul fonction autorisé de la librairie standard : printf, et librairie non-standard non-autorisé.
(margré toutes ces contraintes, on peut coder n'importe quel algo en C )
J'ai eu de nombreux MP me disant que c'était impossible( et d'autres qui ont trouvé une solution )
C'est dur de sortir des sentier battus, de sa zone de confort
Cependant l'article ne montre que le coté "aliénant".
Or apprendre un langage peut aussi permettre d'en apprendre de nouveaux encore plus rapidement (et qualitativement)!
Et on passe les amalgames évoqués ...
Un bon sujet dont les conclusions font sourire !
c'est débile ... très débile ton truc mais cela ne fait pas avancer le schmilblick
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 bool is_prime() { return private_is_prime(); }
Édit : lu trop vite "librairie non-standard non-autorisé"
Donc il faut tout faire à base de #define et d'opérateurs logiques
Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
3)le temps de comprendre toutes les exigences, le projet est terminé
4)le temps de terminer le projet, les exigences ont changé
Et le serment de non-allégiance :
Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.
ta fonction ne répond même pas au critère de base, mais je l'ai donné à titre d'exemple (le but n'étant pas de proposé le défis ici)
C'est absurde mais loin d'être débile !
Le schmilblick n'a pas à avancer, c'est un sujet troll à la base, faite d'affirmations et d'amalgames gratuits.
Easy, même pas besoin de "=" !
Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 bool isPrime(unsigned n) { int const j = std::sqrt(n); if ((n & 1) == 0) return false; for (int i = 3; i <= j; i += 2) { if ((n % i) == 0) return false; } return true; } __declspec(noinline) bool __stdcall isPrime2(unsigned n) { bool result; __asm { mov eax, n mov ecx, eax and ecx, 1 jz false_ mov ebx, eax shr ebx, 1 inc ebx loop_: xor edx, edx div ebx test edx, edx jz false_ sub ebx, 2 cmp ebx, 3 jl true_ mov eax, n jmp loop_ false_: xor al, al jmp fin_ true_: mov al, 1 fin_ : mov result, al } return result; } int main(int, char**) { assert(isPrime(11u) == isPrime2(11u)); // prime assert(isPrime(128u) == isPrime2(128u)); assert(isPrime(631u) == isPrime2(631u)); // prime assert(isPrime(633u) == isPrime2(633u)); return 0; }
Comment ça c'est de la triche ?
Bonjour
Cela me fait penser à Noam Chomsky - le langage et la pensée ( http://www.scienceshumaines.com/le-l..._fr_12996.html ).
J'ai bien pris note des expériences cités de non conversion, mais personnellement j'ai débuté avec le Basic, et dans mes programmes actuels en Python, je ne vois plus trop son influence.
Je veux bien croire que certaine personne reste bloquée au niveau au "langage de programmation" (qu'est-ce que je peux faire avec mon langage/environnement de programmation), et n'arrive pas à raisonner "un peu plus haut" : fonctionnellement qu'est-ce qu'on veut ? Et alors quels sont les meilleurs outils (langage, environnement de programmation etc) en fonction du contexte (entreprise, projet existant, compétences disponibles) pour résoudre ce problème. Une fois cette analyse là posée, j'ai déjà vu deux réactions : on découvre que le vrai problème n'est absolument pas le langage ou son raisonnement associé, ou tout autre problème technique, mais en général la résistance au changement de l'entreprise ou du contexte. Ou les développeurs comprennent tout seul que si on a choisi d'utiliser un langage X, Y ou Z, c'est pour de bonne raison, et ils le prennent alors comme une opportunité pour bien apprendre ce langage et l'utiliser à bonne escient.
A la base je retrouve alors un problème assez récurrent : le pourquoi des choix en amont ? Pour tel langage à fait tel choix ?
Cordialement
Emmanuel
C'est pareille de l'hypothese 'Whorf-Sapir'. Il y en a beaucoup des recherche dans le domaine de la linguistique
Issue d'une programmation pour l'embarquée, je me suis mis récemment au J2EE et les réflexes sont les mêmes.
L'influence du C/C++ est toujours là !
Le rapprochement ou la proximité de pensée entre l'APL et le Cobol me sidère à un point indescriptible. Pourtant ou parce que je connais, ou plutôt connu (il y a fort, fort longtemps), très bien les deux (contrairement à l'auteur ?).
Cela étant, il est vrai que le premier quelque chose, c'est comme les canards de Lorenz, c'est la maman...
Accessoirement, je donne des cours de C à un étudiant (qui rame sinon je n'aurais pas à le faire). Je passe mon temps à lui expliquer c'est un mauvais moment à passer, un monde meilleur l'attend. Au moins, il ne peut pas être déçu ... à terme. Ben ouais, mon gars, faut en ch...ier avec les pointeurs pour oui ou pour un non pour accéder au nirvana ... ça se mérite. Il est perplexe.
Plus tu pédales moins vite, moins tu vas plus vite.
bonjour,
Après environ 30 ans de programmation ...
et en passant de la programmation en Hexa, puis en assembleur, puis en pascal TP4 à 7 puis delphi 1 à delphi XE7 aujourd'hui avec quelsues passages en C, C++ et visual C et ce pour des microcontrolleurs, automates NAIS/siemens, PC sous DOS puis Windows et quelques Androïd ...
J'utilise majoritairement Delphi XE7 car très pratique avec VCL, DLL, POO, Windows 32 et 64 ,Androïd ... et refuse par exemple d'utiliser office et ses macros VB du fait des virus qui circulent ...
Dire que ce langage Pascal franchement préféré oriente ma façon de programmer c'est peu probable !
Par contre, je ne m'oriente pas vers de nouveaux langages tels Java ... Car pas nécessaires dans mon quotidien et conscient que ces nouveaux langages qui apparaissent tous les 2 ans en moyenne n'ont pas la pérennité minimale. Que dire des navigateurs Edge, IE, chrome qui n'acceptent plus java par exemple !!
merci de vos commentaires
P.G.
Mon premier langage, Python, m'a bien influencé.
Par exemple quand je code en java, j'oublie de préciser le type parce que le Python n'est pas langage typé. Pour moi c'est une question d'habitude niveau syntaxe.
Après si un codeur java va apprendre l'assembleur, oui il aura du mal parce qu'il n'y a pas d'objet en asm et que c'est trop bas niveau pour lui.
Je suis partiellement d'accord avec Fischer, quand on est habitué à programmer dans un langage donné, on a du mal a se défaire de ses habitudes.
Je me rappelle quand j'apprenais à coder en C++ (après mon apprentissage du Python) les pointeurs me tourmentaient fortement, parce que la couche du bas niveau n'y est pas en Python donc je ne comprenais pas tout cela parce que je comparais le C++ au Python.
Maintenant je n'ai aucun problème avec les pointeurs (remarque j'étais petit aussi), la preuve je n'ai aucun problème à apprendre de l'assembleur, je peux comprendre du code en asm.
En fait pour apprendre de nouveaux langages de programmation, il faut juste "oublier" les habitudes des anciens langages pour ne pas être bloqué.
Euh... comment dire... tu es sérieux là ? Java a quand même 20 ans, c'est pas tout à fait ce que j'appelle un "nouveau" langage. Tu aurais dit Kotlin, Go, Rust ou Swift, je dis pas, mais Java ?!
(soit dit en passant, Delphi que tu portes aux nues est apparu en 1995, soit la même année que Java... selon tes critères, c'est donc également un "nouveau" langage)
Je pense que Java a largement prouvé que ce n'était pas une mode passagère
C'est les applets Java qui ne sont plus supportées, pas Java en général... Java est encore très largement utilisé côté serveur, et sur Android.
Je ne suis pas particulièrement fan de Java (je préfère de loin C#), mais je ne pouvais pas lire ça sans réagir... faut quand même ouvrir un peu les yeux et voir les choses telles qu'elles sont, pas telles que tu les imagines.
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
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