Skip to content

Latest commit

 

History

History
417 lines (344 loc) · 13 KB

README_UK.md

File metadata and controls

417 lines (344 loc) · 13 KB

The One Programming Language

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

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

Patreon Discord Twitter Instagram License Facebook

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

Ласкаво просимо до 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/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
}

Інший варіант:

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!"
        }
    }
}

Розробка старого 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. Будь-ласка, перейдіть до умов в ЛІЦЕНЗІЯ файлі, вкладеному в репозиторій.