LINUX.ORG.RU

Мои проги на PureBasic

 , ,


4

5

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

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

Перемещено dataman из development

★

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

Я нигде не писал что fanalyzer может все проверить, я лишь указал на то что он легко поймает твой второй пример, и многие другие ошибки. Где то можно ошибиться и компилятор это не найдет, для меня это приемлемая цена за краткость и наглядность. И не надо говорить что это странно или плохо, если бы ты сам по настоящему ценил надежность, то уже встраивал бы в свой компилятор инструменты для верификации.

MOPKOBKA ★★★★★
()

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

Сейчас, конечно, у меня все обросло скриптами на баше, да и виндой я не пользуюсь очень давно, но от этой темы повеяло теплотой и далекими годами.

Спасибо.

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

Я же специально уточнил «для любого опытного Си-программиста».

Я Си-программист с нулевых.

Хотя, возможно, что-нить типа

Перловку уже изобрели, ты опоздал.

Я же прямым текстом расписал, что там непонятного то? Ещё раз напишу: экономлю свою память и своё внимание. Зрительный мусор их жрёт не принося взамен ничего.

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

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

для меня это приемлемая цена за краткость и наглядность

Краткость и наглядность это когда имя объявлено на 20 строк выше, чем оно используется?

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

Я Си-программист с нулевых.

Я и не про тебя писал. Или ты хочешь сказать что ты тоже запутаешься в этой одной строчке?

Перловку уже изобрели, ты опоздал.

По-моему не похоже.

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

Тем, что на экране видны концентрированно осмысленные символы без отвлекающих и засоряющих элементов.

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

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

Хотя мне и сложно понять как может осознанно выбираться первое.

А мне легко.

Я тот человек, который писал херню типа

if (что-то) foo(), bar(), baz();

а потом понял, что это реально херня.

Поэтому «лаконичным кодом» меня не удивить, я повидал в жизни некоторое дерьмо.

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

Тем что когда ты смотришь на y = foo(x) то верхний int не засоряет поле зрения - он не часть алгоритма и для его анализа в целом не нужен. Хотя, изредка, бывают ситуации когда неправильный тип приводит к изменению работы проги, а ещё реже - всё это происходит без варнингов от компилятора про сомнительный автокаст, но это редко и польза от отсутствия лишних букв перевешивает.

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

Вот что я вижу когда смотрю 100 строку условно:

Твой вариант:

struct ns_some_struct *x = ns_get_err(A);
if (x) {
  return 0;
}

struct ns_some_struct *y = ns_get_err(B);
if (y) {
  return 0;
}
Мой вариант:
if ((x = ns_get_err(A)) || (y = ns_get_err(B))) {
  return 0;
}
Где то выше в моем варианте объявляются переменные, но когда я смотрю на строку 100 и ниже, я вижу только код.

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

Вот что я вижу когда смотрю 100 строку условно:

У тебя на последней строчке алгоритма x и y заведомо равны NULL, а следовательно переменные не нужны вовсе.

if (ns_get_err(A) || ns_get_err(B)) {
  return 0;
}
wandrien ★★★★
()
Ответ на: комментарий от wandrien

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

const struct ns_some_struct_gnome_style *x = ns_get_err(A);

{
  int c;
  ns_get_level(A, &c);
  if (x == NULL && c == 10) 
    return 0;
}

const struct ns_some_struct_gnome_style *y = ns_get_err(B);

{
  int c;
  ns_get_level(B, &c);
  if (y == NULL && c == 15) 
    return 0;
}
А это мой «плохой подход» где переиспользуются переменные и все такое:
ns_get_level(A, &c);
if ((x = ns_get_err(A)) == NULL && c == 10) 
  return 0;

ns_get_level(B, &c);
if ((y = ns_get_err(B)) == NULL && c == 15) 
  return 0;

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

if (что-то) foo(), bar(), baz();

А я вот прям вчера испробовал новый приём - запятая внутри части логического выражения условия if-а

if(dirnotexist && (mkdirat(sdfd,"certs",0755),mkdirat(sdfd,dn,0755))<0) return -3;
и кажется он весьма удобный.

Просто запятая внутри if-а давно уже была в таком:

while(errno=0,de=readdir(dp))

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

И? Ты используешь эти x и y далее в коде?

Если да, то засовывать присваивание им значений внутрь условия if — дурной тон.

