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.
- 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
- 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)
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
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!"
}
}
}
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
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"
}
}
}
<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>
Référez-vous à ce lien pour commencer à apprendre la langue.
- GNU / Linux
- Windows
- macOS (Not complete)
- BSD
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
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.