Aller au contenu

Décès de Steve Jobs


Sam

Messages recommandés

FORTH

Je sais, un jour je me mettrai aux langages à pile. Je dois avoir déjà un manuel ou deux en PDF, mais je crains que les parenthèses ne me manquent un peu (ça structure le code, mine de rien). Ca me paraît tellement plus naturel de mettre la fonction après ses arguments, comme l'on réunit les fournitures pour un chantier avant de savoir comment les agencer (même si, à l’implémentation, le parseur pourrait bien commander l'inverse, et procéder à une évaluation paresseuse des arguments).

Lien vers le commentaire

+1 De l'assembleur Motorola 68000. Cela ne nous rajeunit pas.

C'est un forum de g33k en fait ici.

+1

Le 68000 c'est trop carré: programmer c'est un art rigolo, pas une science déterministe !

Et puis 2 octets pour faire un NOP c'est nul.

C'est même pas un forum de geek, c'est des nerds !

Lien vers le commentaire

Cette remarque faisant suite à la mention de forth, je signale qu'en forth on peut inclure de l'assembleur directement dans le corps d'une fonction.

C'est vrai en C aussi. Et dans la plupart des langages compilés il me semble bien.

Mais rien ne vaut ce qu'on fait tout par soi-même.

Lien vers le commentaire

C'est vrai en C aussi. Et dans la plupart des langages compilés il me semble bien.

Mais rien ne vaut ce qu'on fait tout par soi-même.

Par là il y a aussi l'utilisation d'un fpga pour créer son propre processeur, si vraiment on veut revivre le grand frisson.

Lien vers le commentaire

Je n'ai pas dû aller jusque là, dans mon apprentissage de ce langage maudit. En gros, on fait comment ?

Tu programmes en assembleur inline ton code c.

Genre :

asm ("mov eax,1");

Et oui, ça se fait sur la plupart des langages compilés (je l'avais sur Delphi, pour des accès systèmes impossibles autrement -- attention, adaptation d'un code, car je ne suis pas expert en assembleur).

Lien vers le commentaire
Tu programmes en assembleur inline ton code c.

Genre :

asm ("mov eax,1");

Et oui, ça se fait sur la plupart des langages compilés (je l'avais sur Delphi, pour des accès systèmes impossibles autrement -- attention, adaptation d'un code, car je ne suis pas expert en assembleur).

Oh, ok ; c'est donc une fonction qu'on trouve dans des bibliothèques un peu standard de ces langages ? J'avoue que c'est un peu loin de mes préoccupations de coboliste.

Lien vers le commentaire

C'est vrai en C aussi. Et dans la plupart des langages compilés il me semble bien.

Mais rien ne vaut ce qu'on fait tout par soi-même.

Vous vous aidez quand même d'un assembleur, programme ultra évolué qui converti les mnémoniques en langage machine, au lieu de tout coder directement en binaire bande de gays.

Lien vers le commentaire

Je ne sais pas si ça se programme en C, en assembleur ou en Cobol, mais pas d'bol le titre de ce fil nécessite depuis le début la correction d'une fôte sur le nom du défunt qui chagrine quasiment autant que sa disparition.

Fou, ça… J'avais même pas remarqué.

Peut-être pour dire qu'il n'y avait qu'un seul Jobs (donc Job) et qu'il est parti…

Lien vers le commentaire

Vous vous aidez quand même d'un assembleur, programme ultra évolué qui converti les mnémoniques en langage machine, au lieu de tout coder directement en binaire bande de gays.

T'es marrant, toi. Moi, j'écris sur les disques dur directement, à même la bête, avec mon petit électro-aimant. Ah ah . F34r !

Je ne sais pas si ça se programme en C, en assembleur ou en Cobol, mais pas d'bol le titre de ce fil nécessite depuis le début la correction d'une fôte sur le nom du défunt qui chagrine quasiment autant que sa disparition.

Ah oui, effectivement. Il fallait Lire "Blow Job".

Lien vers le commentaire
Vous vous aidez quand même d'un assembleur, programme ultra évolué qui converti les mnémoniques en langage machine, au lieu de tout coder directement en binaire bande de gays.

De toute façon, "real programmers don't eat quiche".

Lien vers le commentaire

T'es marrant, toi. Moi, j'écris sur les disques dur directement, à même la bête, avec mon petit électro-aimant. Ah ah . F34r !

Moi je vous éclate tous, j'ai fait des cablages en pneumatique, par exemple une calculatrice (deux nombres de 4 bits) capable de faire des additions rien qu'avec des portes NAND. On savait s'amuser en ce temps-là.

Et sinon, n'achetez pas de baladeur mp3, faites votre iPod for Anarchists. (comme par hasard des belges…)

Lien vers le commentaire

Moi je vous éclate tous, j'ai fait des cablages en pneumatique, par exemple une calculatrice (deux nombres de 4 bits) capable de faire des additions rien qu'avec des portes NAND. On savait s'amuser en ce temps-là.

Et sinon, n'achetez pas de baladeur mp3, faites votre iPod for Anarchists. (comme par hasard des belges…)

Je m'incline je l'ai fait que en CAO, puis exécuter sur un fpga.

Sans doute que je suis arrivé trop tard dans les études.

Lien vers le commentaire

Si j'ai bien compris, on a une hierarchie entre langage machine-assembleur-langage de programmation.

Comment est créé le langage machine ? Qu'est ce qui permet de hierarchiser les différents langage ? Est ce possible d'écrire des instructions en langage machine à partir d'un PC ?

Lien vers le commentaire

Si j'ai bien compris, on a une hierarchie entre langage machine-assembleur-langage de programmation.

Comment est créé le langage machine ? Qu'est ce qui permet de hierarchiser les différents langage ? Est ce possible d'écrire des instructions en langage machine à partir d'un PC ?

Tu peux tout écrire en binaire si tu en as envie.

Lien vers le commentaire
Comment est créé le langage machine ?

Ce sont les instructions que le processeur sait directement lire.

Qu'est ce qui permet de hierarchiser les différents langage ?

La "quantité de traduction" nécessaire pour faire comprendre le programme au processeur.

Est ce possible d'écrire des instructions en langage machine à partir d'un PC ?

Potentiellement, oui. Tu ouvres un éditeur de texte en mode hexadécimal (pour avoir accès à tous les caractères possibles), et tu enregistres dans un format exécutable. Mais c'est hors de portée de la plupart des programmeurs, et d'autant plus hors de portée que la taille du programme (le nombre d'instructions, et la complexité de leur enchaînement) est importante.

Lien vers le commentaire

Ce sont les instructions que le processeur sait directement lire.

La "quantité de traduction" nécessaire pour faire comprendre le programme au processeur.

Potentiellement, oui. Tu ouvres un éditeur de texte en mode hexadécimal (pour avoir accès à tous les caractères possibles), et tu enregistres dans un format exécutable. Mais c'est hors de portée de la plupart des programmeurs, et d'autant plus hors de portée que la taille du programme (le nombre d'instructions, et la complexité de leur enchaînement) est importante.

Pour préciser l'explication claire de Rincevent, sur les systèmes grand public aujourd'hui (PC), le processeur reçoit un flot d'instructions binaire, regroupé par paquet de 8 (les octets). Au sein du processeur, tu as un module qui a la tâche d'allumer telle série de "fils" et d'y faire passer du courant lorsqu'il reçoit telle ou telle instruction. Donc le niveau le plus bas que puisse utiliser un programmeur aujourd'hui sur PC, c'est l'assembleur. Quand on dit "écrire en assembleur", en fait tu utilises une série de mot clefs (add, mov, sub, nop, etc…) qui sont transcrits en hexadécimal par le compilateur (par exemple - exemple bidon - add = 6 en hexa, et ainsi de suite…). Tu peux alors taper ton programme avec un éditeur de texte, qui contiendra à chaque ligne une de ces instructions tapées en toutes lettres (add, mov, sub, encore une fois), et ce fichier texte sera compilé par ton compilateur ou "essayer" d'utiliser un éditeur hexadécimal pour écrire directement la valeur numérique dans le fichier exécutable final. Inutile de dire que c'est peine perdue ;).

Quand tu montes dans la hiérarchie des langages de programmation, tu t'abstrais des commandes propres à chaque microprocesseur (son assembleur si tu préfères) pour écrire des algorithmes plus généralistes. Ainsi, alors qu'il faut tout gérer toi même en assembleur quand tu veux faire une boucle de 1 à 10 (gérer le compteur collé dans un registre, l'index dans un autre registre, vérifier éventuellement les dépassements, etc.), un langage plus évolué te permettra de taper "pour i de 1 à 10, faire X".

Certains langages plus récents fournissent une bibliothèque de fonctions pré-écrite plus conséquente, ou des manière d'écrire certains algorithmes plus efficaces (par exemple un langage qui t'empêche de passer une fonction à une autre fonction va te forcer à trouver des méthodes alternatives pour arriver à ton but, méthode forcément plus "sale" intellectuellement que si le langage te permettait de t'abstraire de ce problème).

Si je me souviens bien de mes cours, nous sommes actuellement en train d'utiliser des langages de 4ème génération (4GL ou 5GL suivant les guerres de clocher entre les profs ;)). La génération suivante devrait permettre, en théorie, de s'abstraire à un niveau supplémentaire (par exemple, au lieu de taper des instructions du style :

1 - ouvrir un fichier

2 - lire une ligne

3 - pour toutes les lignes du fichier

4 - afficher la ligne à l'écran

5 - fermer le fichier

6 - rendre la main),

tu pourrais juste spécifier

1 - afficher fichier X à l'écran.

Même si pour ce dernier exemple, ça paraît un peu trivial (et beaucoup de langages proposent des facilités pour ce genre de trivialité d'ailleurs), pour beaucoup de tâches un peu plus évoluées, on doit en fait d'abord réussir à monter une intelligence artificielle capable de contextualiser pour comprendre l'intention du programmeur derrière l'instruction qu'il donne…

Lien vers le commentaire
Si je me souviens bien de mes cours, nous sommes actuellement en train d'utiliser des langages de 4ème génération (4GL ou 5GL suivant les guerres de clocher entre les profs ;)). La génération suivante devrait permettre, en théorie, de s'abstraire à un niveau supplémentaire (par exemple, au lieu de taper des instructions du style :

1 - ouvrir un fichier

2 - lire une ligne

3 - pour toutes les lignes du fichier

4 - afficher la ligne à l'écran

5 - fermer le fichier

6 - rendre la main),

tu pourrais juste spécifier

1 - afficher fichier X à l'écran.

Mouais, c'est presque ce qu'on fait quand on écrit une requête SQL, hein. ;)

Lien vers le commentaire

Comment tu fais ?

Le plus souvent c'est pour modifier un programme existant, pas pour un faire un de bout en bout.

Si tu veux essayer, ouvre un tout petit programme (fichier .exe) avec un éditeur hexadécimal (HxD ou autre), et remplace des octets au hasard par CC.

Si le programme choisi etait pas trop gros, tu va noter un changement de son comportement quand tu le lance :)

Voila tu as programmé en binaire.

Lien vers le commentaire

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...