All streams
Search
Write a publication
Pull to refresh
6
0
Забулдыга @shell4692

Разработчик

Send message
Я бы ещё понял, если бы девятилетняя девочка использовала Ардуино. Но девятилетняя девочка использовала несколько pic18f25, которые программируются в среде MPLAB X. Саму по себе среду разработки нельзя вот просто так взять и скачать и настроить девятилетнему ребёнку. Есть нюансы. Я не программирую PIC, но программирую stm32. Так вот чтобы на stm32 читать данные с акселерометров, датчиков температуры, работать с шиной SPI и GPIO нужно программировать регистры микроконтроллера, что не очень-то возможно без понимания его архитектуры. Микроконтроллеры PIC это не проект Ардуино, где 100500 разных библиотек написаны огромным сообществом. Это Tabula Rasa, где обитают только профессионалы. Нельзя вот просто так взять и начать программировать микроконтроллеры в девять лет (С) Боромир. Для меня совершенно очевидно, что (наверное) папа выполнил постановку задачи, планирование работы, разработку ПО и всю слесарную части работы. Не говоря уже о написании тех. документации на проект. Зато какая подача!
Современному программисту необязательно знать, как работает TCP/IP, чтобы написать веб-приложение.


Вот не могу согласиться с подобным утверждением. Программист должен иметь представление, как работают механизмы, которые он использует. Потому как понимание механизма работы (например) TCP/IP позволит принять во внимание фрагментацию пакетов, маршрутизацию, MTU и другие особенности.
В моём случае, в конце 80х именно так и было. Но тогда компьютер был огромной редкостью, дома их не было. Были АГАТы на УПК в школе. Даже просто стоять рядом и смотреть на них можно было часами. А нажимать на кнопочки так вообще счастье. А сегодня дети видят десятки компов вокруг. Компьютеры сейчас это чуть ли не часть интерьера в каждом доме. Чтобы изучать программирование нужна мотивация. Если принуждать ребёнка учиться программировать постоянным нудным повторением непонятного ему материала то эта мотивация убивается. Предыдущие неудачные попытки как раз были основаны на словаре слов и постоянном повторении. В случае с моим ребёнком этот метод не заработал.
Очень хороший язык. Но он оторван от реальности. На 1С он реально видит результаты свой работы. Ребёнок может создавать формы (диалоги), добавлять в них разные визуальные элементы вроде кнопок и полей ввода, написать в модуле кода программные обработчики для них и через внешнюю компоненту пощёлкать настоящими реле. Но при этом, в 1С он таже называет функции и переменные по русски. Например, Выполнить() или ПриНачалеРаботыСистемы(). И я не рекламирую 1С как продукт, Версия 7 уже давно снята с продажи и нигде не продаётся. В данной ситуации я просто использую его как среду разработки и выполнения, как игровую площадку. Кроме того, в Конфигураторе ребёнку доступен Синтакс-Помошник, в котором полное справочное руководство по языку на русском (с указанием англоязычных синонимов, если что).

В 1С код выглядит также, как «моё видение скетча Ардуино» :-)
Словарный запас программиста вообще-то довольно обширный. Он включает в себя не только ключевые слова операторов языка, но ещё и названия функций, которых огромное множество. Существует негласное правило давать функциям такие имена, чтобы они объясняли, что делает эта функция. А здесь уже по-сути целые предложения без пробелов, например OnSystemAbnormalShutdown()…
Когда мы обучались Ардуине, мы вели словарик. Он их знает, но не понимает. Когда он их видит или слышит, он ищет русский перевод, а не прямую ассоциацию между английским словом и понятием. Когда мы слышим слово computer, мы же не вспоминаем русский перевод его, мы его сразу воспринимаем как понятие. Такую понятийную базу нужно развивать отдельно.
Я считаю, что родной язык должен не мешать обучению, а помогать. Этот подход реально работает, обучение Свифту и Ардуине уже провалились. Благодаря этому подходу сын сам пишет код, понимает, что такое переменные, функции и процедуры. В дальнейшем его ждут та же Ардуина и Свифт, но уже с понятийной и алгоритмической базой за спиной. Ну и английский к тому моменту подтянется. А мультики итак смотрим на английском.
А никто не говорит, что не нужно изучать английский. Английский очень важен в программировании. Не нужно делать сразу несколько дел одновременно. Отдельно занятия английским, отдельно занятие программированием. Как в школе. Один урок география, другой урок английский. Это очень спорный вопрос, насколько эффективно будет обучать детей географии или математике по английски. В моём случае, исключение английского языка из процесса обучения программированию в отдельные занятия было вынужденной мерой, после того, как попытки обучения Свифту и Ардуине провалились.
По опыту обучения своего 9 летнего сына хочу сказать, что самое трудное в освоении программирования для него, это отсутствие нативного понимания английского языка.
Например, вот простенький скетч для Ардуино:

int ledPin=13;
int buttonPin=5;

void setup()
{
    pinMode(ledPin, OUTPUT);
    pinMode(buttonPin, INPUT_PULLUP);
}
void loop()
{
    bool isPressed=digitalRead(buttonPin);
    if(isPressed==true)
    {
        digitalWrite(ledPin, HIGH);
    }
    else
    {
        digitalWrite(ledPin, LOW);
    }
}


У меня свободное владение английским на уровне чтения любой литературы, просмотра фильмов без дубляжа, субтитров и перевода. Я вижу этот скетч вот так:

целое контактСветодиод=13;
целое контактКнопка=5;

процедура настройка()
{
    режимКонтакта(контактСветодиод, ВЫВОД);
    режимКонтакта(контактКнопка, ВВОД_ПОДТЯЖКАПИТАНИЯ);
}
процедура цикл()
{
    булево былоНажатие=цифровоеЧтение(контактКнопка);
    если(былоНажатие==ИСТИНА)
    {
        цифроваяЗапись(контактСветодиод, ВЫСОКИЙ);
    }
    иначе
    {
        цифроваяЗапись(контактСветодиод, НИЗКИЙ);
    }
}


А вот как (с его слов) видит этот скетч мой сын:

整數接觸LED = 13;
整數聯繫按鈕= 5;

設置程序()
{
     接觸模式(接觸LED,OUTPUT);
     接觸模式(聯繫按鈕,POWER SUPPLY);
}
程序週期()
{
     布爾是按下=數字讀取(聯繫按鈕);
     if(itPress == TRUE)
    {
         數字錄音(接觸式LED,HIGH);
    }
    否則
    {
         數字錄音(接觸式LED,LOW);
    }
}


Поэтому, в качестве платформы обучения для него выбрана обычная старая 1Сv7. Без регистров, планов счетов, расчётов, отчётов и прочих элементов учёта. Только справочник, перечисление, документы без проведения и обработки. Основным приложением является форма и модуль формы. Все обработки запускаются через меню Операции, так что создание интерфейсов из обучения программированию тоже (временно) исключено. Если ребёнку будет интересно, когда он станет старше, можно будет обучить его остальным метаданным.
Чтобы ему было интересно щёлкать всякими реле, я собрал ему шкафчик с модулями ОВЕН (цифровой вывод 8 реле, цифровой ввод 16 входов), подключил к ноутбуку и через внешнюю компоненту к 1С. Как подтянет английский, начнём изучать Ардуино. Но уже будет довольно приличный навык программирования и понимание работы программы, переменных, операторов.
Статья просто чудо! Обожаю такие обзоры, Спасибо. Вот только, почему-то, нет никаких упоминаний про архитектуру MIPS. А тем не менее, она берёт своё начало в далёком 1985м году и на сегодняшний день очень активно используется в маршрутизаторах, ADSL модемах и подобных устройствах. Также, использовалась в игровых консолях Nintendo64, Playstation и Playstation 2. Точных данных о реальной рыночной доле не имею, однако, доподлинно осведомлён о наличии подобных процессоров в Zyxel Keenetic Giga, ASUS ADSL и ещё нескольких маршрутизаторах, которые раздербанил на запчасти самолично.
Очень интересная статья, спасибо! Вот только тема процессоров АРМ раскрыта не полностью. Недавние исследования кристаллов процессоров АРМ выявили в них микротрансляцию инструкций на уровне PLA (декодирование инструкций). Очень хорошо эта тема раскрыта в блоге Кена Шерифа. В частности, здесь. А вообще, хотелось бы вторую часть статьи про АРМ процессоры. Также, никак не затронута архитектура MIPS.
Для представителя такой серьёзной фирмы, как Леново, такая оплошность как-то не солидно…
Оригинальный ZX Spectrum был сделан на прадедушке CPLD, который назывался Ferranti. В нём было два набора микросхем памяти ОЗУ. Один из них был так называемой «медленной» памятью, размером в 16К. Она содержала видеопамять и атрибуты. К ней был организован совместный доступ видеоконтроллера и процессора. У видеоконтроллера был приоритет и если он не успевал (отображать), то он просто останавливал тактовый сигнал процессора и доделывал свои дела.

Второй набор микросхем был 32Кб и там была обычная память, монопольно доступная процессору.

Когда в СССР создавали клоны оригинального ZX Spectrum, таких уникальных решений, как у Ferranti не было. И вся логика (видеоконтроллер, секвенсер и контроллер атрибутов и т.п.) создавались на обычной доступной логике.

Самые близкие к оригиналу варианты были те, которые осуществляли раздельный доступ к медленной и быстрой памяти. Это Львов48, Москва48, Харьков48 и Краснодар48. «Зоновские» версии, вроде Ленинград, Пентагон, Скорпион и т.д. использовали упрощённую логику и задерживали процессор уже не тактовой частотой, а сигналом WAIT. И в этом варианте использовался один набор микросхем памяти, 65Кб, из которых использовалось 48Кб и вся память была «медленной», поскольку коммутатор доступа к ОЗУ был общий на всё. Зато, такая схема была значительно проще и дешевле, а значит, доступнее.
В общем-то да, поскольку существовал целый «зоопарк» клонов. Страницы памяти (свыше стандартных 128К) переключались дополнительным портом. У PROFI этот порт был с одной структурой битов, у ATM Turbo — с другой. Скорпион-256 тоже имел похожую, но неполно совместимую схему. В результате только некоторые копировщики дискет, написанные в России могли узнавать тип компьютера и задействовали дополнительный ресурс. А крупные игры, которые реально могли задействовать такой ресурс, писались за рубежом, где о таких клонах никто даже и не слыхал. К тому же, на тот момент, за бугром, уже вовсю процветали Commodore64 и иже с ними. Наши Российские демописатели, почему-то, не очень жаловали дополнительный ресурс. В общем, дополнительная память была востребована лишь в редких случаях, в основном IS-DOS(Искра ДОС) или CP/M.
Схемку скинул в личку. Там DJVU файл со сканами одной из популярных в своё время «книжечек», которые вовсю продавались на радиорынках.
При наличии свободного времени, лучше, конечно, эти схемы перерисовать в, например, EAGLE.
Огромный респект автору статьи.
В своё время (конец 80х, начало 90х) собирал себе Краснодар-48 (изображён на картинке как донор процессора). Со временем, доработал его до версии Краснодар-128, а потом вообще до Краснодар-256. ППри доработке до 128Кб пришлось убирать РУ6 и заменять их на РУ5. Когда дошло дело до 256Кб, вместо РУ5 я запаял ОЗУ AA2801 (импортные) и сделал порт управления битом A9 как в PROFI (чтобы видели копировщики). Также имелся музыкальный процессор и BETA DISK с дисководом Teac. Комп жил довольно долго, так как к нему был подключен программатор ПЗУ, который не простаивал. Потом, к сожалению, от компа пришлось отказаться, появились всякие там PIC и 8031, которые проще. Однако, Z80 довольно долго использовался в АОН Русь, пока его оттуда не вытеснили те же 8031. Ну и далее, 8051, Атмел и понеслась…

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

У спектрума очень классный Бейсик, в котором команда вызывается одной кнопкой. Поставил сыну (8 лет) эмулятор спектрума48 и учу его Бейсику. Распечатал ему клавиатуру спектрума как шпаргалку. Для ребёнка очень удобно, когда не нужно запоминать правильный английский синтаксис команд, чтобы начать писать программы. Английский он подтянет позже, так хотя бы есть возможность программировать.
Если у него получится дальше, сделаю ему настоящий спектрум на FPGA, чтобы он мог светодиодиками мигать и реле щёлкать. Не Ардуина, конечно, но всё же.

Спасибо автору за ностальгию и тёплые воспоминания.

Как уже ранее сказано, это модель Краснодар-48. Имеет на борту порт Kempston Joystick (0x1F). Также, в отличие от версии Зонова, видеопамять в «Краснодаре» расположена в другом наборе ОЗУ (РУ6). В свое время слышал мнение, что по осциллограммам «Краснодар» ближе всего похож на оригинальный Синклер. Краснодарская схема является доработкой Харьковской версии, которая в свою очередь, ведёт свою линию от «Львовской». Также, от «львовской» ведёт свою историю «Москва48».

Если нужны схемы, их есть у меня, с осциллограммами.
Тогда, 25 лет назад, делать собственный спектрум было удовольствием. Да, я не мог тогда развести плату сам, как в наши, но я мог собрать и доработать её так, как лежит душа. Сейчас у меня есть возможность разработать свою версию новодела и получить удовольствие от всего процесса. И я очень понимаю автора этой статьи.
Тогда тоже была, но я его делал сам. Это же не iPhone. Это была прекрасная школа тогда, и отличное времяпрепровождение сейчас. Я уже не говорю про множество замечательных воспоминаний.
Проделать такую работу — это уже большая удача, успех говорит о многом. В моём случае, я рассматриваю вариант замены логических микросхем на CPLD, ПЗУ на FLASH, ОЗУ… тут много вопросов, наверное на SRAM. Z80 сохранить в первозданном виде, музыкалки у меня тоже есть; ВГ93 очень ненадёжные и их очень мало осталось в продаже. Скорее всего нужно будет делать эмулятор Beta-Disk на SD карте, с поддержками основных форматов контейнеров.

Наверное, мне разводить плату Краснодара будет излишним. Сложности будут с поиском старых микросхем.

Information

Rating
Does not participate
Location
Россия
Registered
Activity

Specialization

Backend Developer, Embedded Software Engineer
Lead
Java
OOP
SQL
Linux
English
Spring Boot
Hibernate
Git
C++
Programming microcontrollers