Войти
BASIC[ProjectYaga]Форум

Рождение

Advanced: Тема повышенной сложности или важная.

Страницы: 1 2 Следующая »
#0
(Правка: 15 янв. 2021, 12:34) 11:44, 11 янв. 2021

Начало!

Почему?
Надоел подход Майкрософт к языку!
Со времён VB6 (великой версии по мнению большинства)
появился только vb.net (брат близнец c#.net) без нормальной компиляции... и огромного кол-ва спорных подходов
Но хоть какое-то движение вперед!
Сам работаю в vb.net, ... и как это все работает тормазнуто... слов нет...

Была надежда с выходом Core
НО ... https://devblogs.microsoft.com/vbteam/visual-basic-in-net-core-3-0/
https://devblogs.microsoft.com/vbteam/visual-basic-support-planned-for-net-5-0/
Все-же упор они делают на C# а VB подтягивают, а не развивают...

Зачем?
Хочется иметь свой, родной, но!... кроссплатформенный BASIC
В первую очередь для разработки игр, консольных приложений
и если потяну... приложений с формами и кнопками)

Как?
Начал с изучения того что уже было сделано в этом направлении!
Изучил проекты: qb64, FreeBASIC, BaCon, BCX...
Выбрал подход: транслировать код BASIC в C++ и уже его компилировать (по сути надстройка над с++ позволяющая комфортно писать на с++ используя синтаксис любимого языка Basic)
Что дает некоторые преимущества:
1. нет необходимости писать свой компилятор,
2. кроссплатформенность,
3. скорость С++,
4. возможность использовать код, библиотеки и т.д. С++ (без мучительного перевода на свой язык, или создания библиотек "промежутков")
>По исполнению,... на первых порах,... скорее будит похоже на DarkBASIC, Blitz BASIC (собственно это и есть цель)

Почему не стал использовать готовые варианты (qb64, FreeBASIC, BaCon, BCX...)?
Где не понравился подход, где реализация (ужасный С код, очумелое кол-во наворотов, ...), где лицензия...
Да и самому делать гораздо интереснее ;-)


#1
(Правка: 9 фев. 2021, 13:02) 11:44, 11 янв. 2021

Скачать:

https://drive.google.com/drive/folders/1C21GnunT4IvuKjGsia7fND0Pj… 1?usp=sharing

Установка:
1. Скачать файлы Yaga.rar, modules.rar, compiler.rar
2. Распаковать Yaga.rar по пути C:\Yaga
3. Распаковать modules.rar по пути C:\Yaga\modules
4. Распаковать compiler.rar по пути C:\Yaga\compiler

Структура папок:
C:\Yaga\compiler\mingw64\...
C:\Yaga\make\...
C:\Yaga\modules\SFML\...
C:\Yaga\Projects\...
C:\Yaga\src\lib\...
C:\Yaga\TranslatorBasicToCpp\...

Запуск примеров:
Запустить файл debug.bat или release.bat

#2
(Правка: 26 фев. 2021, 9:57) 11:44, 11 янв. 2021

Buy TileSetGenerator | Рождение

#3
(Правка: 16 фев. 2021, 11:17) 11:44, 11 янв. 2021

Что готово:
Основа языка

+ Основные команды:

Отдельно реализована работа с массивами (в С и С++ это ещё тот геморрой) <lib_StaticArray.cpp> <lib_DynamicArray.cpp>
Работа с файлами через класс StreamWriter, StreamReader <lib_FileStream.cpp>
Подключен графический движок SFML (реализованы 3 примера: Mario, Match3, Pong)
Уже компилируется [g++] (под Windows и Linux (Debian) 64bit)!!!
Проект компилирует сам себя!!!

Что планирую сделать:
Дополнительные команды (???)
работа с файловой системой

Что планирую сделать позже:
поддержка юникода (в движке SFML она есть)
GUI, ?Physics(Box2D,...)
Библиотеку готовых решений (поиск пути, доп. мат. функции, геометрию (изометрия, гексы))

#4
(Правка: 15 фев. 2021, 10:21) 11:44, 11 янв. 2021

Идея не нова, вот похожие проекты:

1. BaCon https://www.basic-converter.org/
2. BCX https://en.wikipedia.org/wiki/BCX https://bcxbasiccoders.com/ http://bcx-basic.sourceforge.net/
3. qb64 https://ru.wikipedia.org/wiki/QB64 https://www.qb64.org/portal/
4. FreeBASIC https://ru.wikipedia.org/wiki/FreeBASIC https://www.freebasic.net/
5. VB to C++ Converter https://www.tangiblesoftwaresolutions.com/product_details/vb_to_c… _details.html

Если кто-то знает ещё, пишите!

#5
5:22, 15 янв. 2021

Что вынес из использования спектрумбейсика, так это то, что с него можно легко и ненапряжно перепрыгнуть на борландпаскаль и при этом синтаксис, как в плюсах, не напрягает. Чувствуется продолжение прежней идеи. Микрософтовский бейсик, это такой конкурент дельфей, только нелюбимый создателем. Корпорации любят убивать старые продукты чтобы пропихнуть более прожорливые новые, как сейчас с флешем произошло. Если развивать свою версию бейсика, то получится ухудшенная версия fpc, просто потому что силы не те. И для чего тогда надрываться, если можно сразу писать на уже поддерживаемой кем-то версии с почти таким же синтаксисом, только с дополнительными знаками препинания? Заголовки для SFML там тоже есть - https://github.com/DJMaster/csfml-fpc  Движок кастле потихоньку развивается, кодить на нём можно даже в линуксе, марио он точно потянет, и никакого микрософта там и рядом нет. Игру в одиночку изготовить тяжело, а если для неё ещё и язык писать...

В принципе, удачи в нелёгкой борьбе с M$. А С++ студия или gcc?

#6
(Правка: 12:22) 12:18, 15 янв. 2021

Skvoznjak
> и при этом синтаксис, как в плюсах, не напрягает.
Дело в том, что меня напрягает)...

Skvoznjak
> это такой конкурент дельфей,
У Борланда был свой Бейсик, но они от него отказались (сейчас он в руках разработчика)

Skvoznjak
> с флешем произошло.
Флеш, я ненавидел с самого его появления
Сейчас доволен что его похоронили
Изжил он своё!

Skvoznjak
> Если развивать свою версию бейсика, то получится ухудшенная версия fpc, просто
> потому что силы не те. И для чего тогда надрываться, если можно сразу писать на
> уже поддерживаемой кем-то версии с почти таким же синтаксисом, только с
> дополнительными знаками препинания?
Как показывает практика, бывает противоположная ситуация,... что и произошло с Mono (теперь он Core)...
Все эти мастодонты - ленивые жопы, да и подходы множат и забрасывают.
Заковырка именно в знаках препинания!

Skvoznjak
> , а если для неё ещё и язык писать...
По факту - язык готов, это-ж просто транслятор
по сути надстройка над с++ позволяющая комфортно писать на с++ используя синтаксис любимого языка Basic

Skvoznjak
> В принципе, удачи в нелёгкой борьбе с M$. А С++ студия или gcc?
Спасибо! Конечно gcc!

#7
3:49, 17 янв. 2021

>Флеш, я ненавидел с самого его появления
>Сейчас доволен что его похоронили
>Изжил он своё!

С точки зрения потребителя он прекрасен. Скачал с сайта малый файл и запускай хоть где. Не надо инсталлировать, просто работает без особых тормозов, не требует 100500 библиотек нужных версий. А вместо него включили в браузеры такой же флеш но на жабоскрипте, который жрёт на порядок больше, имеет охеренные системные требования и хрен с сайта скачаешь игрушку. Если сайт гикнется, то и всё, с концами. Раньше всё говно в браузере было сосредоточено в маленьком плагине, а теперь оно растеклось по всему браузеру и вэбу. Всё хуже стало. Но чем хуже, тем лучше для корпораций. Теперь поддержку онлайновых флешигр запилили в гаменет, там они и дальше работают.

>Как показывает практика, бывает противоположная ситуация,... что и произошло с Mono (теперь он Core)...

Он с самого начала разрабатывался как байда имеющая в системных требованиях весь дистрибутив линукса последней версии. Если моно нет в репозитории, то сам скорее всего его не поставишь. Как спланировали, то и получили.

>по сути надстройка над с++ позволяющая комфортно писать на с++ используя синтаксис любимого языка Basic

Да, плюсы они такие, ненаглядные, лучше на них не глядеть.

#8
18:30, 3 фев. 2021

Ура, сегодня проект дошёл до шага >>>Проект компилирует сам себя<<<
Ура, ура...ура!!!

#9
18:32, 3 фев. 2021

так-же сегодня, 3 примера: Mario, Match3, Pong
были скомпилированы под Linux (Debian) 64bit
скоро выложу собранные примеры для Windows и Linux

#10
18:33, 3 фев. 2021

Сам транслятор языка так-же был собран под Linux (Debian) 64bit

#11
(Правка: 20:12) 20:10, 8 фев. 2021

NeoGuru
> 3 примера: Mario, Match3, Pong
> скоро выложу собранные примеры для Windows и Linux

Выложил:
Реализация игры Pong
Реализация игры Mario Demo
Реализация игры Match3

#12
13:03, 9 фев. 2021

Скачать:

https://drive.google.com/drive/folders/1C21GnunT4IvuKjGsia7fND0Pj… 1?usp=sharing

Установка:
1. Скачать файлы Yaga.rar, modules.rar, compiler.rar
2. Распаковать Yaga.rar по пути C:\Yaga
3. Распаковать modules.rar по пути C:\Yaga\modules
4. Распаковать compiler.rar по пути C:\Yaga\compiler

Структура папок:
C:\Yaga\compiler\mingw64\...
C:\Yaga\make\...
C:\Yaga\modules\SFML\...
C:\Yaga\Projects\...
C:\Yaga\src\lib\...
C:\Yaga\TranslatorBasicToCpp\...

Запуск примеров:
Запустить файл debug.bat или release.bat

#13
(Правка: 14:02) 11:28, 16 фев. 2021

Нашёл проблемы с INT - (округление) и CINT - (банковское округление)
и вообще в vb весь integer округляется кажется банковским округлением (проверил, именно так)
не хочется этого делать у себя, т.к. не вижу это целесообразным, но аналог надо сделать, для совместимости
но сам integer оставлю как в Си языках (vb аналог FIX, т.е. отсечение дробной части без округления)
Реализую  RINT - (это INT в vb), CINT - (как в vb)

#14
5:59, 14 апр. 2021

FreeBASIC может транслировать в С и компилировать через gcc. "-gen gcc"
У него есть  компиляторы под x86, x64 и ARM. Режим совместимости с Qbasic. вставки всякие, ассеблерные, макросы(что упрощает кросскомпиляцию).
Работает под dos, windows, linux и даже видел порты под Mac. Сам использую его под линукс на АРМе.

Можно, наверное, его использовать как инструмент поддержки. Компилить через gcc, смотрть код в *.c файле, чтоб ускорить разработку. Да и просто какие-нибудь идею из этого почерпнуть.

Страницы: 1 2 Следующая »
BASIC[ProjectYaga]Форум