Langage de Programmation One 💚 💙 🧡 🤍 💖 🖤
February 18, 2024 · View on GitHub
Langage de Programmation One 💚 💙 🧡 🤍 💖 🖤
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

➤ 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
Onepour 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
- Génération automatique du code correspondant pour CSS et HTML. Vous n'aurez donc pas besoin d'apprendre plus que le langage
- 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 :heart: 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.