FreeBasic
Главная
Вход
Регистрация
Среда, 29.10.2025, 19:23Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
FreeBASIC без долларов и цифр
zamabuvaraeuДата: Суббота, 25.10.2025, 14:38 | Сообщение # 1
Полковник
Группа: Друзья
Сообщений: 173
Репутация: 5
Статус: Offline
Это моя собственная сборка фрибесика.

Оригинальный фрибесик добавляет доллары к именам переменных и переводит их в верхний регистр. Например, объявляем переменную:

Код
Dim x As Integer = 265

Во внутреннем представлении «x» превращается в «X$1». Меня это раздражает:

* отладчике GDB нужно писать переменные как они объявлены во внутреннем представлении, с долларами и цифрами
* нельзя сделать так, чтобы при наведении мыши на переменную в Visual Studio Code показывалось её содержимое во всплывающей подсказке

Я модифицировал кодогенератор фрибесика:

* имена переменных остаются в том же регистре как объявлены
* у переменных больше нет долларов и цифр

Побочный эффект: FreeBASIC стал регистрозависимым. Теперь переменные «Count» и «cOUNT» — это разные переменные. То же самое произошло относится к функциям: если функция объявлена как CreateWindowEx, то и вызывать её нужно CreateWindowEx, но никак не CREATEWINDOWEX или createwindowex.

(Вообще странно, что программисты допускают смешивание регистра и пишут переменные variable не так, как они объявлены изначально VARIABLE; даже если язык это позволяет — это всё равно дурной тон.)

Эти изменения нужны для удобства отладки. Ничего нового в язык они не приносют.

Собрать собственный компилятор оказалось довольно просто, достаточно сделать Пуск → Выполнить:

Код
fbc -m fbc -x fbc.exe *.bas

Пакетный файл для сборки:
https://github.com/zamabuvaraeu/fbc/blob/master/compile.cmd

Модифицированный фрибесик:
https://github.com/zamabuvaraeu/fbc/
 
DarkDemonДата: Суббота, 25.10.2025, 23:47 | Сообщение # 2
Генерал-майор
Группа: Друзья
Сообщений: 261
Репутация: -1
Статус: Offline
Цитата
Побочный эффект: FreeBASIC стал регистрозависимым.

Жесть...

Добавлено (26.10.2025, 00:03)
---------------------------------------------
Цитата zamabuvaraeu ()
как они объявлены изначально VARIABLE; даже если язык это позволяет — это всё равно дурной тон.

Это не дурной тон, это особенность. Дурным тоном можно назвать создание в программе 2 переменных,
различающихся одной буквой регистра, например:
Status
status

Вот тут, особенно если куски кода рядом, можно очень много головняка поймать.
И тем не менее я поддерживаю то, что переменные лучше делать регистрозависимыми. А вот функции\процедуры - нет.
И ещё я поддерживаю скан переменных на совпадение т.е. не допускать вышеизложенного случая.

Объясню почему, старый QuickBasic имел IDE которая это всё исправляет сама и на лету, пишешь x, потом пишешь X
и все x в программе мгновенно переводятся на X, это делало исходник нормально читаемым, FB такой возможности не даёт.
А ещё он поднимал операторы языка в верхний регистр(не функции пользователя, а именно операторы) что было
невероятно прекрасно.

Добавлено (26.10.2025, 00:22)
---------------------------------------------
Регистрозависимость переменных могла бы поднять уровень внимательности и педантичности к именам переменных.
И одновременно сделать исходники дерьмом, если человек начнёт по каждому чиху заводить одинаково "звучащие"
переменные в количестве овер дофига. А ещё могут найтись те, кто СпЕцИаЛьНо дЕлАеТ вОт ТаК, и по 10 копий
переменных, пойди прочитай тогда такой код))). Ну и допустим уже другой класс ошибок, когда заведено 2 переменные,
X и x и прогер случайно ткнул одну вместо другой, в основном эти ошибки были бы на однобуквенных и не связаны с
привычкой к классическому BASIC сценарию.
Лично я всегда копирую все переменные через CTRL-C, CTRL-V с деклараций и совпадений у меня - нет.
Очень редко набираю руками, сильно проверяя. Поэтому мне в принципе пофиг, как оно регистрозависимо или нет.
В исходнике всегда читается нормально.


Сообщение отредактировал DarkDemon - Воскресенье, 26.10.2025, 00:25
 
zamabuvaraeuДата: Воскресенье, 26.10.2025, 03:37 | Сообщение # 3
Полковник
Группа: Друзья
Сообщений: 173
Репутация: 5
Статус: Offline
Например, в си‐мире может встречаться такая конструкция:

