Форум программистов, компьютерный форум, киберфорум
QBasic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.96/54: Рейтинг темы: голосов - 54, средняя оценка - 4.96
Модератор
1245 / 676 / 292
Регистрация: 10.11.2019
Сообщений: 1,406

101 Basic Computer Games

25.05.2024, 16:17. Показов 18727. Ответов 273
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Недавно я натолкнулся в сети на книгу, о которой никогда не слышал.
Книга называется "101 Basic Computer Games". Она была выпущена DEC в 1975 году
и содержит тексты игр с аннотациями. Игры написаны на BASIC, на компьютере PDP-11.

Очень интересная коллекция для начинающих программистов, и не только.

Коллекция игр с описаниями и переводом на другие языки программирования находится по адресу:

https://github.com/coding-horr... uter-games
4
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.05.2024, 16:17
Ответы с готовыми решениями:

Создайте график функций x^3 на отрезке [-101; 101]. В качестве значений используйте массив x размером в 101 элемент
Создайте график функций x^3 на отрезке . В качестве значений используйте массив x размером в 101 элемент. Для создания массива значений...

Coodo Games & Datcroft Games Java Developer (Самара)
В Самарский офис требуется талантливый разработчик. 
О нас: - Мы разрабатываем только лучшие игры. Наши запущенные продукты:...

Coodo Games & Datcroft Games AS3.0 Developer (Самара)
В Самарский офис требуется талантливый разработчик. 
О нас: - Мы разрабатываем только лучшие игры. Наши запущенные продукты: Fragoria,...

273
03.10.2024, 21:21
Студворк — интернет-сервис помощи студентам

Не по теме:

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Зачем тогда к ним в том же чип&дип указывают максимальное напряжение?
Наверное обратное напряжение, при котором диод закрыт. Это предельное напряжение, больше которого будет пробой (коричневый цвет на картинке ниже).
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Дело то не в этом,
можно подать на 3,5 вольтовый светодиод, скажем 12 вольт с допустимым током(пересчитать по Ваттам)
Если с ограничением по току то это будет уже не 12 а около 3.5 вольт. У диода очень крутая вольт-амперная характеристика. Увеличение напряжения на 0.1 вольт может значительно увеличить ток.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Можно попроще?
Картинка от Вики.

Смотрите зеленую часть. По оси X напряжение, а по Y - ток. Незначительное увеличение напряжения приводит к большому росту тока.
То есть напряжение на диоде почти не растет, в то время как ток значительно увеличивается. Поэтому для светодиода ограничивают ток, а не прямое напряжение.
Если подадите 12 вольт без ограничения тока, ток станет таким большим что светодиод сгорит.
Что произойдет при ограничении тока? Попустим светодиод начинает светится при напряжении 2 вольта. В этом случае 10 вольт будет падать на источнике тока (резистор, активный ограничитель тока и т. д.), а 2 вольта на светодиоде.
Проверить это легко, собрав схему из светодиода и переменного резистора, подав на ее напряжение и измерив напряжение на светодиоде и на переменном резисторе при изменении сопротивления.

0
1406 / 864 / 93
Регистрация: 08.02.2017
Сообщений: 3,682
Записей в блоге: 2
04.10.2024, 02:27
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Если в том же си++ вариантов сделать одно и то же простое действие несколько сотен, то на бейсике
их не будет и пяти, он искусственно ограничивает это многообразие чтобы не было проблем у кого-либо
разобрать код и это правило уже давно забыто бездумными разрабами, которые не понимают этой
идеологии, они искусственно повышают комплексность диалектов, отходя от канонов.
Я конечно далек от системного программирования, но просто я скажу мысль, которая мне приходила при просмотре какого-нибудь сложного кода. Допустим, если отойти от идеи читабельности кода, как таковой, даже.. В таком случае не плохо было бы иметь какой-то визуальный схемопстроитель. Допустим просматриваешь/пишешь код, а в дополнительном окне автоматически генерируется схема. Любой код это всегда совокупность вложенных конструкций и переходов, которые можно представить визуально легче усваиваемо, Наверное.. Не знаю, короче, может быть такое где есть уже, лень проверять, может быть это бред.. )
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
04.10.2024, 13:14
Цитата Сообщение от locm Посмотреть сообщение
Во вложении прога скомпилированная в PB с использованием сишного (GCC) backend. Размер 4 КБ.
Простой вызов message box путем вызова одной единственной апишной функции. На fasm тоже самое можно сделать. Еще короче получится. Вы просто вырезали сишную ран-тайм библиотеку сработав напрямую. При этом ваш код стал абсолютно непереносим. А теперь попробуйте под консоль на чистом си сделать. Да, конечно, писать драйвера можно и файл получиться минимальным. Но у вас не будет ран-тайм.
Цитата Сообщение от locm Посмотреть сообщение
Суть в том что компилятор Си может создавать исполняемые файлы небольшого размера.
А никто с этим и не спорит. Речь шла о стандартной сишной библиотеке времени выполнения. Си вообще не знает что такое api. Я же упоминал консольный hello, а вы мне виндовым тычете.
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Тут вопрос к хулигану про какой компиль конкретно он писал.
Про все. Подключите стандартный stdio.h и посмотрите размер итогового файла. Вот почему это так мне кто-нибудь даст ответ?. Речь шла о мусорной архитектуре.
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Вот сколько людей не читал, идеологию того же бейсика по сути мало кто понял.
Его основная фишка в урезании "изъяснительных" особенностей, именно особенностей, для того чтобы
вариантов выполнения каких-то базовых вещей(то из чего состоят алгоритмы) было минимум.
Да. Но современные диалекты были искусственно подтянуты к мэйнстрим языкам. И они стали все очень похожи друг на друга. Минимализм ушел в небытие.. У всех есть if else, switch, while, for и т.п. Как бы если что-то отсутствует из базового набора, то это уже считается недоязыком. В первоначальном basic не было даже else, хватало goto. И это было правильно. Потом Билл Гейтс предложил вариант "улучшенного" basic. Напихав кучу того, что нужно и ненужно. Дошло до того, что некоторые "basic" ввели поддержку объектов..
Я о чем: basic давно уже нет. Нет минимализма. Современные васики как буд-то соревнуются с друг другом -кто из них больше будет похож на больших братьев. Но вот встает вопрос: а зачем надо быть такими как большие братья? Зачем обязательно надо из кожи вон лезть, чтобы быть "как все". Ведь это значит потерять свою самобытность, свою изюминку, а значит просто исчезнуть растворившись в общем базовом супе..
Меня это не устраивает.
Ну и можно добавить, что basic вырос из интерпретатора. Первоначально текст сразу компилировался в код. Вот почему в этом языке так много артефактов этой природы например data/read. Это потому что интерпретатор прыгал по тексту и даже в промежуточный код (P-код) не компилировал. А потом появились чистые компиляторы и data/read стали артефактом.
0
Эксперт по электронике
7140 / 3320 / 341
Регистрация: 28.10.2011
Сообщений: 13,054
Записей в блоге: 7
04.10.2024, 14:01
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Простой вызов message box путем вызова одной единственной апишной функции. На fasm тоже самое можно сделать. Еще короче получится.
Речь была не про фасм, а про то что компиляторы Си могут создавать компактные исполняемые файлы.
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Вы просто вырезали сишную ран-тайм библиотеку сработав напрямую.
Я ничего не вырезал, вообще. Так собирает PB компиль. В его работу я не лез.
Ничего не мешает вручную сделать тоже самое и получить небольшой exe если в этом есть необходимость.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
А теперь попробуйте под консоль на чистом си сделать.
Какая разница, на чистом Си или на PB с трансляцией в Си? Так или иначе объектник создает Си-компиль.
Скомпилировал на PB (с трансляцией в Си) код
C
1
printf("Hello world");
и получил размер исполняемого файла - 3 КБ. Что я делаю не так? Где ваши 30 - 40 КБ?

Цитата Сообщение от CoderHuligan Посмотреть сообщение
При этом ваш код стал абсолютно непереносим.
Почему?
Если в первом коде заменить MessageBox(), на MessageRequester() размер файла увеличится до 5 КБ (не из-за Си, а из-за рантайма PB), а код можно скомпилировать под все поддерживаемые платформы (Win, Lin, Mac).
Во втором коде (консоль) использована стандартная сишная функция printf() и тоже не должно быть проблем с переносимостью.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Речь шла о стандартной сишной библиотеке времени выполнения.
Не нравится то что она увеличивает вес прог, напишите свою.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Про все. Подключите стандартный stdio.h и посмотрите размер итогового файла.
Функция printf() из stdio. Размер 3 КБ.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
В первоначальном basic не было даже else, хватало goto. И это было правильно.
Если нравится запутанный код, не используйте новые возможности. Пишите без esle используя goto. Потом будете долго искать что к чему и как все это распутать.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
зачем надо быть такими как большие братья?
Раньше проги были небольшие из-за ограничений ресурсов ПК. Сейчас можно написать и скомпилировать прогу, содержащую миллионы строк кода. Если ЯП сильно упрощен, то написать и поддерживать код будет очень сложно.
Поэтому все эти пространства имен, структурное и объектное программирование появилось не просто так. Если убрать все это из бейсика, он станет непригодным для практического использования и так и останется учебным языком.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Ну и можно добавить, что basic вырос из интерпретатора. Первоначально текст сразу компилировался в код.
Нет. Он выполнялся строка за строкой без компиляции.
Может и было промежуточное представление кода чтобы сократить использование ОЗУ, которого было очень мало. Но это не совсем компиляция.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Вот почему в этом языке так много артефактов этой природы например data/read.
В PB они до сих пор есть, но мало кто пользуется оператором Read. А вот Data используется часто, поскольку позволяет "прошить" произвольные данные (включая файлы с диска) в exe с доступом по указателю.
Вложения
Тип файла: 7z Консоль Си backend.7z (984 байт, 14 просмотров)
1
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
04.10.2024, 14:58
Цитата Сообщение от locm Посмотреть сообщение
Скомпилировал на PB (с трансляцией в Си) код
В вашем коде я не увидел подключение stdio. Потому что вы упорно постите код на пьюрике. А я же вел речь не о нем. Конечно молодец pure что так может, но речь идет о чистом Си. В gcc минимальный не менее 30 кб. В LCC 40. В VC около 20. С stdio.
Цитата Сообщение от locm Посмотреть сообщение
Если убрать все это из бейсика, он станет непригодным для практического использования и так и останется учебным языком.
В асме тоже нет высокоуровневых фич, но почему то он используется имеет свою нишу.
Цитата Сообщение от locm Посмотреть сообщение
Пишите без esle используя goto. Потом будете долго искать что к чему и как все это распутать.
Опять старая песня. Зачем искать, если есть документация? Если нет документации, то даже заглядывать в код не стоит,на каком бы языке он не был бы написан. Если вы не цените свое время: флаг в руки..

Добавлено через 2 минуты
Код не должен быть "самодокументируемым". Это чистый миф.
0
Эксперт по электронике
7140 / 3320 / 341
Регистрация: 28.10.2011
Сообщений: 13,054
Записей в блоге: 7
04.10.2024, 15:28
Цитата Сообщение от CoderHuligan Посмотреть сообщение
В вашем коде я не увидел подключение stdio.
Функция printf() откуда берется?
Не из синшой библиотеки?

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Конечно молодец pure что так может, но речь идет о чистом Си. В gcc минимальный не менее 30 кб.
В том то и дело что используется GCC. Откройте exe файл в hex редакторе или в крайнем случае в блокноте и там найдете строку
GCC: (i686-win32-dwarf-rev2, Built by MinGW-W64 project) 12.2.0
Повторюсь, бейсик транслируется в Си, а после компилируется в объектный файл используя GCC.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
В асме тоже нет высокоуровневых фич, но почему то он используется имеет свою нишу.
И сколько вы знаете прог полностью написанных на асме? Есть хоть один современный браузер, антивирус, другое популярное ПО, полностью написанное на асме? У асма кроме всего прочего есть зависимость от инструкций проца. Только чтобы перенести с x86 на x64, нужно не мало переписать кода, а про портирование с Intel на ARM и говорить нечего - 100% нужно переписать.
У ЯВУ с этим проще.
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
04.10.2024, 16:17
Цитата Сообщение от locm Посмотреть сообщение
Смотрите зеленую часть. По оси X напряжение, а по Y - ток. Незначительное увеличение напряжения приводит к большому росту тока.
То есть напряжение на диоде почти не растет, в то время как ток значительно увеличивается. Поэтому для светодиода ограничивают ток, а не прямое напряжение.
Если подадите 12 вольт без ограничения тока, ток станет таким большим что светодиод сгорит.
Что произойдет при ограничении тока? Попустим светодиод начинает светится при напряжении 2 вольта. В этом случае 10 вольт будет падать на источнике тока (резистор, активный ограничитель тока и т. д.), а 2 вольта на светодиоде.
Проверить это легко, собрав схему из светодиода и переменного резистора, подав на ее напряжение и измерив напряжение на светодиоде и на переменном резисторе при изменении сопротивления.
Во, совсем другое дело. Нормальным языком. Спасибо за такое подробное объяснение.
Плюс я ещё несколько видео посмотрел по диодам, много нового узнал.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Про все. Подключите стандартный stdio.h и посмотрите размер итогового файла. Вот почему это так мне кто-нибудь даст ответ?. Речь шла о мусорной архитектуре.
Возможно ты не учёл какой-нибудь ключ компилятора для исключения неиспользуемых функций
из бинарника. Возможно там такого нет, но это странно, т.к. линкер всегда знает все зависимости.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
В первоначальном basic не было даже else, хватало goto.
Не хватало. GOTO даёт макаронинг. Людей не нужно учить массово применять GOTO.
Это спец оператор, для "тяжёлых случаев", чтобы не переписывать пол программы, т.к. не всегда можно
структурировать тысячи строк кода идеально, особенно если пишется модулями по кускам.
Структурный вид - это необходимый процесс и "самодокументируемость" тут не причём.

Цитата Сообщение от testuser2 Посмотреть сообщение
Я конечно далек от системного программирования, но просто я скажу мысль, которая мне приходила при просмотре какого-нибудь сложного кода. Допустим, если отойти от идеи читабельности кода, как таковой, даже.. В таком случае не плохо было бы иметь какой-то визуальный схемопстроитель. Допустим просматриваешь/пишешь код, а в дополнительном окне автоматически генерируется схема. Любой код это всегда совокупность вложенных конструкций и переходов, которые можно представить визуально легче усваиваемо, Наверное.. Не знаю, короче, может быть такое где есть уже, лень проверять, может быть это бред.. )
Это не бред. Про "визуальное программирование" ещё давно говорил - что за ним будущее.
Однако раскладывать код на блок схему та ещё задача - это должен быть очень сложный софт.
Плюс без чисто программерской документации ситуацию это не сильно спасает.
И много раз думал про это, "визуальный схемописатель" это вещь, но конечно без автогенерации,
суть в том чтобы делать документацию под код в одном софте. Или допустим включать отдельный леер(слой),
на котором пояснения, стрелочки и описания, в общем можно много чего придумать как документировать
здесь и сейчас. Чисто для "финализации"(в т.ч. в плане оформления) работы. Просто я сторонник того
что быстрее и удобнее это делать не мышкой, а карандашом\ручкой за письменным столом.

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

Добавлено через 3 минуты
Цитата Сообщение от locm Посмотреть сообщение
другое популярное ПО, полностью написанное на асме?
Раньше, говорили, REAPER писали полностью на асме. Сейчас эта одна из самых технологичных DAW,
шкуры понятно переписали на ВУ, но сами механизмы остались те же самые.
1
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
04.10.2024, 16:26
Цитата Сообщение от locm Посмотреть сообщение
В том то и дело что используется GCC.
Нет. Это потому, что пьюрик использует вот ту самую свою собственную реализацию стандартного ран-тайма.
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Людей не нужно учить массово применять GOTO.
Чтобы понять алгоритм, его нужно не только увидеть, но и разложить по шагам. Каждый шаг это - состояние. Состояние - абстракция. У абстракции есть имя. Будет ли это метка или что-либо еще, это другой вопрос. Но кодинг без абстрагированного представления алгоритма это вот тот самый настоящий макароннинг. Где только while, for и т.д. от которых в глазах рябит, и весь код вот такой. Вот почему вам нужна визуализация, чтобы понять алгоритм. Это - цена ухода от представления алгоритма, как последовательности именованных шагов. Цена еще и в том, что доказать правильность такой записи алгоритма, невозможно, так как все эти конструкции типа if else, while, вообще-то высосаны из пальца. То что из них можно составить любой алгоритм - правда, но иногда совершенно неэффективный. То, к чему привыкло большинство, не обязательно должно быть правильным.
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
04.10.2024, 16:46
Цитата Сообщение от locm Посмотреть сообщение
а про портирование с Intel на ARM и говорить нечего - 100% нужно переписать.
ARM скажем так, появился очень не вовремя. 40 лет ничего не происходило и вот на тебе,
это говно лезет в десктоп сектор.
Со своим сумбуром в версиях, документации. Ведь достаточно сравнить банально количество
и качество литературы за все годы созданное, по ассемблерам. И мы поймём к чему нас ведут.
Надеюсь этого вот не произойдёт в ближайшее будущее:

https://www.cnews.ru/news/top/... _ee_hochet

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

Добавлено через 16 минут
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Где только while, for и т.д. от которых в глазах рябит, и весь код вот такой.
Код уже давно не такой, ты отстал от жизни. Почитай современные коды. Бошка вспухнет.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Нет. Это потому, что пьюрик использует вот ту самую свою собственную реализацию стандартного ран-тайма.
Так никто не мешает тебе сделать так же, в своей реализации ЯП.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Состояние - абстракция. У абстракции есть имя.
Состояние это состояние, а твоя абстракция это не абстрагирование про которое писал, ты меня не так понял.
Делать состояния в коде - это неэффективно тебе уже это показали на примерах.
Работает только для самых примитивных случаев. Требуется крайне редко, крайне.
И не даёт оно по оптимизации сколько ты думаешь, а геморроя даёт до остервенения много.
Выучить пару лупов, свитч и if-else - это трудная задача? Для того чтобы писать простой код и
тебя люди понимали? Да ну...
Те коды которые были на GOTO, это жуткая дроч, которую невозможно расплести.
Кто ковырял - знает. Потому что "рекурсиевидные" составные "состояния" алгоритма неотделимы.
И это не пахнет разложением по шагам. Это "майнд геймс" для задротов.
1
Эксперт по электронике
7140 / 3320 / 341
Регистрация: 28.10.2011
Сообщений: 13,054
Записей в блоге: 7
04.10.2024, 16:54
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Это не бред. Про "визуальное программирование" ещё давно говорил - что за ним будущее.
Есть hiasm.
Для чего-то простого пойдет, но для сложных программ не лучший выбор, т. к. читать схему затруднительно, а отлаживать вообще непонятно как. В этом плане текстовый код имеет преимущество.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
Пространства имён же это не об ООП
Я имел в виду усложнение ЯП о которых пишет CoderHuligan.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
REAPER писали полностью на асме.
Он собран для x86/x64/arm64.
Может есть (или раньше были) небольшие вставки на асме, но не думаю что разработчики переписывали чуть ли не с нуля под каждую архитектуру проца. В общем, асм конечно хороший, но сильно процессоро-зависимый.
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
04.10.2024, 17:14
Цитата Сообщение от locm Посмотреть сообщение
т. к. читать схему затруднительно, а отлаживать вообще непонятно как.
Тоже так считаю. Применяю схематику, но на бумаге. И в основном это именно крупные блоки,
когда каждый блок это целый набор действий.

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

Цитата Сообщение от locm Посмотреть сообщение
Может есть (или раньше были) небольшие вставки на асме, но не думаю что разработчики переписывали чуть ли не с нуля под каждую архитектуру проца.
Под ARM могли написать уже на си, заново.

Цитата Сообщение от locm Посмотреть сообщение
но не думаю что разработчики переписывали чуть ли не с нуля под каждую архитектуру проца.
Скорее всего они переписывали и asm код. С тех времён много новых SIMD добавилось, а это там основной
элемент для оптимизации. Про ARM ничё не знаю, предполагать не буду.
Просто довольно трудно представить, что вся огромная индустрия будет переводить свои плагины(VST(i))
на ARM, но что-то подсказывает - не будет. Как-ты понимаешь они поголовно на x86\x64. 25 лет их писали
на x86. Много авторов уже не у дел. А без плагинов и инструментов DAW это как простой многодорожечный диктофон.
Ну т.е. в разы менее полезен.
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
04.10.2024, 17:25
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Выучить пару лупов, свитч и if-else - это трудная задача? Для того чтобы писать простой код и
тебя люди понимали? Да ну...
Не трудно. Парадокс: вроде бы все просто, а код разбирать ужасно сложно. Чтобы кто ни говорил. Слышал, что во многих случаях проще переписать все заново, чем заниматься разбором кода, который остался от прошлых разрабов, которые это тянули. И вот почему бы это так? Вроде от лапши отказались, а код все равно остался труден для понимания. Вы там разбирали все эти метки числовые, пытаясь понять, а что же хотел этим сказать тот, кто это писал. Но тут ситуация та же самая. Тогда прыгали по меткам, сейчас по иерархии классов и модулям. А зачем вообще этим заниматься? Вот у нас описание на родном языке что делает та или иная функция, её зависимости и пр. Достаточно это прочесть. Неважно какой там код, да хоть на асме, если нет описания, всё, приплыли.
0
Эксперт по электронике
7140 / 3320 / 341
Регистрация: 28.10.2011
Сообщений: 13,054
Записей в блоге: 7
04.10.2024, 17:25
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Это потому, что пьюрик использует вот ту самую свою собственную реализацию стандартного ран-тайма.
Функция printf() чисто сишная. PB ее не реализовывает. И импортируется она из сишного рантайма.
Вот что передается GCC для компиляции
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
// 
// PureBasic 6.02 LTS - C Backend (Windows - x86) generated code
// 
// (c) 2023 Fantaisie Software
// 
// The header must remain intact for Re-Assembly
// 
// :System
// 
#pragma warning(disable: 4024)
// 
typedef long long quad;
typedef int integer;
#define PB_INFINITY (1.0 / 0.0)
#define PB_NEG_INFINITY (-1.0 / 0.0)
typedef struct pb_array { void *a; } pb_array;
typedef struct pb_array2 { void *a; integer b[2]; } pb_array2;
typedef struct pb_array3 { void *a; integer b[3]; } pb_array3;
typedef struct pb_array4 { void *a; integer b[4]; } pb_array4;
typedef struct pb_array5 { void *a; integer b[5]; } pb_array5;
typedef struct pb_array6 { void *a; integer b[6]; } pb_array6;
typedef struct pb_array7 { void *a; integer b[7]; } pb_array7;
typedef struct pb_array8 { void *a; integer b[8]; } pb_array8;
typedef struct pb_array9 { void *a; integer b[9]; } pb_array9;
typedef struct pb_listitem { void *a; void *b; void *c;} pb_listitem;
typedef struct pb_list { void *a; pb_listitem *b; } pb_list;
typedef struct pb_mapitem { void *a; void *b; void *c;} pb_mapitem;
typedef struct pb_pbmap { pb_mapitem *a; } pb_pbmap;
typedef struct pb_map { pb_pbmap *a; } pb_map;
static integer s_s[]={0, -1};
#define M_SYSFUNCTION(a) a __stdcall
#define M_PBFUNCTION(a) a __stdcall
typedef struct pb_variant { int a; int b; int c; int d; } pb_variant;
#define M_CDECL
typedef void TCHAR;
static inline long long pb_llrint(double x) { long long out; __asm__ __volatile__("fldl %1\n" "fistpll %0" : "=m" (out) : "m" (x)); return out; }
#define SYS_BankerRound(x) pb_llrint(x)
#define SYS_BankerRoundQuad(x) pb_llrint(x)
integer __stdcall f_exitprocess_(integer) asm("_ExitProcess@4");
integer __stdcall f_heapcreate_(integer,integer,integer) asm("_HeapCreate@12");
integer __stdcall f_heapdestroy_(integer) asm("_HeapDestroy@4");
integer __stdcall f_getmodulehandle_(integer) asm("_GetModuleHandleW@4");
// 
static char *tls;
int PB_ExitCode=0;
integer PB_MemoryBase=0;
integer PB_Instance=0;
unsigned char *pb_datapointer;
// 
// 
// 
integer __stdcall f_internal_setcurrentdirectory_(integer) asm("_SetCurrentDirectoryA@4");
// 
void SYS_Quit();
M_SYSFUNCTION(void) SYS_InitPureBasic();
volatile int PB_DEBUGGER_LineNumber=-1;
volatile int PB_DEBUGGER_IncludedFiles=0;
char *PB_DEBUGGER_FileName=0;
// 
 
static integer ms_s[]={0,-1};
// 
// 
// 
char PB_OpenGLSubsystem=1;
int PB_Compiler_Unicode=1;
int PB_Compiler_Thread=0;
int PB_Compiler_Purifier=0;
int PB_Compiler_Debugger=0;
int PB_Compiler_DPIAware=0;
int PB_Compiler_XPSkins=0;
int PB_ExecutableType=1;
// 
void PB_EndFunctions() {
}
// 
int pb_main(int argc, char* argv[]) {
PB_Instance = f_getmodulehandle_(0);
PB_MemoryBase = f_heapcreate_(0,4096,0);
// ! printf("Hello world");
 printf("Hello world");
// 
// 
SYS_Quit();
}
 
void SYS_Quit() {
PB_EndFunctions();
f_heapdestroy_(PB_MemoryBase);
f_exitprocess_(PB_ExitCode);
}
Из всего кода только этот участок представляет интерес.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int pb_main(int argc, char* argv[]) {
PB_Instance = f_getmodulehandle_(0);
PB_MemoryBase = f_heapcreate_(0,4096,0);
// ! printf("Hello world");
 printf("Hello world");
// 
// 
SYS_Quit();
}
 
void SYS_Quit() {
PB_EndFunctions();
f_heapdestroy_(PB_MemoryBase);
f_exitprocess_(PB_ExitCode);
}
Цитата Сообщение от Quiet Snow Посмотреть сообщение
ARM скажем так, появился очень не вовремя. 40 лет ничего не происходило и вот на тебе
Писал я для ARM (на ЯВУ) и не скажу что плохой проц.
Просто не нужно лезть в асм.
Intel/AMD это только ПК / ноуты, а ARM в телефонах, планшетах, роутерах, телевизорах и учитывая множество микроконтроллеров с ядром ARM, во множестве другой электроники (микроволновки, кофеварки и т. д.). Начали появляться ПК и ноуты с ARM процем. Винда, линь и макось под них давно есть.

Цитата Сообщение от Quiet Snow Посмотреть сообщение
И надеюсь, у
руководства Intel хватит стали в яйцах, чтобы не купиться на это.
Они сильно накосячили с 13 и 14 поколением процев из-за чего они массово начали выходить из строя и заменялись по гарантии. То есть у компании имеются убытки и могут согласится чтобы удержатся на плаву.
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
04.10.2024, 17:48
Это как в радиоэлектронике: если нет принципиальной схемы, если нет разводки проводников и расположения деталей на плате, то ремонтировать такой аппарат почти невозможно. Конечно можно проследить какой проводничек к какой детальке припаян и все это на бумажке нарисовать. Но однако: понятно же что это трата времени. И в программировании тоже самое. Есть система. Чтобы её понять нужна "принципиальная схема", схема блоков, их взаимосвязей, взаимозависимостей и пр. Если этого нет, а есть вот этот самый голый код. Всё приплыли, фтопку его.

Добавлено через 5 минут
Цитата Сообщение от locm Посмотреть сообщение
Из всего кода только этот участок представляет интерес.
Для меня интерес представляли бы заголовочные файлы, которых тут я почему то не вижу, а они быть должны.

Добавлено через 1 минуту
Цитата Сообщение от locm Посмотреть сообщение
pb_main
Тут даже своя реализация main запилена.

Добавлено через 11 минут
Цитата Сообщение от locm Посмотреть сообщение
Из всего кода только этот участок представляет интерес.
Название функции может совпадать со стандартным если мы реализуем свою библу. То есть ни о чем это не говорит. Покажите заголовки.
0
Эксперт по электронике
7140 / 3320 / 341
Регистрация: 28.10.2011
Сообщений: 13,054
Записей в блоге: 7
04.10.2024, 17:51
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Для меня интерес представляли бы заголовочные файлы, которых тут я почему то не вижу, а они быть должны.
Их нет и они не нужны. Все что требуется для компиляции объектника в этом коде.
Можете попробовать собрать объектный файл.
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
04.10.2024, 18:01
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Те коды которые были на GOTO, это жуткая дроч, которую невозможно расплести.
Кто ковырял - знает.
Ясен пень, что числовые метки это наследие интерпретатора. Вернее, это были даже не метки, а номера строк! Потому что вумный компутер по тексту лазал, совсем как человек.
А теперь стоит попробовать словесно описать работу хоть той же сортировки пузырьком, которая реализована в структурном коде. Я бы очень хотел это увидеть. Кто возьмется?

Добавлено через 37 секунд
Цитата Сообщение от locm Посмотреть сообщение
Их нет и они не нужны.
Смешно.
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
04.10.2024, 18:03
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Слышал, что во многих случаях проще переписать все заново, чем заниматься разбором кода, который остался от прошлых разрабов, которые это тянули.
Это стандартная ситуация, один человек приемлет одно, другой - другое.
Переписать проще, когда есть полная документация. А иначе - просто забей.

Цитата Сообщение от locm Посмотреть сообщение
Они сильно накосячили с 13 и 14 поколением процев из-за чего они массово начали выходить из строя и заменялись по гарантии.
Про выходы из строя не слышал, но считаю что они "сильно накосячили" несколько раньше, с 12-го поколения,
когда ввели гетерогенную архитектуру. Вот там жопа и началась. Всё это произошло за последние ~5 лет.
Мне это было очевидно ещё тогда. Но недальновидность этих людей поражает.
Все эти патчи винды, софты для управления ядрами, гайды по отключению e-ядер в BIOS. В общем
были видно что обосрались, но гордые, суки))) признать не смогли. А ведь неплохо всё было.

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

Цитата Сообщение от locm Посмотреть сообщение
Просто не нужно лезть в асм.
Тут как раз парадокс. Эти чипы в основной своей массе - слабые. Я не говорю про топовые маки
и топовые мобильники(хотя им и так понятно, что далеко до десктопа). И как бы им абсолютно точно
не помешало бы, если бы софт оптимизировали так же как для ПК в конце 90-х\ начале 00-х.
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
04.10.2024, 18:07
К примеру, где находится определение функции SYS_Quit()? Это же функция не из стандартной библиотеки.
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
04.10.2024, 18:12
Цитата Сообщение от CoderHuligan Посмотреть сообщение
А теперь стоит попробовать словесно описать работу хоть той же сортировки пузырьком, которая реализована в структурном коде.
В неструктурном будет ещё хуже и геморройнее. Писал на асме, знаю.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Смешно.
Зачем тебе сишные модули? Как видно из поста locm, даже разрабы PB от них отказались.
И зачем тебе кроссплатформа, ты не осилишь даже две ОС тестировать по всем нюансам. Подумай над этим.
Пили под винду для начала. Одну систему можно охватить более менее.
0
 Аватар для CoderHuligan
1753 / 1019 / 257
Регистрация: 30.06.2015
Сообщений: 5,132
Записей в блоге: 56
04.10.2024, 18:28
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Как видно из поста locm, даже разрабы PB от них отказались.
Прогнал программку под отладчиком. Там дергается стандартная printf из msvcrt, то есть минуя gcc посредством dll.
Цитата Сообщение от Quiet Snow Посмотреть сообщение
И зачем тебе кроссплатформа, ты не осилишь даже две ОС тестировать по всем нюансам.
Меня это пока мало заботит. Могу линукс установить для тестинга. Я уже сидел на нем.
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Пили под винду для начала.
Согласен. Могу тестить в xp, win 7 и 10.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.10.2024, 18:28

Coodo Games & Datcroft Games 3d Artist (Самара)
В Самарский офис требуется талантливый разработчик. 
О нас: - Мы разрабатываем только лучшие игры. Наши запущенные продукты:...

Coodo Games & Datcroft Games Lead Java Developer / Team Lead
Для решения задач, связанных с разработкой серверной части казино игр, нам в команду требуется сильный Java developer. Помимо технических...

Выполнить следующие операции в двоичной системе счисления: 10101,10101+1001,0011 101110,101-101,11 1011*111 1010101
Прямой, обратный и дополнительный коды двоичных чисел, их использование в двоичной арифметике. Выполнить с использованием кодов двоичных...

Даны действительные числа x1,…,x101, y1…,y101. Получить действительные x'1,…,x'101, y'1,…,y'101
Написать код в Free Pascal. Помогите, пожалуйста! Даны действительные числа x1,…,x101, y1…,y101. Получить действительные x'1,…,x'101,...

Bsod - *50,*3B, *101, *101
Доброго времени суток. Началось все после того как снял 2ю GTX 550 Ti(SLI) и немного разогнал оставшуюся(GPU c 900 до 1000, память с...


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

Или воспользуйтесь поиском по форуму:
220
Ответ Создать тему
Новые блоги и статьи
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru