Ласкаво просимо до One!
Це відкрита, самодостатня, самоналаштовувана системна мова програмування яка дає можливість легко створити надійне і ефективне програмне забезпечення.
Вона розробляється Max, John і іншими людьми, що роблять внесок через відкритий доступ.
- Простота
- Компілятор
- Можливість створення вихідного файлу (x86_64, i386)
- Системна мова програмування
- Середній рівень
- Мережеве і API програмування
- Підтримує веб-програмування (в майбутньому)
- Автоматична генерація відповідного коду і для CSS і HTML. Отже, вам не потрібно буде вивчати інші мови, крім
One
, щоб створити вебсайт - Використовує змінні в CSS, щоб ми змогли отримати кольори чи розміри з бази данних
- Автоматична мінімізація результатів пошуку сторінки
- Автоматична генерація відповідного коду і для CSS і HTML. Отже, вам не потрібно буде вивчати інші мови, крім
- Продуктивність і висока швидкість
- Підтримує код вбудованого асемблера (в майбутньому)
- В звичайному режимі не потребує спеціальних бібліотек і інструментів на системі користувача (в майбутньому )
- В звичайному режимі не потребує зовнішніх бібліотек часу виконання (в майбутньому )
- Не потребує зовнішніх компіляторів для виконання компіляції (в майбутньому)
Граматика мови One
доступна тут.
- Lexer/Parser (здебільшого)
- Дерево AST
- VM
- Генератор коду (на основі LLVM-C)
- Розробіть бібліотеку часу виконання і додайте характеристики
- Створіть веб-фреймворк для мови
- Перепишіть компілятор мовою
One
main {
ret 0
}
Конвертувати в 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
}
Конвертувати в 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
}
Конвертувати в 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);
}
Інший варіант:
import web
home {
_ "Hi, Welcome"
}
error {
headers.add('HTTP-Type: 404')
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
}
Інший варіант:
error {
headers.add('HTTP-Type: 404')
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-Type: 404')
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
Ця архітектура розробляється лише для веб-сайтів і власного програмного забезпечення. В майбутньому вона також буде доступною для мобільних додатків (власних).
Мобільні структури ще не завершені і потребують більше уваги і осмислення.
Приклад для демонстрації роботи мови:
title "Name - Main"
description "Descriptions"
/*
Keyword tag not used in the software, only on the 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"
}
}
}
Конвертувати в базу 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>
Перейдіть за цим посиланням, щоб почати вивчення мови.
- GNU / Linux
- Windows
- macOS (Не повністю)
- BSD
Ми вітаємо будь-які види внесків, включаючи повідомлення про баги, запити щодо особливостей, покращення документації і т.д. Щоб задати питання чи відкрити дискусію, створіть тему обговорення або ж долучіться до One Discord сервер.
Якщо ви не знайомі з тим, як створити Pull-запит у GitHub, прочитайте, будь-ласка, це - довідник.
Якщо ви вирішили зробити свій внесок, прочитайте, будь-ласка, спочатку настанови тут.
Також ви можете допомогти в розробці One
, надсилаючи пожертвування на ❤️ Patreon.
Дякуємо усім людям, що роблять свої внески!!
Якщо ви бажаєте зробити власний внесок у розвиток цього проекту, ви можете написати нам на: [email protected]
One
випущено згідно з Загальною публічною ліцензією GNU v3.0. Будь-ласка, перейдіть до умов в ЛІЦЕНЗІЯ файлі, вкладеному в репозиторій.