Skip to content

Latest commit

 

History

History
415 lines (341 loc) · 13.4 KB

README_RU.md

File metadata and controls

415 lines (341 loc) · 13.4 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. Перейдите, пожалуйста, к условиям в LICENSE файле, включенном в репозиторий.