LINUX.ORG.RU

Мои проги на PureBasic

 


4

5

Если у кого есть желание ознакомится можете скачать архив прог (53Мб), в комплекте общая справка по прогам в CHM со скриншотами. Можно посмотреть её в онлайн

В комплекте исходники и можно их скомпилировать. Для Linux собраны 3 варианта пакетов deb (Mint-x64 и MX-x86), rpm (Fedora), zst (Arch), и исполняемые для Raspberry-x32, и есть отдельно архив для Андроида Можете посмотреть видео о PureBasic на моём ютуб канале


Ответ на: комментарий от skyman

Basic, narod, chm, Web 1.0, архивы, podarok… точно на дворе 2025, а не 2005?

Связь? Похоже вы хотите чтобы я горевал? Наверно ваши поделия меня горевать заставят, но не долго и не сильно.

AZJIO
() автор топика

Дааа, интересненько. Где-то здесь на форуме я недавно видел еще кого-то, кто пишет на каком-то Basic. Мне этот факт запомнился, потому что редко видишь разрабов на таком ЯП. Но вроде там был не PureBasic. Вроде тот опенсорсный был.

wandrien ★★★
()
Последнее исправление: wandrien (всего исправлений: 2)
Ответ на: комментарий от AZJIO

в этом

Короче, смысл в батарейках, как я понял.

А что про сам язык? Есть примеры ассемблерных листингов, которые создаёт компилятор? Насколько оптимальный код получается?

wandrien ★★★
()

Синтаксис очень многословный, канеш.

ProcedureReturn. EndStructureUnion. Ключевые слова длиннющие.

Но с другой стороны, я могу такое понять.

После многих лет на Си и Си-подобных (PHP, JS), я в какой-то момент устал от сраных {скобочек} настолько, что когда решил делать свой ЯП, решил, что никакого засилия скобочек там не будет.

По внешнему виду кода у меня получается как раз что-то в стиле Ada, Basic и Lua.

wandrien ★★★
()
Последнее исправление: wandrien (всего исправлений: 1)
Ответ на: комментарий от wandrien

Ни {}, ни <> нету

То есть только полдела сделано.

нету проблемы «висящего else»

Достаточно запретить простые выражения в ветвях условных операторов и всегда требовать составное (блок). Кое-где так уже сделано. (Если я правильно понял, в чём проблема — никогда её не имел.)

и вечного вопроса «что именно закрывает эта фигурная скобка?»

Зато есть два новых — где подевался этот долбаный end и к какому блоку относится вон тот.

Nervous ★★★★★
()
Последнее исправление: Nervous (всего исправлений: 1)
Ответ на: комментарий от Nervous

Зато есть два новых — где подевался этот долбаный end и к какому блоку относится вон тот.

Они именованные. Ты можешь писать end:while, end:if, end:switch, end:имя_функции.

А скоро возможно станет делать так:

label myLoop:
while f1() loop
    f2();
end:myLoop;

wandrien ★★★
()
Последнее исправление: wandrien (всего исправлений: 2)
Ответ на: комментарий от Nervous

Лиспер, понятно всё с тобой. %)

Ну а если серьёзно, такие вот синтаксические приколюхи это вроде мелочь, никак не влияющая на смысл программы.

Но написав 12 тысяч строк кода вот этого компилятора на самом данном ЯП, могу сказать, что как-то привыкаешь к хорошему. Оказывается, что удобно — это лучше, чем когда неудобно. Кто бы мог подумать. xD Ну типа, на машине можно ездить и без хорошего кресла и удобства в органах управления, функции машины она всё равно выполняет. И если печка не греет или кондея нет, тачка всё равно останется тачкой. Но когда всё для удобства есть, это, чёрт побери, приятно.

wandrien ★★★
()
Последнее исправление: wandrien (всего исправлений: 3)
Ответ на: комментарий от wandrien

В PHP есть if/endif, foreach/endforeach, это очень удобно, и мне это очень нравится, но есть одна деталь, использую я это, только если между if и endif условно больше 100 строк (шаблонизация), иначе при использовании {} просто невозможно понять какая скобка к чему относится, к циклу, к if, к чему то другому?

А вот для кода мне понравился синтаксис OCaml когда нету скобок и нету end. Получается короткий, читаемый код. Когда много синтаксического мусора, понять о чем код вообще трудно, нужно построчно его анализировать.

MOPKOBKA ★★★★★
()
Последнее исправление: MOPKOBKA (всего исправлений: 1)
Ответ на: комментарий от wandrien

Ужас какой. Может лучше так:

while f1() loop:myLoop
    f2();
end:myLoop;

Предыдущий вариант конфузит сильно, непонятно куда осуществляется прыжок после end:myLoop к метке или к началу цикла?

