Skip to content

Latest commit

 

History

History
415 lines (342 loc) · 11 KB

README_FR.md

File metadata and controls

415 lines (342 loc) · 11 KB

Langage de Programmation One

Langage de Programmation One 💚 💙 🧡 🤍 💖 🖤

Onelang.org | Demande d'aide

Patreon Discord Twitter Instagram License Facebook

English   عربي   Español   فارسی   Filipino   Français   Italiano   日本語   한국어   русский   Türkçe   Українська

Bienvenue à One!
Il s'agit d'un langage de programmation système, d'amorçage, à source libre, et auto-hébergé, qui facilite la création de logiciels fiables et efficaces. Il est développé par Max, John, et d'autres contributeurs en open-source.

Le compilateur pour le langage One sera publié dans quelques mois

-----------------------------------------------------

Table des matières

  1. Fonctionnalités de One
  2. Carte
  3. Exemples de code
  4. Pour commencer
  5. Pour s'impliquer
  6. Licence

-----------------------------------------------------

➤ Fonctionnalités de One

  • Simplicité
  • Compilé
  • Possibilité de créer un fichier de sortie (x86_64, i386)
  • Langage de programmation système
  • Niveau intermédiaire
  • Programmation réseau et API
  • Prise en charge de la programmation Web (prochainement)
    • Génération automatique du code correspondant pour CSS et HTML. Vous n'aurez donc pas besoin d'apprendre plus que le langage One pour développer un site web
    • Variables CSS pour l'utilisatino de couleurs ou de tailles prédéfinies
    • Minification automatique des résultats de la page
  • Performances et vitesse élevée
  • Prise en charge des fragments de code assembleur (prochainement)
  • Ne nécessite pas de bibliothèques et d'outils spécifiques sur le système utilisateur en mode normal (prochainement)
  • Ne nécessite pas de bibliothèques d'exécution externes en mode normal (prochainement)
  • Ne nécessite pas de compilateurs externes pour effectuer la compilation (prochainement)

-----------------------------------------------------

➤ Feuille de route

La grammaire du langage One est disponible ici.

  • Lexer/Parser (principalement)
  • Arbre AST
  • MV
  • Générateur de code (inspirez-vous de LLVM-C)
  • Développer une bibliothèque d'exécution et ajouter des fonctionnalités
  • Concevoir un framework web pour le langage
  • Réécrire le compilateur par le langage One

-----------------------------------------------------

➤ Exemples de code

main {
   ret 0
}

Équivalant en C:

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
   global_argc = argc;
   global_argv = argv;
   return (int) 0;
}

i32 main {
   ret 10
}

Équivalent en C:

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
   global_argc = argc;
   global_argv = argv;
   return (int) 10;
}

main {
   string in = "Hello, World!"
   __ in
   return in.length
}

Équivalent en C:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]) {
   global_argc = argc;
   global_argv = argv;
   char *in = "Hello, World!";
   printf("%s\n", in);
   return (int) strlen(in);
}

Brouillon:

import web
home {
    _ "Hi, Welcome"
}
error {
    headers.add('HTTP/1.0 404 Not Found')
    headers.add('content-type: text/html;charset=utf-8')
    _ "<h1>404></h1>"
}
main {
    if system.args.length === 2 {
        port = system.args[1]
    } else  {
        port = 8080;
    }
    web.route.add("/", home)
    web.route.add("*", error)
    web.listen(port)
    return 0
}

Brouillon:

error {
    headers.add('HTTP/1.0 404 Not Found')
    headers.add('content-type: text/html;charset=utf-8')
    _ `<!doctype html><html><head><title>Error 404</title><meta charset="utf-8"></head><body><h1>404></h1></body></html>`
}

vs

error {
    headers.add('HTTP/1.0 404 Not Found')
    headers.add('content-type: text/html;charset=utf-8')
    page {
        title: 'Error 404'
        label {
            type: 'h1'
            _ "Not found!"
        }
    }
}

Développement de l'ancienne CLI

main:
   // __ "Hello, World!"
   _ "Hello,"
   io.write(' ')
   io.write("World")
   __ '!'
end
@start
customName:
   _ "Hello, World!\n"
end
@start
void app:
   __ "Hello, World!"
end
@start
int customName:
   _ "Hello, World!\n"
   return 0
end

Développement de l'ancienne interface graphique : (Web, logiciel)

Cette architecture est conçue uniquement pour les sites Web et les logiciels natifs. Prochainement, il sera également disponible pour les applications mobiles (natives).
Les structures mobiles ne sont pas encore terminées et nécessitent plus d'attention et de réflexion.

Exemple pour démontrer le fonctionnement de la langue :

title "Name - Main"
description "Descriptions"
/*
Balise de mot-clé non utilisée dans le logiciel, uniquement sur le web.
*/
keyword "keywords"
style {
  * {
    margin 0
    padding 0
  }
  header {
    width "100%"
    height "auto"
  }
  list {
    color "red"
  }
  list item {
    display "inline"
    padding "10px"
    background "yellow"
  }
}
header {
  list {
    item {
      _ "Home"
    }
    item {
      _ "About"
    }
    item {
      _ "Contact Us"
    }
  }
}

Équivalant en CSS/HTML/JS :

<html>
  <head>
    <title>Name - Main</title>
    <meta name="description" content="Descriptions" />
    <meta name="keyword" content="keywords" />
    <style>
      * {
        margin: 0;
        padding: 0;
      }
      header {
        width 100%;
        height: auto;
      }
      ul {
        color: red;
      }
      ul li {
        display: inline;
        padding: 10px;
        background: yellow;
      }
    </style>
  </head>
  <body>
    <header>
      <ul>
        <li>Home</li>
        <li>About</li>
        <li>Contact Us</li>
      </ul>
    </header>
  </body>
</html>

-----------------------------------------------------

➤ Pour commencer

Référez-vous à ce lien pour commencer à apprendre la langue.

Environnements pris en charge

  • GNU / Linux
  • Windows
  • macOS (Not complete)
  • BSD

-----------------------------------------------------

➤ Pour s'impliquer

Nous accueillons toutes sortes de contributions, y compris les rapports de bogues, les demandes de fonctionnalités, les améliorations de la documentation, etc. Pour poser une question ou ouvrir une discussion, créer un problème ou rejoindre le Serveur DiscordOne.

Si vous ne savez pas comment faire une pull request sur GitHub, veuillez lire ce guide.

Si vous avez décidé de contribuer, veuillez d'abord lire les directiveshere.
Vous pouvez également aider au développement de One en faisant des dons sur ❤️ Patreon.

Merci à tous les contributeurs!!

Si vous souhaitez contribuer au développement de ce projet, vous pouvez nous envoyer un mail à : maxbasecode@gmail.com


Créé par Max Base @ 2019 -----------------------------------------------------

➤ Licence

One est publié sous la licence publique générale GNU v3.0. Veuillez vous référer aux termes du fichier LICENCE inclus dans le repository.