Форум программистов, компьютерный форум, киберфорум
Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.62/134: Рейтинг темы: голосов - 134, средняя оценка - 4.62
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4

Общие вопросы и приёмы эффективного программирования на BASIC

27.03.2021, 15:34. Показов 33547. Ответов 391
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот как создать кнопку:
PureBasic
1
2
3
4
5
6
7
8
9
10
Dim hwndButton As HWND = CreateWindow( _
    WC_BUTTON,
    "Текст кнопки", _
    WS_CHILD Or BS_BITMAP Or BS_PUSHBUTTON Or WS_CLIPSIBLINGS, _
    10, 10, 100, 50, _
    hwndMainForm, _
    Cast(HMENU, 1000), _
    hInst, _
    NULL _
)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.03.2021, 15:34
Ответы с готовыми решениями:

Общие вопросы по языку 1с Visual Basic
Всем привет, много информации нашел, но путевого очень мало, подскажите, пожалуйста, где можно побольше прочитать о достоинстве этого...

Приемы взаимодействия Visual Basic и SQL
При создании приложений, оперирующих базами данных, нередко возникают проблемы, связанные с организацией взаимодействия языка...

Основные понятия и приемы программирования
Помогите ответить на вопросы по С#. 1)Создание объектов.Понятия ссылки. 2)Массивы:одномерные,многомерные,непрерывные,массивы объектов. ...

391
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
02.04.2021, 19:23
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Pro_grammer Посмотреть сообщение
B не плохо выполняет свою первоначальную задачу - почти полноценная замена Qbasic под Винду.
Угу. До сих пор недопилили автоматическое переключение локалей в экранных режимах из-за чего русский текст невозможно вывести стандартными средствами, только своими фонтами через одно место. В винде, а как там в других осях не ведаю. Невозможно и закрыть окошко нажимая на крестик в углу. Об этом Станислав писал на форуме поддержки еще 10 лет назад но воз и ныне там. Честно говоря это портит всю малину. Да и графическая библиотека довольно тормозная и приходится использовать сторонние. Но вы правы, что он неплохо поддерживает Qbasic в общем и целом.
Цитата Сообщение от Замабувараев Посмотреть сообщение
ООП — это высокоуровневые фишки, они есть во фрибесике. Однако непонятно, почему вы считаете, что после добавления высокоуровневого ООП фрибесик не стал высокоуровневым. Вы противоречите сами себе и либо опечатались, либо запутались.
Высокоуровневость определяется временем написания того или иного кода. Само по себе ООП времени не убавляет, более того: увеличивается время рефакторинга, который неизбежен. Время убавляет пользование АТД в виде нативного кода. Это есть в пайтон, в lisp и пр. и пр. Вот там - да высокоуровневость из коробки. А ООП это лишь способ структуризации кода и обобщений специализаций. ООП за неимением ничего лучшего выполняет эту свою задачу неплохо. Полиморфизм - великая вещь в построении более абстрактного кода, но на производительность это никак не влияет. Вот GC - сборка мусора - влияет. Влияет когда мне не нужно думать об утечках памяти при работе с указателями и пр. в этом роде.
Цитата Сообщение от Замабувараев Посмотреть сообщение
Вы опять пытаетесь запихнуть в язык то, что должно быть в библиотеке. Язык программирования — это набор лексем и возможность составления из этих лексем своих типов данных. Тип данных «список» должна конструировать и предоставлять какая‐нибудь библиотека, которая вам нравится, а не язык программирования.
Это заблуждение пошло от си-подобных языков, где все - библиотеки, так как само языковое ядро - низкоуровневое, причем то, которое выросло из древнего PDP-11. Библиотеки не позволяют иметь уникальный синтаксис, который с эстетической и практических точек зрения позволяет писать в едином стиле поддерживаемым ядром языка на внутреннем уровне.
Иначе получается уродливый код, который привязан к представлениям того или иного разраба этой библы. Библиотеки это вообще не язык, это много всякого г. в бочке с ложкой мёда. Язык должен быть расширяемый своими собственными средствами.
Цитата Сообщение от Замабувараев Посмотреть сообщение
По интернетам давно ходила байка: «FreeBASIC — это такой мужчина, но с СИ‐ськами».
Похожесть на си — это хорошо, потому что позволяет использовать си‐библиотеки напрямую, без промежуточного кода.
Опять завязка на сторонние библиотеки потому, что не хотели создавать свои.
Цитата Сообщение от Замабувараев Посмотреть сообщение
Единственное, что отобрали у Бейсика – возможность накодить спагетти-кода с неявными переходами.
Ну goto никто там не запрещал, как и глобал. И это хорошо. Язык без goto не язык..
1
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
03.04.2021, 10:02
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Вставлю свои пять копеек. FB не стал высокоуровневым по причине добавления ООП фишек. Высокоуровневым язык делает доступность из коропки работу с АДТ. Если допустим язык не имеет средств работы со списками, регулярными выражениями - если в нем надо своими ручками пилить на указателях, то это си в бейсиковом обличье. И библиотеки тут являются костылями. FB сильно напоминает си, как тут уже замечали. От бейсика там по сути мало чего осталось. Не понимаю зачем это было нужно создавать очередной си с классами.
Хулиган вот нифига ты не понимаешь, что такое высокий уровень, что низкий. У тебя каша в бошке.
Объясняю уже раз в сотый. Бейсик был ВУ с самого момента его появления, им и остаётся.
Не по причине "добавили то, добавили сё", а по принадлжности к поколению языков, которые исторически
формировались исключительно из оценок трудозатрат, где разница между поколениями обуславливалась
качественным ростом итоговых трудозатрат(и килострок) предыдущего поколения в сравнении с последующим.
Каждый такой скачок это качественный прорыв, а исторически там расстановка по принципу - кто успел тот и съел.
Низкий уровень это машинные коды и ассемблер, т.е. 1GL и 2GL соотв. Всё остальное - высокий уровень.
И нет никакого "среднего уровня", это всё происки долбаных дилетантов, которые не понимают элементарных
вещей и пудрят другим мозги.

Списки - это вообще-то вещь не обязательная, где-то есть, где-то нет, приятно если есть и не страшно если нет.
Реализована уже тысячу раз и на FB разными прогерами. Человек, который пользует только готовое и не
умеет даже в банальные списки самостоятельно - это амёба, в серьёзном программировании такому делать нечего.
Регулярки - тоже самое, доп. функционал. Можно добавить билиотекой, за всю кодерскую жизнь ни разу
не требовалось, громкие понты про эти вещи разводят лишь те, кто кодить не умеет вовсе - я таких дятлов
выкупаю сразу, попадались многие.
На высокоуровневость всё это НИКАК не влияет. Иначе может дойти до абсурда и можно будет сказать,
что асм, пользующий те же WinAPI - это высокоуровневый ЯП.

По поводу указателей, "защита от операционной системы" - это лишь идеология и её нужно правильно
понимать. Чтобы понять идеологию языка BASIC нужно покодить на разных диалектах и понять что её определило.
И нужно писать проекты так или иначе. Так что хулиган, поверь, FB есть за что покритиковать кроме отсутствия
списков. Языки же развиваются и подходы миксуются, где-то в плюс, где-то наоборот. Есть такой инструмент
он тебе подходит - используешь, не подходит - не используешь.
Функционал же - дело другое, указатели вещь нужная и полезная, как и встроенный ассемблер.
Чтобы их использовать нужно быть профессионалом. Есть например каноничный BlitzBasic, вот просто
конфетка по этой идеологии, это заслуживает уважения, по сравнению например с FB и с QB64, но мне
не подошёл, потому что нет встроенного ассемблера. Тем не менее поверь что в проектах это последнее
за что думает программист, это сначала все шерстят асм, в низы лезут, в нутра, но когда это окончательно
задирает, человек начинает смотреть на вещи проще и делает понятнее\проще.

Добавлено через 4 часа 37 минут
Цитата Сообщение от Pro_grammer Посмотреть сообщение
FB не плохо выполняет свою первоначальную задачу - почти полноценная замена Qbasic под Винду. Реально помогает не выбросить огромные залежи древнего кода на помойку, а адаптировать под современные машины.
Создание же нормальных и современных гуёвых программ под Винду превращает в сплошной гемор.
С адаптацией лучше справляется QB64, точнее справлялся, там идентичнее была отработка, сейчас фиг знает.
Лучше конечно переписывать, а не перекомпилировать.
А гуи это всегда гемор, не гемор наверное только на VB. Стас своим Window9 облегчил участь,
он её кстати на линукс портировал и IDE запилил, совсем минималистик, не помню правда почему
на неё не пересел, вроде меня чё-то не устроило по подсветке синтаксиса.

Добавлено через 17 минут
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Библиотеки не позволяют иметь уникальный синтаксис, который с эстетической и практических точек зрения позволяет писать в едином стиле поддерживаемым ядром языка на внутреннем уровне.
Какая в жопу эстетическая точка зрения? И что за ядро ЯП? Где ты этого высокопарного говна понабрался?

Библиотека это хранилище процедур и функций - всё. Можно подключить чужую, можно написать свою.
Любой нормальный диалект имеет инструментарий работы с библиотеками. Это азы модульного программирования.
Расширение языка это прерогатива разработчиков языка, иначе ты такой умный что-то там "расширишь"
куда-нибудь не туда и поотваливается весь код, который можно было бы добавить в проект, как свой так и чужой.


Цитата Сообщение от CoderHuligan Посмотреть сообщение
Невозможно и закрыть окошко нажимая на крестик в углу.
Для этого нужно подключить fbgfx и выловить соотв. событие. Сам Стас это код давал давно ещё,
сейчас не найду, да и не сильно надо, закрываю консольное окно - всё само схлопывается.
Да и не поставить выход по кнопке - ну это надо совсем ленивым быть.

Добавлено через 33 минуты
Цитата Сообщение от locm Посмотреть сообщение
А в FB также или придется искать библиотеки под каждую платформу в отдельности?
Искать библиотеки. Искать IDE под каждую платформу. Если ты в этом плане "эстет", как я, то
придётся тяжко. А также испытывать боль в заднице от кодировок до скончания времён)))
Ну конечно если только ты не поклонник фиксированных строк и юникода, разобрал досконально
этот формат(все его виды и подвиды), знаешь где находятся все раскладки и управляющие символы, где какой BOM
прописать, как и что раскодировать побитно. Ну и да надо иметь тестерский штат из пачки компов.
Я тут, недавно, кстати, завёл, посмотрел FreeType. Забавная либа.

Радует лишь знакомый QuickBasic синтаксис, лицензия ну и то, что сделал Стас для коммьюнити.
Так то под винду всё есть, и в принципе не проблема найти под линукс.
Под мак, предполагаю, сможет собрать только спец экстра класса. Ну так-то да людям на
компах за несколько тыщ баксов этот гемор нафиг не нужен, они купят нормальную среду,
над которой поработали.
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
03.04.2021, 11:20  [ТС]
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Или хотя бы подумать над тем, что основная масса программистов на С++ принимает долгую компиляцию как должное.
Во‐первых, это при компиляции с нуля, во‐вторых, уже давно придумали инкрементальную сборку и make‐подобные утилиты.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Библиотеки не позволяют иметь уникальный синтаксис, который с эстетической и практических точек зрения позволяет писать в едином стиле поддерживаемым ядром языка на внутреннем уровне.
Вы противоречите сами себе. Если синтаксис уникальный под каждый тип данных, то он не может быть единым. Едино — это когда всё объявляется по одной и той же схеме, например: «Dim ИмяПеременной As ТипДанных» или «ИмяПеременной.тип». Вы же хотите для списков круглые скобки(), для деревьев <угловые>, для матриц смайл из ^_^ крышечек, для комплексных чисел харухи‐смайл ^_____^, а для констант у нас приготовлен особый ВЫСОКИЙ_КОТЁЛ_В_АДУ с решётчатыми лестницами сбоку ##.
Цитата Сообщение от locm Посмотреть сообщение
Потому что такой синтаксис.
Язык программирования должен быть предсказуем и целостен. Не убеждайте меня, что разработчик обязан помнить тысячи странных исключений. Индивидуальный синтаксис под каждый тип данных говорит лишь о неконсистентности и внутренней несогласованности языка.

Цитата Сообщение от locm Посмотреть сообщение
То есть вы знаете как устроена куча в Windows, Linux и MacOS?
Можно ссылки на авторитетные источники?
Читайте тут https://docs.microsoft.com/en-... heapcreate
и тут https://docs.microsoft.com/en-... -heapalloc
про флаг HEAP_NO_SERIALIZE.

Цитата Сообщение от locm Посмотреть сообщение
Если вы выделяете память 100000000000 раз в секунду, пересмотрите алгоритм. И никакого замедления не будет.
Присваивания, конкатенации, получение подстроки, разбиение строки на массив строк по пробелу, регулярное выражение — это всё порождает строки, а значит, создаёт и уничтожает память. Или в PureBasic это не так? Если так, то чтобы не выделять память, вы предлагаете отказаться от строк?

Цитата Сообщение от locm Посмотреть сообщение
PureBasic сам по себе ничего не выделяет.
Выделяет, иначе где ему хранить все эти WindowID.

Цитата Сообщение от locm Посмотреть сообщение
Прежде чем критиковать покажите код на FB реализующий перечисленное для Windows, Linux и MacOS.
Ну вот видите, когда вам нужны эффективные решения, то приходится выходить за рамки стандартной библиотеки, и концепция кроссплатформенности уже не такая чёткая.
Как вы с сетью работаете в блокирующем режиме, оно же повесит всё GUI? Есть ли в PureBasic возможность перейти хотя бы на неблокирующий режим, не говоря уже об асинхронном, в рамках стандартной библиотеки? Есть ли возможность вызвать функцию асинхронно, продолжить работу, а за результатом функции пойти когда он потребуется?

Цитата Сообщение от locm Посмотреть сообщение
То есть предлагаете самостоятельно прикручивать его к FB?
Цитата Сообщение от locm Посмотреть сообщение
это сторонние решения и их нужно самому прикручивать
Я не очень хорошо понимаю невротическую реакцию на скачивание и установку полезных утилит для разработчика. Если какая‐то утилита бесполезна, её можно просто удалить, снизив уровень тревоги.
Вон Станислав Будинов сделал библиотеку window9 для FreeBASIC, там всё скопировано с PureBasic, хотя она не кроссплатформенная (под DOS не работает), только для Вжухндоуз и Linux.

Цитата Сообщение от locm Посмотреть сообщение
Про кеширование в памяти не слышали? Список можно загрузить в память и использовать в дальнейшем.
Я понимаю компиляцию проекта в PureBasic так.
Итак, у меня есть проект из множества файлов. Мои действия.
Я беру первый файл из проекта, запускаю компилятор, для компиляции он загружает все пререквизиты (Я смотрел встроенную справку, там тысячи библиотек), читает много файлов, получая список функций. Получен объектный файл, программа‐компилятор закрывается. Я беру второй файл из проекта, повторяю всё опять. На этом этапе видно, что для каждого файла из проекта происходит чтение всех библиотек. Когда все объектные файла готовы, то запускаю компоновщик, который из объектных файлов сделает исполняемый файл. Готово.
Видимо, вы предлагаете отправлять в компилятор сразу весь список файлов проекта. Получается, что вы каждый раз перекомпилируете все файлы проекта, значит, об инкрементальной сборке речи не идёт. Изменили только одну букву в одном файл и перекомпилировать приходится все 265 файлов проекта.

Цитата Сообщение от locm Посмотреть сообщение
Например в С# или питоне не нужно подключать стандартные файлы библиотек.
Не потому ли, что IDE это делает за вас, а как приходится компилировать внучную, так поди и обязательно укажи все эти «imports System.Шindoшs.Forms.Form;» в параметрах компилятора? Поправьте, если не так.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
До сих пор недопилили автоматическое переключение локалей в экранных режимах из-за чего русский текст невозможно вывести стандартными средствами, только своими фонтами через одно место.
Вы до сих пор застряли эпохе средневековья 1251 или 866? На дворе 21 век, пора переходить на юникод, консоль Свиндоуз прекрасно поддерживает юникод.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Да и графическая библиотека довольно тормозная и приходится использовать сторонние.
Я вообще рекомендую не использовать рантайм фрибесика, он создавался для совместимости с QuickBasic и морально устарел.

Цитата Сообщение от locm Посмотреть сообщение
И правильно что не поддерживаются, иначе легко получить переполнение стека. Как себе представляете хранение строки произвольной длины в стеке?
1. PureBasic берёт на себя слишком много полномочий, решая за программиста какой кусок от стэка ему дозволительно или недозволительно использовать. Патернализм в таких вопросах неуместен.
2. Есть специальные функции для выделения памяти на стэке:
_alloca https://docs.microsoft.com/ru-... w=msvc-160
_malloca https://docs.microsoft.com/ru-... w=msvc-160
3. Даже если запрещаете динамическую аллокацию на стэке, то могли бы разрешить создание строк фиксированной длины на стэке.
4. В PureBasic что, даже фиксированные массивы только в динамической памяти живут?