ugoday ★★★★★
()
Последнее исправление: ugoday (всего исправлений: 1)
Ответ на: комментарий от MOPKOBKA

Как раз тут под рукой примеры кода, как раз сишный файл читал:

Код на Си выглядит вполне привычно и обычно: любой код на Си так и выглядит. Его проблемы — это визуальная рыхлость. Нет уверенного цепляния глазами за структуру, глаза надо напрягать. Примерно то же самое и у JS.

Не являюсь хейтером ни Си, ни JS, наоборот, это одни из моих любимых ЯП, которыми я часто пользуюсь.

Код на Паскале — это визульная катастрофа. Синтаксис совершенно не помогает читать код. Всё просто тонет в begin и end, потому что begin и end это те же самые операторные скобки {}, что и в Си, но конского размера.

Qod — синтаксически очень приятный для чтения код. Примерно так же легко читаются Ruby, Lua, Ada… и нелюбимый на этом форуме Visual Basic.

wandrien ★★★
()
Ответ на: комментарий от wandrien

Я именно визуальной разницы не вижу между этими фрагментами, но отмечу что там везде разный код, разное форматирование и разный стиль именования. Возможно это влияет на твое восприятие, ведь есть разница между K&R и GNU Style.

MOPKOBKA ★★★★★
()
Последнее исправление: MOPKOBKA (всего исправлений: 2)
Ответ на: комментарий от wandrien

Qod — синтаксически очень приятный для чтения код

Субъективщина же. Что одному легко и приятно читать — другому ад и пытка (хотя привыкнуть можно практически к любому упорину, и читать его будет более-менее легко).

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

Примерно так же легко читаются Ruby, Lua, Ada

Для меня, как для нерубиста, вообще никаких отличий от руби сходу не просматривается %)

Nervous ★★★★★
()
Последнее исправление: Nervous (всего исправлений: 1)
Ответ на: комментарий от Nervous

Ну так можно сказать, что от Algol 68 отличий не просматривается =)

Объединив языки по принципу того, что они выбрали использовать блоки не в явном виде, а внедрённые в составные statements + специальные наборы ключевых слов для каждого вида statement.

if ... then .. fi (Алгол 68, Баш)

if ... then ... end (Lua)

if ... then ... end if; (Ada)

If ... Then ... EndIf (Basic)

и так далее

wandrien ★★★
()
Ответ на: комментарий от wandrien

Код на Паскале — это визульная катастрофа

Не заметил

Всё просто тонет в begin и end

else труднее читается, но к этому можно привыкнуть и не страдать. В остальном всё очень хорошо выглядит.

kaldeon
()
Ответ на: комментарий от MOPKOBKA

просто невозможно понять какая скобка к чему относится, к циклу, к if, к чему то другому?

У меня в нетбинсе пары вложенных скобок {} имеют свои цвета. Цветовая дифференциация штанов блоков кода. Также слева, где нумерация строк, есть визуальные + и выделенный линией блок, можно сворачивать и разворачивать весь код между { и }. Во многих редакторах подобное есть.

Obezyan
()
Ответ на: комментарий от wandrien

Рекомендую глянуть на кобылоподобные язычки которые тащат в качестве DSL/встраиваемых во всякие Ъ-ынтырпрайзные решения. Операторные скобки ерунда по сравнению с условными ASSIGN 42 TO answer.

anonymous
()
Ответ на: комментарий от MOPKOBKA

Цвет скобок зависит от уровня вложенности. Те по цвету скобки можно сходу определить на каком уровне структуры находишься. Но это все конечно очень субьективно и то что одному удобно, другому мучение.

Я ещё часто использую mini map для навигации, оч удобно когда нужно в сложной структуре туда-сюда с задумчивым видом.

Obezyan
()
Ответ на: комментарий от Nervous

Был такой экспериментальный ЯП Io как попытка переизобрести гомоиконный скобочный язык на базе не списков, а прототипного ООП.

Универсальным аналогом списка (blabla тут что-то...) из лиспа там была запись blabla(тут что-то...), где blabla означало вызов метода у объекта, что слева. Если же слева ничего нет, то у «глобального объекта».

Соответственно, циклы, условия, и вообще что угодно – всё формулировалось как вызовы методов.

Концептуально всё это очень интересные идеи: и Лисп, и Io, и Tcl.

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

Одна из задач языка в том, чтобы разные идеи ВЫГЛЯДЕЛИ по-разному.

wandrien ★★★
()
Ответ на: комментарий от wandrien

Одна из задач языка в том, чтобы разные идеи ВЫГЛЯДЕЛИ по-разному.

Вот ещё бы не просто по разному, а красиво реализованная логика - красиво, а всратая - всрато.

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

