Comments 55
насколько помнится в 64КБ (ROM+RAM) версии ZX-Spectrum
#0-#3FFF — область ПЗУ
#4000-#57FF — экранное ОЗУ
#5800-#5AFF — область атрибутов экрана
#5B00-#FFFF — ОЗУ
При такой организации и объеме памяти, а также скорости работы интерпретатора на бейсике ZX-Spectrum можно осваивать разве что крошечные задачки позволяющие понять отдельно взятые алгоритмы, но не написание какого-либо жизнеспособного ПО.
P.S. и если уже хотелось творить на ZX-Spectrum, то приходилось открывать книжку с описанием модели памяти и ассемблерных мнемоник Z-80 и использовать GENS и MONS, а позднее TASM и STS.
на бейсике ZX-Spectrum можно осваивать разве что крошечные задачки позволяющие понять отдельно взятые алгоритмы, но не написание какого-либо жизнеспособного ПО.
На большее он, вроде бы, и не претендовал. Для автоматизации каких-нибудь рутинных расчетов и изучению основ этот бейски вполне подходил.
С помощью встроенного бейсика очень быстро можно понять нравится ли тебе программировать или нет.
Если тебе нравится программировать переходишь на ассемблер и реализуешь там более серьезные задачи.
А если хочется просто играть, набрал заветные: LOAD "", загрузил игру и играй себе.
Ставь эмулятор, качай игры, нажимай shift+space — удивишься сколько игр написано на S-Basic 48k.
Тока эта… там может стоять защита от взлома, как например в футбольном менеджере (border 0: ink 0: paper 0 — самое простое, тебя ещё и послать могут).
Но да, графон как в Крузисе не получится.
Ставь эмулятор, качай игры, нажимай shift+space — удивишься сколько игр написано на S-Basic 48k.
За время пользования ZX-Spectrum (ПЭВМ Байт, сначала 48Кб, потом 128кб с TR-DOS и дисководом) с 1992-1999 увидел только то, что свыше 99% игр написаны на ассемблере. В свое время многие из них были перелопачены с помощью указанных выше отладчиков, ради добавления чит мода.
Не согласен. Если бы я начинал с ассемблера, то вряд ли "заболел" программированием. А так Бэйсик-Микрон как первый язык (МК-61 не считаем для ясности), а Ассемблер i8080 (КР580ВМ80А) когда Бэйсик стал тесным, но навыки алгоритмизации уже появились.
Мне до какого-то времени казалось что компьютер именно так и работает внутри на Бейсике, но этого было достаточно, я понял основы алгоритмов, последовательного выполнения и т.д. а потом уже стал наращивать знания в ширь и глубину.
В SICP основы архитектуры процессоров хорошо описывают в конце курса, опираясь на изученный в начале язык высокого уровня. Такой подход дает лучшее понимание.
Плюсы — это по-настоящему «взрослая технология», при изучении очень легко последовательно давать материал так, чтобы в коде отсутствовали неизвестные конструкции, но вот с рисованием (да и вообще с красивыми задачами) тут явные проблемы, как ни старайся сделать задачи веселыми. Либо надо использовать сторонние учебные библиотеки (а это не соответствует третьему критерию), либо ждать Qt — а это, извините, 36ое занятие в спокойном темпе работы. Выживают только самые стойкие. Значит плюсы на первом этапе отпадают, надо давать их позже.
Есть еще более классические варианты — Basic, Pascal — но все это в наши дни уже не используется на практике. А значит тоже отпадает по третьему критерию.
Delphi(Object Pascal)!
Есть бесплатная Starter версия, GUI, графика и т.д. доступны прямо из коробки. Используется на практике.
Есть также Open Source Lazarus, у которого кроме всего и русский интерфейс есть из коробки.
Почему то не упоминается Смолток.
Просто сейчас ситуация в программировании такая — нет языка, на котором можно было бы сначала хорошо учиться а потом работать. Поэтому, если нужна "латынь" для обучения "правильному" программированию — используется Ada или Компонентный Паскаль, Смолток, OCaml, ML.
Если есть цель в том, чтобы научить применять на практике навыки программирования — Geogebra, Maxima, R, Haskell. Только нужна кооперация с учителями математики и геометрии — чтобы знать чему они обучают и синхронно с ними показывать программные решения для их математических и геометрических задач.
Но с JS у меня возникает вопрос на первой стадии: как дать базовую алгоритмику? Работа в консоли будет выглядеть странновато для ребенка, а манипуляции с DOM — это, вообще говоря, отдельная тема. Но, видимо, надо будет все таки стараться аккуратно сразу давать DOM.
Может что-то типа React? При базовых знаниях HTML&CSS можно начинать алгоритмику без изучения DOM, но в с выводом результатов в знакомой парадигме тегов, свойств и т. п…
Да. Только с тем различием, что печать не в консоль, а в окно браузера с использование знакомых технологий и парадигм, а не новых из PyGame и ко. Причём легко обеспечить преемственность в рамках одного проекта — сначала на HTML+CSS создаётся статический прототип какого-то приложения, а потом он натягивается на React (а можно сразу в index.html созданном create-react-app например писать статику) и начинается его динамизация.
И в плане алгоритмов можно начать (после базы) c алгоритма дейкстры https://jsfiddle.net/MKMatriX/wm1dzqt1/, после можно усилить его до чего-то такого https://jsfiddle.net/MKMatriX/c26fh2ky/59/
Из бонусов тут как раз возможность быстро визуализировать алгоритмы.
Еще js позволяет использовать ООП и ФП, что тоже плюс, причем в искусственных условиях это весьма приятно.
А html и css пусть идут по желанию, отдельно.
ПС https://tproger.ru/translations/first-person-engine-265-lines/ еще один довод за js.
Вот на «неправильной» парадигме учат, а потом студет выходит и не знает простейших вещей. Для HL, системщины или просто для работы в большом проекте (который потом надо поддерживать) — понимание теории очень важно. Знаю по своему горькому опыту.
В стартовой группе по плюсам к зачету отваливается гораздо больше детей, и я бы не сказал, что у ребят, которые начали со смолбейсика, а потом перешли на плюсы, есть какие то проблемы понимаем. Зато во второй группе появилась мотивация к самообучению, ребята вне кружка начали сами смотреть что-то новое: говоришь на втором занятии, что GUI у нас будет через пару недель, а на следующем занятии оказывается, что несколько человек уже сами разобрались. В стартовой группе по плюсам мотивировать ребят что-то почитать вперед или глубже обычно не получается.
Есть ощущение, что во втором случае ученик загрустит и быстро это занятие бросит.
Может тогда ему и не стоит быть программистом? Я начинал с класики — паскаль/ам/си. Они требуют большой внимательности и понимания того, как и что работает. Но при этом, я не могу их назвать сложными. Как и работа с тем же Pure C и памятью скучной. Тут скорее зависит от того, что большинство людей просто не могут получить «фан» от работы и бегут в профессию «потомучтамодна!».
У меня есть опыт как плюсов с нуля, так и сначала SmallBasic, а потом уже плюсов.
У плюсов есть тоже разный уровень погружения. Базовый — не сильно сложнее какого-нибудь другого языка высокого уровня. Разве что семантика SmallBasic проще.
В стартовой группе по плюсам к зачету отваливается гораздо больше детей, и я бы не сказал, что у ребят, которые начали со смолбейсика, а потом перешли на плюсы, есть какие то проблемы понимаем.
Простите за грубость, но те, кто отвалились — им лучше выбрать что-то другое. Мы ведь не о домашнем проекте говорим (где выбирает каждый что хочет), а про образовательный процесс. Если человек не способен понять С++ или ему не интересно само по себе программирование — то может всё же лучше тратить время на тех, кому это по правде интересно?
Ужасно когда приходит человек, занимавшийся рекламой ближайшие пять лет и решает внезапно, что он программист пройдя пару туторов по тому же JS и считает себя сотрудником на равне какому-нибудь специаилсту с 15+ стажа и опытом написания на Си и Лиспах, пониманием матана и т.п. Сам свидетель такого — это очень печально.
Зато во второй группе появилась мотивация к самообучению, ребята вне кружка начали сами смотреть что-то новое: говоришь на втором занятии, что GUI у нас будет через пару недель, а на следующем занятии оказывается, что несколько человек уже сами разобрались. В стартовой группе по плюсам мотивировать ребят что-то почитать вперед или глубже обычно не получается.
Простите за грубость — тут надо смотреть на материал, который вы даете и как его преподносите. В базовых знаниях по С++ нет ничего непостижимого, даже для ребенка 7 класса (сам я его начал тыкать вообще в классе 4-ом и даже тогда он ен казался особо сложным). Тут скорее качество самого материала проблема — либо в нем есть белые пятна (дети чего-то не понимают, т.к. им про это не объяснили), либо язык объяснений слишком сложный для них. Ну или есть вариант — программирование просто не для большинства, которое у вас в группах. У них гуманитарный склад ума и он не способны воспринимать что-то точное. Такое тоже бывает, и тут нет ничего страшного. Просто определенные языки и технологии в этом случае для человека закрыты
Я думаю, что есть три группы детей, которые изначально приходят на занятия: первая группа научиться в любом случае — у них талант, вторая, возможно, действительно с гуманитарным складом ума, а вот в третьей группе результат во многом зависит от методики. И если методика будет правильной — из них вырастут счастливые специалисты, довольные своей работой.
Я полностью с вами согласен, седьмой класс — это плюсы. Но по нашему опыту, на неотобранных детях, точно не раньше. Идея в том, чтобы попробовать "зажечь" ребят раньше, в шестом классе, но при этом дать им основы, чтобы в дальнейшем упростить процесс обучения на плюсах.
По поводу детей из третьей группы… Я бы сказал, что это утопия. Хорошими программистами становятся только настоящие гики, которые готовы быть погруженными в специальность с головой. Для которых это главный интерес, хобби, работа… чуть ил не смысл жизни в написании кода =), а таких как правило не нужно привлекать в школе. Первая и третья группы, в большинстве случаев не приносят никакой пользы своей сфере, они просто делают то, что умеют. Это что-то сродни труду робота. Один мой друг работает программистом, как раз из третьей группы. Знаете почему он пишет код? Он больше ничего не умеет. Его увлекли, вот так же. Но профессия ему мало интересна. И возьмите теперь меня — я из первой группы. Даже получив образование экономиста я продолжаю пистаь код. Я ловлю кайф от этого, мне это нравится. А вот он — несчастен
Если бы компьютеры нашей молодости имели только один язык, такой как brainfuck, мы бы сейчас писали о том, что мы начинали с него и было все хорошо.
Есть подозрение, что тогда нас было бы гораздо меньше. Мотивация не бинарное значение, а аналоговое, да еще меняющееся со временем и если текущего значения не хватает для борьбы с ограничениями, то и борьба прекращается.
А вот мотивацию должен обеспечить преподаватель.
В корне с Вами не согласен. Странная привычка у современного общества — прикручивать функцию мотивационную учителям. С одной стороны вроде всё и логично, даже правильно. Учитель рассказывает — ученику интересно, он развивается. С другой… не для всех детей подходят такие методы преподавания. Когда мне в школе объясняли математику на белочках и орешках, с какими-то шутками и прибаутками — меня это жутко бесило. Собственно до 5 класса я именно этому на математику забил, т.к. думал, что она создана для «дебилов». Дети — маленькие люди, не надо их считать гулпее себя.
И, по моему скромному мнению, именно ограничения подталкивают развиваться. Я вот в своё время любил Heretic и хотел сделать подобную игру, но с элементами РПГ. И начал читать, изучать… Первые попытки работать с графикой были не удачными — дикие тормоза, переполнение стека… И я начал читать, почему так, изучать как работает то, что я делаю на уровне железа, какие алгоритмы удачнее с точки зрения математики…
Я хотел бы предостеречь вас от сопоставления себя с другими.
Любой опыт субъективен. Я высказал ИМХО. Сравнивать себя с другими нужно, хотя бы чтобы иметь какую-то константу, от корторой можно отталкивать свои рассуждения.
Делить людей на избранных и остальных — не дело.
ИМХО, наоборот. Если я не биолог по натуре (мне это не интересно, противно, скучно) — нефиг меня пихать в медики. Только пациентов убью. С программированием — та же штука.
Лично я никогда не имел ничего против белочек и орехов, шуток и прибауток.
Собственно в этом и прелесть математики лично для меня. Когда ты можешь взять какой-то даже не серьезный контекст и перевести это в универсальный язык, чтобы найти решение.
А я вот против, что и сказал выше. Сейчас же вы навязываете своё мнение мне, объект вашего сравнения — вы сами. Следовательно, сами не следуете своим же предостережениям и советам.
Математика — сама по себе универсальный язык. Куда более абстрактно? Если мозг ребенка не может понимать абстрация — не надо его насиловать. Спортсмен, сантехник, рабочий завода — там от него будет больше толку. Если и там не сгодится — пусть танцует и поёт як попса.
Собственно, в программировании также как и в математике никто не мешает заменить X и Y на белку и зайца, или наоборот.
Почему вы считаете ребенка — дебилом, который не способен понять абстрацию? Быть может проблема во взрослых, которые не умеют объяснять?
И это большая разница — думать о детях, что они глупее и понимать, что им пока не хватает аналогий и абстракций.
Смысл абстрации — отход от аналогий, чтобы они были не нужны. Пример — числа. Для того, чтобы понять что такое число — достаточно 1 аналогии и больше никогда не возвращаться к бабочкам, белочкам или паравозикам.
Когда я думаю о мотивации детей к познанию, то всегда вспоминаю, как Фейнман рассказывал о своем отце. Преподаватели — это взрослые в жизни ребенка, которые практически на равне с родителями влияют на него.
ИМХО в РФ они чаще отбивают желание учиться. Именно по их вине я н любил долгое время литературу. Спасибо дяде двоюродному, который дал почитать Саймака. Мотивация детей — это их заинтересованность. Почему-то взрослые считают, что ребенку интересны глупости, шалости и ограниченные развлечения. По сути сегодня детей по уровню интелекта расценивают как пьяного в дугу человека. Даже юмор для них похожий делают. Но это не правильно! Дети могут оценить гораздо более сложные вещи и освоить их — у них нет нашего закостенелого сознания и религиозной веры в парадигмы или догмы. Но это ИМХО
Если мозг ребенка не может понимать абстрация — не надо его насиловать.
Если мозг ребёнка не может понимать абстракции, то этот ребёнок не сможет нормально жить в обществе. Не знаю про спортсменов, но сантехнику или рабочему завода в их профессиональной деятельности абстракции нужны — какая-нибудь "гайка М6" — это абстракция. А в современной бытовой жизни без них вообще никуда. Это не говоря о том, что вообще языки общения (хоть человеческие. хоть программирования) — это абстракции, позволяющие передавать информацию о реальном или воображаемом мире. Человек, чей мозг не понимает абстракций, не может общаться с себе подобными в принципе.
Смысл абстрации — отход от аналогий, чтобы они были не нужны. Пример — числа. Для того, чтобы понять что такое число — достаточно 1 аналогии и больше никогда не возвращаться к бабочкам, белочкам или паравозикам.
На одной аналогии или примере абстракция выглядит овержинженерингом, непонятно для чего введенным.
Я обычно использую кубики от лего :)
Это продолжение все той же идеи — материал проще запоминается, когда он сопровождается яркими образами.
А ограничения типа "писать будем на брэйнфаке" даст в среднем результаты хуже, чем даже на допотопном Бэйсике.
Далее — мотивацию нельзя контролировать. Это бред школьных психологов. Ребенку либо интересно, либо нет. Кроме интереса, при отсутствии давящих факторов — нет. В их мире всё проще.
![image](https://habrastorage.org/files/ba5/590/e2c/ba5590e2cd9e43948808ad3c0b0c2d37.jpg)
Программирование в этом возрасте — значит научить думать над алгоритмом, задачей, путями ее решения. Это будет полезно и тем, кто потом не будет программистом. Поэтому нет смысла учить сначала "прочему энтерпрайзу", ведь в школе сейчас задача всего дать понемногу, при этом программирование как раз то, что может а) потренировать мозги б) стать любопытным для дальнейшего изучения самостоятельно.
К примеру, мы в школе изучали Pascal, но абстрактно, просто компилируя в консоль. Даже не собирая в exe. А реально интересно стало тогда, когда получилось сделать псевдографикой интерфейс, когда товарищ дал диск с Delphi… То есть нужно, чтобы было не сухое заучивание парадигм, а показать результат труда, с GUI это нагляднее и интереснее.
То есть надо оценить риски — всех научить глубокой теории — интересно будет 1% обучающихся, или всех научить базовым вещам, которые работают(!) и наглядно показывают смысл программирования — ожидается больше тех, кто заинтересуется. Мне кажется, второй путь ближе к целям школы.
Могу сделать некую аналогию с тем что я в ВУЗах видел — в тех группах, где начинали с Паскаля к первому семестру и концу обучения было намного больше людей в «теме», тех кто не забил и все ещё учился программировать, а не дожить до получения диплома.
Где с си сразу очень много людей посто «зарывались» в указателях, и прочих ненужных в начале вещах, им становилось непонятно, и от того не интересно.
С чего начинать программировать в доп. образовании? Или SmallBasic и все-все-все