L’expression «ne jamais réinventer la roue» convient-elle aux étudiants?

115

Je me retrouve constamment à courir dans cette expression "ne réinventez pas la roue" ou "ne réinventez jamais la roue" lorsque je pose des questions sur SO. Ils vous conseillent d'utiliser des frameworks ou des packages existants. Je sais d'où vient cette attitude puisqu'il n'est pas sage de perdre du temps sur quelque chose que d'autres ont déjà résolu. Ou c'est ça?

En tant qu'étudiant, je trouve qu'en utilisant un code que d'autres ont écrit pour résoudre mon problème, je ne peux pas en apprendre autant que je le voudrais et je gagne moins en perspicacité. Et parfois, je pense que cette phrase s’adresse principalement aux programmeurs qui travaillent dans des délais serrés et non à des étudiants comme moi.

Est-ce si mauvais de "réinventer la roue"? Peut-être que je pense que c'est faux? Peut-être pourrais-je éviter de réinventer la roue tout en apprenant beaucoup?

Gnijuohz
la source
51
Vous n'aurez pas grand intérêt à rejoindre un gymnase si vous demandez à d'autres personnes de soulever des poids (sauf si vous apprenez à être un mangeur).
Charles E. Grant
82
Vous pouvez réinventer la roue lorsque vous construisez des roues. Lorsque vous construisez des maisons, c'est une bonne idée de supposer que les constructeurs de roues savent ce qu'ils font mieux que vous.
zzzzBov
22
Vous devez au moins essayer de faire une roue! Sinon, vous ne savez pas pourquoi vous devriez utiliser un modèle préfabriqué.
59
Il n'est jamais approprié d'énoncer un absolu. :)
un CVn
2
Il peut être correct de réinventer les roues lorsque vous créez un code extrêmement optimisé. Les bibliothèques standard sont très utiles, mais il est souvent possible de créer quelque chose de moins général, mais plus rapide.
Leo

Réponses:

126

Je pense que vous faites un bon point. La plupart des programmeurs sur ce site sont probablement des professionnels en activité dont l'objectif est de créer des logiciels de qualité le plus rapidement possible. Réinventer la roue fait échouer cet objectif à deux égards.

  1. La réécriture du code existant est un effort inutile qui pourrait être utilisé sur les parties uniques de votre système et rend le projet plus long que nécessaire.
  2. La première version de tout code est plus susceptible de comporter des bogues / problèmes imprévus. La plupart des bibliothèques et des composants réutilisables ont été testés au combat et corrigés à plusieurs reprises. Si vous réinventez un algorithme de hachage ou essayez de créer votre propre SGBDR (à moins que ce ne soit ce que le projet est), le plus souvent, vous obtiendrez des résultats inférieurs.

Cela dit, dans un environnement universitaire, l’objectif est d’ apprendre , et non de fournir des logiciels sur un budget. Réinventer une roue pour comprendre le fonctionnement des rayons ou des essieux est un excellent moyen d'atteindre cet objectif. C'est pourquoi de nombreux programmes de programmation incluent un cours sur la compilation de compilateurs alors que très peu de programmeurs en activité ont besoin de le faire.

JohnFx
la source
37
Je suis d’accord avec l’idée de comprendre comment les choses fonctionnent, mais je souhaite également que les écoles de programmation prennent un peu de temps dans leur programme pour apprendre à utiliser les bibliothèques tierces et pourquoi vous devriez le faire. Je trouve constamment des programmeurs et des développeurs de capacités professionnelles qui ne peuvent pas le faire et finissent par réinventer la roue.
Spoike
3
bon point sur les compilateurs
Chani
1
Je pense qu'il est plus important d' apprendre à ne pas réinventer la roue. Vous pouvez faire beaucoup de choses sans créer quelque chose qui a déjà été créé.
Thomas Bonini
@Krelp Alors que l'on est un étudiant, les concepts sont la partie la plus importante. De nombreux professeurs utilisent des exemples de code pour permettre une théorie et une application de pont. Ce sont les types de programmes qui vont réinventer la bibliothèque, mais c'est pour s'assurer que les étudiants comprennent le matériel.
Jetti
2
En tant qu'étudiant, vous devez réinventer la roue pour comprendre pourquoi elle va aussi vite. En tant que professionnel, vous devez utiliser des roues commerciales pour pouvoir aller aussi vite que possible. Malheureusement, SO est avant tout un site destiné aux professionnels et non aux étudiants (n'a-t-il pas interdit [les devoirs] pendant un certain temps?)
Tacroy le
19

La réponse dépend beaucoup du contexte. Si vous souhaitez mieux comprendre les structures de données en essayant de mettre en œuvre une table de hachage, «réinventer la roue» est la meilleure chose à faire. Si vous apprenez à écrire des compilateurs et avez besoin d'une table de symboles, implémenter votre propre carte de hachage au lieu de la réutiliser à partir de la bibliothèque standard est une perte de temps totale.

dasblinkenlight
la source
17

En tant qu'étudiant, je m'attendrais à ce que vous commenciez votre formation en programmation en copiant d'abord une roue ou deux pour commencer, puis en apprenant à modifier les roues pour voir comment elles fonctionnent et en comprendre les limites. Plus tard, vous pourrez même créer votre propre roue pour voir si vous pouvez améliorer la conception ou pour montrer à votre superviseur de cours votre compréhension des concepts en jeu.

En tant que professionnel, je m'attendrais toutefois à ce que vous sachiez quelle roue utiliser pour résoudre un problème donné et à quel moment il peut être approprié de modifier une roue existante si elle ne résout que partiellement votre problème. Si vous ne trouvez aucune roue , vous avez peut-être identifié une niche de marché, ou vous n’avez pas exploré suffisamment, et vous devez être suffisamment expérimenté pour savoir quand il serait approprié de créer une nouvelle roue de votre posséder.

La question de savoir quand il est approprié de réinventer une solution est complexe, et il faut du temps et de l'expérience pour savoir quand il serait peut-être préférable de créer une nouvelle version de quelque chose qui a déjà été fait auparavant. Lorsque vous développez depuis peu de temps, il est préférable d’utiliser simplement une solution existante et de demander à vos mentors de vous suggérer des options. Lorsque vous avez des délais serrés et beaucoup d'incertitude dans un projet, utiliser quelque chose d'existant peut vous faire gagner beaucoup de temps et reste votre premier choix. Vous pouvez toujours choisir d’utiliser d’autres solutions ultérieurement, s’il ya lieu, même si cela implique de réinventer votre roue .

S.Robins
la source
12

En tant qu'enseignant ou programmeur, je lutte constamment avec le côté opposé du problème: quand dois-je demander aux étudiants de réinventer la roue?

Prenons ces situations simples: nous étudions un algorithme de tri et je définis des tâches pour écrire un programme qui trie certaines données; ou travaillant sur la fonctionnalité de date, et je demande un calendrier.

Pour les deux, il existe d'innombrables bibliothèques prédéfinies et fonctionnalités disponibles; mais je veux que les étudiants les évitent et développent leur propre version d'un algorithme de tri ou d'un calendrier.

Maintenant, prenons cet autre exemple: j’ai chargé une tâche de rédiger une application simple pour, par exemple, planifier des rendez-vous. Cela nécessitera probablement un tri, un calendrier, etc. Cette fois-ci, "ne réinventez pas la roue" s'applique: je ne veux pas que les étudiants se débattent avec les problèmes résolus, mais plutôt assembler les fonctionnalités existantes pour obtenir un résultat.

Ma difficulté est de savoir combien de choses vous demander de recréer l'existant, ce qui vous incite à apprendre et présente l'avantage de poser des problèmes fréquents avec des difficultés que je peux utiliser pour vous faire pratiquer le métier, et combien je devrais placer vous dans un contexte réel, où les roues ne sont pas réinventées?

Pour répondre plus directement à votre question, deux suggestions:

  • si un enseignant vous dit de "ne pas réinventer la roue", il le fait probablement parce qu'il a conçu son problème de cette façon. Peut-être qu'ils veulent que vous essayiez une bibliothèque, que vous luttiez avec la mise en œuvre d'un algorithme par quelqu'un d'autre, plutôt que d'écrire le vôtre - vous y apprenez aussi, et recréer est intéressant, mais passe à côté de l'essentiel.
  • si vous avez trop d'exercices pour assembler des appels à la bibliothèque, plutôt que pour développer des algorithmes, vous pouvez poser à vos enseignants la question de l'équilibre entre ces activités - soulignez le fait que vous n'avez jamais été invité à écrire vos propres algorithmes, par exemple trier et fusionner. La communication n'ira jamais de travers.
boisvert
la source
6

Pratique, je doute que les 1000 premières lignes de code écrites par quiconque soient uniques.

