Coder Social home page Coder Social logo

covrom / gonec Goto Github PK

View Code? Open in Web Editor NEW
183.0 28.0 17.0 12.33 MB

Платформа создания микросервисов на 1С-подобном языке

Home Page: https://covrom.github.io/gonec/

License: Other

Go 98.70% Makefile 0.01% Yacc 1.27% CSS 0.02% Procfile 0.01%
go golang 1c-enterprise gonec

gonec's Introduction

GitHub issues Travis

Gonec Logo

Demo site

Presentation Docs

Цели

Платформа Гонец:Микросервисы создана для решения программистами 1С задач, связанных с высокопроизводительными распределенными вычислениями, создания микросервисов, вэб-сервисов и вэб-порталов для работы тысяч пользователей, работы с высокоэффективными базами данных, с использованием синтаксиса языка, похожего, но не ограниченного возможностями языка 1С. Для этого интерпретатор встраивается в решения на языке Go.

Описание синтаксиса языка и примеры использования интерпретатора

Документация находится здесь

Пример приложения "Список задач":

Todo application

Масштабируемость языка и платформы

Язык Гонец расширяется путем изменения правил синтаксиса в формате YACC, а так же написания библиотек структур и функций на Го, которые могут быть доступны как объекты метаданных в языке Гонец.

Посмотреть на использование интерпретатора в роли микросервиса можно по ссылке выше. В этой реализации в интерпретатор встроена простая система запуска кода через обычный браузер.

Какова производительность интерпретатора?

Производительность выше, чем у интерпретатора 1С, и соответствует скорости программ на Go и скорости работы библиотек, написанных на Go.

Интерпретатор языка использует повторное выделение памяти в синхронизированном пуле, что сокращает расход памяти даже при выполнении глубоких рекурсивных алгоритмов.

Пример сравнения производительности цикла без тела, перебор значений от 1 до 1 млн. Участники сравнения:

  • Гонец с регистровой виртуальной машиной
  • 1С:Предприятие 8.3.9.2170 (файловая)

PerfVs1C

Производительность одновременного запуска 1000 серверных и 1000 клиентских подключений, по протоколам TCP и HTTP, на 4-ядерном Core-i5 3570

PerfConnect

Какой статус разработки интерпретатора?

Интерпретатор работает стабильно, протестирован и находится в стадии разработки стандартной библиотеки.

gonec's People

Contributors

covrom avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gonec's Issues

Ключевое слово Старт

Я один не понимаю почему в языке который называется ГОнец, функция для создания горутины не называется Гонец????

Как делать вставки на чистом go?

Пока нет многих объектов, которые нужно использовать, хотелось бы иметь возможность делать вставки на чистом Го.
Как это правильно сделать? Возможно ли?

Масштабный рефакторинг под интерфейсы

  • Виртуальная машина получит интерфейсные типы данных и новые быстрые обертки для системных функциональных объектов - еще более быстрая обработка данных
  • Вызов функций будет существенно ускорен за счет отказа от рефлексии
  • Код будет выполняться в воркерах, что позволит создавать языковые конструкции с поддержкой параллелизма
  • Будет реализованы типы Дата и Длительность с русскоязычными встроенными методами, как пример первого системного функционального объекта-типа
  • Для работы с плавающей запятой будет использована библиотека работы с Decimal-типами (абсолютная финансовая точность операций с плавающей запятой, работа с большими числами)
  • Добавится быстрая хэш-функция на ассемблере https://github.com/dchest/siphash, для хэширования строк, структур и массивов (требуется в различных алгоритмах, где нужна проверка на уникальность больших/составных значений)
  • Сравнение структур через их хэши
  • Быстрые преобразования всех объектов в JSON, binary и обратно

Создание базовой версии

Базовая версия должна уметь исполнять код на языке 1С, без использования расширенных возможностей и стандартной библиотеки.

Боль и страдания

