Skip to content

Latest commit

 

History

History
415 lines (341 loc) · 13.1 KB

README_UK.md

File metadata and controls

415 lines (341 loc) · 13.1 KB

The One Programming Language

Мова програмування The One 💚 💙 🧡 🤍 💖 🖤

Onelang.org | Потрібна допомога

Ласкаво просимо до One!
Це відкрита, самодостатня, самоналаштовувана системна мова програмування яка дає можливість легко створити надійне і ефективне програмне забезпечення. Вона розробляється Max, John і іншими людьми, що роблять внесок через відкритий доступ.

Компілятор для One Language буде представлений через декілька місяців

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

Зміст

  1. Особливості One
  2. Дорожня карта
  3. Зразки коду
  4. Почнемо
  5. Долучайтесь
  6. Ліцензія

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

➤ Особливості One

  • Простота
  • Компілятор
  • Можливість створення вихідного файлу (x86_64, i386)
  • Системна мова програмування
  • Середній рівень
  • Мережеве і API програмування
  • Підтримує веб-програмування (в майбутньому)
    • Автоматична генерація відповідного коду і для CSS і HTML. Отже, вам не потрібно буде вивчати інші мови, крім One, щоб створити вебсайт
    • Використовує змінні в CSS, щоб ми змогли отримати кольори чи розміри з бази данних
    • Автоматична мінімізація результатів пошуку сторінки
  • Продуктивність і висока швидкість
  • Підтримує код вбудованого асемблера (в майбутньому)
  • В звичайному режимі не потребує спеціальних бібліотек і інструментів на системі користувача (в майбутньому )
  • В звичайному режимі не потребує зовнішніх бібліотек часу виконання (в майбутньому )
  • Не потребує зовнішніх компіляторів для виконання компіляції (в майбутньому)

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

➤ RoadMap

Граматика мови 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!"
        }
    }
}

Розробка старого 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

Розробка старого GUI : (Web, Software)

Ця архітектура розробляється лише для веб-сайтів і власного програмного забезпечення. В майбутньому вона також буде доступною для мобільних додатків (власних).
Мобільні структури ще не завершені і потребують більше уваги і осмислення.

Приклад для демонстрації роботи мови:

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]


Created By Max Base @ 2019 -----------------------------------------------------

➤ Ліцензія

One випущено згідно з Загальною публічною ліцензією GNU v3.0. Будь-ласка, перейдіть до умов в ЛІЦЕНЗІЯ файлі, вкладеному в репозиторій.