|
COM‐пропагандист
|
||||||
Общие вопросы и приёмы эффективного программирования на BASIC27.03.2021, 15:34. Показов 33547. Ответов 391
Метки нет (Все метки)
Вот как создать кнопку:
0
|
||||||
| 27.03.2021, 15:34 | |
|
Ответы с готовыми решениями:
391
Общие вопросы по языку 1с Visual Basic Приемы взаимодействия Visual Basic и SQL Основные понятия и приемы программирования |
|
|
||||||
| 02.04.2021, 19:23 | ||||||
|
Иначе получается уродливый код, который привязан к представлениям того или иного разраба этой библы. Библиотеки это вообще не язык, это много всякого г. в бочке с ложкой мёда. Язык должен быть расширяемый своими собственными средствами.
1
|
||||||
|
Кормпилятор
|
||||||
| 03.04.2021, 10:02 | ||||||
|
Объясняю уже раз в сотый. Бейсик был ВУ с самого момента его появления, им и остаётся. Не по причине "добавили то, добавили сё", а по принадлжности к поколению языков, которые исторически формировались исключительно из оценок трудозатрат, где разница между поколениями обуславливалась качественным ростом итоговых трудозатрат(и килострок) предыдущего поколения в сравнении с последующим. Каждый такой скачок это качественный прорыв, а исторически там расстановка по принципу - кто успел тот и съел. Низкий уровень это машинные коды и ассемблер, т.е. 1GL и 2GL соотв. Всё остальное - высокий уровень. И нет никакого "среднего уровня", это всё происки долбаных дилетантов, которые не понимают элементарных вещей и пудрят другим мозги. Списки - это вообще-то вещь не обязательная, где-то есть, где-то нет, приятно если есть и не страшно если нет. Реализована уже тысячу раз и на FB разными прогерами. Человек, который пользует только готовое и не умеет даже в банальные списки самостоятельно - это амёба, в серьёзном программировании такому делать нечего. Регулярки - тоже самое, доп. функционал. Можно добавить билиотекой, за всю кодерскую жизнь ни разу не требовалось, громкие понты про эти вещи разводят лишь те, кто кодить не умеет вовсе - я таких дятлов выкупаю сразу, попадались многие. На высокоуровневость всё это НИКАК не влияет. Иначе может дойти до абсурда и можно будет сказать, что асм, пользующий те же WinAPI - это высокоуровневый ЯП. По поводу указателей, "защита от операционной системы" - это лишь идеология и её нужно правильно понимать. Чтобы понять идеологию языка BASIC нужно покодить на разных диалектах и понять что её определило. И нужно писать проекты так или иначе. Так что хулиган, поверь, FB есть за что покритиковать кроме отсутствия списков. Языки же развиваются и подходы миксуются, где-то в плюс, где-то наоборот. Есть такой инструмент он тебе подходит - используешь, не подходит - не используешь. Функционал же - дело другое, указатели вещь нужная и полезная, как и встроенный ассемблер. Чтобы их использовать нужно быть профессионалом. Есть например каноничный BlitzBasic, вот просто конфетка по этой идеологии, это заслуживает уважения, по сравнению например с FB и с QB64, но мне не подошёл, потому что нет встроенного ассемблера. Тем не менее поверь что в проектах это последнее за что думает программист, это сначала все шерстят асм, в низы лезут, в нутра, но когда это окончательно задирает, человек начинает смотреть на вещи проще и делает понятнее\проще. Добавлено через 4 часа 37 минут Лучше конечно переписывать, а не перекомпилировать. А гуи это всегда гемор, не гемор наверное только на VB. Стас своим Window9 облегчил участь, он её кстати на линукс портировал и IDE запилил, совсем минималистик, не помню правда почему на неё не пересел, вроде меня чё-то не устроило по подсветке синтаксиса. Добавлено через 17 минут Библиотека это хранилище процедур и функций - всё. Можно подключить чужую, можно написать свою. Любой нормальный диалект имеет инструментарий работы с библиотеками. Это азы модульного программирования. Расширение языка это прерогатива разработчиков языка, иначе ты такой умный что-то там "расширишь" куда-нибудь не туда и поотваливается весь код, который можно было бы добавить в проект, как свой так и чужой. сейчас не найду, да и не сильно надо, закрываю консольное окно - всё само схлопывается. Да и не поставить выход по кнопке - ну это надо совсем ленивым быть. Добавлено через 33 минуты придётся тяжко. А также испытывать боль в заднице от кодировок до скончания времён))) Ну конечно если только ты не поклонник фиксированных строк и юникода, разобрал досконально этот формат(все его виды и подвиды), знаешь где находятся все раскладки и управляющие символы, где какой BOM прописать, как и что раскодировать побитно. Ну и да надо иметь тестерский штат из пачки компов. Я тут, недавно, кстати, завёл, посмотрел FreeType. Забавная либа. Радует лишь знакомый QuickBasic синтаксис, лицензия ну и то, что сделал Стас для коммьюнити. Так то под винду всё есть, и в принципе не проблема найти под линукс. Под мак, предполагаю, сможет собрать только спец экстра класса. Ну так-то да людям на компах за несколько тыщ баксов этот гемор нафиг не нужен, они купят нормальную среду, над которой поработали.
0
|
||||||
|
COM‐пропагандист
|
|||||||||||||||||
| 03.04.2021, 11:20 [ТС] | |||||||||||||||||
|
и тут https://docs.microsoft.com/en-... -heapalloc про флаг HEAP_NO_SERIALIZE. Как вы с сетью работаете в блокирующем режиме, оно же повесит всё GUI? Есть ли в PureBasic возможность перейти хотя бы на неблокирующий режим, не говоря уже об асинхронном, в рамках стандартной библиотеки? Есть ли возможность вызвать функцию асинхронно, продолжить работу, а за результатом функции пойти когда он потребуется? Вон Станислав Будинов сделал библиотеку window9 для FreeBASIC, там всё скопировано с PureBasic, хотя она не кроссплатформенная (под DOS не работает), только для Вжухндоуз и Linux. Итак, у меня есть проект из множества файлов. Мои действия. Я беру первый файл из проекта, запускаю компилятор, для компиляции он загружает все пререквизиты (Я смотрел встроенную справку, там тысячи библиотек), читает много файлов, получая список функций. Получен объектный файл, программа‐компилятор закрывается. Я беру второй файл из проекта, повторяю всё опять. На этом этапе видно, что для каждого файла из проекта происходит чтение всех библиотек. Когда все объектные файла готовы, то запускаю компоновщик, который из объектных файлов сделает исполняемый файл. Готово. Видимо, вы предлагаете отправлять в компилятор сразу весь список файлов проекта. Получается, что вы каждый раз перекомпилируете все файлы проекта, значит, об инкрементальной сборке речи не идёт. Изменили только одну букву в одном файл и перекомпилировать приходится все 265 файлов проекта. 2. Есть специальные функции для выделения памяти на стэке: _alloca https://docs.microsoft.com/ru-... w=msvc-160 _malloca https://docs.microsoft.com/ru-... w=msvc-160 3. Даже если запрещаете динамическую аллокацию на стэке, то могли бы разрешить создание строк фиксированной длины на стэке. 4. В PureBasic что, даже фиксированные массивы только в динамической памяти живут? Рантайм — это жаргонное название библиотеки времени выполнения. Все операторы языка FreeBASIC — это на самом деле функции в библиотеке времени выполнения.
0
|
|||||||||||||||||
|
|
|||||||||||||||||||
| 03.04.2021, 14:04 | |||||||||||||||||||
|
Вот в этом проблема. Выделив память ее нужно освобождать. Если забыть это сделать будет утечка. Многопоточность для чего? Устанавливаются тысячи соединений как TCP так UDP. Все в одном потоке. Компилятор загружается вместе с IDE и в фоне читает файлы библиотек. К моменту компиляции, уже есть список всех функций и нет необходимости повторно читать файлы библиотек.
1
|
|||||||||||||||||||
|
|
||
| 03.04.2021, 14:08 | ||
|
Замабувараев, для чего ты тут, в Бейсике? Возьми любую реинкарнацию Си, которая близка по духу и будь счастлив, не ограничивай себя!
1
|
||
|
|
|||
| 03.04.2021, 14:21 | |||
|
Везде свои ниши и пр. Скажите то, что вы написали целой армии веб-девелоперов, они долго будут смеяться. Да и кто сейчас создает велосипеды?.. -------
0
|
|||
|
COM‐пропагандист
|
|||||||
| 03.04.2021, 18:44 [ТС] | |||||||
|
Для программ посложнее чем laboratornaya_rabota8.bas во владеющий объект добавляют счётчик ссылок. 1. Я нашёл в коде 151 совпадение по ключевому слову Thread. 2. Прямо в коде: «Procedure Core_NetworkEvent_Thread(*x) ; Поток обработки событий сети, в т. ч. и сервера (для входящих соединений пиров).» — то есть уже есть какой‐то отдельный поток для приёма и данных, видимо, чтобы не блокировать GUI. 3. Программа уже при старте создаёт минимум 6 потоков, а Я ещё сделал ничего. Я говорил про асинхронность. Асинхронность <> многопоточность. Вы для компиляции каждый раз запускаете IDE? А если надо в пакетном режиме, он тоже будет все файлы перестраивать, если изменился только один? Я хочу стройность, непротиворечивость синтаксиса, внятную семантику и современные возможности.
0
|
|||||||
|
|
||||||
| 03.04.2021, 22:12 | ||||||
|
1
|
||||||
|
Модератор
|
||
| 03.04.2021, 22:24 | ||
|
0
|
||
|
Кормпилятор
|
||||
| 04.04.2021, 00:55 | ||||
|
Под одну какую-то систему исполнения, не более. Причём кодить - это громкое слово для этих людей ибо там кодингом и не пахнет, лишь манипуляция чужими трудами(библиотеками, возможностями сред и т.п.). И легко встану в сравнение с любым программистом, ибо не стыдно. Так же легко предложу пописать то же самое, что писал я, в тех же самых условиях(хоть это и трудно организовать, но если это сделать - правда всплывёт сама по себе) даже распишу в чём преимущества того или иного ПО, а также в чём заключается сложность. с точки зрения производительности менее эффективны. Ну если конечно целевая задача не вписывается в рамки обычного массива. Удобство обычно побеждает, однако я сторонник прямого способа достижения цели, т.е. полного отражения того как оно алгоритмически расписано в код, и если вещь требует нескольких вложенных уровней указателей, то разбивать эту "природно-натуральную" структурную организацию на несколько частей не нужно. И уверен что ты понимаешь почему я это говорю, потому что есть кони-люди, которые начнут разбивать, потому что мозгу видите ли сложно. Есть довольно не субъективная вещь, качество движка, когда в коде нет ничего лишнего, только целевой алгоритм и всё формализовано мы получаем 100% качество движка и никакие ухищрения не сделают его объективно лучше. И прекрасно видно, что на то, про что пишу закрывают глаза куча народу, именно поэтому, баги, сложности с модернизацией софта, сложности с построением архитектуры, многократное "ожирение" ПО и это лишь часть проблем. обычное приложение написанное на любом из классических ЯП: с++, Pascal, BASIC. Мода вещь страшная, она туманит разум людей.
0
|
||||
|
Кормпилятор
|
||
| 04.04.2021, 07:39 | ||
|
Не знаю где люди этого набрались и почему нам выдают эти мимолётные вещи в виде понта за прописные истины. И так понятно что это не ВУ и стандартом никогда не станет, что такой код это исключительно рукописное асмовое, применимое строго местно и микроскопически. И ты, как никто другой знаешь, что происходит с отладчиком, когда начинаешь так юлить. т.е. SUB SP, размер и т.д. В общем-то понятно, что не выделить память(а нам говорят именно про выделение) надолго, сдвинув регистр SP не получится, потому что другие участки кода в прямом смысле ждут, когда же этот долбаный кусок отработает чтобы получить в т.ч. и то что было положено в стек ранее. Более того, злоупотребление этим, а так же рекурсивными алгоритмами может привести и так или иначе приведёт к жопе, причём как назло в самый важный момент. Причём когда речь про стек проблема может быть даже не в том, чтобы выделить, а в том, чтобы это говно ещё адресовать, когда там в коде крутятся вереницы циклов лихо сохраняя и загружая регистры в стек. Т.е. это сидение с линейкой и отмерами по миллиметрам(байтикам), то ещё дело. Т.е. это не рядовой кодинг, это именно асм, оптимизация, лютое задротство и сидение с линейкой. А так да работа с памятью не быстрая и программист должен в т.ч. предполагать когда её нужно выделять и сколько, лучше выделять большими кусками(не всегда возможно и не всегда необходимо сразу, это и повлекло все эти доп прослойки, сборщики и прочий "вертихвостинг"), это всё закладывается в архитектуру софта. За счёт памяти, например, делается львиная доля табличных операций и выделить 48 мегабайт ускорив программу, имея гигабайт - рационально, выгодно, имея же 64 - мягко говоря не очень. Нормальная прога тоже должна это всё чувствовать, где она плавает в какой среде, что можно сделать, а чего лучше не делать.
0
|
||
|
Модератор
|
|||||||
| 04.04.2021, 11:47 | |||||||
|
]
0
|
|||||||
|
|
||
| 04.04.2021, 11:59 | ||
|
Имеет смысл когда у процессора низкая производительность и мало памяти (например у микроконтроллеров).
0
|
||
|
COM‐пропагандист
|
|
| 04.04.2021, 12:55 [ТС] | |
|
0
|
|
|
Кормпилятор
|
||||||||
| 04.04.2021, 16:11 | ||||||||
|
Каждый сохраняет и выгружает регистры в стек, Stack Pointer постоянно скачет, а регистры все заняты на алгоритм, лишних нет, а если это надо делать внутри какого-то из циклов, да ещё и по условию - ещё больше гемора. Если нужна память, лучше заранее понять сколько её надо, выделить и не выпендриваться, своя же голова в итоге целее будет. И дело не только в процедурах, где можно в начале и в конце процедуры этот вопрос урезонить(с контролем SP\ESP), а например во всей программе в целом. значения резервировать, он тупо терминирует прогу. Я то обойдусь без отладчика, а вот обойдётся ли кто другой и вообще поймёт ли он что случилось. На бейсиках и паскалях этого нет. В действительности это довольно низкоуровневый функционал. Без досконального понимания лучше туда не лезть. То что сделали на си - лишь частное исключение, там много таких штук, чтобы себе бошку потом сломать. И думаю нюансов там дофига и больше. Особенно по части производительности. Я лучше заведу память заранее сколько надо, тем паче ты же сам говоришь что его для фиксированных используют, вдвойне бессмысленно и втройне геморройно. Плюс ещё следить за размером стека. Людям то расскажешь, но кто знает у кого какие аппетиты. geh вот то и дело рекурсию свою сраную пишет и попробуй ему растолкуй что это чревато. и разбить цельную структуру на несколько частей, работая с ними по отдельности - будет приличный прирост. Тут к гадалке не ходи. Добавлено через 12 минут Даже если представить что мы делаем какую-то неепически крутую операцию типа вывода сетки символов(частый кейс для полноэкранных режимов) то наверное все эти бенефиты не дадут и процентов 2-3 даже на старом MMX-е 200-м. А если чувак грамотно всё рассчитал и завёл память заранее - то они и вообще ничего не дадут. Чтобы были какие-то приросты, нужно чтобы вся прога состояла только из работы со строками, но что это за софт? Наверное не веб сервер, который большую часть времени ждёт коммуникаций.
0
|
||||||||
|
Модератор
|
|||||
| 04.04.2021, 16:24 | |||||
|
0
|
|||||
|
Кормпилятор
|
|||
| 04.04.2021, 19:32 | |||
|
где он был, где были сохранённые до этого момента регистры, значит надо обсчитать кусок алгоритма, вернуть поинтер на место, чтобы можно было продолжить пользоваться стеком(Push\Pop). А выделил память, регистры заполнил, свободных нет, а память надо адресовать регистром, хранить лишний поинтер, а регистров мало, значит надо сохранить поинтер в переменную(например глобальную), чтобы высвободить регистр и потом заново эта котовасия. Добавлено через 14 секунд где он был, где были сохранённые до этого момента регистры, значит надо обсчитать кусок алгоритма, вернуть поинтер на место, чтобы можно было продолжить пользоваться стеком(Push\Pop). А выделил память, регистры заполнил, свободных нет, а память надо адресовать регистром, хранить лишний поинтер, а регистров мало, значит надо сохранить поинтер в переменную(например глобальную), чтобы высвободить регистр и потом заново эта котовасия.
0
|
|||
|
COM‐пропагандист
|
||
| 04.04.2021, 20:01 [ТС] | ||
|
0
|
||
| 04.04.2021, 20:01 | |
|
Помогаю со студенческими работами здесь
100
Стоит ли изучать как устроена ЭВМ для эффективного программирования Подскажите ссылки на приемы программирования для Embedded
Интересны приемы программирования, о которых не пишут в книгах, а которые узнаются на практике Общие вопросы. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений.
. . .
|
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения
Продолжаю серию постов о дискретно-событийной модели рабочего. . .
|
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы
Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
|
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция
Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
|
|
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
|
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
|
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
|
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика
Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
|