@covrom Вы извините, но все что я тут вижу, мне доставляет боль. И насколько вижу не только мне.
У меня возникает закономерный вопрос: Зачем Вы это делаете?
Вы действительно серьезно или это такой неуловимый троллинг? Poe's law ?

Mood:
image

Не достаточное описание проекта

Добавьте в вики или в описание как это интегрируется в 1С, где и как разрабатывается. Прям с самого начала. Я вот например не понял этого из вики, хотя попробовать в работе хочется

План версии 4.0a

План для версии 4.0a:

  • Будет реализован первый кандидат на параллелизм (помимо уже существующих горутин) - цикл с ключевым словом "Параллельно N", разбивающий выполнение цикла на N параллельно выполняющихся воркеров-горутин, исполняющих тело цикла с отдельными пулами объектов или диапазонами итераторов (каждый в своем окружении). Это позволит обрабатывать большие массивы данных единым понятным алгоритмом, но с использованием параллелизма!
  • Работа с таблицами in-memory, в качестве основы будет взято решение https://github.com/ekzhu/datatable
  • BoltDB
  • API для работы каналов через сеть - горутины Гонца будут общаться между собой и фронтендом посредством каналов по сетевому API. Между собой - бинарный протокол, с фронтендом и 1С - JSON API. Это позволит создавать масштабируемые горизонтально (на множество серверов) решения.

Огромная просьба (как подарок к новому году)

Мы команда (мальчишек и девченок, я руководитель проекта) создаем образовательный проект, и у нас наконец-то появилась возможность кроме lua, python, javascript использовать язык программирования на русском языке (ваша разработка), для самых маленьких это в 100 раз понятнее. Но наш проект целиком существует в виртуальном мире майнкрафт и для взаимодействия с миром нам нужна поддержка протокола rcon.
Помогите нам пожалуйста. Сможите ли вы обновить проект интегрировав в него поддержку методов rcon (https://github.com/Kelwing/mc-rcon). Очень надеемся на вашу помощь.

Божечки мой

Если ( Мир.Использовать("1С") ) Тогда
НачалоЕсли
Планета.Остановить();
КонецЕсли

Ошибки при генерации парсера

Здравствуйте!
Когда пытаюсь перегенерить парсер командой goyacc -o parser.go parser.y, возникают ошибки:

parser.y:55:79: %nonassoc symbol EQEQ conflict in state 130
parser.y:55:79: %nonassoc symbol EQEQ conflict in state 131
parser.y:55:79: %nonassoc symbol EQEQ conflict in state 237
parser.y:55:84: %nonassoc symbol NEQ conflict in state 130
parser.y:55:84: %nonassoc symbol NEQ conflict in state 131

Насколько я понимаю, ключевое слово %nonassoc применяется для операторов, которые не могут ассоциироваться друг с другом, но конфликтных мест в описании грамматики, которые позволяли бы писать а-ля "1" == "2" == "3", я не нашел.

Подскажите, в чем может быть проблема?

Использую go версии go version go1.18.2 darwin/arm64
И goyacc версии 1.0.0 из modernc.org/goyacc

JVM

Будет ли реализация под JVM?

UI, шаг к Web Framework UI

А есть понимание или план того, как будет строиться интерфейс.
Я давно ищу решени для построения UI и вот какие есть, на счет этот, мысли:

  • Описание UI в декларативном виде, например XML;
  • За компоненты взять dHTMLX, UI5, webix
  • Разметку bootstarp
  • Связка через websocket
  • Генерация кода UI при помощи gopherjs
  • Реактивность VUE, React

Как с вами связаться?

Здравствуйте! Я - Денис Будяк, автор бывшего проекта ЯП "Яр" и сайта программирование-по-русски.рф. Хочу попрактиковаться в голанге ради портфолио. Может быть, у вас есть интересные задачки, а может быть, смогу что-то посоветовать. Как с Вами связаться? Напишите, пожалуйста, на [email protected] или укажите какой-то способ контакта.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.