Skip to content

Latest commit

 

History

History
417 lines (344 loc) · 13.2 KB

README_RU.md

File metadata and controls

417 lines (344 loc) · 13.2 KB

The One Programming Language

Язык программирования 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

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

➤ Присоединяйтесь

Мы приветствуем все виды сотрудничества, включая сообщения о багах, запросы о нововведениях, улучшение документации и т.д. Чтобы задать вопрос или начать обсуждение, создайте Issue или присоединитесь к Discord серверy One.

Если вы не знаете, как создать Pull-request в GitHub, прочитайте, пожалуйста, это руководство.

Если вы решили внести свой вклад, прочитайте, пожалуйста, сначала руководство здесь.
Также у вас есть возможность помочь в разработке One, делая пожертвования на ❤️ Patreon.

Спасибо всем людям, помогающим проекту!!

Если вы хотите посодействовать в разработке этого проекта, вы можете написать нам на: [email protected]


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

➤ Лицензия

One выпущен в соответствии с GNU General Public License v3.0. Перейдите, пожалуйста, к условиям в файле LICENSE, включенном в репозиторий.