Цитата Сообщение от locm Посмотреть сообщение
Рантайм у нас что? Операторы языка и все?
(То, что вы здесь подразумеваете под «операторами языка» на самом деле — это statements, выражения, ключевые слова и псевдонимы, а операторы — это «+, -, \, * =» и так далее.)
Рантайм — это жаргонное название библиотеки времени выполнения.
Все операторы языка FreeBASIC — это на самом деле функции в библиотеке времени выполнения.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Ну goto никто там не запрещал, как и глобал. И это хорошо. Язык без goto не язык..
Я бы вообще выкинул из FreeBASIC все синтаксические конструкции и процедурные пережитки, приводящие к неоднозначности, Line, Open, Write, все эти DEFINT, GOSUB, обязательный «_» для переноса строк, возможность говнокодить несколько операторов в одной строке; запретил создание переменных по первому использованию, вызов подпрограмм без скобок, игнорирование возвращаемого значения, однострочный If; добавил нормальную main, Volatile, Interface, Implements, ключевое слово NullPtr.
0
Эксперт по электронике
6990 / 3306 / 341
Регистрация: 28.10.2011
Сообщений: 12,983
Записей в блоге: 7
03.04.2021, 14:04
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Низкий уровень это машинные коды и ассемблер, т.е. 1GL и 2GL соотв. Всё остальное - высокий уровень.
Речь не об этом. Высокоуровневость бывает разной. К примеру Си. Он считается высокоуровневым, но при этом нет динамических массивов, строк и т. д., все через указатели. CoderHuligan, пишет что FB сильно похож на Си с элементами C++ и почти все реализовано через подключаемые библиотеки. Например нет встроенной поддержки компилятором двусвязных списков и ассоциативных массивов.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Списки - это вообще-то вещь не обязательная, где-то есть, где-то нет, приятно если есть и не страшно если нет.
Двусвязный список удобнейшая вещь!

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Реализована уже тысячу раз и на FB разными прогерами.
На указателях?
Вот в этом проблема. Выделив память ее нужно освобождать. Если забыть это сделать будет утечка.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
указатели вещь нужная и полезная
Полезная не спорю, но применять нужно только в случае когда другие варианты менее эффективны.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
нужная и полезная, как и встроенный ассемблер
Проблема асма в том что он для каждого процессора свой. Вот к примеру нужна программа для x86, x64 и ARM. Асм сильно отличается.

Цитата Сообщение от Замабувараев Посмотреть сообщение
Язык программирования должен быть предсказуем
Он предсказуем. В документации все написано и приведены примеры.

Цитата Сообщение от Замабувараев Посмотреть сообщение
Читайте тут https://docs.microsoft.com/en-... heapcreate
и тут https://docs.microsoft.com/en-... -heapalloc
про флаг HEAP_NO_SERIALIZE.
Где там написано про Linux и MacOS? Я ведь не только про винду спрашивал!

Цитата Сообщение от Замабувараев Посмотреть сообщение
Присваивания, конкатенации, получение подстроки, разбиение строки на массив строк по пробелу, регулярное выражение — это всё порождает строки, а значит, создаёт и уничтожает память. Или в PureBasic это не так?
Разве в FB не также?

Цитата Сообщение от Замабувараев Посмотреть сообщение
Выделяет, иначе где ему хранить все эти WindowID.
Винда тоже выделяет. Иначе где хранятся hWnd?

Цитата Сообщение от Замабувараев Посмотреть сообщение
Ну вот видите, когда вам нужны эффективные решения, то приходится выходить за рамки стандартной библиотеки, и концепция кроссплатформенности уже не такая чёткая.
На PB в большинстве случаев не приходится. А в FB стандартной кросплатформенной библиотеки нет.

Цитата Сообщение от Замабувараев Посмотреть сообщение
Как вы с сетью работаете в блокирующем режиме, оно же повесит всё GUI?
В блокирующем режиме только открытие TCP соединения. Все остальное ничего не блокирует.
Многопоточность для чего?

Цитата Сообщение от Замабувараев Посмотреть сообщение
Есть ли в PureBasic возможность перейти хотя бы на неблокирующий режим, не говоря уже об асинхронном, в рамках стандартной библиотеки? Есть ли возможность вызвать функцию асинхронно, продолжить работу, а за результатом функции пойти когда он потребуется?
Торрент-клиент на PB. Торрент клиент
Устанавливаются тысячи соединений как TCP так UDP. Все в одном потоке.

Цитата Сообщение от Замабувараев Посмотреть сообщение
Я беру первый файл из проекта, запускаю компилятор, для компиляции он загружает все пререквизиты (Я смотрел встроенную справку, там тысячи библиотек), читает много файлов, получая список функций.
Компиляция исходника с примерно 20 тысяч строк занимает около 4 секунды (это вместе с линковкой и проверкой полученного файла антивирусом). Теперь подумайте если нужно было читать тысячи файлов с жесткого диска (не SSD) то сколько длилась бы компиляция? Файлов не тысячи а всего лишь несколько десятков.

Цитата Сообщение от Замабувараев Посмотреть сообщение
Получен объектный файл, программа‐компилятор закрывается.
Все не так. Это сишный подход. PB компилирует весь проект целиком.
Компилятор загружается вместе с IDE и в фоне читает файлы библиотек. К моменту компиляции, уже есть список всех функций и нет необходимости повторно читать файлы библиотек.
Цитата Сообщение от Замабувараев Посмотреть сообщение
Есть специальные функции для выделения памяти на стэке:
_alloca https://docs.microsoft.com/ru-... w=msvc-160
_malloca https://docs.microsoft.com/ru-... w=msvc-160
Для динамической строки нужно произвольно менять размер. Нет функции _realloca, а значит выделив память нельзя изменить размер. Или вы предаете строки фиксированной длины? В чем смысл?

Цитата Сообщение от Замабувараев Посмотреть сообщение
3. Даже если запрещаете динамическую аллокацию на стэке, то могли бы разрешить создание строк фиксированной длины на стэке.
Они в стеке располагаются.


Цитата Сообщение от Замабувараев Посмотреть сообщение
(То, что вы здесь подразумеваете под «операторами языка» на самом деле — это statements, выражения, ключевые слова и псевдонимы, а операторы — это «+, -, \, * =» и так далее.)
Чем это поможет кроссплатформенной разработке?

Цитата Сообщение от Замабувараев Посмотреть сообщение
добавил нормальную main, Volatile, Interface, Implements, ключевое слово NullPtr.
Переходите на C++.
1
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
03.04.2021, 14:08
Цитата Сообщение от Замабувараев Посмотреть сообщение
Я бы вообще выкинул из FreeBASIC все синтаксические конструкции и процедурные пережитки, приводящие к неоднозначности, Line, Open, Write, все эти DEFINT, GOSUB, обязательный «_» для переноса строк, возможность говнокодить несколько операторов в одной строке; запретил создание переменных по первому использованию, вызов подпрограмм без скобок, игнорирование возвращаемого значения, однострочный If; добавил нормальную main, Volatile, Interface, Implements, ключевое слово NullPtr.
Я всё же не понимаю смысла троллить Бейсик в разделе Бейсика, перечисляя его достоинства как недостатки?
Замабувараев, для чего ты тут, в Бейсике? Возьми любую реинкарнацию Си, которая близка по духу и будь счастлив, не ограничивай себя!
1
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
03.04.2021, 14:21
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Человек, который пользует только готовое и не
умеет даже в банальные списки самостоятельно - это амёба, в серьёзном программировании такому делать нечего.
Регулярки - тоже самое, доп. функционал. Можно добавить билиотекой, за всю кодерскую жизнь ни разу
не требовалось, громкие понты про эти вещи разводят лишь те, кто кодить не умеет вовсе - я таких дятлов
выкупаю сразу, попадались многие.
Согласен, что проггер должен уметь и в списки и в деревья и т.п. Это азы, в которые каждый должен уметь. Но я же не стану например в веб программировании на PHP, JavaScript и т.п. изобретать велосипеды, которые там уже есть, да там иначе и невозможно: указатели отсутствуют как класс.
Везде свои ниши и пр. Скажите то, что вы написали целой армии веб-девелоперов, они долго будут смеяться. Да и кто сейчас создает велосипеды?..
Цитата Сообщение от Замабувараев Посмотреть сообщение
Я бы вообще выкинул из FreeBASIC все синтаксические конструкции и процедурные пережитки, приводящие к неоднозначности,
Вот наверно такие деятели и потрудились над тем же фортраном превратив его в обычный язык похожий на все остальные.. Гейтс испортил бейсик создав структурный клон алгола.. Языки не должны меняться синтаксически, иначе это уже получаются совершенно другие языки.. Зачем тогда называть их гордыми словами "бейсик", "фортран"? А я бы лично оставил бейсик таким каким он родился, с номерами строк, неструктурным if и пр.. Но вам этого не понять похоже.. Это и был настоящий бейсик, без всяких шор, снобизма, парадигм, корпоративных соглашений и пр.
-------
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
03.04.2021, 18:44  [ТС]
Цитата Сообщение от locm Посмотреть сообщение
На указателях?
Вот в этом проблема. Выделив память ее нужно освобождать. Если забыть это сделать будет утечка.
FreeBASIC поддерживает парадигму RAII: владеющий объект инкапсулирует в себе указатель, при покидании зоны видимости объект автоматически уничтожается, деструктор удаляет память, утечек нет.
Для программ посложнее чем laboratornaya_rabota8.bas во владеющий объект добавляют счётчик ссылок.

Цитата Сообщение от locm Посмотреть сообщение
Нет функции _realloca, а значит выделив память нельзя изменить размер
realloc тривиально заменяется на связку alloca + копирование + freea.

Цитата Сообщение от locm Посмотреть сообщение
Торрент-клиент на PB. Торрент клиент
Устанавливаются тысячи соединений как TCP так UDP. Все в одном потоке.
Это неправда. Вот опровергающие факты.
1. Я нашёл в коде 151 совпадение по ключевому слову Thread.
2. Прямо в коде: «Procedure Core_NetworkEvent_Thread(*x) ; Поток обработки событий сети, в т. ч. и сервера (для входящих соединений пиров).» — то есть уже есть какой‐то отдельный поток для приёма и данных, видимо, чтобы не блокировать GUI.
3. Программа уже при старте создаёт минимум 6 потоков, а Я ещё сделал ничего.

Цитата Сообщение от locm Посмотреть сообщение
Многопоточность для чего?
Вот вы и ответьте, зачем вы её в коде используете.
Я говорил про асинхронность. Асинхронность <> многопоточность.

Цитата Сообщение от locm Посмотреть сообщение
Теперь подумайте если нужно было читать тысячи файлов с жесткого диска (не SSD) то сколько длилась бы компиляция? Файлов не тысячи а всего лишь несколько десятков.
Как раз для этого придумали инкрементальную сборку и make‐подобные утилиты.
Вы для компиляции каждый раз запускаете IDE? А если надо в пакетном режиме, он тоже будет все файлы перестраивать, если изменился только один?

Цитата Сообщение от locm Посмотреть сообщение
Переходите на C++.
«Вы что, хотите как на Си Плас Плас?!»
Я хочу стройность, непротиворечивость синтаксиса, внятную семантику и современные возможности.
0
Эксперт по электронике
6990 / 3306 / 341
Регистрация: 28.10.2011
Сообщений: 12,983
Записей в блоге: 7
03.04.2021, 22:12
Цитата Сообщение от Замабувараев Посмотреть сообщение
Это неправда. Вот опровергающие факты.
1. Я нашёл в коде 151 совпадение по ключевому слову Thread.
2. Прямо в коде: «Procedure Core_NetworkEvent_Thread(*x) ; Поток обработки событий сети, в т. ч. и сервера (для входящих соединений пиров).» — то есть уже есть какой‐то отдельный поток для приёма и данных, видимо, чтобы не блокировать GUI.
Я не писал что один поток в процессе. Я написал работа с сетью в одном потоке.

Цитата Сообщение от Замабувараев Посмотреть сообщение
realloc тривиально заменяется на связку alloca + копирование + freea.
И зачем это? Вам обычных строк мало чтобы вручную такой ерундой заниматься? Чем лучше выделение памяти в стеке по сравнению с выделением в куче? На мой взгляд одни недостатки.

Цитата Сообщение от Замабувараев Посмотреть сообщение
Вот вы и ответьте, зачем вы её в коде используете.
Я говорил про асинхронность. Асинхронность <> многопоточность.
Сетевые функции неблокирующие. Я написал что в одном потоке обслуживаются тысячи сетевых соединений, вся логика торрент-движка и чтение/запись в файлы.

Цитата Сообщение от Замабувараев Посмотреть сообщение
Вы для компиляции каждый раз запускаете IDE?
Я в ней пишу и отлаживаю код. Компиляция это одна из функций IDE.

Цитата Сообщение от Замабувараев Посмотреть сообщение
А если надо в пакетном режиме, он тоже будет все файлы перестраивать, если изменился только один?
Я же написал что построение проекта с 20 тысячами строк занимает примерно 4 секунды. Это много?
1
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
03.04.2021, 22:24
Цитата Сообщение от locm Посмотреть сообщение
Чем лучше выделение памяти в стеке по сравнению с выделением в куче? На мой взгляд одни недостатки.
Не нужно освобождать такую память + выделение такой памяти намного быстрее. Есть конечно и недостатки, такие как ограниченный размер + нельзя возвращать такую память из функции, ну еще некоторые ограничения. Но вывыделение памяти в стеке может пригодится для повышения эффективности кода.
0
Эксперт по электронике
6990 / 3306 / 341
Регистрация: 28.10.2011
Сообщений: 12,983
Записей в блоге: 7
03.04.2021, 23:11
Цитата Сообщение от The trick Посмотреть сообщение
Не нужно освобождать такую память + выделение такой памяти намного быстрее.
Это все понятно. Речь про строки. Причем не статические, а динамические. Это все равно что выделять динамический массив в стеке и потом менять его размер.
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
04.04.2021, 00:55
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Скажите то, что вы написали целой армии веб-девелоперов, они долго будут смеяться.
Видел я эту армию девелоперов, с прецедентами. Из пяти ослов кодить умеет дай бог один.
Под одну какую-то систему исполнения, не более. Причём кодить - это громкое слово для этих людей
ибо там кодингом и не пахнет, лишь манипуляция чужими трудами(библиотеками, возможностями сред и т.п.).
И легко встану в сравнение с любым программистом, ибо не стыдно.
Так же легко предложу пописать то же самое, что писал я, в тех же самых условиях(хоть это и трудно
организовать, но если это сделать - правда всплывёт сама по себе) даже распишу в чём преимущества
того или иного ПО, а также в чём заключается сложность.

Цитата Сообщение от locm Посмотреть сообщение
но применять нужно только в случае когда другие варианты менее эффективны.
Пётр, ты как проф. программист и без моих комментов прекрасно знаешь, что любые другие варианты
с точки зрения производительности менее эффективны. Ну если конечно целевая задача не вписывается
в рамки обычного массива. Удобство обычно побеждает, однако я сторонник прямого способа достижения цели,
т.е. полного отражения того как оно алгоритмически расписано в код, и если вещь требует нескольких
вложенных уровней указателей, то разбивать эту "природно-натуральную" структурную организацию
на несколько частей не нужно. И уверен что ты понимаешь почему я это говорю, потому что есть кони-люди,
которые начнут разбивать, потому что мозгу видите ли сложно. Есть довольно не субъективная вещь,
качество движка, когда в коде нет ничего лишнего, только целевой алгоритм и всё формализовано
мы получаем 100% качество движка и никакие ухищрения не сделают его объективно лучше.
И прекрасно видно, что на то, про что пишу закрывают глаза куча народу, именно поэтому, баги, сложности
с модернизацией софта, сложности с построением архитектуры, многократное "ожирение" ПО и это лишь
часть проблем.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
да там иначе и невозможно
Всё возможно когда люди не кони. Любому WEB сервису я с громадным удовольствием предпочту
обычное приложение написанное на любом из классических ЯП: с++, Pascal, BASIC.
Мода вещь страшная, она туманит разум людей.
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
04.04.2021, 07:39
Цитата Сообщение от locm Посмотреть сообщение
Чем лучше выделение памяти в стеке по сравнению с выделением в куче? На мой взгляд одни недостатки.
Ничем. Эту тему я поднимал ещё ой как давно. Мужики по-моему над нами угарают.
Не знаю где люди этого набрались и почему нам выдают эти мимолётные вещи в виде понта за прописные истины.
И так понятно что это не ВУ и стандартом никогда не станет, что такой код это исключительно
рукописное асмовое
, применимое строго местно и микроскопически.
И ты, как никто другой знаешь, что происходит с отладчиком, когда начинаешь так юлить. т.е. SUB SP, размер и т.д.
В общем-то понятно, что не выделить память(а нам говорят именно про выделение) надолго, сдвинув регистр SP
не получится, потому что другие участки кода в прямом смысле ждут, когда же этот долбаный кусок отработает
чтобы получить в т.ч. и то что было положено в стек ранее. Более того, злоупотребление этим, а так же
рекурсивными алгоритмами может привести и так или иначе приведёт к жопе, причём как назло в самый
важный момент. Причём когда речь про стек проблема может быть даже не в том, чтобы выделить, а в том,
чтобы это говно ещё адресовать, когда там в коде крутятся вереницы циклов лихо сохраняя и загружая
регистры в стек. Т.е. это сидение с линейкой и отмерами по миллиметрам(байтикам), то ещё дело.
Т.е. это не рядовой кодинг, это именно асм, оптимизация, лютое задротство и сидение с линейкой.
А так да работа с памятью не быстрая и программист должен в т.ч. предполагать когда её
нужно выделять и сколько, лучше выделять большими кусками(не всегда возможно и не всегда необходимо сразу,
это и повлекло все эти доп прослойки, сборщики и прочий "вертихвостинг"), это всё закладывается в архитектуру софта.
За счёт памяти, например, делается львиная доля табличных операций и выделить 48 мегабайт ускорив
программу, имея гигабайт - рационально, выгодно, имея же 64 - мягко говоря не очень. Нормальная прога
тоже должна это всё чувствовать, где она плавает в какой среде, что можно сделать, а чего лучше не делать.
0
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
04.04.2021, 11:47
Цитата Сообщение от locm Посмотреть сообщение
Это все понятно. Речь про строки. Причем не статические, а динамические. Это все равно что выделять динамический массив в стеке и потом менять его размер.
Ну динамическую строку, теоретически можно и в стеке выделить (просто расположить ее в самом конце локальных переменных), правда так почти никто не делает. В стеке память как правило выделяется для фиксированных данных.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Ничем. Эту тему я поднимал ещё ой как давно. Мужики по-моему над нами угарают.
Не знаю где люди этого набрались и почему нам выдают эти мимолётные вещи в виде понта за прописные истины.
Используется чаще чем ты думаешь, тем более в этом нет ничего сложного, а по скорости это уделает любую другую память. Главное условие - внутри функции размер не должен изменяться. Вызывающая процедура может задать любой размер динамически (разумеется в пределах памяти стека):
]

Цитата Сообщение от Quiet Snow Посмотреть сообщение
И так понятно что это не ВУ и стандартом никогда не станет, что такой код это исключительно
рукописное асмовое, применимое строго местно и микроскопически.
Нет, это как раз ВУ и есть такая функция alloca.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
И ты, как никто другой знаешь, что происходит с отладчиком, когда начинаешь так юлить. т.е. SUB SP, размер и т.д.
Что с ним должно происходить?

Цитата Сообщение от Quiet Snow Посмотреть сообщение
В общем-то понятно, что не выделить память(а нам говорят именно про выделение) надолго, сдвинув регистр SP
не получится, потому что другие участки кода в прямом смысле ждут, когда же этот долбаный кусок отработает
чтобы получить в т.ч. и то что было положено в стек ранее.
Ты совершенно неправильно представляешь сценарий в котором используется такое выделение. Такую память нельзя передавать "наверх", но без проблем можно "вниз".

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Причём когда речь про стек проблема может быть даже не в том, чтобы выделить, а в том,
чтобы это говно ещё адресовать, когда там в коде крутятся вереницы циклов лихо сохраняя и загружая
регистры в стек.
Надуманная проблема.
0
Эксперт по электронике
6990 / 3306 / 341
Регистрация: 28.10.2011
Сообщений: 12,983
Записей в блоге: 7
04.04.2021, 11:59
Цитата Сообщение от Quiet Snow Посмотреть сообщение
любые другие варианты с точки зрения производительности менее эффективны.
На фоне других приложений и работы ОС прирост производительности будет минимальным, а ответственность при написании кода многократно выше.
Имеет смысл когда у процессора низкая производительность и мало памяти (например у микроконтроллеров).
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
04.04.2021, 12:55  [ТС]
Цитата Сообщение от locm Посмотреть сообщение
Речь про строки. Причем не статические, а динамические.
Память в стэке выделяется динамически, значит, строка тоже динамическая.
0
Эксперт по электронике
6990 / 3306 / 341
Регистрация: 28.10.2011
Сообщений: 12,983
Записей в блоге: 7
04.04.2021, 13:37
Цитата Сообщение от Замабувараев Посмотреть сообщение
Память в стэке выделяется динамически, значит, строка тоже динамическая.
Пример встудию!
Потому что написать каждый может, а вы сделайте и чтобы код был понятным и работало без сбоев.
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
04.04.2021, 16:11
Цитата Сообщение от The trick Посмотреть сообщение
Надуманная проблема.
Нет не надуманная, если писать на асме руками, опухнешь. Банально несколько внутренних циклов.
Каждый сохраняет и выгружает регистры в стек, Stack Pointer постоянно скачет, а регистры все заняты
на алгоритм, лишних нет, а если это надо делать внутри какого-то из циклов, да ещё и по условию -
ещё больше гемора. Если нужна память, лучше заранее понять сколько её надо, выделить и не
выпендриваться, своя же голова в итоге целее будет.
И дело не только в процедурах, где можно в начале и в конце процедуры этот вопрос урезонить(с
контролем SP\ESP), а например во всей программе в целом.

Цитата Сообщение от The trick Посмотреть сообщение
Что с ним должно происходить?
Попробуй на PB это сделать и использовать его собственный отладчик. И попробуй разные
значения резервировать, он тупо терминирует прогу. Я то обойдусь без отладчика, а вот обойдётся
ли кто другой и вообще поймёт ли он что случилось.

Цитата Сообщение от The trick Посмотреть сообщение
Нет, это как раз ВУ и есть такая функция alloca.
1 частный случай экстраполировать на всё?
На бейсиках и паскалях этого нет. В действительности это довольно низкоуровневый функционал.
Без досконального понимания лучше туда не лезть.
То что сделали на си - лишь частное исключение, там много таких штук, чтобы себе бошку потом сломать.
И думаю нюансов там дофига и больше. Особенно по части производительности.

Цитата Сообщение от The trick Посмотреть сообщение
а по скорости это уделает любую другую память.
Ну и зачем мне CALL'ы в проге? по 50 тактов жрут на старых компах.
Я лучше заведу память заранее сколько надо, тем паче ты же сам говоришь что его для фиксированных
используют, вдвойне бессмысленно и втройне геморройно. Плюс ещё следить за размером стека.
Людям то расскажешь, но кто знает у кого какие аппетиты. geh вот то и дело рекурсию свою сраную пишет
и попробуй ему растолкуй что это чревато.

Цитата Сообщение от locm Посмотреть сообщение
На фоне других приложений
На фоне коряво написанных приложений, где чуваки решили использовать встройки, да ещё
и разбить цельную структуру на несколько частей, работая с ними по отдельности - будет приличный прирост.
Тут к гадалке не ходи.

Цитата Сообщение от locm Посмотреть сообщение
а ответственность при написании кода многократно выше.
Разумеется. Платишь ответственностью за хороший код. Тут нет подвоха.

Добавлено через 12 минут
Цитата Сообщение от Замабувараев Посмотреть сообщение
Память в стэке выделяется динамически, значит, строка тоже динамическая.
Эдак ты выкрутился. Ну да, всё так. Формально вопросов нет, только это геморрой.
Даже если представить что мы делаем какую-то неепически крутую операцию типа вывода
сетки символов(частый кейс для полноэкранных режимов) то наверное все эти бенефиты
не дадут и процентов 2-3 даже на старом MMX-е 200-м. А если чувак грамотно всё рассчитал и
завёл память заранее - то они и вообще ничего не дадут.
Чтобы были какие-то приросты, нужно чтобы вся прога состояла только из работы со строками,
но что это за софт? Наверное не веб сервер, который большую часть времени ждёт коммуникаций.
0
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
04.04.2021, 16:24
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Нет не надуманная, если писать на асме руками, опухнешь. Банально несколько внутренних циклов. Каждый сохраняет и выгружает регистры в стек, Stack Pointer постоянно скачет, а регистры все заняты
на алгоритм, лишних нет, а если это надо делать внутри какого-то из циклов, да ещё и по условию -
ещё больше гемора. Если нужна память, лучше заранее понять сколько её надо, выделить и не
выпендриваться, своя же голова в итоге целее будет.
И дело не только в процедурах, где можно в начале и в конце процедуры этот вопрос урезонить(с
контролем SP\ESP), а например во всей программе в целом.
Во-первых, зачем писать руками на асме? Я писал в контексте того что этим занимается компилятор бейсика. Во-вторых, даже на асме никаких трудностей не возникнет. Чем загрузка и выгрузка регистров в стек отличается от загрузки выгрузки в другую память? Это все надуманная проблема еще раз повторю, сейчас даже компиляторы асма имеют макросредства которые позволяют забыть об регистре-указателе стека, не говоря уже о ЯВУ.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Попробуй на PB это сделать и использовать его собственный отладчик. И попробуй разные
значения резервировать, он тупо терминирует прогу. Я то обойдусь без отладчика, а вот обойдётся
ли кто другой и вообще поймёт ли он что случилось.
Не знаю как в PB, я говорю с позиции отладчика студии и вообще логики. SUB ESP, XXX - конструкция пролога почти в любой функции которая резервирует место под локальные переменные, даже в PB скорее всего так.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
1 частный случай экстраполировать на всё?
На бейсиках и паскалях этого нет. В действительности это довольно низкоуровневый функционал.
Без досконального понимания лучше туда не лезть.
То что сделали на си - лишь частное исключение, там много таких штук, чтобы себе бошку потом сломать.
И думаю нюансов там дофига и больше. Особенно по части производительности.
Какой частный случай? Ну есть еще malloca к примеру которая выбирает сама где выделить память в хипе или стеке в зависимости от размера. Давай если ты говоришь о каких-то сложностях и т.п. неочевидностях выделения памяти в стеке пиши конкретно о них, а не вот эти вот хитровывернутые высказывания из которых ни черта не понятно.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Ну и зачем мне CALL'ы в проге? по 50 тактов жрут на старых компах.
Я лучше заведу память заранее сколько надо, тем паче ты же сам говоришь что его для фиксированных
используют, вдвойне бессмысленно и втройне геморройно. Плюс ещё следить за размером стека.
Людям то расскажешь, но кто знает у кого какие аппетиты. geh вот то и дело рекурсию свою сраную пишет
и попробуй ему растолкуй что это чревато.
Ну опять надуманные сложности какие-то. Зачем где-то заводить память (что намного дольше по времени), потом ее еще освобождать, когда можно просто выделить нужную память одной инструкцией SUB ESP, XXX? На асме вообще можно не выделять ничего вообще. Сам подумай зачем выделять где-то локальную память если у нас уже есть нужный регион памяти.
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
04.04.2021, 19:32
Цитата Сообщение от The trick Посмотреть сообщение
Зачем где-то заводить память (что намного дольше по времени), потом ее еще освобождать, когда можно просто выделить нужную память одной инструкцией SUB ESP, XXX?
Потому что ты не сможешь пользоваться стеком, двинул поинтер, куда он указывает? Явно не туда
где он был, где были сохранённые до этого момента регистры, значит надо обсчитать кусок алгоритма,
вернуть поинтер на место, чтобы можно было продолжить пользоваться стеком(Push\Pop).
А выделил память, регистры заполнил, свободных нет, а память надо адресовать регистром, хранить лишний поинтер,
а регистров мало, значит надо сохранить поинтер в переменную(например глобальную), чтобы высвободить
регистр и потом заново эта котовасия.

Добавлено через 14 секунд
Цитата Сообщение от The trick Посмотреть сообщение
Зачем где-то заводить память (что намного дольше по времени), потом ее еще освобождать, когда можно просто выделить нужную память одной инструкцией SUB ESP, XXX?
Потому что ты не сможешь пользоваться стеком, двинул поинтер, куда он указывает? Явно не туда
где он был, где были сохранённые до этого момента регистры, значит надо обсчитать кусок алгоритма,
вернуть поинтер на место, чтобы можно было продолжить пользоваться стеком(Push\Pop).
А выделил память, регистры заполнил, свободных нет, а память надо адресовать регистром, хранить лишний поинтер,
а регистров мало, значит надо сохранить поинтер в переменную(например глобальную), чтобы высвободить
регистр и потом заново эта котовасия.
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
04.04.2021, 20:01  [ТС]
Цитата Сообщение от Quiet Snow Посмотреть сообщение
двинул поинтер, куда он указывает? Явно не туда
где он был, где были сохранённые до этого момента регистры, значит надо обсчитать кусок алгоритма,
Нет конечно. Адресация локальных переменных идёт через rbp, а он не меняется.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.04.2021, 20:01
Помогаю со студенческими работами здесь

Стоит ли изучать как устроена ЭВМ для эффективного программирования
Всем дробового времени суток (пятница!!!) Стоит ли изучать как устроен ЭВМ для эффективного программирования на плюсах ?

Подскажите ссылки на приемы программирования для Embedded
Народ! Подскажите пожалуйста ссылки, на приемы и упражнения по программированию, с разьяснениями по встраеваемому ПО. Заранее благодарю!

Нужны сайты про C#, приемы, рецепты, трюки программирования
Не советуйте msdn или книгу. Справочник должен быть похож на другие стандартные справочники как у delphi, которых полно в инете, а к C#...

Интересны приемы программирования, о которых не пишут в книгах, а которые узнаются на практике
интересны приемы программирования на C# те о которых не пишут в книгах, которые узнаются на практике. какие OpenSource проекты можете...

Общие вопросы.
Доброго времени суток! После изучения Паскаля, решил перейти на изучение С/С++, прочитал много мануалов для новичков, но накопились...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
100
Ответ Создать тему
Новые блоги и статьи
Транскрипция 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 появились три новые механики — выгорание через накопленную усталость,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru