|
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
|
|||||||||||
Изучение основ FreeBasic в сравнении с PowerBasic10.10.2022, 22:17. Показов 22052. Ответов 218
Метки freebasic;изучение основ (Все метки)
Всем добра и мира!
К сожалению, PowerBasic прекратил своё развитие вследствие смерти его создателя и главного (а скорее всего, единственного) разработчика Роберта Зейла в 2012-ом году. К настоящему времени последние надежды на его развитие окончательно угасли. В связи с этим я решил приступить к изучению основ FreeBasic'а. В этой ветке форума буду задавать вопросы, возникающие у меня в процессе ознакомления с этим ЯП. Как говорится, всё познаётся в сравнении. Ну вот и буду изучать FreeBasic, опираясь на определённый опыт ЛЮБИТЕЛЬСКОГО программирования на PowerBasic'е. Буду очень благодарен за любую помощь. Итак, первый возникший у меня вопрос. Каким образом в структурах FreeBasic'а появилась возможность использовать динамические строки? В PowerBasic'е это строго запрещено. Можно использовать только строки фиксированной длины. Вот 2 работающих (с одним и тем же результатом на консоли) кода для сравнения: FreeBasic
1
|
|||||||||||
| 10.10.2022, 22:17 | |
|
Ответы с готовыми решениями:
218
|
|
COM‐пропагандист
|
|
| 13.11.2022, 16:30 | |
|
0
|
|
|
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
|
|||||||
| 13.11.2022, 16:41 [ТС] | |||||||
|
Вы поймите, я нахожусь в процессе выбора нового для себя ЯП. Хочется сделать это с минимальными издержками. Ну а для этого этот новый язык должен быть наиболее близок к моему основному, ну то есть к PowerBasic'у. На самом деле, в идеале, прикрутить бы к PowerBasic'у 64 бита, и ничего другого мне уже не надо для "полного счастья" в плане набора инструментов для программирования. Но это, увы, не возможно и уже никогда не будет возможно. Буржуи с PowerBasic-форума массово потянулись именно к FreeBasic'у. Ну вот и я вроде бы вместе с ними по течению плыву ![]() Вроде бы считается, что FreeBasic по синтаксису близок к PowerBasic'у. Замечательно! Ну а как это определить? Только с помощью эксперимента, правильно? Ну вот я и беру свои самые простые программы на PowerBasic'е, тупо скармливаю их компилятору FreeBasic'а, и анализирую, какие ошибки он покажет ![]() Вот именно такой подход "к телу" и стал первоосновой рождения этой ветки ![]() Ну и да, действительно, многие встроенные функции совпадают практически один в один. Например, работа со строками. В PowerBasic'е это Left$, Right$, Mid$, Trim$, ну дальше длинный список, все перечислять здесь не имеет большого смысла. А во FreeBasic'е это аналогичные по смыслу и по своей работе функции, но только записанные без знака доллара. Ну и вот при попытке скомпилировать такую команду компилятор, разумеется, показывает ошибку на такой-то строке. Убираю знак доллара и компилирую снова. Ошибка уже на какой-то строке ниже, ну и таким вот образом продолжаю двигаться ниже и ниже. Работа с файлами почти идентична. Те же самые Open, Close, Input, Output, ну и всё остальное. If, Select Case и всевозможные циклы тоже совпадают один в один. Единственная разница в циклах - это вместо Iterate в PowerBasic'е во FreeBasic'е используется Continue. Ну то есть тоже почти один в один кроме такой вот "мелочёвки". Работает так же, только называется по другому. Но вот в процессе такого вот экспериментального последовательного компилирования и внесения поправок дохожу до какой-то "фишки", которая свойственна только PowerBasic'у, ну например, POWERARRAY Object. Ну и как это "обойти"? Вот именно отсюда и возникла мысля использовать для таких случаев DLL в качестве обходного маневра ![]() Я же не просто так (ну типо, от скуки) задавал вопрос по DLL выше по теме, а именно в поисках обходных лёгких путей ![]() Ну а теперь, зачем я это всё так длинно рассказываю? Да чтобы попытаться объяснить, что мне эти вызовы "левых" функций, вот прямо сейчас совершенно не нужны. Я же сейчас сравниваю именно встроенные средства двух ЯП, а вовсе не их способности вызывать "левые" функции. Уж в зтом-то они точно равны друг другу, я ни минуты в этом не сомневаюсь ![]() ![]() Мне-то как раз хотелось бы подобрать для себя новый ЯП с "низким порогом входа". ![]() Ну вы же сами написали, что это функция из Си, ну вот я и пишу "сишная функция" ![]() Ну вы просто проявите снисходительность. Вы сейчас общаетесь не с профессионалом, а с дилетантом. И если он (дилетант), например, говорит "море", то под этим он может понимать и "озеро", и "океан". Ну не будьте так уж строги к используемой мною терминологии ![]() Воспринимайте все мои слова в более широком смысле, с учётом всевозможных огрехов непрофессионала ![]() ![]()
1
|
|||||||
|
|
||||
| 13.11.2022, 17:18 | ||||
|
1
|
||||
|
COM‐пропагандист
|
|||
| 13.11.2022, 17:59 | |||
|
0
|
|||
|
|
||||||
| 13.11.2022, 18:04 | ||||||
![]() Покажите пример работы с реестром на QB. Очень интересно посмотреть. ![]()
1
|
||||||
|
COM‐пропагандист
|
|||
| 13.11.2022, 18:11 | |||
|
Итого: за 10 минут можно выучить все 68 ключевых слов, ещё за час — всю стандартную библиотеку. Вот и весь язык. https://www.freebasic.net/wiki/CatPgFullIndex Добавлено через 6 минут А тут вдруг удивило, что для этого примера нужно поставить вайн. Почему? В чём разница? Вайн — такая же библиотека, как и все остальные.
2
|
|||
|
|
||
| 13.11.2022, 18:23 | ||
|
А если все равно не поняли, попробуйте из вайна получить доступ к USB и откроете для себя что его нет как и к остальному железу!
0
|
||
|
COM‐пропагандист
|
|
| 13.11.2022, 18:39 | |
|
0
|
|
|
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
|
||||||||||||||
| 14.11.2022, 17:25 [ТС] | ||||||||||||||
![]() Ну да, Python сейчас в тренде, я знаю. По поводу Tcl я погуглил. Скриптовый язык. Тогда уж джаву можно изучать. Но мне на джаву переходить психологически очень дискомфортно, потому что много лет назад, когда был выбор между бейсиком, паскалем и джавой я выбрал бейсик. И если сейчас начать изучать джаву, то это как бы признать свою ошибку. А кто из нас любит признавать свои ошибки? ![]() Допью уж до дна свою чашу ![]() Ну в смысле, чашу бейсика ![]() Как известно, всё познаётся в сравнении. Ну вот я сейчас и занимаюсь тем, что сравниваю два языка. Во многом они схожи, но есть и различия. Ну вот это и есть одно из различий. Просто я запомню, что встроенной сортировки массивов во фрибейсике нет и для этой цели надо вызывать стороннюю функцию. Вы понимаете, это две совершенно разные ситуации: 1. Разрабатывать относительно большую серьёзную программу и при этом столкнуться с какой-то проблемой, которую хочется поскорее решить, чтобы не сбавлять скорости общей разработки. И так попробовал, и эдак, ну никак не получается. Единственная надежда - спросить совет на форуме. Спросил, посоветовали, проблема решена, продолжил разработку. Я часто бывал в такой ситуации, мне это очень даже знакомо. 2. Но сейчас у меня совершенно другая ситуация. Я никуда не спешу. Просто, не спеша, занимаюсь сравнением двух языков. Как я написал выше, начал писать на фрибейсике тренировочную утилиту, которая считывает содержимое текстового файла и подсчитывает число вхождений различных букв и цифр. Ну а когда всё уже было готово, решил добавить вишенку на торт ![]() Ну в смысле, не просто вывести результат на консоль или в файл, а ещё и в упорядоченном по статистической частоте порядке. Ну вот и столкнулся с проблемой сортировки массива. Но это именно тренировочная программа. У меня нет никакой необходимости её завершать. ![]() Хотя всё-таки я буду стремиться к тому, чтобы почаще обходиться без них. Если не слишком углубляться в детали. то всё выглядит очень знакомым ![]() Ну вот например: PowerBasic
А звёздочка в PowerBasic'е, насколько мне известно, вообще не используется применительно к указателям. ![]() Если я ничего не путаю, ActiveX и СОМ это синонимы. Честно говоря, практического опыта написания СОМ-серверов у меня, конечно же, нет, но я сегодня немного почитал на эту тему. Как я понял, это, в принципе, обычные DLL, но только подчиняющиеся СОМ-спецификациям и ещё их надо регистрировать в реестре, но это не сложно. А что касается СОМ-спецификаций, то, как я понял, вообще все объекты, создаваемые в среде PowerBasic'а уже по умолчанию соответствуют требованиям СОМ. Так что с этой стороны проблем вроде бы возникнуть не должно. Проблемы могут быть только с принимающей стороны ![]() Ну в смысле, со стороны FreeBasic'а. Теперь у меня вся надежда на Замабувараева. Не зря же у него над аватаркой написано, что он COM-пропагандист
1
|
||||||||||||||
|
|
|||
| 14.11.2022, 18:05 | |||
|
Попробуйте и увидите. https://www.cyberforum.ru/blog... g5213.html
1
|
|||
|
|
|||
| 14.11.2022, 19:27 | |||
|
Короче придется с кишочками иметь дело.. Скриптовый это да, но это всего лишь обертка над сишной библиотекой. При этом язык ну совсем не пытается быть похожим на си. Да и экзешник можно получить если сильно хочется. Скриптовость и позволяет творить вещи немыслимые в других языках. Но не будем об этом в этой теме, ведь бэйсик наше всё. Конечно нет ничего идеального, но инструмент выбирают как бы по тому, что он умеет делать.
2
|
|||
|
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
|
||||||||||||
| 15.11.2022, 15:45 [ТС] | ||||||||||||
Хотя это может быть написано просто для красного словца. Что-то вроде рекламы ![]() Но там, по идее, должно быть не сложно. Везде же дизайнеры форм. Создать окно не проблема, текстбокс с полосами прокрутки и с wordwrap-ом на форме разместить тоже не проблема. Код автоматически напишется. Ну а дальше: PowerBasic
![]() На самом деле, я сейчас краем глаза посматриваю и на PureBasic тоже. Немного пугает, что там, как я понял, совсем нет ООП. Вместо объектов там вроде бы модули. Как я понимаю, главное назначение у объектов и у модулей одинаковый, - инкапсуляция. Не то чтобы я был такой уж страстный поклонник ООП. Раньше меня это отпугивало. Но со временем вроде бы "притерпелся" ![]() Класс такой-то, интерфейс такой-то, ну а дальше всё как обычно, но только процедуры обзывают "методами", а переменные "свойствами" ![]() А кстати, интересно, в PureBasic экспортировать COM-компонент из PowerBasic'а получится? Вроде бы должно получится. Там же уже не в виде объектов будет передаваться, а в виде нативного кода.
0
|
||||||||||||
|
|
|||||
| 15.11.2022, 16:17 | |||||
|
Я не зря писал что FreeBasic такой же хардкорный как Си. Встроенных средств нет (не считая интерфейсов), потому что COM только в Windows. В Linux и MacOS X его нет.
1
|
|||||
|
Модератор
|
||
| 15.11.2022, 17:24 | ||
|
1
|
||
| 15.11.2022, 17:27 | ||
|
Вопрос ч-ка, тупого в библиотекахи и библиоведении вообще.
1) Можно ли в каком либо Бейсике подключить библиотеку так, чтобы стали доступны все функции, как свои? 2) То что в VB подключается через референсы это все COM-овское? 3) Может ли COM библиотека также быть "процедурной"? Добавлено через 2 минуты
1
|
||
|
Модератор
|
||||
| 15.11.2022, 17:30 | ||||
|
2
|
||||
| 15.11.2022, 17:30 | |
|
Лабораторная работа на изучение основ работы с debug.exe Лабораторная работа(Изучение основ.Одномерный и двумерный массивы.Процессы) Проблема с Imagelist в PowerBasic 10 FreeBASIC Уйти с freebasic Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики
Контекст
Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
|
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии
Введение
Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
|
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np
class PlantAgent:
def __init__(self, name, strategy, initial_biomass):
self. name = name
self. strategy = strategy # "greedy" (широколиственные) или. . .
|
сукцессия 9. Математика подлости: как растения предали грибных друзей
anaschu 27.06.2026
Статья 2. Глобальная фосфорная война: эволюционно-экономические механизмы распределения биомов Земли
Введение: Экологический рынок как игра с нулевой суммой
Традиционная экология долгое время. . .
|
|
сукцессия 8. Как я спорил с ИИ, которые - агенты растений и ненавистники грибов!
anaschu 27.06.2026
Статья 1. Хроники грибного восстания: как Сократов диалог разрушил академические догмы ИИ
Введение: Синдром «цифрового учебника»
Современные большие языковые модели (LLM) обладают колоссальным. . .
|
Главный вопрос моделирования сукцессии
anaschu 27.06.2026
главный вопрос.
Если эктомикориза лучше добывает недоступный фосфор. И ее масса максимальна из всех.
А широколиственный лес тоже имеет самую крутую биомассу.
То почему не возникло их симбиоза? Это. . .
|
сукцессия 6. Питон реализация энилоджиковской модели, картинка про Центральную часть будущей модели
anaschu 26.06.2026
Етить. ИИ мне на основе моего старого файла R создал вот эту вот хмерь на пайтоне.
Это уже новая модель, модель сукцессии грибной.
потоки фосфора, азота. Углерода.
5 видов организмов.
Я даже. . .
|
Как замкнутый ядерный цикл решит проблему недостатки фосфора? Био миграция фосфора со дна океана
anaschu 26.06.2026
Биологический лифт: Концепция подъема фосфора со дна океана с помощью ЗЯТЦ
Предлагаю на обсуждение альтернативу тяжелому промышленному бурению океанического дна. Вместо сложной инженерии мы можем. . .
|