Первый вариант лучше читается, однозначно.

Здесь весь код очевиден в точке чтения и не требует себя расшифровывать. Тут написано «создаётся имя, которое обозначает вот такую штуку».

А второй вариант заставляет через себя продираться.

if, внутри которого &&, внутри которого сравнение, внутри которого присваивание.

Точно ли автор имел в виду присваивание? А точно ли он хотел присваивать x? А использовалось ли x ранее? Не требуется ли освободить память, занятую x?

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

Знания, которые знает только один человек не существуют. ?

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

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

Вот что там было, когда я говорил, что это лучше читается:

const struct ns_some_struct_gnome_style *x = ns_get_err(A);
if (x == NULL && c == 10) 
  return 0;

const struct ns_some_struct_gnome_style *y = ns_get_err(B);
if (y == NULL && c == 15) 
  return 0;
wandrien ★★★★
()
Ответ на: комментарий от firkax

Запятая в цикле for это классика, одним циклом делают алгоритм черепахи по односвязному списку.

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

Знания, которые знает только один человек не существуют

Платные проги

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

И чем больше у тебя мусорных имён болтается в пространстве имён бесконтрольно

В PureBasic есть EnableExplicit, ключ, требующий объявление переменных. Без него, также можно наплодить ошибки в имени переменной и получить новую.

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

например, gettext.

Она оптимизировано работает?, Вроде как я уже где то это обсуждал, поиск перевода по всей строке в противовес индексу. Может когда-то дорасту.

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

СМЫСЛУ, потому что внезапно смысл одно и того же имени в разных точках функции РАЗНЫЙ

я в таких случаях даю имя переменной «tmp», что означает просто кеш, в котором временной хранится что-то не плодя новых имён переменных. При условии однопоточного кода.

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

На самом деле CHM отличная задумка. Там и поиск и навигация, жмёт отлично. И полноценной замены–то на самом деле нету. По крайней мере в среде Окон. Другое дело что пихать CHM линуксоидам это как минимум некрасиво.

На программах выложенных в Github тренируют нейронки? Может человек не хочет.

Сайт нормальный. Текст хорошо читается, картинки показываются. Работает даже в IE 8. Или нужны мегабайты скриптов и серые буквы на страницах с километровыми отступами?

BASIC не хуже многих и уж точно лучше некоторых.

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

Она оптимизировано работает?

А какая разница? Это не является горячей точкой программы, так что плевать, как оно работает.

Ни разу не видел, чтобы gettext() был горячей точкой в профилировщике и не представляю, как именно надо написать программу, чтобы такое получить.

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

выразил мнение о Qt - либо бесплатная прога, либо плати лицензию 300 тыс. в год.

Откуда вы такую чушь берёте? Почитай, что в LGPL написано хотя бы.

P.S. А программы по ссылке из ОП не бесплатные разве? :)))

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

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

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

например, gettext.

Она оптимизировано работает?

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

Мне, как программисту, строка с человеческим текстом понятнее идентификатора. Мне проще поменять текст прямо там, где используется. И когда текст сообщения поменяется, во всех файлах переводов это место будет помечено как требующее нового перевода.

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

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

Про «знания» расскажу немножко.

В тридцатые года во время коллективизации парней посылали на курсы трактористов.
На курсах изучали: устройство трактора, вождение, …
На экзаменах один из новоиспечённых трактористов, получивший пятёрку спрашивает экзаменатора.

  • Можно я вам вопрос задам?
  • Спрашивай.
  • Я всё ПОНЯЛ лишь одного не понял - «Куды в трактор кобылу впрягать?».

У большинства людей именно такие «знания».
Форум подтверждает это очень хорошо.

anonymous
()
Ответ на: комментарий от AZJIO
  1. Какой чел?

  2. Если он написал именно то, что ты, слово в слово — то он просто врёт. Но может, и ты что-то напутал.

  3. «Оскорбляющие эпитеты» — это «чушь», что ли? Так это характеристика высказывания, а не человека.

P.S. А вот выше по теме пишут, что PureBasic вообще имеет ограничение на количество строк кода в бесплатной версии. Это правда?

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

P.S. А вот выше по теме пишут, что PureBasic вообще имеет ограничение на количество строк кода в бесплатной версии. Это правда?

