Un programme informatique pour me guérir de ma mélancolie.

2 participants

Aller en bas

Un programme informatique pour me guérir de ma mélancolie. Empty Un programme informatique pour me guérir de ma mélancolie.

Message par Invité Sam 3 Juil 2021 - 9:32

Bonjour. Je suis arrivé à la conclusion que je dois faire quelque chose, n'importe quoi. Je dois avoir un projet si je veux me survivre à moi même. Quelque chose de concret, montrable. Quelque chose qui me permet de juger de ma propre évolution. Après un bilan de compétence, j'ai décidé que le mieux pour moi, serait de créer un programme informatique. Le coût d'entré est raisonnable ou à tout le moins maîtrisable, et je suis en mesure de démarrer tout de suite, d'ailleurs j'ai déjà démarré. Après quelque tergiversations, je me suis rendu compte que je ne suis pas très à l'aise avec l'ensemble des outils de programmations qui sont à notre disposition actuellement. Que ce soit au niveau des cpus ou des langages de programmations : tout est si inutilement complexe. Alors oui bien sûr, une certaine complexité est inévitable, mais il est vite apparent que la simplicité n'est tout simplement pas un objectif répandu. Pourtant il existe des aphorismes tels que
Donald Knuth a écrit: « On devrait oublier les petites optimisations locales, disons, 97 % du temps : l'optimisation prématurée est la source de tous les maux1. »
Randall Hyde a écrit: « What Hoare and Knuth are really saying is that software engineers should worry about other issues (such as good algorithm design and good implementations of those algorithms) before they worry about micro-optimizations such as how many CPU cycles a particular statement consumes. »

Et d'où vient la complexité, de nos processeurs X86 par exemple, ou encore du langage C (oui le langage C, je ne parle pas du C++, juste du bon vieux c99) sinon de l'envie et parfois du besoin probablement prématuré d'optimiser ? Bon historiquement ça se justifiait quand les logiciels coutaient moins cher à produire que le matériel pour les faire tourner. Et également c'est complexifié par les logiques marketings et commerciales.


De ce constat, j'ai eu envie de reconstruire une informatique qui serait sinon réellement simplifiée, du moins raisonnablement simple. A ce titre j''éprouve le besoin de construire la spécification d'une machine virtuelle, pour laquelle j'écrirais un assembleur. Cette machine devra être une vrai machine, avec au moins un écran et une souris, c'est à dire équivalent à un pc ordinaire. Elle fonctionnera par émulation (comme la machine virtuelle java) Le réseau viendra plus tard, mais il est évident que c'est également désirable. Une fois que j'aurais construit cette machine virtuelle, et qu'elle sera stabilisée au moins un peu, j'essaierai de créer un langage de programmation, quelque chose de simple qui puisse être à la fois compilé vers la machine virtuelle préalablement établie, mais également qui soit traduisible en C. Une fois que j'en serais à cette étape aujourd'hui un peu lointaine, il sera temps de me poser et de décider où je vais. J'ai dans l'idée qu'un second langage de programmation, plus orienté productivité que le premier sera désirable.

Je ne souhaite pas vraiment exposer toutes mes idées aux moteurs de recherches, c'est pourquoi j'ai choisis dors et déjà d'appliquer une stratégie drastique de maîtrise de la diffusion de cet exercice  : utiliser les balises "caché" disponibles ici. Elles font que seuls les personnes qui ont participé à ce fil seront à même de pouvoir lire les éléments techniques que je juge un peu sensibles (par exemple le choix des jeux d'instructions que je mets à l'essai, et du choix de l'encodage binaire, mais également les éventuels liens vers des démonstrations en ligne qui sont certainement nécessaire, si je veux réussir à présenter publiquement l'avancée de ce petit projet personnel). Je ne m'attends pas forcément ce qu'il y ait foule. J'ignore totalement si avoir une audience est pour moi une motivation ou une inhibition, ce sera à découvrir. Ca dépendra peut être aussi de l'audience. Ce procédé de balises "caché"  me permettra d'avoir une idée de qui est susceptible de lire, du profil des gens (au moins un peu) intéressés. Je signalerais systématique l'existence des balises cachées quand j'en utiliserais. Je ne garanti pas que je vais persister longtemps dans le fait de documenter et verbaliser ici : je veux juste tester, et évaluer si j'avance ou non plus vite en m'imposant cette montrabilité.


