OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 11:11

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 48 ]  На страницу Пред.  1, 2, 3
Автор Сообщение
 Заголовок сообщения: Re: Транслятор кода
СообщениеДобавлено: Воскресенье, 25 Декабрь, 2016 10:27 

Зарегистрирован: Воскресенье, 04 Январь, 2009 12:00
Сообщения: 52
ilovb писал(а):
perloid писал(а):
ilovb писал(а):
Коллеги, рекомендую забить на Go и сделать ставку на LuaJit.
Это будет проще и эффективнее. Lua очень гибкий язык. LuaJit очень эффективный компилятор.
Кроме того LuaJit имеет удобный FFI. Транслятора можно написать на Lua с использованием гениальной библиотеки LPEG.


проблема в том что в lua нет типов. придется самому пилить статический анализатор. потом еще чтото потом еще чтото - уходит много времени в пустую.
а в Go уже есть проверка типов и т.п. - он наиболее близок по идеологии. разве что добавлены ненужные сущности и конструкции


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


имено что это транслятор и проверка типов и все тулы будет в компиляторе Go - по крайней мере на первых этапах.
это же эксперимент.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Транслятор кода
СообщениеДобавлено: Воскресенье, 25 Декабрь, 2016 17:41 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
perloid писал(а):
хорошо, ознакомился - но выглядит он как будто был переведен с C.

Сначала Вы пишите, что не хочется погружаться в Си, так как это слишком затратно, что говорит о плохом знании Си. Затем Вы находите для себя в программе на Обероне признаки перевода с Си, что требует хороших знаний Си. Мне кажется, или налицо противоречие?
Также было бы интересно узнать, что именно Вам показалось похожим на перевод с Си? Может быть вложенные процедуры, многоветочный WHILE, расширенные записи или множества?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Транслятор кода
СообщениеДобавлено: Среда, 28 Декабрь, 2016 09:17 

Зарегистрирован: Воскресенье, 04 Январь, 2009 12:00
Сообщения: 52
ilovb писал(а):
Comdiv писал(а):
Так зачем же тогда его писать на Lua? :D

Чтобы избавиться от всей лишней чепухи. У вас будет LuaJit.exe и один файлик O2.lua (транслятор)
Поддерживать нужно только этот небольшой исходник на Lua (который всегда готов к правке и выполнению).
А вы предлагаете таскать за собой (и поддерживать) еще и парсер (на другом языке).

ps. Я надеюсь вы не считаете, что конкретная наличная реализация чего-либо сразу имеет некую ценность?


ок возможно для начала можно попробовать и транслтор в lua - если есть готовый.
где его можно скачать ?
а для проверки типов - использовать компилятор xds - типа "программа скомпилировалась - значит все ок".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Транслятор кода
СообщениеДобавлено: Среда, 28 Декабрь, 2016 09:41 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Сначала его нужно написать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Транслятор кода
СообщениеДобавлено: Среда, 28 Декабрь, 2016 10:23 
Аватара пользователя

Зарегистрирован: Среда, 29 Март, 2006 12:09
Сообщения: 495
perloid писал(а):
это же эксперимент.

Покажите уже код какой-нибудь?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Транслятор кода
СообщениеДобавлено: Среда, 28 Декабрь, 2016 11:13 

Зарегистрирован: Пятница, 20 Июль, 2007 17:26
Сообщения: 710
Откуда: Псков
Кода не будет - будет вечная музыка :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Транслятор кода
СообщениеДобавлено: Четверг, 29 Декабрь, 2016 11:10 

Зарегистрирован: Воскресенье, 04 Январь, 2009 12:00
Сообщения: 52
Вам так сразу код выдать - новый проект на Oberon горит?

Т.к. имеется коммерческий интерес - код обязательно будет выложен в открытом доступе, но только когда что то будет реально готовое (к Новому Году - но точную дату не скажу). Пока что все на этапе ресерча, пункты будут уточнятся. Работа ведется в свободное время.

# Рабочее название "Portal"

## Исходный язык - Oberon-07

Исходя из прочитанной информации был выбран Oberon-07. Мотивы думаю пояснять не надо, т.к. все тут очевидно должно быть.
Важное примечание - если в Oberon-07 есть привязанные к типу процедуры (не до конца еще разобрался) - эта возможность не реализуется - как ненужная сущность.

## Требования к реализации

Транслятор должен быть написан на Oberon - чтобы было тру (по крайней мере его первая версия). Необходимо найти подходящую реализацию - чтобы любой желающий без проблем мог установить инструменты и подключится к разработке.
Зависимости минимальны - модули In, Out (и возможно какойто модуль для работы с файлами).
На данный момент этим условиям соответствует XDS x86.

