Двадцать лет назад я написал первую строчку кода: 10 CLS. Именно так, не здороваясь с миром и не представляя, что меня ждет, я ввел следом RUN и электронная машина также бесцеремонно бросила мне первый вызов, стерев все на экране телевизора с насмешкой "ОК". Я был удивлен, но не тому, что могу приказать машине что-то сделать, а тому, что она может мне отвечать. Мне было 7, и это история о непростых отношениях ребенка с компьютером, через призму лет глазами состоявшегося программиста.



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


Важным вкладом игр в развитие компьютерных навыков у ребенка, на мой взгляд, является необходимость постоянного взаимодействия с разными пользовательскими интерфейсами, которые, в отличие от компьютерных программ, во всех играх разные, но выполняют стандартные функции. Это быстро развивает "компьютерную смекалку", подсознательно выделяя те или иные общие шаблоны (например, настройки игры), позволяя со временем достаточно быстро ориентироваться даже на незнакомом экране. И, конечно же, кнопки. Освоив геймпад, ребенок без труда освоит и любую клавиатуру.


Я тратил на приставку почти все свободное время, которое выделяли мне родители на телевизор. Нетрудно понять, что увлечь ребенка чем-то другим, когда у него есть игры, задача не из легких. Но однажды родителям удалось провернуть поистине грандиозную уловку, купив для меня "Обучающий компьютер Сюбор". Особенностью этого устройства было то, что он обладал полноразмерной клавиатурой IBM, являясь по факту тем же Dendy в комплекте с "обучающим картриджем", на котором было записано несколько программ, поддерживающих ввод с этой клавиатуры. Ностальгирующий читатель может перейти по ссылке на сайт "Железные призраки прошлого", чтобы вспомнить эту легендарную приставку. Программы на "обучающем картридже" хоть и были не слишком хорошего качества, но включали в себя целых два интерпретатора языка программирования Basic. Один назывался "G-BASIC", а второй "F-BASIC". Сейчас мне известно, что это были сильно урезанные клоны Famicom BASIC и Applesoft Basic соответственно. Документация по "F-BASIC" отсутствовала практически полностью, поэтому сколь-нибудь освоить его мне не удалось. "G-BASIC" же оказался достаточно интересной вещью, потому что содержал в себе редактор графики на основе паттернов, словно вырезанных из какой-то версии "Марио" и набор встроенных спрайтов из того же "Марио", которые можно было перемещать и анимировать с помощью кода. Иными словами, на нем можно было написать целую игру!


image
фото 20 ВЕК


К сожалению, это оказалось не совсем правдой. Я научился перемещать спрайты по экрану достаточно быстро, графический редактор тоже не составил каких-либо проблем. Вдоволь наигравшись с примерами из прилагающейся книги, мне захотелось создать свою собственную интерпретацию любимой в то время игры "Green Beret" (известной также как "Rush’n Attack") и тут пришло первое разочарование – нарисовать свой собственный спрайт было нельзя, оператор SPRITE работал только со встроенными спрайтами. Марио и его друзья, по очевидным причинам, никак не подходили на роли в игре о вооруженном противостоянии СССР и США. Проявив смекалку, я попытался нарисовать "спецназовца" с помощью ASCII-символов, но эта идея была заведомо провальной. В тот момент "cюбор" практически умер для меня. От безысходности и временного отсутствия новых игр на Dendy, пришлось разобраться с циклами, вводом с клавиатуры и написать программы для решения школьных примеров по математике. К окончанию первого класса школы для меня остались только два загадочных оператора бейсика – РОКE и РЕЕК, которые были предназначены для записи и чтения данных из памяти. Подсознательно я чувствовал в них какой-то огромный потенциал, так как все еще не оставлял идею нарисовать собственный спрайт и верил в чудо. Но практически полное отсутствие документации и авторитетной помощи сыграли свою роль, и я так и не смог найти реального применения этим операторам, хотя и научился читать память по произвольному адресу и даже мог заставить приставку перезагрузиться, записав что-нибудь в небезопасную область памяти.


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


Моя мечта сбылась аккурат под новый год, но весьма странным образом. Вместо IBM PC/XT c большим монитором и дисководом, я получил невзрачную коробку с очередной "клавиатурой" внутри под названием "Бытовой компьютер Компаньон-2".


"Компаньон" был российским клоном популярного раньше ZX Spectrum, обладал 48 кб оперативной памяти, интерфейсами для подключения джойстиков и магнитофона для сохранения и загрузки данных с магнитной ленты. Как и игровую приставку, его нужно было подключать к телевизору, либо к специальному монитору, которого у меня, конечно, не было. Пришлось повозиться с подключением к телевизору (ТВ-выход на моей модели компьютера оказался сломан), сделать кабель для RGB-интерфейса и найти подходящий магнитофон. И вот спустя какое-то время, экран заморгал приветственным курсором Sinclair BASIC. Бонусом к компьютеру мне досталась замечательная книжка "Как написать игру для ZX Spectrum" и парочка кассет с играми, поэтому к моменту первого успешного включения компьютера, я уже знал, что надо делать. Конечно же запускать игры.


image
фото Retro Tresaures


Спустя несколько дней отчаянного перематывания кассет и бесконечного ожидания загрузки больших игр под звуки записанных на пленке нулей и единиц, мчащихся на скорости 1535 бод прямиком в ОЗУ моего компьютера, я осознал, что все игры на "спектруме" абсолютно никчемны по сравнению с Dendy. Эта ситуация вновь оставила меня один на один с бейсиком.


В отличие от "сюбора" с его игрушечным программированием, здесь язык был полноценным, не привязанным к дурацкой графике из "Марио" и с раза в два большим количеством операторов. Пропорционально возможностям, выросла и сложность, а вместе с ней и интерес. Я отлично понимал, что сейчас меня ограничивают только мои собственные знания и навыки, а не сама машина, поэтому пришлось подойти к делу серьезно. Моей целью все еще было написать собственную игру.


Первым делом мне нужны были спрайты и, так как описанной в книге программы "Art Studio" для рисования графики у меня не было, пришлось вооружиться тетрадкой в клеточку. Я поклеточно рисовал нужные спрайты, а потом переносил их на экран через код. Это была поразительно монотонная и сложная работа, в которой очень легко было ошибиться. Но результат был виден сразу и это очень воодушевило. На данном этапе мне даже не требовалось сохранять свои программы, потому что они были "зарисованы" у меня в тетрадке, а я каждый раз набирал код заново, чтобы привыкнуть к новой клавиатуре. На "спектруме" почти все команды бейсика были написаны прямо на клавишах и, обычно, на набор одной команды требовалось только одно нажатие.


Спустя пару недель и тетрадок у меня были спрайты "спецназовца", "врагов", и некоторых декораций. Я даже придумал название для игры, пока рисовал – "Солдат удачи". Суть была стандартная – убить всех врагов. Игрок мог управлять героем и стрелять с помощью джойстика, а враги двигались в хаотичном порядке, пытаясь поразить героя врукопашную. Дополнительную сложность вносили декорации в виде "джунглей", через которые нельзя было пройти и не пролетали пули.


Научить "спецназовца" ходить оказалось простой задачей, код для этого не сильно отличался от "сюборовского", который я уже знал. А вот с врагами возникла первая сложная задача в моей программистской практике. Передвигать спрайты в полностью рандомных направлениях было легко, но от этого игра приобретала слишком уж непредсказуемый характер, не говоря уже о том, что врагам было совершенно наплевать на героя. Пришлось изобретать некое подобие "искусственного интеллекта" для врагов, чтобы играть было интересно. За этим занятием я провел много месяцев, постоянно экспериментируя и меняя логику программы. Чем больше становилась моя программа, тем больше неудобств стал доставлять бейсик с его бесконечными GO TO и PAUSE. Однажды мне удалось достать вторую книгу из серии "Как написать игру для ZX Spectrum", которая называлась "Как написать игру на ассемблере для ZX Spectrum". Это был настоящий хардкор для детских мозгов, но я зачитывался, поражаясь возможностям, которые предоставлял язык ассемблера ZX80.


Была одна проблемка. У меня не было программы транслятора ассемблера и я не мог сразу же практиковаться, читая книгу. Зато у меня был бейсик и те самые POKE и PEEK, весь потенциал которых я смог осознать только сейчас. Я погрузился в мир памяти, адресов и непредсказуемых последствий. Предостережения в книге о том, что не стоит записывать что попало по адресам, назначение которых не знаешь, меня не слишком останавливали. Первым делом я занялся экспериментами с т.н. "системными переменными" – адресами в памяти, по которым хранились данные для "операционной системы", касающиеся всех сторон жизни компьютера, от клавиатуры до монитора. Из бейсика это было просто, например, вводишь РОКЕ 23659,0 – и в твоем распоряжении уже весь экран, без системного окна! Стоит ли говорить, насколько улучшилась моя игра после добавления в нее тех возможностей, что давали "системные переменные"? Но помнить адреса и числовые значения, которые можно туда писать, совсем неудобно, не говоря уже о том, что я представить себе не мог, как будут работать примеры ассемблерного кода из книги. Тогда у меня родилась безумная идея – написать транслятор самому. Точнее, я понял, что занимаюсь написанием транслятора ассемблера, гораздо позже, чем приступил к этому. Просто у меня была таблица ассемблерных мнемоник и соответствующих им шестнадцатеричных кодов и я подумал, почему бы не написать программу для перевода из одного в другое, ведь с 16-ричными числами в бейсике я уже умел обращаться.


image
Скриншот Viva Games


Чем больше я погружался в мир ассемблера, тем больше понимал, как же на самом деле работает мой компьютер и почему он работает именно так, а не иначе. За этим занятием пролетели годы, спустя которые у меня появился "настоящий" компьютер на x86, открыв собой новые горизонты познания. Теперь, благодаря "спекки", я уже точно знал, что с ним делать.


Оглядываясь сейчас на свой первый опыт программирования и на Basic, как первый язык, я не совсем уверен в его положительной оценке. Начиная изучать "большие" языки программирования, я столкнулся с определенными проблемами, вызванными привычкой думать в терминах строк и безусловных переходов, переучиваться было немного мучительно. С ассемблером же ситуация более ясная. Хотя архитектуры x86 и Z80 имеют между собой довольно мало общего, но основополагающие принципы не меняются и эти знания до сих пор помогают мне даже при программировании на языках высокого уровня, так что здесь я совершенно точно не прогадал.


Как вы понимаете, мой путь в программирование едва ли можно назвать стандартным, даже для 90-х годов, в основном из-за специфики оборудования, на котором приходилось учиться. Ведь в то время в России уже были распространены компьютеры на базе x86 и многие мои знакомые программисты начинали свой путь именно на них, не испытывая необходимости в буквальном смысле "ковырять железо" в поисках необходимой функции и писать самому себе редакторы кода. Размышляя над этим, я задаюсь вопросом о современных детях и о том, как изучают программирование они сейчас, спустя почти 50 лет безудержного развития компьютерной техники и проникновения компьютеров буквально во все сферы человеческой жизни. По счастливой случайности, на жизненном пути мне встретились хорошие ребята из "Кодабры", которые и раскрыли некоторые секреты из жизни современных школьников.


Для начала о школе. В мои времена уроки "информатики" в школе выглядели весьма печально, в основном из-за отсутствия действительно компетентных преподавателей и оборудования. Мне было там скучно, а одноклассники просто валяли дурака от того, что ничего не понимали. Чего стоит только программирование в тетрадках. Кто только мог придумать такую глупость? Программирование и компьютеры неразрывно связаны. Можно выполнять код в уме и можно записывать его маркером на окне, но только когда ты уже точно знаешь, как он работает в компьютере, а для этого, естественно, нужен сам компьютер. К счастью, сейчас таких проблем не осталось даже, наверное, в самых отдаленных частях нашей страны. Дети начинают изучать компьютер практически с начальных классов и даже если у них нет дома своего, к 7 классу они все равно станут теми самыми "Операторами ПК". А дальше уже начинается настоящая информатика, качество которой, как и в мои времена, сильно зависит от преподавателя и школы.


У "Кодабры", конечно, таких проблем не бывает, так как все ее преподаватели сами являются профессиональными программистами и строят свои уроки на практике. Я не был удивлен, узнав, что и сейчас самое эффективное преподавание программирования для детей, строится на играх. С появлением Unity, это занятие стало еще более дружелюбным и интересным, а главное, без бейсика – тут для занятий используется С#. Хотя мне сейчас и не приходится часто использовать C# в работе, но нельзя не признать, что на текущий момент это один из весьма удачно спроектированных современных языков программирования. Он не очень подходит для обучения азам, но это и не требуется. Для детей помладше практикуются визуальные языки программирования, такие как Scratch. Визуальное программирование – превосходная идея для знакомства с базовыми понятиями в программировании, такими как переменная, условие или цикл, а еще там можно рисовать цветные спрайты!


Немного жаль, что низкоуровневые вещи в последние годы все чаще опускаются при обучении программированию либо рассматриваются по верхам, ведь двигаться с высокого уровня к низкому гораздо сложнее, чем наоборот. Но стремительно набирающие популярность, в том числе и в школьных кругах, Arduino, Raspberry Pi и растущий с каждым днем "интернет вещей", обещают скоро изменить ситуацию в лучшую сторону. При правильном подходе, Arduino может стать "вторым спектрумом" для ребенка, подарить бесценные в будущем знания и занять на множество увлекательных часов.


Я желаю "Кодабре" поскорее создать курсы по низкоуровневому программированию и железу для детей, и приглашаю хабравчан посетить "Фестиваль цифрового творчества для детей и подростков Digitalfest" 4 декабря, на котором будет в том числе и секция, посвященная интернету вещей и робототехнике, на которых можно познакомить ребенка с не совсем стандартными компьютерами.

Поделиться с друзьями
-->

Комментарии (38)


  1. vlanko
    28.11.2016 23:00

    Страшно подумать, я только к 8-9 классу осваивал Бейсик,Visual Basic и Pascal. И тоже нужно было программировать в тетрадках.


  1. zirix
    28.11.2016 23:15
    +1

    нарисовать свой собственный спрайт было нельзя, оператор SPRITE работал только со встроенными спрайтами.

    Собственный спрайт можно было нарисовать через poke или call. Точно не помню.
    А еще можно было припаять батарейку-таблетку к картриджу и программа сохранялась после вынимания картриджа. Главное выйти из редактора командой system.


    1. raidendev
      28.11.2016 23:45
      +2

      Собственный спрайт можно было нарисовать через poke или call. Точно не помню.

      Через прямые обращения к памяти, наверняка, можно было рисовать, но в документации это никак не было освещено, да и сама структура памяти мне была неизвестна.

      А еще можно было припаять батарейку-таблетку к картриджу и программа сохранялась после вынимания картриджа.

      Очень интересно, не могли бы вы вспомнить подробности этой операции? Мой картридж внутри ничем не отличался от обычных картриджей с играми для Dendy, поэтому я не представляю, каким образом это можно было сделать. Возможность использования батарейки для сохранений была в некоторых оригинальных картриджах NES, но на Dendy, насколько мне известно, такого никогда не наблюдалось.


      1. jbubsk
        29.11.2016 09:25

        Сам всплакнул, вспоминая написание игр типа «Угадай число» или что-то типа бросания костей) А еще замечательные beep'ы, которыми были интерпретированы каждая вторая песня, начиная с Дюны и заканчивая шансоном 90-х.


      1. zirix
        06.12.2016 19:07

        Извините за задержку с ответом, только сейчас уведомление в почте заметил.


        Батарейка цепляется на крайний и средний контакт разъема картриджа. 1.5 вольта одной таблетки хватает.
        Какой контакт и полярность можно узнать тыкнув тестером. А еще лучше найти даташит, эти контакты скорее всего питание картриджа.


        На счет спрайтов, у меня прямо в мануале были инструкции и делалось это без "хаков" довольно простым способом.


        1. Zenitchik
          06.12.2016 19:50

          Собственный спрайт можно было составить из символов кодовой страницы. Т.о. количество практически интересных спрайтов было немногим больше количества типовых (которые, видимо, коллега понимает под «встроенными») — «марио», «орбитальная станция» и пр (не помню, сколько их было) — они тоже собирались из символов. Переключив кодовую страницу можно было использовать буквы, звёзды, шарик (типа планета) и прочие символы, предназначенные для отрисовки «пейзажа».


  1. customtema
    28.11.2016 23:36
    +6

    Гы! Спасибо!!! :)

    Как сейчас помню…

    10 CLS
    20 INPUT A, B
    30 C = A * B
    40 PRINT C
    50 END

    Последние 25 лет я не только не думал, что когда-нибудь снова напишу эти строки, но и не подозревал, что скупая слеза потечет по небритой щеке… :)


    1. Pavel_L
      29.11.2016 03:22
      +1

      А «50 END» зачем? Спектрум же по умолчанию выходил :)


      1. zabbius
        29.11.2016 08:59
        +1

        ЕМНИП это из «энциклопедии проффесора Фортрана» и к ZX BASIC не относится


        1. Pavel_L
          29.11.2016 09:10
          +2

          О, точно!
          «Надо купить сапоги и уши!»


        1. alexsegun
          29.11.2016 10:46

          «энциклопедии проффесора Фортрана» — это же моя любимая книга ))) До сих пор на полке стоит


      1. Zenitchik
        29.11.2016 11:53

        Привычка. После END обычно размещали DATA.


  1. AterCattus
    28.11.2016 23:54

    Да уж, многие, наверное, начинали путь в IT с создания своей игры)

    У меня вот все завертелось, когда возможностей паскалевского модуля GRAPH стало не хватать. И пошел ассемблер, VESA, Ralf Brown's Interrupt List, SB DMA, и понеслась. Зато игрушки стали шустро отрисовываться и звучать :-D


    1. delvin-fil
      29.11.2016 09:42

      Неа! :)
      Бейсик Микрон, первая прога — записная книжка(по рецептам «Радио») с сохранением на кассету(сохранять удалось только месяце на третьем «битвы»).


  1. GennPen
    29.11.2016 01:08

    Смутно помнятся те времена.
    Начинал как и многие, с Бейсика на Спектруме. До ассемблера дело не дошло. Однажды мне попалась кассета с Паскалем, набросал простенькую программу и был сильно удивлен, что он работает в разы быстрее встроенного Бейсика.


  1. antonksa
    29.11.2016 02:10
    +3

    Эх. А у меня не было кассетного магнитофона. Т.е. был, но на запись он не работал — качество записи было отвратным и программы не читались.
    Поэтому я сохранялся… на бобинный магнитофон Юпитер )))
    Помню я на DRAW и POINT написал свой первый в 11 лет графический, ну не редактор наверное все таки, а просто графопостроитель.
    А еще я помню в доме пионеров дискеты размером с патефонную пластинку.
    Эх, эх.
    Когда мой малой елозит пальцем по емкостному тачскрину телефона с разрешением экрана 1920х1080 пикселей...


  1. Pavel_L
    29.11.2016 03:24
    +3

    Как вы понимаете, мой путь в программирование едва ли можно назвать стандартным, даже для 90-х годов, в основном из-за специфики оборудования, на котором приходилось учиться.


    У меня и у нескольких моих школьных друзей-приятелей путь один-в-один. Единственное — заход в машинные коды происходил через сильное желание узнать, как эти игры устроены внутри (и добавить себе жизней и патронов).


    1. vagran
      29.11.2016 08:57

      И у меня. И транслятор ассемблера я свой написал. И дизассемблер-отладчик, которым потом разбирал код стандартного ROM. Как сейчас помню, как меня поразили некоторые моменты на ассемблере в ROM, например код для вывода пикселей на экран. Мне самому тогда казалось, что это очень сложно, найти адрес пикселя на спектруме с его нетривиальным разбиением видеопамяти, но оказалось, что магия битовых полей всё сильно упрощает. Для меня это было открытие века в том возрасте. Или вот до сих пор помню паттерн для обновления битового поля в байте за три инструкции — два xor и один and, короче не придумаешь, там это часто использовалось. И только потом уже в классах постарше появился «большой» компьютер, с которым я уже знал, что делать, благодаря спектурму.


    1. Desmond810508
      29.11.2016 09:39

      Прямо в точку, прибавить жизней, с этого.
      Начинал я с КР-04 потом КР-05, потом была Дельта С-128.
      А асм начал изучать с Zeus Assembler


  1. askv
    29.11.2016 06:41
    +1

    Помню лето 1989 года на ВВЦ в Киеве выставка компьютерной техники, мне 14 лет. До глубины души потрясла чья-то программа на MSX-Бейсике, выводящая на экран таблицу умножения… С этого всё и закрутилось. Дальше программирование в тетрадке за неимением компьютера. Не вижу, кстати, в этом ничего плохого — на начальном этапе только так и надо. Нужно сначала вырабатывать навык представления, как именно программа будет выполняться, тетрадка для этого подходит лучше всего.


  1. zabbius
    29.11.2016 09:00

    статься поразительно напоминает мне мое детство, только спектрум в какой-то момент стал с дисководами и LPT портом, а денди и сеги не было, играл у друзей.


  1. QDeathNick
    29.11.2016 09:40
    +1

    CIRCLE 128, 80, 80 — не забыть тот вечер, когда отец припаял в огромный телевизор проводки от пензенского спектрума и я подобрал эти цифры. Точка невозврата.
    И хорошо, что в нашей глубинке не было книжек, всё опытным путём было исследовано.
    Случайно, с помощью peek, был найден адрес на который «оцифровывался» единственный бит с аудиовхода и написана программа для записи звука.
    А потом, мы с другом сделали сетку из двух компов, соединив их через все тот же порт. Правда на большом расстоянии > 200м. лапши по деревьям так и не удалось заставить надёжно работать. Но в сетевые самописные игрушки мы поиграли.
    Потом уже была Москва, центральный узел Freenet, первая порнуха из инета в гифках в NN. Как в другой жизни, а вроде мы ещё и не старые совсем.


    1. QDeathNick
      29.11.2016 13:15

      Из-за этого поста не смог уснуть полночи.
      Вспомнил, что это порт был, а не адрес памяти и нашёл его с помощью IN, а не PEEK. 254 порт, он ещё и клавиатуру позволял считывать и бордюр экрана перекрашивать.
      А ещё как кодировщик ASM писал на BASIC с тетрадки переписывая команды. Помню была целая куча команд с префиксом 217 на отдельном листе тетрадки. Зачем это всё теперь в памяти хранится и спать не дает :)


  1. mikelavr
    29.11.2016 09:40

    Синклера мне не досталось, начинал с СМ-4 под RSX-11M в 1985 году. Игрушки, написанные там, не сохранились, а вот когда в 1990 году в руки попал IBM PC, в соавторстве с Димой Петровым был написан Digger's Loader :-).

    http://lurkmore.to/Digger


  1. Alkul
    29.11.2016 09:41

    Насчет «низкоуровневости» в Arduino, Raspberry Pi — это Вы зря. Там как раз упор делается на Си.
    Но я с Вами согласен, что обучение программированию (по-крайней мере, для микроконтроллеров) надо начинать с ассемблера и «низкоуровневости». Более того, на мой взгляд, не существует понятия «программист микроконтроллеров», существует понятие «инженер-электроник», который занимается разработкой устройств, а отсюда обязательны еще и знания электроники. Поэтому начинать надо именно с электроники, чтобы не получилось так, что ребенок может написать для ардуино программку для выведения звука на динамик, но не знает, каким образом этот самый динамик к ардуино подключить.
    Тем же, кому интересно «чистое программирование», на мой взгляд, надо смотреть в сторону профессии «инженер-программист», который занимается именно программированием для ПК.


    1. zabbius
      29.11.2016 19:48

      Не согласен. Детям совсем низкий уровень и понимание что там происходит нафиг не надо в начале обучения. Если бы на вопрос «как программировать спектрум» я сразу получил хотя бы книжку по бейсику, было бы сильно проще. Но мне в начале моего пути была дадена здоровенная книга о том, как устроен процессор про шины, АЛУ и т.п. Полистал, почитал, спросил «и нахрена мне это все?» и пошел отжимать у отца книжку по бейсику. А вот уже потом, когда я и на асме мог программировать и понадобилось писать дрова для LPT, который был напаян на мой спектрум, вот тогда уже и понадобились знания про всякие порты, сигналы, прерывания и т.п. Если ребенку некуда приложить знания, они вызовут только скуку и в голове не задержатся.


      1. Alkul
        30.11.2016 06:38

        Вначале давайте определимся, кого Вы понимаете под словом «дети». «Дети» — это какой возраст? 7-8 лет? 10-11 лет? 14-15 лет? Вот эта, на мой взгляд, прекрасная книга была написана, в общем-то, для детей. Конечно, не семилетних, но в таком возрасте учить программированию, я считаю, вообще рано. Для программирования нужно иметь определенный уровень понимания абстракций, быть знакомым с определенными математическими понятиями и законами. Как учить программированию без объяснения, что такое системы счисления (хотя бы три основных — DEC, HEX и BIN)? Как рассказывать о логических операторах языка, если обучаемый не знает законов булевой алгебры? Если обучаемый этого не знает, тогда об этом придется говорить в рамках курса обучения программированию.

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

        А то, что Вам

        в начале моего пути была дадена здоровенная книга о том, как устроен процессор про шины, АЛУ

        говорит только о непрофессинализме обучающего. Если такая книга дается ребенку, то к ней должен прилагаться учитель, но правильнее даже давать ребенку учителя, а к нему прилагать такую книгу. Самостоятельно ребенок такое не освоит, хотя надо опять-таки уточнить, о ребенке какого возраста идет речь.


  1. zeronice
    29.11.2016 09:41

    Классный опыт! Мое программирование началось с MS Office 2000 и VBA. Так получилось, что первый год использования компьютера я провел имея диск Maximator 6 и книжку Visual Basic 6. Ни других книг, ни софта, ни компетентных знакомых не было…


  1. potan
    29.11.2016 09:44

    «ведь двигаться с высокого уровня к низкому гораздо сложнее, чем наоборот.» — почитайте старый SICP, там начиная с очень высокого уровня доходят до микрокода.


  1. Zolushok
    29.11.2016 12:23
    +2

    «мой путь в программирование едва ли можно назвать стандартным»

    Про стандартность не скажу, но для людей, в первый раз увидевших компьютер в начале 90-х, путь довольно распространённый.

    Мы с ребятами втроём за одним «специалистом» безвылазно торчали года два — писали игры, свой транслятор ассемблера, текстовый редактор, примитивный графический редактор для спрайтов, переписывали BIOS на свой, зашивая его в микросхему ПЗУ, стираемые ультрафиолетовой лампой… А сколько радости было, когда мы мышь прицепили — не передать.

    Попутно перетягивали к себе в код огрызки технологий с нормальных персоналок — в ассемблерном коде полным ходом использовали ООП, руками поддерживая таблицы виртуальных методов. да, время было веселое.


  1. rockin
    29.11.2016 12:30

    В 11 классе сдавал информатику
    Ну, учитель сказала, что, мол, кто её удивит, получит 5 автоматом.

    И я сделал на бейсике от БК-0011М «интерактивный кроссворд». Вот тебе сетка, вот тебе второй экран с заданиями, выбираешь номер, вбиваешь ответ, он появляется в сетке.
    Причём, всё было на хоткеях, определённая клавиша на определенное действие, подсказка внизу экрана.

    Сейчас-то вроде это всё фигня, но тогда это было бомбой, да ещё на бейсике. Автомат свой я получил, но помню больше не автомат, а распечатанный на матричном принтере «код программы». Там листов пятнадцать было… что для бейсика бк овердохрена.

    п.с. программистом так и не стал :)


  1. muhaa
    29.11.2016 20:49
    +1

    Написал в 8 классе диггера на Радио-86РК на ассемблере. Самая жесть была — загрузить ассемблер с магнитофона, загрузить код с магнитофона, дописать что-то, сохранить на магнитофон, запустить, увидеть что-то мелькнувшее на экране и перезагрузку ОС. Потом загрузить ассемблер с магнитофона, загрузить код с магнитофона, сидеть, думать почему не заработало…
    Если бы мне сейчас, сказали вот тебе 86РК и магнитофон, напиши диггера, или мы расстреляем тебя через 3 дня, я сказал бы — лучше сразу расстреляйте, я не смогу этого сделать :)


  1. msdos9
    30.11.2016 08:39

    Интересно, что ностальгические темы практически всегда вызывают бурю комментариев… Интересно, о чём будут вспоминать нынешние дети лет этак через 20?


    1. perfect_genius
      30.11.2016 20:40

      Scratch?


  1. Docent86
    30.11.2016 15:57

    БК-0010 Вильнюс Бейсик
    — — — — — — — — — — — ЛАТ
    OK


  1. Docent86
    30.11.2016 16:03

    Кстати тут на работе из подвала выбросили комп Intel-286 12Mhz белая сборка.
    Made in West Germany July'90/
    Мне его жалко стало притащил, поколдовал. Коллега притащил 5.25" дискетку — загрузились с нее.
    Винт отключил т.к. батарея на плате прокисла, а конфигурация винта мне неизвестна и вручную его можно спалить.


  1. alan008
    30.11.2016 17:45

    Там (на приставке Сюбор) можно было еще звуками играться, причем звуки задавались не частотой, а нотами (ABCDEFG в английской нотации до-ре-ми)


    1. Zenitchik
      30.11.2016 18:20

      Ага. Со всеми приличествующими бемолями-диезами-стакаттами-легатами.