Код
HDC hDC hDc Hdc hdC HDc HdC;
В си‐мире как‐то справляются с этой задачей, и ничего: язык очень популярен.
Когда не умеют придумывать названия переменным — берут название типа в другом регистре.


Цитата
старый QuickBasic имел IDE которая это всё исправляет сама и на лету, пишешь x, потом пишешь X
и все x в программе мгновенно переводятся на X, это делало исходник нормально читаемым, FB такой возможности не даёт.
Потому что это не задача языка программирования. И это не задача компилятора.
Это задача текстового редактора. Можно написать свой (или взять готовый и настроить) где переменные будут приводиться в нужный регистр.


Цитата
Лично я всегда копирую все переменные через CTRL-C, CTRL-V с деклараций
А если объявление очень далеко от этого места или в другом файле? Постоянно переключаться? Это удобно?

Обычно поступают так: пишут слово, студия предлагает выпадающий список, программист выбирает что нужно и щёлкает Enter (или жмёт TAB, или давит пробел). И студия вставляет название переменной так, как она была объявлена, в изначальном регистре. Даже Notepad++ умеет в выпадающий список, только в студиях там это всё гораздо мощнее сделано.
 
haavДата: Воскресенье, 26.10.2025, 08:42 | Сообщение # 4
Генералиссимус
Группа: Администраторы
Сообщений: 1436
Репутация: 50
Статус: Offline
Цитата
у переменных больше нет долларов и цифр


Смотреть на все эти закорючки в именах файлов в отладчике - так себе удовольствие.

Хороший проект для тех кто любит отлаживать при помощи GDB.


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
DarkDemonДата: Воскресенье, 26.10.2025, 09:09 | Сообщение # 5
Генерал-майор
Группа: Друзья
Сообщений: 261
Репутация: -1
Статус: Offline
Цитата zamabuvaraeu ()
Обычно поступают так: пишут слово, студия предлагает выпадающий список, программист выбирает что нужно и щёлкает Enter (или жмёт TAB, или давит пробел). И студия вставляет название переменной так, как она была объявлена, в изначальном регистре. Даже Notepad++ умеет в выпадающий список, только в студиях там это всё гораздо мощнее сделано.

Использую FBEdit и ещё несколько компиляторов(старые версии) у меня завязаны на IUP_FB_EDITOR.
Мне просто так удобно, я вижу визуал IUP_FB_EDITOR-а и сразу понимаю что это компилирую на старых.
И то для меня даже FBEit слишком наворочен и перегружен. О переезде на другие пока не думал.
Будь нормальный выпадающий список - думаю я был бы счастлив. У текущих IDE в выпадающих
списках(в основном UDT) есть один серьёзный недостаток, который сводит их юзабилити для меня на нет,
они пихают мне все в нижнем регистре, поэтому мне проще написать тип переменной руками, чем выбирать
из списка, потом выделять и нажимать CTRL+U, это просто дольше делать.
Сейчас делаю проще - ставлю закладку на объявления(они у меня всегда в одном месте - в начале программы)
и закладку на текущее место, телепорт делается мгновенно, хотя и немного не в то место, хреново у старых
IDE  с этим. Но ничего, со временем будет своя, там такого дерьма не будет.
 
haavДата: Воскресенье, 26.10.2025, 10:00 | Сообщение # 6
Генералиссимус
Группа: Администраторы
Сообщений: 1436
Репутация: 50
Статус: Offline
Цитата DarkDemon ()
У текущих IDE в выпадающихсписках(в основном UDT) есть один серьёзный недостаток, который сводит их юзабилити для меня на нет,
они пихают мне все в нижнем регистре, поэтому мне проще написать тип переменной руками, чем выбирать
из списка, потом выделять и нажимать CTRL+U, это просто дольше делать.


Я уже не помню как в Fbedit , но в моем редакторе UDT дополняются в том регистре , который записан при объявлении. А вот встроенные типы (Long , String) подчиняются настройкам. В настройках есть выбор регистра для ключевых слов: верхний , нижний , смешанный , не менять.


Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
 
DarkDemonДата: Воскресенье, 26.10.2025, 10:49 | Сообщение # 7
Генерал-майор
Группа: Друзья
Сообщений: 261
Репутация: -1
Статус: Offline
Цитата haav ()
В настройках есть выбор регистра для ключевых слов: верхний , нижний , смешанный , не менять.

Уже не помню почему оставил настройку "не менять". Что-то меня смутило. Надо будет ещё раз проверить.
 
  • Страница 1 из 1
  • 1
Поиск: