Обновить
4
Станислав Михалкович@miksmiks

Преподаватель

Отправить сообщение

Абсолютно ничего особенного - лямбды простейшие. Вот - скрин задания с урока три недели назад.

Конечно, надо понимать, что это не обычная школа - это компьютерная школа мехмата ЮФУ - авторские методики и всё такое.

Но можем отсыпать десяток )

А что по вашему есть современный ЯП, предназначенный для обучения?

Да, Моно можно сказать - умер. ПАБС в ближайшее время будет переходить на dotnet

Понимаю, что вы завидуете )

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

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

А по поводу настоящего Паскаля - их много. Открываем статью в английской википедии: https://en.wikipedia.org/wiki/Pascal_(programming_language) и читаем, что есть в линейке языков Pascal: Delphi, Free Pascal, PascalABC.NET... Не мы это писали ). Удивительно, что я там не вижу RemObjects Oxygene - не менее современный Паскаль со своими интересными особенностями.

Прежде всего зафиксируем то, что PascalABC.NET - это современный Pascal. Внутриблочные переменные появились в нем раньше чем в Delphi лет на 15:

begin
  var n := 10;
  for var i:=1 to n do
    Print(i)
end.

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

А как язык PascalABC.NET богаче Delphi. И это не случайное надергивание - это сбалансированный набор возможностей языка и библиотечных средств, позволяющий писать эффективный компактный понятный современный код. Использовать их в обучении кстати - что - тема этой статьи.

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

Да, виноват, там должно быть

var Names := a.Where(p -> p.IsAdmin).Select(p -> p.Name).ToArray;

Ну это вам так удобно - не брать во внимание. Это - современный Паскаль, который по возможностям превосходит Delphi. И которым кстати пользуются современные школьники - весьма эффективно - как раз по теме топика.

Кроме того, мнение, что PascalABC.NET - это C# не оправдано - мы брали туда очень многое из Python, Kotlin и даже Haskell.

Школьников-олимпиадников - незримо малое множество. Олимпиады - это хорошо, но они - не про "научиться программированию". А в тексте статьи - ровно про это

Очень интересно увидеть поиск по графу на Питоне, не отвлекаясь на особенности конкретного языка

Лучше всего Pascal. Никаких шаблонов. Никакой перегрузки функций и операторов.

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

// PascalABC.NET 3.11
type
  Vec3 = auto class
    x, y, z: real;
    class function operator+(v1, v2: Vec3): Vec3 
      := new Vec3(v1.x + v2.x, v1.y + v2.y, v1.z + v2.z);
    class function operator*(v: Vec3; r: real): Vec3 
      := new Vec3(v.x * r, v.y * r, v.z * r);
    class function operator*(v1, v2: Vec3): real 
      := v1.x * v2.x + v1.y * v2.y + v1.z * v2.z;
  end;

begin
  var v1 := new Vec3(1,2,3);
  var v2 := new Vec3(4,5,6);
  (v1 *v2).Print;
end.

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

Лучше покажите сразу на примере. Например, есть коллекция { Name, Title, IsAdmin }. Как её превратить в коллекцию { Name } из одних админов? Или любой другой пример, всё равно.

// PABC.NET 3.11
type 
  Person = auto class 
    Name, Title: string;
    IsAdmin: boolean;
  end;

begin
  var a := [
    new Person('Ivanov','Title1',False),
    new Person('Sidorov','Title2',False),
    new Person('Petrov','Title3',True)
  ];
  var Names: array of string := a.Select(person -> person.Name).ToArray;
  Names.Println
end.
var lam: integer → boolean := x → x > 5;
Arr(1..9).Select(x → x + 1).Where(lam).Print;

Лямбды есть в Паскале? Как там декларативно описывать преобразования данных?

Всё есть уже давно

PABS это PascalABC на сленге в официальных каналах telegram разработчиков языка.

Точно нет - почитайте телеграм канал. PABC скорее

> У PABS, насколько мне известно, здесь были большие проблемы именно из-за выбранной изначально архитектуры.

Нет никаких проблем у PascalABC.NET с этим. TypeChecker вшивается во многие компиляторы, тут нет проблем. И TypeChecker не является частью Language Serverа - в LSP нет понятия типов.

Мне к примеру нужен редактор с подсветкой синтаксиса. Есть ли в Avalonia или MAUI такое?

Да, прочитал первую статью - очень грамотная и интересная.

Текст этой статьи конечно тоже великолепно структурирован. А пробовали ли Вы на ваших детях какие-то элементы обучения технологическому предпринимательству или каким-то связанным Soft skills?

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

И невольно сравниваешь с ИТ-курсами, которые я достаточно часто встречаю с рекламой "у нас преподают не всякие там учителя и университетские преподаватели, а люди из промышленности. Будете учиться у нас - будете такими же как они, будете зарабатывать большие деньги, и в ВУЗ поступать не нужно будет".

Конечно глазом видно, что у Вас правильный и фундаментальный подход к вопросам образования, но склонением к технологическому предпринимательству школьников заняты многие и не лучшие - увы :(

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

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

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

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

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

Но действительно, архитектура K1 - совершенно классическая, архитектура K2, где синтаксическое дерево затем украшается семантикой, - тоже классическая. Выгода здесь понятно в рефакторинге. И два бонуса. Основной - это масштабирование на несколько целевых архитектур. Я думаю, ради этого всё затевалось. Второй - ускорение компиляции - это бонусом. Повторюсь, не случайно в списке литературы абсолютно стандартная и древняя Dragon book.

Из альтернатив, тоже довольно стандартных, является построение по синтаксису отдельного семантического дерева. Здесь есть свои преимущества и недостатки, но их никто толком не анализировал.

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

Ничего особенного с точки зрения компиляторов. Одна из возможных архитектур в развитии. Показательна ссылка на Dragon book как одну из базовых и уже достаточно устаревших.

Это у вас плохие преподаватели были

Информация

В рейтинге
Не участвует
Откуда
Ростов-на-Дону, Ростовская обл., Россия
Зарегистрирован
Активность