On n’a pas besoin de jugement sur les personnes à partir des technologies qu’ils utilisent. Ce n’est pas le genre de discussion que j’attends sur un site comme ZdS, et les guerres de chapelle sur les langages perdent le peu d’intérêt qu’elles ont encore à l’instant où on part dans les attaques personnelles.
Bon, bien sur, il y a des raisons que je ne néglige pas! Mais un peu de liberté d’expression ne fait pas de mal et la provocation, aussi lourde soit-elle, en fait partie!
SpaceFox avait prévenu, il a dessiné une ligne sur le sol en prévenant que le prochain qui la franchirait sur ce sujet serait sanctionné, c’est sa prérogative, sa responsabilité et son droit en tant que modo.
blo yhg a franchi cette ligne, pour une raison ou une autre, il a pris la sanction, c’est aussi simple que ça.
Bonsoir, la communauté de zds m’as beaucoup déçu sur ce poste. Je vois ici une personne qui, certes ayant déterré un poste, voulait juste exprimer son avis même s’il était contraire à tout les commentaires précédent pour montrer ce qui paraissait à ses yeux la réponse à la question posée. Je ne vois pas trop le lieu de tout les messages en réponse qui pour la plupart n’avais pas trop de justifications. Ce poste était sur le signe du débat, il n’aurait pas dû finir comme ça et ce n’est surement pas la faute de celui qui a tenté d’exprimer son avis positif ou non. Même chose de la part du staff, je pensais qu’ils pouvaient prendre plus de recule que ça … Après je comprendrait que vous me mettiez en LS ou autres abus du genre car mon commentaire n’a pas de rapport avec le sujet.
Bon, on ne va pas épiloguer ici sur la modération, s’il vous plait.
Si vous voulez reprendre le débat sur l’assembleur dans le respect d’autrui, allez-y. Si vous voulez parler de la modération, j’en serai ravi, mais sur un autre sujet (ou par MP, toujours respectueusement, mais en tout cas, pas ici).
Ben… C’est-à-dire que tu peux effectivement comprendre et apprendre ces détails sans programmer en Assembleur, mais foncièrement tu apprends des détails d’une architecture et donc d’Assembleur. Mais bon, c’est vrai que ce n’est pas véritablement de l’apprentissage de l’Assembleur dans ce cas là.
Pourquoi juste l’avocat ?
À vrai dire, je n’ai pas un avis définitif et tranché sur la question. Très franchement, l’Assembleur me paraît une bonne piste pour un débutant en informatique parce qu’il va véritablement lui faire comprendre la logique impérative de la machine (exécution séquentielle des instructions) et lui faire entrevoir la « simplicité » conceptuelle du bouzin à savoir, en très gros : des calculs, des déplacements en mémoire, des conditions, des sauts et des interruptions.
Évidemment, c’est pas très sexy et cela ne fera certainement pas de la personne un bon programmeur, encore moins à l’heure actuelle (les messages précédents l’expliquent très bien). Mais je persiste à penser que cela peut être intéressant comme première approche.
Tiens à ce propos, histoire marrante, je me permets l’anecdote, c’est de circonstance (asm + web) et ça détendra l’ambiance. Ou pas.
Donc je suis une grosse bouse en développement, un de ces développeur ouaib qui sait faire copier-coller de IE vers Word (en utilisant le menu hein, on a tenté de m’expliquer les raccourcis clavier mais je comprends toujours pas bien l’idée).
Je profilais du JavaScript au boulot, parce que voilà, à force de committer des patchs sur Babel ou Node pour faire en sorte que le code JITé soit mieux optimisable, j’ai changé de boulot pour une boite qui édite un produit où ce genre de détail a son importance.
Et là je tombe sur un comportement très surprenant. J’ai un prototype, appelons-le Foo, il n’a pas de paramètre. Quand je fais new Foo() puis que j’appelle une méthode du prototype, ça s’exécute en moyenne en disons 0.1s. Quand je fais new Foo(null), ça s’exécute en 0.06s. Quand je fais new Foo(null, null), c’est 0.1s à nouveau. new Foo(null, null, null), 0.06s. Avec 4 arguments, toujours rapide. 5 lent. 6, 7, rapide. 8 lent. 9, rapide.
Et là, tu sors $ perf, et en fait c’est con : la méthode appelée sur Foo est une loop toute tight, et le JIT produit du code machine sans aligner les adresses des instructions du jump et de son target. Dans le cas "lent" ci-dessus, l’instruction jump de la boucle n’est pas dans le même block que le target du jump, problème d’alignement des adresses, et donc le CPU doit constamment fetcher le block précédent quand il arrive au jump. Dans le cas "rapide" ci-dessus, ajouter ces "null" – qui ont en fait aucun impact et pourraient être ignorés par l’optimizing compiler du JIT – permet accidentellement de padder les blocks et de causer l’alignement des adresses des instructions en question.
(D’ailleurs c’est corrigé dans la version actuelle de V8, ce cas est systématiquement aligné proprement et donc les perfs sont identiques avec ou sans ces arguments inutiles.)
Voilà pour ma vie. Je retourne copier-coller des bouts de trucs sans piger comment ça fonctionne et vous laisse parler entre vrais développeurs qui font pas du web tout pourri contrairement à moi. J’ai beaucoup d’admiration pour vous, j’aime beaucoup ce que vous faites, bisous.
L’assembleur n’est pas essentiel pour coder, tout le monde est d’accord…
En revanche, l’assembleur reste un langage de programmation au même titre que Cxx and Co
Peut on coder un logiciel complet pour Windows en assembleur, la réponse est oui
Est-ce plus compliqué ?…
Oui, parce-qu’il faut réinventer la roues très souvent
Non, c’est pas insurmontable, c’est un langage de programmation comme un autre
On pense souvent à tord que l’assembleur ne ressemble à rien et c’est légèrement faux
Il y a énormément de similitudes entre un source assembleur et un langage de haut niveau
On y trouve par exemple des If, des else, des Call, … (préfabriqués). Le dev Cxx and Co n’est pas perdu
On y trouve également des biblio, moulte fonctions et une communauté très active
Et cerise sur le gâteau, Microsoft a fait une mise à jour de son assembleur intégré dans Visual Studio 2017
Oui, on peut coder en assembleur à partir de Visual Studio, elle est pas belle la vie
On peut donc coder un logiciel complet en assembleur, il y a les outils pour le faire, Microsoft fournis l’EDI, le compilateur, le linker, etc…
Et 2eme cerise sur le gâteau, il y plusieurs compilateurs et moulte EDI à disposition
L’assembleur n’est pas essentiel, c’est sur mais il permet de coder n’importe quel logiciel sous Windows sans plus de difficulté qu’un langage de haut niveau
Alors, on commence quand à coder en Assembleur pour Linux, Mac ou Windows
@victor
"Voilà pour ma vie. Je retourne copier-coller des bouts de trucs sans piger comment ça fonctionne et vous laisse parler entre vrais développeurs qui font pas du web tout pourri"
C’est le poisson qui se mord la queue, retour à la case départ ?
Staf, permission de troller accordée…
Faites ce que je dit mais pas ce que je fait…
La vraie question c’est sans doute pourquoi faire de l’assembleur, surtout sur PC, où un bon compilateur fera meilleur usage des milliers d’instructions et des dizaines d’extensions des processeurs PC, et produira donc un code machine plus rapide à partir d’un code C++ propre sans gestion manuelle de mémoire.
L’assembleur n’est pas indispensable, tout le monde est d’accord, pourquoi autant de haine ?
@Stranger
Et pourquoi pas
Tu fait fausse route concernant le nombre d’instruction, c’est 150 à peu prés entre le 8088 et le Xeon…
Un compilateur C++ ne sera jamais aussi performant qu’un compilateur assembleur… Dire le contraire est une ineptie…