• chevron_right

      SectorC, un étonnant compilateur C de seulement 512 octets

      news.movim.eu / Korben · Saturday, 27 May, 2023 - 07:39 · 2 minutes

    Peux être être vous tombé sur ce projet incroyable baptisé SectorC ?

    C’est un compilateur C écrit en assembleur x86-16 qui tient dans le secteur d’amorçage de 512 octets d’une machine x86. Si vous pensez que c’est déjà assez impressionnant, attendez d’entendre toutes les fonctionnalités dont il dispose !

    Il prend en charge un sous-ensemble de C suffisamment grand pour écrire des programmes vraiment intéressants (Variables globales, fonctions, instructions if et while, de nombreux opérateurs, les pointeurs, commentaires, etc.), en plus d’être probablement le plus petit compilateur C jamais écrit.

    Encodé en base64, voici ce que ça donne :

    6gUAwAdoADAfaAAgBzH/6DABPfQYdQXoJQHr8+gjAVOJP+gSALDDqluB+9lQdeAG/zdoAEAfy+gI
    AegFAYnYg/hNdFuE9nQNsOiqiwcp+IPoAqvr4j3/FXUG6OUAquvXPVgYdQXoJgDrGj0C2nUGV+gb
    AOsF6CgA68Ow6apYKfiD6AKrifgp8CaJRP7rrOg4ALiFwKu4D4Srq1fonP9ewz2N/HUV6JoA6BkA
    ieu4iQRQuIs26IAAWKvD6AcAieu4iQbrc4nd6HkA6HYA6DgAHg4fvq8Bra052HQGhcB19h/DrVCw
    UKroWQDoGwC4WZGrW4D/wHUMuDnIq7i4AKu4AA+ridirH8M9jfx1COgzALiLBOucg/j4dQXorf/r
    JIP49nUI6BwAuI0G6wyE0nQFsLiq6wa4iwarAduJ2KvrA+gAAOhLADwgfvkx2zHJPDkPnsI8IH4S
    weEIiMFr2wqD6DABw+gqAOvqicg9Ly90Dj0qL3QSPSkoD5TGidjD6BAAPAp1+eu86Ln/g/jDdfjr
    slIx9osEMQQ8O3QUuAACMdLNFIDkgHX0PDt1BIkEMcBaw/v/A8H9/yvB+v/34fb/I8FMAAvBLgAz
    wYQA0+CaANP4jwCUwHf/lcAMAJzADgCfwIUAnsCZAJ3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAVao=

    Xorvoid, l’auteur de ce projet a été inspiré par les recherches de Justine Tunney et Tom Murphy . Ainsi, pour réduire la taille du tokenizer, l’auteur a proposé une version de C appelée « Barely C Programming Language » qui utilise des « méga-tokens » pour minimiser le nombre de tokens nécessaires.

    Voici la « grammaire » de son C maison :

    program     = (var_decl | func_decl)+
    var_decl    = "int" identifier ";"
    func_decl   = "void" func_name "{" statement* "}"
    func_name   = <identifier that ends in "()" with no space>
    statement   = "if(" expr "){" statement* "}"
                | "while(" expr "){" statement* "}"
                | "asm" integer ";"
                | func_name ";"
                | assign_expr ";"
    assign_expr = deref? identifier "=" expr
    deref       = "*(int*)"
    expr        = unary (op unary)?
    unary       = deref identifier
                | "&" identifier
                | "(" expr ")"
                | indentifier
                | integer
    op          = "+" | "-" | "&" | "|" | "^" | "<<" | ">>"
                | "==" | "!=" | "<" | ">" | "<=" | ">="

    De plus, la fonction atoi() est utilisée comme une fonction de hachage pour les littéraux entiers, ce qui permet de réduire encore plus le nombre de tokens.

    Pour réussir à minimiser la taille de son code en langage assembleur, Xorvoid a expérimenté différentes méthodes, comme celle du « byte-threaded-code », qui consiste à aligner les adresses sur une limite de 2 octets pour utiliser un seul octet pour l’adressage. Finalement, le créateur de SectorC a réussi à minimiser son code autant que possible en utilisant différentes petites astuces et en revenant sans cesse à une version encore plus simple de son code.

    Au final, ce petit projet nous démontre que même avec des contraintes importantes, il est possible d’obtenir des résultats impressionnants. Ainsi, SectorC pourrait être utile pour ceux qui souhaitent explorer les fonctions bios x86-16 et ce modèle de machine sans avoir à apprendre beaucoup d’assembleur au préalable. Ce genre de défi impressionnant est souvent l’occasion de trouver des solutions plutôt créatives et assez innovantes. Ça scotche les amateurs de technique comme moi en tout cas.

    Et bien sûr, si vous êtes curieux et voulez en apprendre davantage sur ce projet surprenant, je vous invite à découvrir SectorC ici : https://xorvoid.com/sectorc.html

    Source

    • chevron_right

      Quels sont les logiciels libres que l’État préconise en 2023 ?

      news.movim.eu / Numerama · Saturday, 20 May, 2023 - 06:12

    open-source-linux

    La liste des logiciels libres recommandés par État continue de grandir. Ils sont désormais 359 à être conseillés. En parallèle, le site web dédié a bénéficié d'une refonte bienvenue. [Lire la suite]

    Abonnez-vous aux newsletters Numerama pour recevoir l’essentiel de l’actualité https://www.numerama.com/newsletter/

    • chevron_right

      Cursor – L’éditeur IA pour les développeurs du futur

      news.movim.eu / Korben · Wednesday, 3 May, 2023 - 12:38 · 1 minute

    Je suis un fan absolu de Github Copilot quand il s’agit de développer. Ca me fait gagner un temps de dingue et c’est super bien intégré dans mon Visual Studio Code. Cela dit, ça pèche encore un peu sur le coté génération de code qu’on pourrait avoir avec un ChatGPT par exemple.

    Heureusement, voici venu Cursor , un nouvel IDE qui intègre de l’IA pour vous aider à écrire du code plus rapidement et plus intelligemment. Vous allez voir, c’est très impressionnant. Je vous explique pourquoi.

    Imaginez que vous travaillez sur un projet et que vous avez un tas de problèmes à résoudre, de bugs à corriger et que vous aimeriez ajouter quelques nouvelles fonctionnalités. Comme toute personne normale, vous commencez à écrire du code, mais au fur et à mesure, vous vous apercevez que ce serait tellement plus simple si vous aviez quelqu’un (ou quelque chose) de plus intelligent et expérimenté pour vous assister.

    Voilà où Cursor intervient !

    Pour essayer cette merveille, rendez-vous sur leur site web et téléchargez le ! Pour le moment, Cursor dispose de quelques fonctionnalités clés telles que :

    • Le chat : Discutez avec un robot de type ChatGPT qui voit votre fichier actuel.
    • L’édition : Demandez à l’IA de modifier un bloc de code, et voir un diff en ligne des modifications.
    • Le débugging : Survolez les erreurs de linter pour les corriger automatiquement.
    • La rédaction de code : Générez des morceaux entiers de code à partir de courtes descriptions

    Et pour couronner le tout, les développeurs de Cursor ont de grandes ambitions pour l’avenir. Ils souhaitent que celui-ci devienne l’environnement de développement le plus productif au monde en utilisant des LLMs (modèles de langage à grande échelle).

    On aurait alors des fonctionnalités comme la réparation automatique de votre référentiel de dev, la correction automatique des erreurs ou encore l’intégration de la documentation écrite par l’IA directement l’interface utilisateur.

    Comme disait l’écrivain de science-fiction Arthur C. Clarke : « Toute technologie suffisamment avancée est indiscernable de la magie. » Et c’est exactement ce sentiment que Cursor procure.

    Si vous êtes un développeur, accordez-vous ce plaisir de travailler main dans la main avec l’IA. Votre vie sera plus douce.

    Happy coding!

    • chevron_right

      Revivez l’expérience des anciens geeks avec PCjs

      news.movim.eu / Korben · Friday, 31 March, 2023 - 07:00 · 1 minute

    Mis au point par Jeff Parsons qui a eu le plaisir de découvrir l’informatique dans les années 70/80, PCjs est un code en javascript qui est capable d’émuler toute une série de matos et de logiciels comme la calculatrice TI-57, le premier Space Invaders (1978), évidemment Multiplan d’IBM (1982), Windows 1.0 jusqu’à 95 ou encore des jeux comme Wolfenstein 3D (1992) ou Dune II (1992).

    Cela va vous permettre de vive l’expérience de ces vieux coucous avec leurs CPU ultra pas rapides, des sons bippés à couper le souffle et leurs interfaces hautes en couleurs, tout ça sans avoir à quitter votre navigateur. Et oui car tout est accessible directement via ce site : https://www.pcjs.org .

    PCjs - émulateur de système d'exploitation vintage des années 80

    L’idée évidemment est de préserver un petit peu de ce patrimoine informatique et logiciel et bien sûr de se faire plaisir sans galérer à retrouver de vieilles disquettes ou même un logiciel de virtualisation compatibles.

    Voici tout ce que vous allez expérimenter sur PCjs :

    • Calculatrice programmable TI-57 (1978)
    • Ohio Scientific Challenger 1P (1978)
    • Space Invaders (1978)
    • Microsoft Adventure (1981)
    • DONKEY.BAS de PC DOS 1.00 (1981)
    • VisiCalc (1981)
    • Multiplan 1.0 (1982)
    • Executive Suite (1982)
    • PDP-11/70 avec RT-11 4.0 (1982)
    • CP/M-86 (1983)
    • COMPAQ Portable avec graphiques monochromes (1983)
    • Zork I: The Great Underground Empire
    • Exploring the IBM Personal Computer (1983)
    • Adventures in Math (1983)
    • Lotus 1-2-3 (1983)
    • Norton Utilities 2.0 (1983)
    • Fantasy Land EGA Demo (1984)
    • Microsoft Word 1.15 (1984)
    • Nine Princes in Amber (1985)
    • Rogue (1985)
    • Microsoft Windows 1.0 (« Premiere Edition »)
    • Microsoft Windows 1.1 sur CGA (1985)
    • Microsoft Windows 1.1 sur EGA (1985)
    • Balance of Power (1985)
    • IBM OS/2 1.0 (1987)
    • VGA Black Book Tests (par Michael Abrash)
    • Microsoft Windows/386 2.0 (1987)
    • Microsoft QuickPascal 1.00 (1989)
    • Microsoft Windows 3.0 (1990)
    • Life & Death II: The Brain (1990)
    • The Oregon Trail (1990)
    • Commander Keen (1991)
    • Wolfenstein 3D (1992)
    • Dune II (1992)
    • Microsoft Windows 3.1 (1992)
    • Microsoft Windows 95 (1995)
    PCjs - simulateur de machine de bureau MS-DOS et Windows 3.0

    Toutes les sources du projet sont sur Github et vous pouvez contribuer. Chacune de ces machines est codée entièrement en javascript et utilisent un format XML qui défini les composants à activer ou non, donc vous pouvez aussi vous approprier le truc et créer vos propres machines assez simplement.

    • chevron_right

      Nettoyez votre interface Twitter avec cette extension super pratique !

      news.movim.eu / Korben · Saturday, 18 March, 2023 - 08:00 · 1 minute

    Twitter c’est devenu un beau bordel. Beaucoup d’éléments superflus viennent encombrer cette magnifique interface aux touches bleutées, alors pour dire adieu à tout ça et retrouver un Twitter propre et épuré, il y a cette extension pour Chrome, Firefox et Safari nommée Minimal Twitter .

    Une fois installée, elle s’occupe de tout nettoyer pour vous, en retirant tout ce qui est inutile ou relou, tout en ajoutant des fonctionnalités plutôt sympa !

    Parmi les fonctionnalités, on retrouve la possibilité de masquer le nombre de vues, de supprimer la barre d’onglets « Pour vous » et ce genre de trucs, de retirer la colonne latérale des tendances, de personnaliser la largeur de la timeline, d’enlever les bordures pour un look plus minimaliste mais également de pouvoir personnaliser la barre de navigation située à gauche ou encore supprimer les tweets suggérés qui viennent vous pomper l’air.

    L’extension permet également de supprimer les posts publicitaires et les suggestions de comptes à suivre, ainsi que de cacher la barre de recherche. Tout est optionnel, donc rassurez-vous, vous pouvez choisir. Et si vous aimez mettre les mains dans le cambouis, vous pouvez même modifier vous même la CSS pour y intégrer vos propres trucs.

    Mais ce n’est pas tout : Minimal Twitter propose également un mode « Writer » qui masque la totalité de l’interface de Twitter à l’exception du champ dans lequel vous écrivez votre tweet. Pratique pour écrire ses tweets en mode zen !

    L’extension pour permet également de préparer des brouillons et de programmer ça pour que ça s’envoie un peu plus tard au moment de votre choix.

    L’extension est disponible gratuitement mais certaines fonctionnalités sont payantes à partir de 8 euros par mois. Voici la liste :

    Je pense que ça a largement plus de valeur ajoutée que l’offre Twitter Blue, donc si vous avez prévu de mettre un petit budget sur Twitter cette année, c’est peut-être un truc à regarder.

    A voir ici !

    • chevron_right

      Au fait, pourquoi JavaScript s&amp;#8217;appelle JavaScript ?

      news.movim.eu / Numerama · Sunday, 8 January, 2023 - 19:45

    JavaScript

    Le JavaScript a reçu un nom particulier. Il fait référence à Java, sans toutefois être lié à ce langage informatique. [Lire la suite]

    Abonnez-vous aux newsletters Numerama pour recevoir l’essentiel de l’actualité https://www.numerama.com/newsletter/

    • chevron_right

      Au fait, pourquoi SQL s&amp;#8217;appelle SQL ?

      news.movim.eu / Numerama · Sunday, 18 December, 2022 - 18:55

    SQL

    C'est un langage très connu. Mais, savez-vous pourquoi SQL porte ce nom ? [Lire la suite]

    Abonnez-vous aux newsletters Numerama pour recevoir l’essentiel de l’actualité https://www.numerama.com/newsletter/

    • chevron_right

      Au fait, pourquoi le langage Ruby s&amp;#8217;appelle Ruby ?

      news.movim.eu / Numerama · Sunday, 4 December, 2022 - 19:47

    Ruby

    Le nom et le logo sont clairs : c'est bien une référence au rubis. Mais, pourquoi ? [Lire la suite]

    Abonnez-vous aux newsletters Numerama pour recevoir l’essentiel de l’actualité https://www.numerama.com/newsletter/

    • chevron_right

      Au fait, pourquoi le langage informatique C s&amp;#8217;appelle C ?

      news.movim.eu / Numerama · Sunday, 27 November, 2022 - 20:15

    Dans les années 70, naît le langage de programmation C, qui est encore employé aujourd'hui, tout en ayant une descendance reconnue, comme C++ et C#. Connaissez-vous l'histoire de son nom ? [Lire la suite]

    Abonnez-vous aux newsletters Numerama pour recevoir l’essentiel de l’actualité https://www.numerama.com/newsletter/