- Модуль tokenizer - преобразует символы в токены (типизирванные записи)
- Каждая реализация транслятора отдельный исполнимый файл (типа portal2go, portal2php и т.д) - преобразует токены в конструкции целевого языка и выдает код.

### Этапы работы транслятора

Cкрипт на bash или makefile

- опционально - проверка исходного кода Oberon, реализуется средствами какого-то сущесвующего компилятора, например XDS
- если ошибок компиляции нет - запускается транслятор, читает c входного потока код Oberon, выводит в выходной поток код целевой платформы.

В дальнейшем доработка до вывода AST скорее всего в XML, может в json (надо разобратся какие есть пути получения кода целевого языка из ast тогда реализовывать нужный формат)

## Возможные целевые языки

### Основные требования - какие то пункты могут отсутствовать для конкретного целевого языка

- достаточно низкоуровневый
- простой и распространенный
- кроссплатформенный
- средства компиляции в исполнимые файлы не требуют установки (распаковываются в любую папку и настраиваются необходимые переменные окружения) т.е. не требует прав администратора и доступа к пакетному менеджеру и его наличия.
- не требует установки рантайма
- возможность формировать читабельный исходный код

### Основные языки - с чем точно планируется продолжатся работа

#### Go - golang-book.ru

- достоинства - отличные средства для реализации приложений работающих с сетью и масштабирование многопоточных программ из коробки.
- основной недостаток языка и что мне лично не нравится в Go есть "типа ООП", но не ООП (это собственно и является причиной необходимости транслятора) - видимо сказалось портирование наработок гугла на "С с классами" в стиле языка Oberon-2. и вся библиотека Go принуждает писать в таком виде (пример https://golang.org/pkg/net/url/)

#### С - clang.llvm.org

- достоинство - в отличии от gcc есть готовые сборки компиляторов под различные платформы, не требующих установки http://releases.llvm.org/download.html, так же есть уже готовые проекты транслятора oftont+ или voc - подключится к проекту и адаптировать при необходимости под clang под свои требования сборки

### Дополнительные

#### PHP - php.net

- простая широкораспространненная платформа для web
- добавлена типизация http://php.net/manual/ru/functions.argu ... ion.strict
- активное развитие и усовершенствование языка, ведутся работы над JIT
- так же через компилятор для .NET peachpie.io - получаем исполнимый код для .NET

#### Rust - rust-lang.org

- более безопасный и низкоровневый, без ООП. как целевая платформа более персективен чем Go
- недостаток - не достаточно стабилен и пока сложен для освоения

#### Kotlin - kotlinlang.org

- достоинства - присутcтвуют функции как отдельная сущность - что позволит упростить реализацию транслятора нежели чем транслировать в java
- так же уже есть возможность и для браузера компилировать в js - в перспективе может улучшат качество генерируемого кода
- недостаток - требует наличия jvm (и возможно sdk)

## Конечная цель

В идеале должно получится что то типа http://haxe.org/use-cases/, но на тру-языке. Распространение Oberon в массы и коммерческое применение для широкого круга задач.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Транслятор кода
СообщениеДобавлено: Четверг, 29 Декабрь, 2016 14:24 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
perloid писал(а):
- Модуль tokenizer - преобразует символы в токены (типизирванные записи)
- Каждая реализация транслятора отдельный исполнимый файл (типа portal2go, portal2php и т.д) - преобразует токены в конструкции целевого языка и выдает код.
Уровень проработки архитектуры не очень высок, но радует, что токенайзер будет выдавать токены в типизированных записях.

Цитата:
- опционально - проверка исходного кода Oberon, реализуется средствами какого-то сущесвующего компилятора, например XDS
Входным языком должен же быть Oberon-07? Тогда проблемка - XDS не поддерживает Oberon-07.

Цитата:
- более безопасный и низкоровневый, без ООП. как целевая платформа более персективен чем Go
ООП там своебразное, но так не любимые Вами связанные методы там есть.

Цитата:
В идеале должно получится что то типа http://haxe.org/use-cases/, но на тру-языке.
На всякий случай спрошу, Вы с Филипповым Евгением никак не связаны?
Цитата:
OBERON_AXE inspired by HAXE http://haxe.org/ but with OBERON as the primary programming language for the source code

This repository and all files in it Copyright © 2016 Евгений Григорьевич Филиппов. All Rights Reserved.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 48 ]  На страницу Пред.  1, 2, 3

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB