>>810954 Почему тогда basic? А не скажем обыкновенный С? Насколько помню, basic - всратый интерпритируемый язык для касетных ОС.
Самый рациональный подход это вообще делать игру на движке типо годота, и учить собственно говоря синтаксис GDScript. Даже в простых играх слишком много подсистем, кажая из которых требует жёсткой оптимизации. Одно дело демку запрограммировать, другое дело создать с нуля трехмерную игру которая будет выдавать хотя бы 15 фпс. Мало того что без аппаратной дрочки 100% не обойтись, так ещё и куча програмных проблем, типо оптимизация уровней. Моя дипломная работа кажется смехом по сравнению с проектированием игры. Но раз уж писать самописное, то почему бы не выбрать классику, С/С++. Всё эти паскали и бейсики мало того что неудобные, так на них ещё и библиотек ничерта нет.
>>810915 Шутки шутками, но моя любимая игра написана на https://en.wikipedia.org/wiki/Hot_Soup_Processor — японском «форке» BASIC; их даже в этом десятилетии делают: https://supercombo.gg/2022/10/06/indie-fighting-prototypes-shuzen/. Очевидная и единственная причина этого в том, что HSP учат в японских школах, но, с другой стороны, мало того, что у этой игры есть несколько умерших попыток портов на Java/C#, так ещё и текущий разработчик, по слухам, на работе специализируется на Java, и всё равно ведёт её на HSP.
>>810965 "С" простой как автомат калашникова. Попроще бейсика будет. В С нет ни массивов, ни строк, только байты, адресная арифметика. Вот бейсик не смотря на название как раз не "бейсик" нифига, под синтаксическим конструкциями скрывается множество абстракций и костылей.
Вообще, то что в "С" нет массивов, это на самом деле вброс от Столярова.
Массивы есть.
Столик рассуждал следующими образом: то что выглядит как массив, в С, не подчиняется семантике масивов, и ничем не отличается от указателей. Конструкция arr[2] означает то же самое что и ⚹(arr + 2) т.е. мы отходим на два указателя вперёд и разыменовываем. Более того, можно присвоить указателю char ⚹p = arr. Получается, какой это впизду "отдельный тип" если он ничем особо от указателей не отличается? Вот только взять конструкцию char arr[5][10], если подходить "сухо" то второй массив тут это указатель на указатель на char - т.е. по адресной арифметике должна получиться самопересекающаяся каша. Но этого не происходит, вместо того второй массив перемещается сразу на 5 указателей на char вместо одного. Тут Столяров виляет жопой и говорит что "так это указатель на массив, а не сам массив. Типа 'массив' то нет, зато есть тип указатель на массив". Вот только тип char arr[] имеет много других отличий от char ⚹arr. Как минимум ничего нельзя присвоить к arr[], его нельзя вернуть из фунции, функция sizeof действует на указатель и массив под разному: в случае массива возвращает количество памяти в нём, а в случае с указателем возвращает просто 8 т.е. просто размер адреса. Получается что семантическая разница есть, стало быть arr[] это отдельный тип. Да, он не умеет в классические операции, как в Pascal например можно свободно присваивать массивы друг другу. Однако он и не должен соответствовать ожиданиям от массива в паскале. Он отличается семантикой, стало бы отдельный тип. И это не какие-то там новые стандарты. Всё это существовало со времён K&R. Поэтому столяров пропизделся.
>>810913 (OP) Работа в айти найме это кал, если ты не нормис. Если родители тебя не гонят на работу, то считай что ты очень хорошо устроился. Можесь сидеть разрабатывать что-то для себя. Не вижу смысла именно вкатываться
>>811193 Я хочу иметь бабло на протеин и качалку. Ну и на отдельное жильё, куда я могу срыгивать когда к мамке приходят её подружки и они начинают дружно ебать мне мозги.
Практически невозможно научить хорошему программированию студентов, ранее знакомых с BASIC: как потенциальные программисты, они получают ментальные увечья без надежды на восстановление. — Эдсгер В. Дейкстра.
>>811313 Он говорил про какие-то старые версии, в которых строки нумеровались и всё делалось через GOTO <номер строки>, который он хейтил: https://ru.wikipedia.org/wiki/Бейсик#Ранние_версии. Судя по статье, не было даже функций — GOSUB представляла собой GOTO с запоминанием адреса возврата, что не обеспечивало передачу параметров и локальное состояние.
Я теперь понял, что то, что некоторые старые программы написаны в таком стиле, может быть следствием этого: если у нас есть функция RecognizeToken(), которой нужен CurrentToken: string, то вместо того, чтобы сделать CurrentToken её параметром, он делается глобальной переменной, а когда он оказывается нужен второй раз, это не убеждает автора, что CurrentToken стоит всё-таки сделать параметром, а вместо этого он сохраняется перед вызовом и восстанавливается после вызова: >SavedCurrentToken := CurrentToken >CurrentToken := <значение для RecognizeToken> >RecognizeToken() >CurrentToken := SavedCurrentToken
Но вообще-то некоторые НОВЫЕ программы тоже так написаны, и с тем же успехом, с которым это может быть травма от BASIC, это может быть и просто очевидный подход: если посадить человека за компьютер, не посвятить (а если бы и посвятить) в концепцию локальных переменных и параметров функций, и сказать «программировай», он вот так и сделает, как было сделано в старых бейсиках, то есть будет, как эмбрион, проходить ускоренную эволюцию.
Прошёл первый урок. Запушил код на отдельный гитхаб-аккаунт. Как только перейду к более-менее интересным и реальным проектам вкину в тред ссылку для оценки моего говнокода.