Dernière édition par daurinak le Lun 5 Juil 2021 - 17:12, édité 1 fois

Invité
Invité


Revenir en haut Aller en bas

Un programme informatique pour me guérir de ma mélancolie. Empty Re: Un programme informatique pour me guérir de ma mélancolie.

Message par Confiteor Sam 3 Juil 2021 - 11:48

Et ben ....
Tu te mets la barre très haut et je suivrai avec le plus grand intérêt ton chantier.
Rien moins que révolutionner la Silicon Valley !

Quelles sont les premières pistes concrètes que tu peux montrer ?
Confiteor
Confiteor

Messages : 9159
Date d'inscription : 01/04/2017
Age : 65
Localisation : Drôme

Revenir en haut Aller en bas

Un programme informatique pour me guérir de ma mélancolie. Empty Re: Un programme informatique pour me guérir de ma mélancolie.

Message par Invité Sam 3 Juil 2021 - 12:46

Confiteor a écrit:Quelles sont les premières pistes concrètes que tu peux montrer ?
J'ai des prototypes en C, mais j'aimerais te (vous) montrer quelque chose plutôt en javascript via une page web. Va falloir que je me sorte les doigts comme ils disent, ce qui est bien l'idée de ce fil ^ ^

Invité
Invité


Revenir en haut Aller en bas

Un programme informatique pour me guérir de ma mélancolie. Empty Re: Un programme informatique pour me guérir de ma mélancolie.

Message par Invité Dim 4 Juil 2021 - 6:53

Les jeux d'instructions des premiers ordinateurs :

https://en.wikipedia.org/wiki/Manchester_Baby

  • Jump to the instruction at the address obtained from the specified memory address S[a] (absolute unconditional jump)
  • Jump to the instruction at the program counter plus (+) the relative value obtained from the specified memory address S[a] (relative unconditional jump)
  • Take the number from the specified memory address S, negate it, and load it into the accumulator
  • Store the number in the accumulator to the specified memory address S
  • Subtract the number at the specified memory address S from the value in accumulator, and store the result in the accumulator
  • Skip next instruction if the accumulator contains a negative value
  • Stop


https://en.wikipedia.org/wiki/EDSAC

  • Add
  • Subtract
  • Multiply-and-add
  • AND-and-add (called "Collate")
  • Shift Left
  • Arithmetic shift Right
  • Load multiplier register
  • Store (and optionally clear) accumulator
  • Conditional Goto
  • Read Input tape
  • Print character
  • Round accumulator
  • No-op
  • Stop.





C'était objectivement plus élégant et accessible que ça (votre pc) :

  • https://en.wikipedia.org/wiki/X86_instruction_listings