Développez votre jeu d'outils L' utilisation d'un framework présente plus d'avantages lorsque vous comprenez ce qu'il fait (vous pouvez le faire vous-même.) Afin que vous sachiez comment l'appliquer.

Comprendre les "roues" Utiliser une roue mal construite ou usée ou une roue qui ne va pas, n'est pas une excuse pour s'en tenir aveuglément à cette règle générale. Il se peut que vous manquiez de temps, de financement et d’expertise.

Il y a peu d'absolus .

JeffO
la source
1
+ Surtout pour le dernier point.
Mike Dunlavey
Les premières 1000 lignes de code écrites par quiconque tendent à être très uniques en termes d’erreurs créatives.
gauche du
@leftaroundabout - Je suppose que je devrais limiter cette déclaration aux lignes de code pouvant être compilées.
JeffO
3

Les étudiants n'ont pas de budget pour terminer leurs travaux, mais il y a des dates d'échéance à prendre en compte.

En tant qu'étudiant qui était étudiant jusqu'à récemment, je pense que la quantité de réinventer une roue qui convient dépend de la classe pour laquelle vous effectuez le travail. Vous ne voulez pas écrire votre propre bibliothèque de sockets pour une classe de développement Web et de conception (si vous pouvez le faire et rendre le travail dans les délais, que faites-vous en prenant une classe aussi facilement?), Mais il vous manquerait beaucoup si c’était une tâche pour une classe de réseaux. Bien sûr, les professeurs tiennent généralement compte de ces éléments lorsqu'ils créent des travaux. Vous effectuerez donc principalement des travaux liés au cours mais, parfois, il est également important de savoir ce que vous ne devriez pas écrire vous-même.

Cela dit, une fois que vous quittez l’école, il est difficile de trouver le temps de construire des choses qui existent déjà. Saisissez toutes les occasions possibles lorsque vous le pouvez, pendant que vous êtes encore à l’école.

Si vous obtenez le pinceau "Utiliser la bibliothèque X / framework Y" sur SO, commencez votre question par "J'écris moi-même X pour en savoir plus".

Geai
la source
Préfacez votre question avec "J'écris moi-même X pour en savoir plus". Cette. +1
Boisvert
2

Si vous n'avez pas de date limite pour votre projet, IMO, il est préférable de réinventer la roue. Si vous n’avez pas d’emploi ou si vous souhaitez apprendre à programmer, et non à faire de la programmation payante, à quoi sert-il d’avoir recours à des raccourcis qui ne feront pas de vous un meilleur programmeur? Bien que cela soit vrai, il est certainement utile de savoir utiliser les bibliothèques, les frameworks et le code des autres utilisateurs.

Billjk
la source
C’est l’idée qui sous-tend le concept de Code Katas: réécrire le code encore et encore pour s’améliorer et en tirer des leçons. Je dirais que même au travail, réécrire votre code de manière répétée est une bonne chose, et pouvoir implémenter plusieurs patters si nécessaire, c'est encore mieux.
Bill K
2

Dans la vraie vie, la roue est réinventée encore et encore. Si nous cherchons les raisons, nous pourrons peut-être mieux comprendre le moment où nous devons réinventer la roue de la programmation.

Depuis l'époque sumérienne, beaucoup de choses ont changé:

  • Le matériau utilisé pour construire les roues: en pierre, bois, métal, carbone, ...
  • la taille des objets nécessitant des roues - en nanomètres pour les instruments médicaux et en roues pour gagner du lignite, taille 100 m
  • l'environnement de production - fabrication artisanale ou production industrielle
  • la précision des roues nécessaires
  • La bonne situation autour de votre roue. Il y a peut-être une roue parfaite pour votre travail, mais cela pourrait être breveté.
  • Le brillant et le poli pour votre roue. Une Cadillac mériterait peut-être une autre roue qu'une VW Golf.
  • La roue optimale pour une poussette dépend de nombreux paramètres: taille et poids de la poussette (plus bébé / ~ ans), conditions climatiques, prix des ressources pour l'huile ou le caoutchouc naturel, machines à fabriquer des roues et des artisans, disponibles pour la production. Peu parlé: économie mondiale.

Comment cela se traduit-il dans le monde du logiciel? Bien,

  • il peut y avoir un serveur web, mais malheureusement, il est écrit en PHP. Vous préféreriez l'avoir dans une langue que vous maîtrisez
  • un algorithme de tri peut être surdimensionné pour 10 éléments, mais ne peut pas évoluer jusqu'à 1T d'éléments
  • vous aurez peut-être besoin d'une solution générée par le deuxième programme
  • la précision est le plus souvent une question numérique dans un environnement logiciel, si un algorithme trie une liste, il est trié - et non trié pour la plupart. Mais à côté des performances, la taille du code, l'utilisation de la mémoire ou d'autres restrictions peuvent arriver
  • Les brevets n'ont pas besoin d'explications supplémentaires, je suppose.
  • L’apparence est une raison constante pour réinventer quelque chose - pensez à dropDownList (ComboBox).
  • La situation économique mondiale peut influencer votre roue de logiciel: sera-t-il une roue de nuages, une roue Open Source, une roue de navigateur ou une roue d'applications?
  • Et bien sûr, la raison la plus célèbre de construire votre propre roue: vous aimez l’apprendre.
Utilisateur inconnu
la source
2

Je suis un étudiant nouvellement éduqué. À l'école, nous «apprenions» asp.net et C #, ces deux années d'études, nous n'avons jamais essayé de créer notre propre système de messagerie électronique, notre système de connexion ou notre système de gestion de contenu (CMS). .

Nous avons commencé 102 étudiants, 23 ont terminé. 4 personnes a un travail. La raison ?: Ces 4 personnes (y compris moi) savaient programmer avant de commencer réellement l'éducation.

Le reste du peuple est perdu. Parce que nous n'avons jamais «réinventé la roue». Nous n'avons jamais appris comment le code fonctionne réellement. C'est assez simple de construire un système de connexion complet, avec gestion des utilisateurs - Mais les étudiants de mon éducation ne savent pas comment le faire. Parce qu'ils ne savent pas comment fonctionne un système de connexion.

Je suis triste, à un moment donné, en fait perdu 2 ans, sans rien apprendre. - Je souhaite que les enseignants du monde entier disent: Ouais, nous savons qu'il existe des cadres, où le code existe, vous pouvez les utiliser dans la vie réelle .. Mais sur cette formation, vous apprendrez à programmer.

De nombreuses formations en programmation sont très courtes, elles doivent donc couvrir beaucoup de choses au cours de cette période. Je pense qu'il serait préférable que la liste de choses soit réduite de moitié et consacre plus de temps à la programmation. Les gens peuvent «inventer un nouveau type de roue» s'ils savent comment construire une «roue» normale. Les gens ne sont pas stupides s’ils ont un peu de connaissances, mais vous ne pouvez pas demander à un homme qui ne sait rien des voitures de construire une voiture. Mais demander à un homme qui sait comment construire un vélo aurait beaucoup plus facile. avec en fait la construction de la voiture.

Zerpex
la source
1

Cela dépend vraiment de ce que vous faites. Si vous essayez de comprendre les roues, c'est une bonne idée de les réinventer vous-même. Cependant, si vous essayez de comprendre les voitures, réinventer les roues ou les moteurs à combustion interne est généralement une perte de temps et une source de distraction.

Ainsi, par exemple, lorsque vous souhaitez comprendre le fonctionnement d'un index de recherche en texte intégral, essayez de créer le vôtre. Si vous essayez de créer une application pour la gestion de documents, il est préférable de réutiliser une bibliothèque existante, car l'essentiel de votre travail consiste à obtenir l'architecture et l'application utilisateur en même temps.

back2dos
la source
1

Oui, il convient de demander aux étudiants de ne pas réinventer la roue. Mais il faut bien comprendre ce que cela signifie pour un étudiant: écrivez ce qui est pertinent à la tâche. Cela ne signifie pas que si l'affectation consiste à écrire un bubbleort, vous la copiez sur Wikipedia, pas plus que l'utilisation de array.sort ou d'équivalents si votre structure ou votre langage le fournit. Mais une fois que vous avez couvert les différents algorithmes de tri, écrit votre propre tri de bulles et votre tri rapide, ne vous embêtez pas pour le réécrire à chaque nouvelle affectation, utilisez le tri intégré ou ce que vous avez écrit, ne refait plus le même processus. .

Réinventer la roue consiste à ne pas perdre de temps, ce qui est valable aussi bien pour les étudiants que pour les professionnels - la différence réside dans les objectifs qui y sont énoncés. Les étudiants devraient apprendre, donc quelque chose qui ne leur permet pas de mieux comprendre, est une perte de temps - après avoir écrit une bulle, vous savez ce que ça fait, vous savez pourquoi vous ne voulez pas l'utiliser sur un grand ensemble. et le réécrire encore et encore est une perte de temps. Vous n'allez rien apprendre de nouveau lors de la 25e réécriture.

Pour les étudiants, cela ne signifie pas que vous n'écrivez pas ce que les autres ont écrit, cela signifie que vous ne devez pas refaire ce que vous avez déjà maîtrisé - ce temps qui pourrait être mieux dépensé pour ce que vous n'avez pas maîtrisé.

jmoreno
la source
Sauf si la 25e réécriture est une pratique de certains langages de programmation que vous étudiez récemment.
gauche du
1

Beaucoup de réflexions et d’efforts ont été consacrés à la création d’une roue. Le conseil est de "ne pas réinventer la roue", mais vous pouvez aller de l’avant, procéder à une ingénierie inverse et comprendre pourquoi certaines choses sont faites de la façon dont elles sont faites. Après cela, vous pouvez essayer d’implémenter la roue à votre guise, ce qui pourrait aboutir à l’une ou l’autre des trois fins logiques.

  1. Vous comprenez soit pourquoi les choses sont comme elles sont.
  2. Vous pourriez l'optimiser et le rendre meilleur
  3. Vous pourriez tout gâcher et apprendre à ne pas faire cette chose.

Pour moi, étudiant, il ne faut pas réinventer la roue, mais essayer de l’ingénierie inverse et en comprendre les implications.

Ramesh
la source
1

Je dirais que cela dépend de si vous réinventez pour voir comment la roue fonctionne ou si vous réinventez la roue en train d'accomplir une autre tâche. Il existe certainement des rouages ​​que chaque élève doit mettre en place au moins une fois par eux-mêmes. Vous devez savoir comment certaines structures de données élémentaires et certains algorithmes fonctionnent afin de comprendre leur incidence sur les performances de votre code ou de choisir ceux à utiliser dans diverses circonstances.

Les piles, les tas, les listes chaînées, les arbres, etc. valent certainement l'investissement dans le temps à mettre en œuvre une fois; puis toujours après ceux fournis par le framework. Toute personne utilisant un plugin jQuery doit en écrire au moins un, mais vous n'êtes pas obligé d'écrire tous les types de ceux que vous utiliserez. Je dirais qu'il est utile, mais pas nécessaire, d'écrire un petit planificateur de processus ou un mini-système d'exploitation afin que vous puissiez comprendre ce qui se passe sous le capot d'un ordinateur. Vous devez cependant comprendre comment fonctionnent les processus, les threads, etc.

Une fois que vous avez une bonne connaissance pratique, il peut également être important (et amusant) de revenir en arrière et de mettre en œuvre de nouvelles structures / algorithmes pour mieux les comprendre. À moins que ce ne soit votre travail ou que vous en soyez vraiment doué, je continuerais à utiliser ceux qui existent déjà dans votre code.

tvanfosson
la source
1

La réponse dépend de si vous souhaitez apprendre ou créer.

Si l’apprentissage est l’objectif visé, "réinventer la roue" peut vous donner une meilleure idée et une meilleure compréhension que d’utiliser les roues existantes (fonctions de la bibliothèque).

Mais si l'objectif est de créer un produit complexe, alors "réinventer la roue" peut être une pratique qui prend beaucoup de temps et aidera peu à la création du produit.

Néanmoins, si l'objectif de l'âme est d'apprendre à disposer de suffisamment de temps et d'endurance, il est préférable de "réinventer la roue", car elle permet de personnaliser chaque fonctionnalité.

CoolEulerProject
la source
1

Eh bien, il y a deux aspects à cela.

Tout d'abord, si vous essayez d'apprendre, il peut être utile de faire certaines choses à partir de zéro ou d'utiliser des interfaces de niveau inférieur à celui nécessaire. Cependant, il est toujours nécessaire d'identifier ce que vous apprenez: si vous voulez en savoir plus sur le protocole HTTP, vous n'avez pas besoin de programmer vous-même les sockets. Ne réinventez que les choses que vous apprenez et ne le faites que pour vraiment les explorer et les comprendre.

Mais l' une des compétences les plus importantes d'un programmeur professionnel consiste à sélectionner, à connaître et à utiliser des logiciels préexistants. C'est quelque chose que vous devez également apprendre. Une grande partie des questions sur les OS semblent provenir de personnes incapables de lire la documentation.

Enfin, la programmation repose sur une base théorique substantielle. Vous devrez utiliser les deux exercices pratiques, associés à la lecture, pour apprendre la théorie.

Marcin
la source
Je suis d'accord. C'est pourquoi il y a tant de nouveaux frameworks logiciels et bibliothèques préexistants qui sont créés tout le temps :)
gbjbaanb
0

J'ai fait face à la même situation. C'est à cause de la différence de perception dans l'industrie et les universitaires.

Si vous ne "réinventez pas la roue", vous ne pouvez absolument pas étudier quoi que ce soit à l'école ou comprendre comment quelque chose fonctionne.

Dans une industrie, l’objectif est de produire un produit en un minimum de temps et d’effort.

Personnellement, j'aime bien aller dans les terriers de lapin et je déteste la philosophie de l'industrie, mais c'est comme ça que les entreprises se font et on ne peut pas se plaindre.

John
la source
0

Le jargon des hackers Lexikon a un très bon commentaire sur la réinvention de la roue :

Concevoir ou mettre en œuvre un outil équivalent à un outil existant ou à une partie d'un outil existant, ce qui impliquerait que cela soit idiot ou une perte de temps. C'est souvent une critique valable. D'autre part, les automobiles n'utilisent pas de rouleaux en bois et certains types de roues doivent être réinventés à plusieurs reprises avant de les utiliser correctement. En troisième lieu, les personnes qui réinventent la roue ont tendance à proposer l’équivalent moral d’un trapèze à essieu excentré.

Il serait donc bon de réinventer la roue, mais assurez-vous de rechercher les solutions des autres avant ou après l'avoir fait.

Hans-Peter Störr
la source
0

Réponse A: Réinventer la roue. Cela approfondit votre compréhension des structures de données et des algorithmes et rend beaucoup plus probable que vous écrivez de bonnes choses. Je suis sûr que lorsque Guido van Rossum commençait à utiliser Python, les gens lui avaient dit de ne pas réinventer la roue. Il y avait déjà beaucoup de langues. Pourquoi écrire sur Google alors qu'il y avait déjà Yahoo! Que diriez-vous de Clang? Apprenez tout. Sois un géant. Ne laissez pas les petites personnes vous limiter. Réponse B: Si un instructeur vous dit quoi faire, donnez-lui ce qu'il veut, ou juste un peu plus, même si cela semble idiot. Si vous voulez AUSSI devenir fou en proposant une solution étonnante et en lui donnant un lien, continuez. Tout d’abord, cependant, remplissez les conditions énoncées comme données afin qu’il soit heureux.

phorgan1
la source
-1

Si vous êtes étudiant et que, par conséquent, votre projet n’a pas de date limite, il est préférable de "réinventer la roue". Si vous programmez simplement pour apprendre à programmer, sans gagner de l'argent, pourquoi prendre des raccourcis qui ne vous aideront pas à apprendre? Pourquoi ne pas le faire à la dure? Mais, lorsque vous deviendrez un programmeur actif, les gens seront sceptiques si vous ne savez pas comment utiliser les frameworks ou les bibliothèques ...

Billjk
la source
10
Je ne sais pas quelle école vous avez fréquentée, mais où je suis allé, les délais d’attribution étaient courants.
un CVn
-2

Faites ce que la tâche / la question / l’examen vous demande de faire.

Il y a des années, j'étais assistant de classe en programmation C. Une question d’examen était «Écrivez un programme pour copier un fichier». Plusieurs étudiants ont posé le même type de question: peuvent-ils générer un processus et exécuter la commande OS cp?

Ce que nous leur avons demandé, c'était: "Votre programme copiera-t-il le fichier?"

La question de l'examen leur a demandé d'écrire du code pour copier un fichier. Si la réponse ne contenait pas de code C copiant le fichier (par exemple, une entrée ouverte, une sortie ouverte, une boucle pour lire / écrire des octets, une entrée fermée, une sortie fermée), le fichier n'était pas copié.

Si l'enseignant dit d'utiliser un framework ou une bibliothèque (par exemple, une classe graphique pourrait vous dire d'utiliser une bibliothèque 3D), utilisez ce qu'ils vous disent d'utiliser. Ne pas inventer le vôtre ni en utiliser un autre. Quoi que ce soit de différent, l'enseignant aura plus de difficulté à noter votre travail.

Lors d'un entretien d'embauche, une connaissance des cadres courants vous aidera à répondre aux questions. Créez vos propres projets pour apprendre. Bonne chance dans tes études.

jqa
la source
Oui, mais s’ils généraient cpleur programme, le fichier serait en fait copié.
Marcin