Obezyan
()
Последнее исправление: Obezyan (всего исправлений: 1)
Ответ на: комментарий от Obezyan

Кажется я вспомнил что меня вымораживало. Не переход а вызов подскрипта, если подскрипт завершался то завершалась вся программа а не происходил возврат.

anonymous
()
Ответ на: комментарий от u-235

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

В своей узкоспециализированной проге я решил проблему шрифта, но также не решил возврат назад мышкой (только Backspace) и развернуть уже запущенную прогу. У меня распаковывается и парсится дерево, в css выставляю шрифт и потом справка уже юзается вполне прилично, с нужным размером. То есть связка IDE+Help уже работает не напрягая.

AZJIO
() автор топика
Ответ на: комментарий от AZJIO

как будто вы проверяете исходники с репозитория

Вообще-то, проверяем.

в том числе с прог выкладываемых в виде бинарных файлов, а то и вовсе закрытые проприетарные

Такие не используем.

anonymous
()

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

anonymous
()
Ответ на: комментарий от AZJIO

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

Iron_Bug ★★★★★
()
Ответ на: комментарий от Iron_Bug

даже на сам софт не столько внимания обращают, сколько на качество сорцов :)

Смотрю я иногда чужие и потом пишу свои, так как не понимаю я чужое. Из последнего игра 2048, на форуме PureBasic 2 или 3 варианта этой игры и я не могу выцепить корень логики, там всё перемешано с модулем рисования. При чём нет сохранения рекордов ни поддержки многоязычности, не стиля вынесенного в ini-файл, ни ресайза окна. В итоге при том же числе строк сделал эти все фичи. И потом адаптацию для Андроида на SpiderBasic.

AZJIO
() автор топика
Ответ на: комментарий от AZJIO

У меня в ковид знакомая умерла, в детстве иногда общались, т.к. жили на одной улице. 26 годиков было, никогда она ничем не болела, а от ковида всей семьёй ласты склеили, вместе с отцом и матерью. Я постарше и всегда болел, 4 раза с воспалением легких и перенёс ковид как насморк обычный, только запахи полностью терял на 3 дня. Как там у Булгакова было Да, человек смертен, но это было бы ещё полбеды. Плохо то, что он иногда внезапно смертен, вот в чем фокус!

anonymous
()
Ответ на: комментарий от AZJIO

В kchmviewer у меня шрифт не запоминает, постоянно с засечками

Это вина авторов .chm, какой шрифт указан в CSS, такой и показывается.

размер постоянно мелкий

А вот это похоже на баг, было бы неплохо автора проинформировать.

По боковой кнопки мыши нет возврата назад.

Скорее всего в Qt, на котором написан kchmviewer, это событие не доступно.

u-235
()
Ответ на: комментарий от wandrien

Но неудобные для человеческого восприятия визуально

Для вас неудобные, и то только потому, что непривычные. И это дело поправимое.

Одна из задач языка в том, чтобы разные идеи ВЫГЛЯДЕЛИ по-разному

Они и выглядят. Символ if ни за что нельзя спутать с символом loop. А для быстрого различения базовых составных структур данных (формы которых не начинаются с символа) можно использовать разные виды скобок.

Я считаю, что синтаксис — сама форма конструкций кода — наоборот, должен быть минимальным и универсальным, чтобы облегчить работу как мясным читателям/писателям, так и железным анализаторам/преобразователям.

S-выражения — как раз такой синтаксис. Он идеален %)

Nervous ★★★★★
()
Ответ на: комментарий от Nervous

Для вас неудобные

Вот это верно.

и то только потому, что непривычные. И это дело поправимое.

А вот это — нет.

Уж насколько мне привычен Си и JS, как в айти пришел в конце 90-х еще будучи в школе, так и имею дело с этими языками. Но языки, которые я перечислял ранее, всё равно оказываются удобнее для чтения.

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

Именно: разные виды скобок. Возьмём как пример Ada. while ... loop ... end loop; — один вид скобок. А if ... then ... end if; — другой.

Я считаю, что синтаксис — сама форма конструкций кода — наоборот, должен быть минимальным и универсальным, чтобы облегчить работу как мясным читателям/писателям, так и железным анализаторам/преобразователям.

Вот уж на легкость работы железного анализатора вообще насрать.

А так – ну считаете и имеете право. А я считаю, что нет. Вы описываете отсутствие формы, то есть такую форму, которая не выполняет свою задачу. Форма — это то, как что-то выглядит. В данном случае оно не выглядит никак. S-выражения де-факто для чтения оформляются чисто отступами, как Питон. Потому что скобки а ля )))) глаз игнорирует.

wandrien ★★★
()
Последнее исправление: wandrien (всего исправлений: 1)