L'assembleur est-il essentiel pour coder ?

Le problème exposé dans ce sujet a été résolu.

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.

+0 -0

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.

+0 -4

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).

+7 -0

Effectivement, pas plus que le Fortan ou Pascal. Mais après, je ne suis pas d’accord. J’ai appris tout ce que tu cites avant d’avoir appris le peu d’assembleur que je connaisse. Après tu peux considérer ça comme de l’assembleur et du coup, ben je suis d’accord, mais pour moi, c’est pas de l’assembleur. C’est juste le fonctionnement de l’ordi.

ache

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à.

Tu fais des études de droit c’est ça ? x’) Avocat du diable va x’D

ache

Pourquoi juste l’avocat ? :diable:

Car dans ton argumentaire, tu dis clairement qu’il n’y a pas de raison de se priver de langage de haut niveau. Vu qu’il est moins simple(rapide/claire) de coder un programme fonctionnel en assembleur qu’en C ou en Python, il n’y a pas de raison de l’apprendre en premier langage. De plus, même si c’est la base des langages et qu’au final, ça serra de l’assembleur, ben rarement on regarde l’assembleur produit au final. Déjà car souvent on l’a pas et ensuite car c’est vachement inutile.

ache

À 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.

+2 -0

É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).

Taurre

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.

+12 -0

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…

+0 -5

On peut construire un CPU avec une allumette et du sable. Moi j’ai rien contre que tu fasses tes programmes en assembleur, hein, c’est tout à ton honneur. Par contre si tu programmes en assembleur sur un OS que t’as pas programmé toi-même et qui ne tourne pas sur un CPU que tu as fait toi-même, c’est de l’amateurisme pur, niveau grosse feignasse. Même le type qui regarde le foot sur TF1 fait plus d’effort que toi puisqu’il doit se bouger du canapé jusqu’au frigogidaire chaque fois qu’il va chercher une bière.

Sois un minimum sérieux stp, prends ta pelle et ton seau, va chercher du sable pour faire ton CPU, et reviens quand t’es un vrai développeur.

victor

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…

+0 -8

Bon.

Je pense que tout a été dit, et que cette discussion dans le respect d’autrui est terminée.

Je vais donc jeter un voile pudique sur ce sujet et le clore.

Bonne nuit, et faites de beaux rêves.

+1 -0
Ce sujet est verrouillé.