ou que ça (votre tablette android/smartphone) [cpu a jeu d'instruction réduit ...] :

  • https://www.element14.com/community/servlet/JiveServlet/previewBody/41836-102-1-229511/ARM.Reference_Manual.pdf

Invité
Invité


Revenir en haut Aller en bas

Un programme informatique pour me guérir de ma mélancolie. Empty Re: Un programme informatique pour me guérir de ma mélancolie.

Message par Invité Lun 5 Juil 2021 - 14:01

Salut daurinak,
je suis curieuse de voir sur quoi tu travailles,


Dernière édition par margot le Jeu 9 Déc 2021 - 17:22, édité 1 fois

Invité
Invité


Revenir en haut Aller en bas

Un programme informatique pour me guérir de ma mélancolie. Empty Re: Un programme informatique pour me guérir de ma mélancolie.

Message par Invité Lun 5 Juil 2021 - 14:29

margot a écrit:Salut daurinak,
je suis curieuse de voir sur quoi tu travailles,
pour ton souhait d'un langage simple qui pourrait se compiler en langage C il existe Genie, le langage est jeune et donc forcément il n'a pas encore beaucoup d'adeptes mais il est libre, tu peux l'utiliser et contribuer à l'améliore de plus il répond exactement à ton souhait secondaire, il se compile en langage C ou directement en binaire exécutable, https://wiki.gnome.org/Projects/Genie
Bienvenue \o/




Dans les jeune langages dont la popularité monte, on a aussi :

  • - nim
  • - zig

Dans les "vieux" langages (récents) dont la popularité est respectable encore aujourd'hui :

  • - rust

Ces langages essayent tous de remplacer le C. Il y en a littéralement des centaines d'autres. Pourtant assez peu se distinguent vraiment. A un plan bas niveau, on aussi la machine virtuelle java, et également la plateforme WASM, et le langage intermédiaire de LLVM.  La encore il existe un foisonnement de projets, et d'envies de trouver le langage qui résoudra les problèmes que tout le monde rencontre au quotidien, mais là encore il existe finalement assez peu de variations dans les philosophies.


Si on retourne dans les années 50, on a eu une explosion de langages, qui étaient vraiment différents les uns les autres.

  • - le langage pascal (équivalent au C, mais un peu moins flexible pour écrire des drivers)
  • - le langage forth ( basé sur l'idée de pile, mais vraiment abscons à l'usage, pour les programme même de taille modeste).
  • - lisp ( aujourd'hui très connu à et à la mode, à travers la catégorie "programmation fonctionnelle")
  • - small talk (l'idée que tout est objet, un des environnement les plus productifs parait t'il. Comparable à Delphi (un environnement basé sur le pascal))

il y avait aussi des trucs exotiques comme le Prolog. Tous des langages nettement distinguables les uns des autres. Forth, lips et smalltalk pouvaient être présentés dans leurs fondamentaux et décrits entièrement au niveau syntaxique par une simple feuille A4. (un peu comme les premiers jeux d'instructions que j'ai pris en exemple un peu plus haut)





Et du coup, pourquoi le langage Genie en particulier ? Comment en as tu entendu parler ?

Invité
Invité


Revenir en haut Aller en bas

Un programme informatique pour me guérir de ma mélancolie. Empty Re: Un programme informatique pour me guérir de ma mélancolie.

Message par Invité Lun 5 Juil 2021 - 15:11

..


Dernière édition par margot le Jeu 9 Déc 2021 - 17:21, édité 2 fois

Invité
Invité


Revenir en haut Aller en bas

Un programme informatique pour me guérir de ma mélancolie. Empty Re: Un programme informatique pour me guérir de ma mélancolie.

Message par RonaldMcDonald Lun 5 Juil 2021 - 15:27

Le souci avec un jeu d'instructions limité, c'est qu'il faut se farcir toutes les couches intermédiaires. Si tu as une instruction CPU qui te calcule le cosinus, eh bien tu vas bien plus vite que si tu dois te farcir le calcul à la main avec un jeu d'instructions limité.

Donc, en fait, ça dépend de ce que tu fais. Plus tes opérations sont proches du processeur, et plus ton désir de pureté se justifie. Pour des gens qui font de l'info de gestion (moi) ou scientifique, avoir des proc qui font même la lessive, c'est le panard absolu. Pour travailler sur du bas niveau, ce qui semble être ton objectif, c'est nettement plus discutable, en effet.

(et ton projet me fait dire que je n'ai pas 10% de ton talent - je sais direct que j'irais, moi, droit dans le mur sur un projet pareil)

Pour les langages des années 50, tu as oublié COBOL, un truc encore très différent, volontairement hyper-verbeux (moins que son infâme prédécesseur le flow-matic, quand même) conçu à la base pour être programmable par des comptables. Evidemment, les comptables ont vite rappelé les programmeurs, mais ça reste un langage aussi facile à lire qu'à écrire (et très limité dans son périmètre, aussi, très performant dans les batches comptables, assez inutile ailleurs)
RonaldMcDonald
RonaldMcDonald

Messages : 11679
Date d'inscription : 15/01/2019
Age : 48
Localisation : loin de chez moi, dans un petit coin de paradis

Revenir en haut Aller en bas

Un programme informatique pour me guérir de ma mélancolie. Empty Re: Un programme informatique pour me guérir de ma mélancolie.

Message par Invité Lun 5 Juil 2021 - 15:33

RonaldMcDonald a écrit:
Pour les langages des années 50, tu as oublié COBOL
Il y a aussi SQL, qui pour le coup est toujours d'actualité, au point que j'avais oublié que c'était un patriarche. Il y a aussi BASIC, mais c'est vrai que globalement basic est tout simplement obsolète, et ne mérite plus vraiment d'être mentionné. Ce qui n'est pas le cas de ceux que j'ai cité, qui restent très étudiés.

Invité
Invité


Revenir en haut Aller en bas

Un programme informatique pour me guérir de ma mélancolie. Empty Re: Un programme informatique pour me guérir de ma mélancolie.

Message par Invité Lun 5 Juil 2021 - 15:43

margot a écrit:J'avoue que tu m'as un peu perdue avec la philosophie, quelque part il faudra rediviser ton projet, pour ne pas te perdre en route, commencer par une priorité.  Enfin voilà, je ne sais pas trop si ça t'aide en fait...

Oui en effet. La priorité sera de construire une plateforme virtuelle avec Ecran, Souris, Clavier virtuels + cpu virtuel. Et donc un programme assembleur pourra réaliser le jeu snake par exemple. J'aimerais réussir à vous montrer une démo sur une page html, avec au moins un écran, et la possibilité d’exécuter le programme écrit en mnémoniques assembleur. Mais peut être aussi que j'attendrais d'avoir le langage lisible et utilisable, car là sur le cpu virtuel tel que je l'envisage le nombre d'instructions dispos sera particulièrement minimaliste ....

Avec les vacances, il risque d'y avoir du lag. Déjà que quand j'ai la possibilité potentielle de travailler 4h par jours, je tends à me perdre en activités d'évitements (comme de poster sur ce forum, en dehors de ce fil :-D )

Invité
Invité


Revenir en haut Aller en bas

Un programme informatique pour me guérir de ma mélancolie. Empty Re: Un programme informatique pour me guérir de ma mélancolie.

Message par Invité Lun 5 Juil 2021 - 15:52

Assembleur virtuel avec une interface i/o avec sortie graphique et input avec pointage opto/mecanique????
C'est pas un peu chaud ?

Invité
Invité


Revenir en haut Aller en bas

Un programme informatique pour me guérir de ma mélancolie. Empty Re: Un programme informatique pour me guérir de ma mélancolie.

Message par Invité Lun 5 Juil 2021 - 16:12

Nolimit a écrit:Assembleur virtuel avec une interface i/o avec sortie graphique et input avec pointage opto/mecanique????
C'est pas un peu chaud ?
Ben non, ça sera émulé, et ça tournera sur ton navigateur pour les démos Razz
Grosso modo un ordinateur dans une page web.

Au niveau réalisation bah ... disons que mes premiers prototypes semblent pointer vers ça pose pas de problème.

Invité
Invité


Revenir en haut Aller en bas

Un programme informatique pour me guérir de ma mélancolie. Empty Re: Un programme informatique pour me guérir de ma mélancolie.

Message par Invité Lun 5 Juil 2021 - 16:38

Alors crois dans ce que tu pousses...

Invité
Invité


Revenir en haut Aller en bas

Un programme informatique pour me guérir de ma mélancolie. Empty Re: Un programme informatique pour me guérir de ma mélancolie.

Message par Invité Mar 6 Juil 2021 - 16:08

..

Invité
Invité


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum