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

101 Basic Computer Games

25.05.2024, 16:17. Показов 12392. Ответов 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
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,253
Записей в блоге: 4
23.06.2024, 17:35
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от CoderHuligan Посмотреть сообщение
В нормальном, надо передать в первый раз три параметра, а в двух остальных всего один, так как два параметра остаются неизменными. Разве это не ускоряет код?
С чем вы боретесь и дерётесь? Соглашение о вызовах cdecl придумали сто лет назад.
0
Кормпилятор
 Аватар для Quiet Snow
5040 / 1714 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
23.06.2024, 19:41
Цитата Сообщение от Замабувараев Посмотреть сообщение
С чем вы боретесь и дерётесь? Соглашение о вызовах cdecl придумали сто лет назад.
Лю Кенг героически преодолевает самого себя. Ему трудно, больно, а тут ещё мы со своими
процедурами, структурностью, модульностью и читаемостью кода.
0
 Аватар для CoderHuligan
1742 / 1007 / 257
Регистрация: 30.06.2015
Сообщений: 5,094
Записей в блоге: 56
24.06.2024, 17:05
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Функция возвращает значение, процедура - не возвращает. Это всё что надо об этом знать.
Это в turbo basic так было. Но это не определение. Процедура это всего лишь блок кода. Как он вызывается это уже детали реализации.
Цитата Сообщение от Quiet Snow Посмотреть сообщение
А GOSUB это аморфная субстанция, которая однозначно тебе не скажет какие у неё параметры,
что она возвращает и куда.
Согласен. Это пережиток. но ведь были и плюсы в виде ускорения кода, так как не надо было передавать параметры через стек, и не надо было очищать стек от параметров. Плюс? Плюс. Если бы сделать еще локальные параметры, то и вообще хорошо.
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Нормальные - значит, обособленные, разграниченные ключевым словом. В которых сразу видно какие
параметры куда приходят и куда уходят, какой их тип.
Угу. Порядок которых надо еще запомнить. А это не свойственно человеческому организму, которые мыслит образами.
Нормальная процедура должна выдавать во внешний мир только имена своих параметров и их тип. Никакого порядка следования быть не должно. Это у функций должен быть порядок следования параметров, так как они работают на стеке.
Для чего требуются функции? Для встраивания в выражения и для рекурсивных алгоритмов. Всё остальное делают процедуры.
Во время вызова мы просто присваиваем значения параметрам по их именам, что-то типа:
my_func(param1 = 22, param5=36)
Немного длиннее, зато понятнее и не надо запоминать порядок. Потому что можно и так:
my_func(param5=36, param1 = 22)
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Твой пример с передачей сначала трёх параметров, а потом одного. Решается просто - через глобалки двух
параметров.
Все же говорят, что глобалки - зло.
0
Эксперт по электронике
6197 / 2891 / 311
Регистрация: 28.10.2011
Сообщений: 11,150
Записей в блоге: 6
24.06.2024, 18:27
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Это пережиток. но ведь были и плюсы в виде ускорения кода
Вызов функции без параметров аналогичен GOSUB. Кто запрещает этим пользоваться и передавать параметры через глобальные переменные? Но я бы так делать не стал. Выигрыш минимальный (на уровне погрешностей), а ограничения и запутанность кода большая.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
не надо было очищать стек от параметров.
От них чистит инструкция RET.
PureBasic
1
2
3
Procedure Test(x, y)
  ProcedureReturn x + y
EndProcedure
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
; Procedure Test(x, y)
_Procedure0:
  PUSH   ebx
  PS0=8
; ProcedureReturn x + y
  MOV    ebx,dword [esp+PS0+0]
  ADD    ebx,dword [esp+PS0+4]
  MOV    eax,ebx
  JMP   _EndProcedure1
; EndProcedure
_EndProcedureZero1:
  XOR    eax,eax
_EndProcedure1:
  POP    ebx
  RET    8   ; <---- Очистка стека от параметров.
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Порядок которых надо еще запомнить.
IDE придумали для чего? При вводе имени функции ИДЕ показывает имена параметров, их тип и порядок следования.
А в вашем случае (глобальные переменные) как узнать что передавать? Вообще неизвестны имена, типы и количество параметров.
0
Модератор
10033 / 3880 / 882
Регистрация: 22.02.2013
Сообщений: 5,827
Записей в блоге: 78
24.06.2024, 18:45
По именам можно в Visual Basic передавать параметры.
0
Кормпилятор
 Аватар для Quiet Snow
5040 / 1714 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
24.06.2024, 20:07
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Согласен. Это пережиток. но ведь были и плюсы в виде ускорения кода
Не было никаких плюсов писать на 3GL как на 2GL. За ускорением того про что ты пишешь
люди шли на асм. Тебе уже объясняли популярным языком что подобным подходом писались
копеечные программки, написать что-то существенное без классической структурной парадигмы
будет попросту невозможно. То что ты будешь писать 10 лет выдрачивая оптимизацию
на "состояниях в коде" нормальный человек напишет за пару недель. А если тебе потребуется
что-то модифицировать то 10 лет работы можешь ещё и выбрасывать сразу на свалку.
Это не просто чудовищная и нерациональная трата времени, это трата твоей жизни и спускание
её в унитаз. Зачем это делать?

Цитата Сообщение от CoderHuligan Посмотреть сообщение
Все же говорят, что глобалки - зло.
Глобалки зло, если твой подход сугубо 4GL и ты инкапсулируешь всё и вся как псих.
При использовании сугубо 3GL, процедурного и модульного подхода глобалки - это
одно из немногих, очень удобных средств для обеспечения связанности блоков кода.
Это мощный, прозрачный по своей работе инструмент, не вызывающий вопросов, которым
нужно исключительно уметь пользоваться, а на приличных объёмах это умеют не все.
Области доступа(видимости переменных) это один из базовых принципов в процедурном
программировании. И работает оно тогда, когда человек следует множественным
рекомендациям по структуре программы, одна из которых - размещение переменных
строго в начале основной программы, это позволяет их оглядеть, проверить, быстро найти
необходимый блок из переменных для требуемого функционала, быстро добавить туда
доп переменные, массивы сохраняя их сгруппированность. Лично я не сторонник инкапсуляции,
и свожу воедино обычно сходный функционал между которым уже расшариваю то, что ему принадлежит,
за пределы чего оно точно не выйдет и это очень хорошо работает в пачке с пространствами имён,
даже с рукожопыми как на FB.
И сначала завожу переменные\массивы, определяю их тип и только потом ими пользуюсь,
т.е. попытка всучить какое-то глупое необдуманное использование - ну это очевидно не ко мне,
если человек не в теме это исключительно его косяк, нужно быть в теме или не быть вообще.

0
 Аватар для CoderHuligan
1742 / 1007 / 257
Регистрация: 30.06.2015
Сообщений: 5,094
Записей в блоге: 56
25.06.2024, 14:26
Цитата Сообщение от locm Посмотреть сообщение
Кто запрещает этим пользоваться и передавать параметры через глобальные переменные? Но я бы так делать не стал.
Можно. Но когда действительно надо иметь общие данные.
Цитата Сообщение от locm Посмотреть сообщение
От них чистит инструкция RET.
Так все равно это затраты, хотя и небольшие.
Цитата Сообщение от locm Посмотреть сообщение
IDE придумали для чего?
То есть простой редактор тут уже не катит.. Да, придумали, чтобы облегчить себе жизнь..
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Тебе уже объясняли популярным языком что подобным подходом писались
копеечные программки, написать что-то существенное без классической структурной парадигмы
будет попросту невозможно.
Смелое заявление.
На Фортране копеечные писались? А basic вырос из фортрана, это просто упрощенный фортран. Для обучения. Потом он уже оформился как самостоятельный язык, нарастил мускулы. Посмотрите на код Фортрана (старого) там сплошные goto.
0
Эксперт по электронике
6197 / 2891 / 311
Регистрация: 28.10.2011
Сообщений: 11,150
Записей в блоге: 6
25.06.2024, 15:30
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Так все равно это затраты, хотя и небольшие.
Небольшое это какие?
Приведите конкретные цифры.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
То есть простой редактор тут уже не катит
Если не цените свое время и силы, пишите в блокноте, кто запрещает?

Не по теме:

Зачем редактор? Зачем вообще компилятор? Ведь можно писать в машинных кодах!

0
 Аватар для CoderHuligan
1742 / 1007 / 257
Регистрация: 30.06.2015
Сообщений: 5,094
Записей в блоге: 56
25.06.2024, 16:16
Цитата Сообщение от locm Посмотреть сообщение
Приведите конкретные цифры.
Считывание из стека адрес возврата. Затем сложение его с количеством байтов в аргументе. Считай две операции. Не скажу количество тактов.
Цитата Сообщение от locm Посмотреть сообщение
Если не цените свое время и силы, пишите в блокноте, кто запрещает?
А раньше так и делали..
0
Эксперт по электронике
6197 / 2891 / 311
Регистрация: 28.10.2011
Сообщений: 11,150
Записей в блоге: 6
25.06.2024, 17:37
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Считывание из стека адрес возврата.
Если у вас адрес возврата будет в переменной то из нее его тоже нужно прочитать. Верно? Тогда в чем преимущество?
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Затем сложение его с количеством байтов в аргументе.
Аналогично будет с переменными из которых тоже нужно читать в регистры проца.
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Не скажу количество тактов.
Вот, сначала сравните и посчитайте сколько процентов выиграйте. После решите стоит ли оно того.

Цитата Сообщение от CoderHuligan Посмотреть сообщение
раньше так и делали
Раньше компы были ламповые и ввод/вывод был на перфоленту. А электронно-лучевая трубка была вовсе не в мониторах https://ru.wikipedia.org/wiki/... вая_трубка
Предлагаете сейчас делать также?
0
 Аватар для CoderHuligan
1742 / 1007 / 257
Регистрация: 30.06.2015
Сообщений: 5,094
Записей в блоге: 56
25.06.2024, 18:03
Цитата Сообщение от locm Посмотреть сообщение
Тогда в чем преимущество?
В том, что не нужно очищать стек от параметров за отсутствием оного.
Цитата Сообщение от locm Посмотреть сообщение
Предлагаете сейчас делать также?
Предлагаю возвратится к более простым решениям. Иначе все рухнет под грузом сложности.
0
Эксперт по электронике
6197 / 2891 / 311
Регистрация: 28.10.2011
Сообщений: 11,150
Записей в блоге: 6
25.06.2024, 18:06
Цитата Сообщение от CoderHuligan Посмотреть сообщение
В том, что не нужно очищать стек от параметров за отсутствием оного.
Я писал об этом.
Цитата Сообщение от locm Посмотреть сообщение
От них чистит инструкция RET.
Если не поняли, происходит одновременно возврат и очистка стека.
0
 Аватар для CoderHuligan
1742 / 1007 / 257
Регистрация: 30.06.2015
Сообщений: 5,094
Записей в блоге: 56
25.06.2024, 18:58
Цитата Сообщение от locm Посмотреть сообщение
Если не поняли, происходит одновременно возврат и очистка стека.
Такты решают все.
0
Эксперт по электронике
6197 / 2891 / 311
Регистрация: 28.10.2011
Сообщений: 11,150
Записей в блоге: 6
25.06.2024, 20:04
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Такты решают все.
Докажите что ваш метод быстрее без потери функционала и читаемости кода. Иначе это обсуждение не имеет смысла.
0
Модератор
10033 / 3880 / 882
Регистрация: 22.02.2013
Сообщений: 5,827
Записей в блоге: 78
25.06.2024, 20:15
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Такты решают все.
Современные процессоры уже давно выполняют RET и RET imm за одинаковое количество циклов.
0
 Аватар для CoderHuligan
1742 / 1007 / 257
Регистрация: 30.06.2015
Сообщений: 5,094
Записей в блоге: 56
25.06.2024, 20:27
Цитата Сообщение от locm Посмотреть сообщение
Докажите что ваш метод быстрее без потери функционала и читаемости кода.
Каким образом? Это надо компилятор пилить. Хотя бы с ограниченными возможностями. Руки давно чешутся. Но как представлю объем работ.. Реализация процедур и выражения, переменные. Функции можно потом добавить. Дело не одного дня, на это уйдут месяцы. Ждать готовы?

Добавлено через 4 минуты
Цитата Сообщение от The trick Посмотреть сообщение
Современные процессоры уже давно выполняют RET и RET imm за одинаковое количество циклов.
Еще про пролог и эпилог забыли.
0
25.06.2024, 20:28

Не по теме:

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

0
 Аватар для CoderHuligan
1742 / 1007 / 257
Регистрация: 30.06.2015
Сообщений: 5,094
Записей в блоге: 56
25.06.2024, 20:32
Ок.
0
Модератор
10033 / 3880 / 882
Регистрация: 22.02.2013
Сообщений: 5,827
Записей в блоге: 78
25.06.2024, 20:42
Цитата Сообщение от CoderHuligan Посмотреть сообщение
Еще про пролог и эпилог забыли.
А это тут причем?
0
Кормпилятор
 Аватар для Quiet Snow
5040 / 1714 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
26.06.2024, 00:24
Цитата Сообщение от CoderHuligan Посмотреть сообщение
На Фортране копеечные писались?
Да хрен его знает чё там писалось. Лично я ничего крупного там не видел, это надо у "фортранистов" спросить.

Фортран ныне абсолютно мёртвый язык. Не взирая на путь больше чем в пол века, на строгую стандартизацию
и на постоянные попытки "оживить" его даже крупными гигантами такими как Intel и Nvidia.
И процедуры там были с 77-го стандарта точно, а то и раньше. GOTO был также "постольку поскольку"
как и в других языках для озвученных выше нужд, ибо никто не выпендривался, это Дейкстра с Виртом
решили повыпендриваться и обосрались. Т.е. впоследствии люди писали нормально там без GOTO.
Там была научная среда, а не программисты: физики,математики. Что-то от них хотеть по кодингу глупо.
В те годы крупного софта там и не было. А в 90-е понятное дело уже нормально писали те кто хоть что-то
понимал. К концу 90-х с фортрана все поуходили, т.к. основной контингент языка тупо вымер.

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

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.06.2024, 00:24
Помогаю со студенческими работами здесь

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, память с...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Angular: Вопросы и ответы на собеседовании
Reangularity 15.06.2025
Готовишься к техническому интервью по Angular? Я собрал самые распространенные вопросы, с которыми сталкиваются разработчики на собеседованиях в этом году. От базовых концепций до продвинутых. . .
Архитектура Onion в ASP.NET Core MVC
stackOverflow 15.06.2025
Что такое эта "луковая" архитектура? Термин предложил Джеффри Палермо (Jeffrey Palermo) в 2008 году, и с тех пор подход только набирал обороты. Суть проста - представьте себе лук с его. . .
Unity 4D
GameUnited 13.06.2025
Четырехмерное пространство. . . Звучит как что-то из научной фантастики, правда? Однако для меня, как разработчика со стажем в игровой индустрии, четвертое измерение давно перестало быть абстракцией из. . .
SSE (Server-Sent Events) в ASP.NET Core и .NET 10
UnmanagedCoder 13.06.2025
Кажется, Microsoft снова подкинула нам интересную фичу в новой версии фреймворка. Работая с превью . NET 10, я наткнулся на нативную поддержку Server-Sent Events (SSE) в ASP. NET Core Minimal APIs. Эта. . .
С днём независимости России!
Hrethgir 13.06.2025
Решил побеседовать, с утра праздничного дня, с LM о завоеваниях. То что она написала о народе, представителем которого я являюсь сам сначала возмутило меня, но дальше только смешило. Это чисто. . .
Лето вокруг.
kumehtar 13.06.2025
Лето вокруг. Наполненное бурями и ураганами событий. На фоне магии Жизни, священной и вечной, неумелой рукой человека рисуется панорама душевного непокоя. Странные серые краски проникают и. . .
Популярные LM модели ориентированы на увеличение затрат ресурсов пользователями сгенерированного кода (грязь -заслуги чистоплюев).
Hrethgir 12.06.2025
Вообще обратил внимание, что они генерируют код (впрочем так-же ориентированы разработчики чипов даже), чтобы пользователь их использующий уходил в тот или иной убыток. Это достаточно опытные модели,. . .
Топ10 библиотек C для квантовых вычислений
bytestream 12.06.2025
Квантовые вычисления - это та область, где теория встречается с практикой на границе наших знаний о физике. Пока большая часть шума вокруг квантовых компьютеров крутится вокруг языков высокого уровня. . .
Dispose и Finalize в C#
stackOverflow 12.06.2025
Работая с C# больше десяти лет, я снова и снова наблюдаю одну и ту же историю: разработчики наивно полагаются на сборщик мусора, как на волшебную палочку, которая решит все проблемы с памятью. Да,. . .
Повышаем производительность игры на Unity 6 с GPU Resident Drawer
GameUnited 11.06.2025
Недавно копался в новых фичах Unity 6 и наткнулся на GPU Resident Drawer - штуку, которая заставила меня присвистнуть от удивления. По сути, это внутренний механизм рендеринга, который автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
OSZAR »