Бесполезные улучшения PascalABC.NET

Касательно улучшения.

Лично я столкнулся с проблемой когда практически любое обучение программированию ребёнка, очень быстро сводится к “созданию игр” . В то же время, пытаясь отвлечь сына от компьютерных игр, но увлечь чем-то современным, как например программированием, я обратил внимание на программирование роботов (на пример Lego EV3) и математическое или олимпиадное программирование.

К сожалению задачи “олимпиадного программирования”, которые можно выполнять в более-менее интерактивной среде (как на пример на сайте “Школа программиста” или вышеупомянутой школе программирования харьковчан), достаточно сложные для ребёнка, который только что закончил начальную школу. А способ программирование роботов Lego EV3, предлагаемый производителем, практически ничем не отличается от “Скретч”.

Внимание на Паскаль я обратил после того как нашёл в интернете информацию об использовании Free Pascal, для программирования Lego EV3 (проект RubiRobot). Как уже сказал ранее, я не понимал что есть какая-либо разница между Free Pascal и PascalABC . NET, считая что это скорее разные названия одной и той же вещи.

Улучшение и популяризация PascalABC . NET должны были бы идти рука об руку. Очень жаль что для проект RubiRobot написан для Free Pascal, тогда как в школах РФ используют PascalABC . NET. Но может стоит создать похожий проект для PascalABC . NET ?

Существует масса интерактивных сайтов для упражнения в олимпиадном программировании, как на пример e-olymp или сайт “Школа программиста”. Может есть возможность создать сайт с набором не сложных задачек, для младших школьников, который помогал бы не столько практиковаться в «олимпийском программировании», сколько обучаться программированию как таковому, используя PascalABC . NET?

Порешайте с ним задачки для Робота и Чертёжника, встроенные в Паскаль

Порешаем, спасибо за подсказку.

Позвольте немного дополнить вышесказанное касательно PascalABC . NET.

Если посмотреть видео в англоязычном сегменте youtube посвящённые обучению программированию, то шансы услышать упоминание Pascal, Delphi или что в этом роде, практически равны нулю.

Если говорить о русскоязычной части интернета, то когда мы говорим Pascal, подразумеваем “обучение программированию”. А когда мы говорим “обучение программированию”, то начинаются споры о преимуществах Pascal vs Python. И надо сказать что Python потихоньку наступает на Pascal, отжимая пространство. Наглядным примером тому могут служить множество приватных летних лагерей, курсов и кружков по программированию для детей. Или на пример МФТИ, где недавно заменили Pascal на Python. На западе для обучения программированию в школах, на сколько я знаю, используют Scratch и за тем Python.

Мой сын начинал обучение программированию на сайте codeТочкаorg. Сайт американский, но имеет русифицированные инструкции и для того что бы начать обучение достаточно уметь читать. Сначала там учат простейшим алгоритмам последовательности действий, за тем что то похожее на Scratch, а потом всё сводится к компьютерным играм. Обучение выстроено в увлекательной форме, причина по которой я переключил обучение сына программированию на язык Pascal одна - я не желаю что бы он увлекался компьютерными играми, по крайней мере так долго как это возможно. Во времена моего детства мальчишки мечтали стать космонавтами, лётчиками ну и т.д., а сверстники моего сына мечтают стать профессиональными киберспортсменами.

Поэтому, рассуждая о том как следует развивать PascalABC . NET, наверное следует стараться сделать среду PascalABC . NET, во первых доступной для детей раннего возраста, возможно создав некое подобие Scratch, где можно менять изображение “кодовых блоков” на текст кода как он есть на самом деле. Во вторых предоставить альтернативный путь изучения программирования, тому что мы наблюдаем сегодня, когда всё скатывается в бестолковую развлекаловку, которая потом трансформируется в “не объяснимое” поведение или ещё хуже преступления игроманов-киберспортсменом. PascalABC . NET действительно мог бы быть настоящим способом обучения детей английскому языку, математики, физики.

Извиняюсь если я тут высказался не по теме, но наболело.

А объясните ка, почему вы так резко негативно относитесь именно к играм?

Профессиональный спорт, включая киберспорт, разумеется, не бывает полезен. А профессиональное пилотирование ещё и смертельно, в случае очередной войны/на скорую руку запущенной космической ракеты.

Привыкание вызывают только специальные мобильные игры (то есть почти все из плеймаркета, другие там не выживают).

Остальные игры или полезны, или не будут интересны ребёнку.

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

А в сдвиге интересов с технологии, которые пропагандирует власть на технологии, которые пропагандируют илюминаты натурально актуальны во всём мире - нет ничего плохого.


Но, было бы не красиво вообще всё мимо темы сказать. Поэтому:

Идеи насчёт реализации кодинга, так чтоб в итоге был обычный текст программы, но делалось это как то проще, как блоками в скратче - у меня уже давно есть. Но если я это буду делать один - и начну, и тем более закончу, очень не скоро.

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

Я являюсь сторонником мнения что полезных комп. игр практически нет. Обучение в игровой форме я в расчёт не беру, т.к. при обучении концентрация внимания происходит на освоении материала. В интернете можно без труда найти книгу Татьяны Львовны Шишовой “Компьютерные игры - кто кем играет”, рекомендую ознакомиться, в качестве расширенного ответа на вопрос о пользе/вреде комп. игр.

Хотя я не являюсь програмистом и не могу поучаствовать ни в написании кода ни в предложении

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

Если что-то усиленно продвигают, то это наверняка нехорошее. Питон - не учебный язык, а потому хорошему не научит. Компьютерные игры, как игры вообще необходимы всем. Тем более детям. Но тут нужно выбирать. Хорошие компьютерные игры есть. Вы просто их не ищете. PascalABC.NET, к сожалению, становится всё менее учебным и всё более “элитарным”. Увы, такова сегодняшняя жизнь.

Здесь полно мифов. Мы реализовывали наш Паскаль прежде всего чтобы использовать для обучения учеников Воскресной компьютерной школы при мехмате ЮФУ, а это примерно 300 школьников в год. В своё время не было адекватной системы, в которой можно было бы учить детей современному программированию. Питон в то время уже был, но его тогда не сильно пиарили для использования в школах.

Это потом PascalABC.NET стал третим по популярности языком при использовании на всероссийских олимпиадах по программированию среди школьников.

Мы даже удостоились статьи на Хабре, правда отрицательной и от разъярённого безмозглого школьника, но это всё равно - признак известности и узнаваемости.

PascalABC.NET не становится менее учебным по той причине, что мы его развиваем прежде всего для учебного направления. Школьники, студенты.

То, что у кого-то после прочтения форума и Githubа может сложиться мнение, что наш Паскаль какой-то не такой - ну да, может сложиться. Но здесь мы обсуждаем глубокие вещи, связанные с реализацией компилятора, а это всегда сложно. Ещё мы обсуждаем какие-то тонкие конструкции на границе Паскаля и платформы .NET - это нужно чтобы язык был внутренне законченным и логичным, но никогда это не используется в учебных проектах. Ещё мы обсуждаем с программистами, а не преподавателями. Преподавателям нам есть что сказать гораздо больше - вы уж поверьте. А в учебном программировании мы используем нашу авторскую методику, где нет сложных конструкций.

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

Вот - одна из игр, на которой мы учим школьников современному программированию:

uses WPFObjects,Timers,Controls;

var n := 20; 

begin
  Window.Title := 'Собери квадраты на время';

  Window.Width += 100;
  AddLeftPanel(200,GrayColor(230));
  
  var gameTime := RealBlock('Время игры, сек: ',16);
  var countSquares := IntegerBlock('Собрано квадратов:',16);
  TextBlock('Таблица рекордов',14);
  var recordsTable := ListBox(0,200);
  var startButton := Button('Новая игра',14);

  var c := new CircleWPF(GraphWindow.Center, 20, Colors.Green);
  
  var startTime := 0;
  var t := new Timer(100,()->
  begin
    gameTime.Value := (Milliseconds-startTime)/1000;
  end);

  
  startButton.Click := () -> begin

    gameTime.Value := 0;
    countSquares.Value := 0;

    loop n do
      new SquareWPF(RandomWindowPoint(30),30,RandomColor);

    startTime := Milliseconds;
    t.Start;
    startButton.Enabled := False;
  end;  

  BeginFrameBasedAnimationTime(dt->begin
    if not t.Enabled then 
      exit; 
    c.MoveTime(dt);
    foreach var x in c.IntersectionList do
    begin
      x.Destroy;
      countSquares.Value += 1;
      if countSquares.Value = n then // Конец игры
      begin
        t.Stop;
        recordsTable.Add(gameTime.Value.ToString(1)+' сек');
        recordsTable.Sort;
        startButton.Enabled := True;
      end;  
    end;
  end);
  
  OnKeyDown := k -> begin
    case k of
      Key.Left:  c.Direction := (-5, 0);
      Key.Right: c.Direction := (5, 0);
      Key.Up:    c.Direction := (0, -5);
      Key.Down:  c.Direction := (0, 5);
    end;
  end;
  
  OnKeyUp := k -> begin
    c.Direction := (0, 0);
  end;
  
end.

Всё это есть уже давно в разнообразных конструкторах игр, скретче, Constructе и т.д. Но здесь - это текстовое написание программы, а не визуальное - из квадратиков.

Если это кажется сложным и уводящим Паскаль в сторону, то да - у нас разные ориентиры. Современное программирование без всего этого существовать не может.

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

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

Как раз такой, именно такой!

Тут проблема в том что олимпиады ориентированы на старшеклассников, а на примере code . org видно что обучать программированию можно лет с 6-ти, в игровой форме. По моему раннее обучение в такой форме способствует развитию логики в том числе.

По моему PascalABC . NET знают везде где знают русский язык.

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

На западе для обучения программированию в школах, на сколько я знаю, используют Scratch

По-моему, это пустая трата времени, а надо просто сразу начинать кодить на нормальных языках, с чистого листа, с begin end…

2 лайка

Прочитал вышеуказанную цитату, и не могу не высказаться.

Да, компьютерные игры тратят время и деньги. Это известный и печальный факт. Но есть и плюсы, даже в самых печально известных из них.

Возьмём, к примеру, Dota 2. К моменту окончания магистратуры у меня в ней было порядка 4000 наигранных часов. Много, отвратительно, я жалею о количестве потерянного времени. Однако, именно эта игра, вкупе с другой вредной привычкой - просмотром сериалов - позволила мне подтянуть письменный и разговорный английский язык до более чем неплохого уровня (может быть, я и высоко слишком себя оцениваю, но писать длинные письма в техподдержку всяких компаний по работе меня хватает, как и разговаривать голосом при необходимости). Нет более эффективного способа учить язык, чем общение с его носителями.

Другой пример - Lineage 2. Количество времени, опять таки, крайне много. Но… В играх RPG зачастую характеристики, их взаимодействие, влияние на силу персонажа очень сложны - в ход идут вероятности, различного роста функции с вычисляемыми коэффициентами, и т.д. Отдельный вопрос - расчет количества необходимых для улучшения предмета материалов с учётом возможности неудачи при разных степенях улучшения. Для того, чтобы быть эффективным в такой игре, необходимо понимать буквально все это досконально. И запоминать. Подобный опыт очень неплохо развивает мозг, те же расчеты бухгалтерии или инструкция по получению документов с походом в несколько инстанций кажутся детским лепетом. Дополнительно - если играть не на русских серверах, то английский там ещё более актуален, поскольку вместо простых фраз вроде “идём туда-то, бьём того-то”, там диапазон применяемых средств самовыражения очень сильно расширен.

Если не из мира онлайна - те же вселенные Mass Effect, Star Wars: Knights of the Old Republic (общепринято, что история из этой серии лучше, чем в фильмах), Dragon Age, Elder Scrolls. Представляют из себя интерактивные истории с десятками и сотнями интересных диалогов, сложных моральных выборов, драматических ситуаций. Как минимум - язык повествования очень хорош и литературен, как максимум - это книга, в которой несколько нетривиальных концовок, и может не просто представить себя на месте персонажа, а быть им в самом прямом смысле. Это самое настоящее искусство, что бы там кто ни говорил.

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

Нет, привыкание вызывает все подряд, вне зависимости от стиля, качества, и жанра игры. Повторюсь: с этим можно справиться, за счёт мягкого и эффективного контроля со стороны родителей, с использованием персонально выбранных методов мотивации чада.

Ремарки насчёт развития в сторону визуального программирования вызывают отторжение. У всех языков есть своя ниша. У PABC.NET это старшая школа, университеты, олимпиады. Расширение этой ниши приводит как минимум к разбазариванию разработческих ресурсов - а у команды языка их не так уж много. Как максимум - попытка ее расширить может привести к совершенно не требуемому усложнению компилятора, пользовательского интерфейса, функциональности.

Не надо так. Может, ещё и агрономов будем лопате в нем учить? Для всего есть свои инструменты…

Учит не язык, учат учителя и преподаватели. Правильно составив курс, имхо, можно учить хоть на Haskell. Из всех доступных вариантов, окромя PABC.NET, Python - лучшая кандидатура, т.к. немногословен, мультипарадигмен, не требует предварительных знаний и умений (как классы для Java или заголовочные файлы в C/C++).

Люди, которые на этом форуме высказываются против Python в качестве первого языка программирования, обычно либо чересчур biased, либо просто повторяют за другими про “неучебность” языка, не имея собственных аргументов. Представите?

Вот вам очень приличный список в данном посте. Предлагаю Mass Effect или SW:KOTOR попробовать для начала. :slight_smile:

P.S. А мобильные игры - тратящее время и деньги го#@о без каких-либо других целей по определению. Сами не тратьте, и детям давать не стоит.

P.P.S. @Admin, я Ваши аргументы насчёт Python (и других языков в качестве “первых”) видел неоднократно. Однако, потратив минут 10 на поиск на официальном сайте проекта, я не смог найти никакого сравнительного анализа с целью это доказать широкой общественности. А есть ли оно вообще? И если есть, то где? Может, стоит ближе к главной странице вытащить?

Я веду речь о собственном опыте и об опыте еще нескольких преподавателей в моём ближайшем окружении. Не обращайте на это внимания )) Мы ангажированы Паскалем )

Питон мы тоже преподаём - какие-то его моменты нам не нравятся. Но многим школьникам нравится простота и лаконичность. Здесь сказывается парадокс: мы их учим год на Паскале, и они многое умеют. А потом решаем лёгкие проходные задачи на Питоне чтоб завлечь. И им кажется, что он лёгкий ) А ошибки их мы ходим и исправляем. Реакция на них у Питона - не очень понятная для школьника.

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

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

Нет, вижу всё-таки. Огромное количество библиотек. В частности по машинному обучению. А за этим будущее и настоящее. Уже школьники осваиваются с этими библиотеками. Вот это действительно достойно уважения.

Нет, учит именно язык, а не учитель. А что, хороший учитель сможет улучшить плохой язык? А чему хорошему учит Питон? Как быстрее что-нибудь слепить. А разве в жизни нужно это? Надёжность программ гораздо важнее быстроты набора кода. Уже Гвидо ван Россум отказался от Питона, а его всё нахваливают и расхваливают.

Что касается школьного уровня, то что именно на Питоне быстрее и проще написать? Например, по сравнению с Си-шарпом. Нет констант - ура! Переменной можно присвоить любое значение - вообще ура! Цикл for, сделанный через задницу, - гип-гип ура! Отступы: шаг в сторону - расстрел.

И точно так же несколько лет назад впаривали Скретч, который уродует психику ребёнка.

Конечно, у каждого ЯП своя ниша, но не в каждой нише хочется копаться.

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

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

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

bullet_hell-ы, в серии Touhou Project очень качественные. На них невозможно потратить больше часа в день, на сколько бы не затягивало. После определённого момента просто перестаёт получатся, потому что надо не мало концентрации внимания.

Стратегии, практически любые. От себя могу немного устаревшую классику порекомендовать, Space Rangers 2 HD.

Игры про написание кода, как 7 Billion Humans или EXAPUNKS. Первое это перетягивание блоков, больше как в скратче, а второе - это полноценное написание всего ручками, на ассемблеро-подобном языке.

Не вижу причин почему нельзя создавать задания по программированию где нужно, на пример подобрать подходящее окончание к письмам, которые написаны в разных стилях (начинающихся с Dear Sir or Madam или Dear Mrs / Mr / Ms или Hello / Dear friend.) Или проанализировать текст письма и составить программку для замены сокращений на полные высказывания. Задачек по программированию, в помощь изучения английского можно придумать массу и различной сложности. Не говоря уже о задачках по математике, физике и химии. Тем более что сегодня каждый ученый должен уметь программировать.

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

Задача выделить ручкой все приставки в словах предложения на бумаге делается 1 минуту, проверяет понимание концепта частей слова. Аналогичная задача на компьютере - поиск префиксов с наложением эвристических алгоритмов - будет делаться часы. Или даже дни. Для изучения программирования сойдёт. Для изучения русского языка - нет. Слишком много времени тратится на не относящееся к теме.

Такие задачи полезны в случае наличия непрофильных программистских курсов, например, на физфаке/химфаке: вроде что-то знать надо, но не слишком много; будем в консоли напряжение считать по закону Ома, т.к. все его уже знают, и нужно оперировать знакомыми терминами.

Нет, не каждый учёный. Большинству хватает специализированного софта (крайне далёкого от программирования), оборудования, и листа с ручкой. Ну, или матлаба, на крайняк. Для посвященных.

P.S. Какие вообще учёные? Мы тут школьников из средней школы обсуждаем ващет…

Я говорил про английский язык

Возражать не буду, в “глобальном смысле” сути дела это не меняет.

Подытожу моё личное мнение, сказанное выше:

  1. На западе (пока вне классное) преподавание программирования возможно с лет 6 , в том числе и на русском языке (пример - code . org)
  2. Python постепенно вытесняет Pascal в образовательной сфере (примеры - внеклассные кружки, детские интернет курсы, детские лагеря “образовательного направления”)
  3. Преподавание Python ведётся в основном, не только, но в основном, в русле создания комп. игр
  4. На сегодняшний день отсутствует возможность для младших школьников объединять изучение программирования с занятиями в “олимпиадном” направлении
  5. Если создать систему где преподавание программирования будет раннего детского возраста, по аналогии с code . org, с тем что бы за тем плавно направлять учеников в в “олимпиадном” направлении и возможно робототехники (на пример Lego), то думаю что выиграют все.

Мы не занимаемся олимпиадным программированием. Нам оно не нравится

2 лайка

На сколько мне известно, там Scratch преподают только в рамках начальных классов.

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

Скажите пожалуйста, зачем переводили всё что связано с PascalABC . NET на английский, если

Начинали реализовывать. И конечно компьютерная школа остаётся одной из целей. Это наш методический питомник.

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

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