Ну, мнение AZJIO мы тут уже видели: Да, «ограничение 800 строк и запрет использования API и запрет компиляции библиотек в бесплатной версии.», а также «Цена вашей работы может стоить сотни тысяч, поэтому лучше отдать недельный зароботок <…> и потом не мучится».

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

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

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

Я сильно удержусь и промолчу.

Для меня стало открытием, что существуют такие языки в 2025, среды, и активное сообщество авторов, которые пилят на них велосипеды с квадратными колёсами, которые давно уже изобретены.

Спасибо ТС, расширил горизонты.

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

У меня только две версии. Либо есть какая-то область, где эти языки и платные компиляторы объективно удобнее (я таких областей не знаю). Либо просто чему и на чем учили в школе, тем и пользуются. Переучиваться на современный инструментарий лень «а зачем, работает же», «мне неудобно городить костыли, чтобы сделать поведение в других средах таким же, как в моем любимом динозавре».

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

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

А тут-то речь вроде как о полноценном использовании Бейсика, даже с какими-то мыслями о перспективах. Хотя какие могут быть перспективы у Бейсика. Он свое давно отжил.

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

Это коммерческая лицуха. Ты можешь или купить Qt, тогда его выдадут тебе под лицухой, что не имеет ограничений LGPL, или ты можешь бесплатно взять его под LGPL – двойное лицензирование. Как думаешь KDE появился? Они его не покупали.

Vsevolod-linuxoid ★★★★★
()
Ответ на: комментарий от hobbit

Какой чел?

C++/Qt: пора валить?. - тут именно про 300 тыс. О лицензиях Qt (и немного о компании) - тут ещё о деталях. Не помню где ещё читал, специально, перед тем как кинуться в рутину, но сложилось устойчивое мнение, что они следят, чтобы их работа была оплачена.

«Оскорбляющие эпитеты» — это «чушь», что ли? Так это характеристика высказывания, а не человека.

Высказывание это и есть результат человека. Вы можете назвать это ложью, но не чушью. Могу ли я ограничивать кого-то в свободе слова, как это назвать? Но ведь у меня тоже возникает разнообразие эпитетов читая посты.

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

HTML Help Workshop

Да, это точно, есть ещё htm2chm, который жмёт лучше, на 20%. Вы минусанули, поэтому отвечаю, конечно в Readme она (прога) упомянута, но я как всегда даю по максимому, готовые проекты (*.hhp), скрипты, из которых можно вытащить ком-строку, плюс скрипты обработки опечаток текста, плюс скрипты перевода в UTF-8 для сайта, плюс скрипты обработки кода, но последнее требует знания языка скриптов, так как там уже сложный парсинг. Также скрипты генератор Index.hhk из Table of Contents.hhc, генератор html аналога Index.hhk и аналога Table of Contents.hhc.

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

Для меня стало открытием, что существуют такие языки в 2025

А что мало языков где авторы требуют оплаты? Полно. Но если вы собираетесь писать движок GUI да ещё на разных ОС, может вы к концу жизни и напишите. Либо будете использовать чей-то модуль, который будет в ОС тащить 40 и более мегабайт. Помню кто-то автору PureBasic сказал про С++, он ему ответил, так там же несколько ключевых слов и функций, то есть по сути все функции писать надо самому. Допустим в PureBasic 3000 кроссплатформенных функций, вот их все надо писать самому, чтобы начать писать прогу.

Другой человек написал, спасибо автору что устраняет нам необходимость писать эти функции самому.

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

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

А по поводу кроссплатформенных гуев, уже несколько кальп существуют компактные библиотеки для отрисовки, гитхаб полнится ими. Начиная с того же tk.

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

Хорошо бы конечно приводить ссылки кто кому что сказал

Fred

Начиная с того же tk

Это Tkinter что ли? В 2014 году когда изучал питон, пробовал изучать этот движок GUI и он так плохо работал и так плохо выглядел, что …

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

… то есть по сути все функции писать надо самому. Допустим в PureBasic 3000 кроссплатформенных функций, вот их все надо писать самому, чтобы начать писать прогу.

Как-то разработал паучок для MSDN, который проанализировал всеразделы и для каждого из них сгенерировал хедеры и исходники
обвёрток (в т.ч. и для интерфейсов).
За пару недель управился (но не всю жизнь).
Здесь главное не ленится и не ждать от кого-то халявы.

anonymous
()
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария