Question

Mes objectifs se concentrent sur le développement d'applications logicielles, et peut-être sur le développement d'applications Web, mais plus probablement sur les applications de bureau.Je m'engage sur la voie d'une meilleure connaissance du C/C++, mais dois-je aller bien plus bas que cela, vers l'assembleur ?Ou n’en bénéficierais-je pas pour mes objectifs à long terme ?

Était-ce utile?

La solution

Cela n’apportera probablement pas beaucoup d’avantages à moins que vous n’ayez une application directe.Si vous recherchez des connaissances générales, C/C++ est un bon point de départ.

Cela dit, les défis que pose l’assemblage sont très intéressants et nécessitent un état d’esprit assez différent pour faire avancer les choses.

J'ai passé un peu de temps à apprendre l'assemblage du Z80 en programmant le TI-86 calculatrice.Le jeu d'instructions du Z80 est assez réduit et la nouveauté de programmer une calculatrice en assemblage est très amusante.

ticalc.org a beaucoup de bonnes ressources sur Programmation d'assemblage TI.

Autres conseils

Je suis vraiment surpris de voir autant de « non » de réponses à cette question.je pense que tu devrait apprendre l'assemblage.

Je ne m'attends pas à ce que tu le fasses un jour utiliser assemblage directement dans le cadre de votre travail.Mais il ne s’ensuit pas que vous ne deviez pas l’apprendre.

L'assemblage d'apprentissage vous apprendra ce qui se passe à l'intérieur de l'ordinateur.Cela vous aidera à comprendre ce que fait réellement le logiciel.

C'est vraiment une question de professionnalisme.Allez-vous devenir un ingénieur logiciel professionnel ?Ou allez-vous être un hacker du copier-coller ?Bien sûr, ces derniers peuvent payer les factures, mais être un professionnel est bien plus satisfaisant.

Entendre quelqu'un dire : « Non, ne vous embêtez pas à apprendre l'assemblage », cela ressemble à mes oreilles à « Voici le livre de recettes pour construire des ponts.Vous n'avez pas besoin d'apprendre la physique ou l'ingénierie pour construire un pont.Suivez simplement ces recettes. » Non, merci.

Bonjour,

J'ai appris l'assembleur PDP lors de mon Elect.Ing.diplôme à la fin des années 70.Le dernier dialecte d'assembleur que j'ai réellement utilisé avait quatre modes différents d'adressage mémoire.Le dernier dialecte que j'ai regardé comportait 17 modes !

Je ne suis pas sûr de ce que l'apprentissage de l'assembleur vous apporte réellement de nos jours.À l’époque, c’était un élément essentiel d’un flux CS chez mes élus.ing.degré.

Quant à l'apprentissage du C++, je me contenterais de m'asseoir et de travailler sur "C++ accéléré" qui approche le C++ à part entière et non comme "C avec d'autres bits".

Quant à C, je travaillerais simplement sur la dernière version de "Langage de programmation C" (alias) K'n'R

J'espère que cela t'aides.

à votre santé Voler

Maintenant, si vous aviez posé des questions sur la nano-programmation...(- :

"Est-ce que ça vaut le coup d'apprendre un dialecte d'assemblée ?"

J'ai programmé l'assemblage professionnellement.M68k exécutant un télécopieur et un scanner.Également Windows VxD (pilotes de périphériques virtuels) dans Windows 3/3.1 jours avant qu'ils n'aient un vrai noyau.

Lorsque vous codez un assembly pour effectuer des tâches logicielles ordinaires (copie de mémoire, concaténation de chaînes, appel de gestionnaires d'interruption, etc.), c'est plutôt intéressant.Parfois, vous codez un assembly qui doit être appelé par du code C pour effectuer une tâche spécialisée aussi rapidement que possible sur un processeur donné.Cela peut être plus intéressant car vous cherchez des moyens de profiter de chaque cycle que le processeur vous propose.Vous vous souciez de ce qui se trouve dans le cache L1 du processeur.Vous vous souciez d'aligner les données en mémoire pour éviter les accès au cache (si je me souviens du terme).Vous vous souciez de l'architecture du processeur à double pipeline et de l'utilisation des 2, 3 ou 4 bonnes instructions dans le bon ordre afin que 2, 3 ou 4 choses se produisent avec un seul tick d'horloge (-un- de ces HZ dans le XgHz du processeur).

Lorsque vous codez un assemblage pour piloter du matériel personnalisé, vous faites maintenant des choses comme remplir un tampon de mémoire de 16 octets, configurer une opération DMA et transmettre ces données à un contrôleur qui fait quelque chose comme piloter un tambour d'imprimante laser.Et le tambour tourne et ne peut pas être arrêté et veut ses 16 prochains octets dans les 5 us suivants.Bien sûr, cela peut être fait en C ou C++.Mais les exemples sont innombrables.

Je pourrais peut-être élaguer la dernière moitié de votre question : « Cela vaut-il la peine d’apprendre un dialecte de l’assemblage ? » Et dites-le : « Est-ce que ça vaut la peine d’apprendre ? »

Si vous aimez la programmation, la façon dont vous définissez la « valeur » implique une partie de l’amour de la programmation.En ce sens, je n’ai jamais appris quelque chose en programmation et je n’ai pas pensé que cela en valait la peine.Même si je ne l'ai pas beaucoup utilisé par la suite.

Dans le même sens, je dirais presque que plus une chose est difficile à apprendre, plus elle « vaut la peine ».

Mais toutes ces conneries mises à part, je pense que cela vaut la peine d'avoir au moins une certaine expérience en matière d'assemblage.Allez-y et découvrez comment écrire l'assembly pour remplacer quelques routines stdlib simples comme strcpy, memmove, etc.Essayez ensuite de les optimiser, en les appelant depuis C un million de fois tout en les chronométrant.

Je ne commencerais pas à apprendre l'ASM.Si vous voulez apprendre le C/C++, commencez par cela.À mesure que la qualité de votre code évolue, vous constaterez peut-être que vous avez besoin d'ASM.99 % du temps, vous ne le ferez pas, mais de temps en temps, vous pourriez en avoir besoin.

En outre, il est utile de connaître ASM pour comprendre ce que fait C/C++ en coulisses.Mais encore une fois, jusqu’à ce que vous soyez plus avancé, vous n’en aurez probablement pas besoin.

Je l’ai fait et je pense que cela m’a aidé à l’époque.Cela ne m'aide plus au quotidien, mais je pense que cela dépendra de votre travail.

J'ai appris l'assembleur il y a 20 ans sur un Commodore et encore à l'université sur un mainframe IBM.Je ne peux pas dire que cela m'aide dans mon travail actuel.

Je suis d'accord avec Marc.Je pense que c'est similaire à l'apprentissage de MSIL lors de l'écriture en C#, VB.NET ou un autre langage .NET.Il est utile de savoir ce qui se passe sous le capot, mais vous pourriez passer toute votre vie à créer des applications qui fonctionnent sans jamais en avoir besoin.

Non.À moins que vous ne vouliez le faire pour vous amuser, vous n'avez vraiment pas besoin d'apprendre l'assemblage.

Il y a certaines choses pour lesquelles vous devez connaître l'assemblage, comme la création de pilotes, le développement du système d'exploitation, le développement d'exploits, mais à part cela, je crois personnellement que vous pouvez coder avec plaisir pour toujours sans le savoir.

Si vous avez besoin d'apprendre l'assemblage, vous le saurez - je ne l'apprendrais pas pour le plaisir de l'apprendre.

Si vous écrivez du C++ non géré, il est parfois inestimable de connaître au moins l'assembleur x86 de base, les systèmes de nombres binaires, etc.Je fais principalement du développement C/C++, et j'ai parfois besoin de déboguer du code de production pour des erreurs si spécifiques à la représentation du code machine produite par le compilateur que la seule façon de trouver, puis de corriger le bogue, est de lire l'assembly décompilé. et vérifiez pourquoi le compilateur l'a généré en tant que tel.

Pour plus d'informations sur l'assemblage, consultez la question : Quelle est la meilleure façon d’apprendre l’assemblage ?Plus précisément, pour quelqu'un qui a de l'expérience dans les langages dynamiques.

L'assemblage n'est pas très difficile.Une fois que vous êtes familiarisé avec le C, passez un jour ou deux à apprendre l’assemblage de base.Son utilité en termes de débogage est énorme, et il est amusant de pouvoir écrire du code qui bat l'équivalent C en termes de vitesse d'un facteur 10, 15 ou plus.

Je ne suggérerais pas d'apprendre un "langage assembleur moderne".

Cependant, connaissant un peu MOS6510 Assembleur et navigation dans les démontés C64 Noyau, alias.c'est OS et BASIC Interpreter, cela m'a beaucoup aidé à comprendre ce qui se passe à l'intérieur d'un ordinateur - des choses comme les interruptions et les pages mémoire.

Cela pourrait éventuellement vous aider à vous donner des indications sur la manière d'écrire du code optimisé dans d'autres langages.Cependant, une grande partie de cela est déjà effectuée par les compilateurs modernes, je ne suggère donc cela que si vous êtes intéressé par ce qui se passe à l'intérieur de cette boîte noire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top