|
FreeBASIC без долларов и цифр
|
|
| zamabuvaraeu | Дата: Суббота, 25.10.2025, 14:38 | Сообщение # 1 |
|
Полковник
Группа: Друзья
Сообщений: 173
Статус: 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
Статус: 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
Статус: 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
Статус: Offline
| Цитата у переменных больше нет долларов и цифр
Смотреть на все эти закорючки в именах файлов в отладчике - так себе удовольствие.
Хороший проект для тех кто любит отлаживать при помощи GDB.
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
| |
|
|
| DarkDemon | Дата: Воскресенье, 26.10.2025, 09:09 | Сообщение # 5 |
|
Генерал-майор
Группа: Друзья
Сообщений: 261
Статус: 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
Статус: Offline
| Цитата DarkDemon (  ) У текущих IDE в выпадающихсписках(в основном UDT) есть один серьёзный недостаток, который сводит их юзабилити для меня на нет, они пихают мне все в нижнем регистре, поэтому мне проще написать тип переменной руками, чем выбирать из списка, потом выделять и нажимать CTRL+U, это просто дольше делать.
Я уже не помню как в Fbedit , но в моем редакторе UDT дополняются в том регистре , который записан при объявлении. А вот встроенные типы (Long , String) подчиняются настройкам. В настройках есть выбор регистра для ключевых слов: верхний , нижний , смешанный , не менять.
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
| |
|
|
| DarkDemon | Дата: Воскресенье, 26.10.2025, 10:49 | Сообщение # 7 |
|
Генерал-майор
Группа: Друзья
Сообщений: 261
Статус: Offline
| Цитата haav (  ) В настройках есть выбор регистра для ключевых слов: верхний , нижний , смешанный , не менять. Уже не помню почему оставил настройку "не менять". Что-то меня смутило. Надо будет ещё раз проверить.
|
| |
|
|
|