Представьте себе, современные школьники пишут ровно такой код. Вы называете его профессиональным, потому что он используется в профессиональных языках, мы его называем современным, позволяющим компактно и эффективно выразить мысль, алгоритм.
Современные школьники очень быстро хватают этот современный стиль, и программирование для них становится интересным экспериментом, позволяющим решать реальные задачи.
А по поводу настоящего Паскаля - их много. Открываем статью в английской википедии: 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 в русскоязычном пространстве, и это правильно и здорово.
Ну это вам так удобно - не брать во внимание. Это - современный Паскаль, который по возможностям превосходит 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.
Лучше покажите сразу на примере. Например, есть коллекция { 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.
PABS это PascalABC на сленге в официальных каналах telegram разработчиков языка.
Точно нет - почитайте телеграм канал. PABC скорее
> У PABS, насколько мне известно, здесь были большие проблемы именно из-за выбранной изначально архитектуры.
Нет никаких проблем у PascalABC.NET с этим. TypeChecker вшивается во многие компиляторы, тут нет проблем. И TypeChecker не является частью Language Serverа - в LSP нет понятия типов.
Да, прочитал первую статью - очень грамотная и интересная.
Текст этой статьи конечно тоже великолепно структурирован. А пробовали ли Вы на ваших детях какие-то элементы обучения технологическому предпринимательству или каким-то связанным Soft skills?
Просто по моему опыту выглядит это достаточно нереалистично, хотя и интересно - ничего не скажешь.
И невольно сравниваешь с ИТ-курсами, которые я достаточно часто встречаю с рекламой "у нас преподают не всякие там учителя и университетские преподаватели, а люди из промышленности. Будете учиться у нас - будете такими же как они, будете зарабатывать большие деньги, и в ВУЗ поступать не нужно будет".
Конечно глазом видно, что у Вас правильный и фундаментальный подход к вопросам образования, но склонением к технологическому предпринимательству школьников заняты многие и не лучшие - увы :(
Еще я отметил, что Вы видимо на заре этой деятельности занимались олимпиадным программированием, а сейчас видимо отошли от этого, потому что реальный мир богаче и интереснее. Но вот насколько в вашем курсе присутствует подготовка к спортивному программированию?
Почему бы автору самому не взяться за подготовку группы школьников по предлагаемой им методике? Ведь никто из школьных преподавателей за такое не возьмётся.
Сразу выяснятся подробности и детали, автор увидит разные проблемы у реальных детей и сделает какие-то выводы. В статье как раз следовало бы рассказать о таком опыте.
Предлагать то, что должны делать другие, не имея на то ни ресурсов ни полномочий ни реального представления о возможностях и возрастных особенностях школьников - такая себе задача.
Нет, я не эксперт здесь. Я понимаю, что это ирония. Я читаю классический курс по компиляторам - ничего особенного.
Но действительно, архитектура K1 - совершенно классическая, архитектура K2, где синтаксическое дерево затем украшается семантикой, - тоже классическая. Выгода здесь понятно в рефакторинге. И два бонуса. Основной - это масштабирование на несколько целевых архитектур. Я думаю, ради этого всё затевалось. Второй - ускорение компиляции - это бонусом. Повторюсь, не случайно в списке литературы абсолютно стандартная и древняя Dragon book.
Из альтернатив, тоже довольно стандартных, является построение по синтаксису отдельного семантического дерева. Здесь есть свои преимущества и недостатки, но их никто толком не анализировал.
Про сахарные преобразования в статье сказано скупо, что этот этап есть. А это самое интернюесное, потому что именно здесь могут быть конфликты - некоторые сахарные преобразования можно выполнять только до других, а иные рекурсивно зависят от других, и нет регулярной литературы, описывающей решения. Наконец, понятно, что в сахарных преобразованиях участвует семантика, но проблема в том, что семантика может быть на момент сахарных преобразований еще не до конца выведена. Вот об этом было бы интересно послушать. Об этом не пишут в учебниках и не сравнивают с другими реализациями.
Ничего особенного с точки зрения компиляторов. Одна из возможных архитектур в развитии. Показательна ссылка на Dragon book как одну из базовых и уже достаточно устаревших.
Абсолютно ничего особенного - лямбды простейшие. Вот - скрин задания с урока три недели назад.
Конечно, надо понимать, что это не обычная школа - это компьютерная школа мехмата ЮФУ - авторские методики и всё такое.
Но можем отсыпать десяток )
А что по вашему есть современный ЯП, предназначенный для обучения?
Да, Моно можно сказать - умер. ПАБС в ближайшее время будет переходить на dotnet
Понимаю, что вы завидуете )
Представьте себе, современные школьники пишут ровно такой код. Вы называете его профессиональным, потому что он используется в профессиональных языках, мы его называем современным, позволяющим компактно и эффективно выразить мысль, алгоритм.
Современные школьники очень быстро хватают этот современный стиль, и программирование для них становится интересным экспериментом, позволяющим решать реальные задачи.
А по поводу настоящего Паскаля - их много. Открываем статью в английской википедии: https://en.wikipedia.org/wiki/Pascal_(programming_language) и читаем, что есть в линейке языков Pascal: Delphi, Free Pascal, PascalABC.NET... Не мы это писали ). Удивительно, что я там не вижу RemObjects Oxygene - не менее современный Паскаль со своими интересными особенностями.
Прежде всего зафиксируем то, что PascalABC.NET - это современный Pascal. Внутриблочные переменные появились в нем раньше чем в Delphi лет на 15:
Во-вторых, всё что вы говорите - это не язык. Это платформа и окружающие сервисы. PascalABC.NET никогда не претендовал на промышленность использования, поэтому сравнивать его с Delphi как платформы по применимости в профессиональной сфере бессмысленно.
А как язык PascalABC.NET богаче Delphi. И это не случайное надергивание - это сбалансированный набор возможностей языка и библиотечных средств, позволяющий писать эффективный компактный понятный современный код. Использовать их в обучении кстати - что - тема этой статьи.
Еще раз - ни в коем случае не хотел вас обидеть - вы очень много делаете для продвижения современного Delphi в русскоязычном пространстве, и это правильно и здорово.
Да, виноват, там должно быть
Ну это вам так удобно - не брать во внимание. Это - современный Паскаль, который по возможностям превосходит Delphi. И которым кстати пользуются современные школьники - весьма эффективно - как раз по теме топика.
Кроме того, мнение, что PascalABC.NET - это C# не оправдано - мы брали туда очень многое из Python, Kotlin и даже Haskell.
Школьников-олимпиадников - незримо малое множество. Олимпиады - это хорошо, но они - не про "научиться программированию". А в тексте статьи - ровно про это
Очень интересно увидеть поиск по графу на Питоне, не отвлекаясь на особенности конкретного языка
Современный Паскаль - это автовывод типа, дженерики, лямбды, перегрузка функций и операторов. И процедурный тип конечно - куда же без него )
Мы учим детей как раз лямбдам и LINQ, сочетая их для баланса с алгоритмами - так что всё правильно
Всё есть уже давно
Точно нет - почитайте телеграм канал. PABC скорее
> У PABS, насколько мне известно, здесь были большие проблемы именно из-за выбранной изначально архитектуры.
Нет никаких проблем у PascalABC.NET с этим. TypeChecker вшивается во многие компиляторы, тут нет проблем. И TypeChecker не является частью Language Serverа - в LSP нет понятия типов.
Мне к примеру нужен редактор с подсветкой синтаксиса. Есть ли в Avalonia или MAUI такое?
Да, прочитал первую статью - очень грамотная и интересная.
Текст этой статьи конечно тоже великолепно структурирован. А пробовали ли Вы на ваших детях какие-то элементы обучения технологическому предпринимательству или каким-то связанным Soft skills?
Просто по моему опыту выглядит это достаточно нереалистично, хотя и интересно - ничего не скажешь.
И невольно сравниваешь с ИТ-курсами, которые я достаточно часто встречаю с рекламой "у нас преподают не всякие там учителя и университетские преподаватели, а люди из промышленности. Будете учиться у нас - будете такими же как они, будете зарабатывать большие деньги, и в ВУЗ поступать не нужно будет".
Конечно глазом видно, что у Вас правильный и фундаментальный подход к вопросам образования, но склонением к технологическому предпринимательству школьников заняты многие и не лучшие - увы :(
Еще я отметил, что Вы видимо на заре этой деятельности занимались олимпиадным программированием, а сейчас видимо отошли от этого, потому что реальный мир богаче и интереснее. Но вот насколько в вашем курсе присутствует подготовка к спортивному программированию?
Почему бы автору самому не взяться за подготовку группы школьников по предлагаемой им методике? Ведь никто из школьных преподавателей за такое не возьмётся.
Сразу выяснятся подробности и детали, автор увидит разные проблемы у реальных детей и сделает какие-то выводы. В статье как раз следовало бы рассказать о таком опыте.
Предлагать то, что должны делать другие, не имея на то ни ресурсов ни полномочий ни реального представления о возможностях и возрастных особенностях школьников - такая себе задача.
Нет, я не эксперт здесь. Я понимаю, что это ирония. Я читаю классический курс по компиляторам - ничего особенного.
Но действительно, архитектура K1 - совершенно классическая, архитектура K2, где синтаксическое дерево затем украшается семантикой, - тоже классическая. Выгода здесь понятно в рефакторинге. И два бонуса. Основной - это масштабирование на несколько целевых архитектур. Я думаю, ради этого всё затевалось. Второй - ускорение компиляции - это бонусом. Повторюсь, не случайно в списке литературы абсолютно стандартная и древняя Dragon book.
Из альтернатив, тоже довольно стандартных, является построение по синтаксису отдельного семантического дерева. Здесь есть свои преимущества и недостатки, но их никто толком не анализировал.
Про сахарные преобразования в статье сказано скупо, что этот этап есть. А это самое интернюесное, потому что именно здесь могут быть конфликты - некоторые сахарные преобразования можно выполнять только до других, а иные рекурсивно зависят от других, и нет регулярной литературы, описывающей решения. Наконец, понятно, что в сахарных преобразованиях участвует семантика, но проблема в том, что семантика может быть на момент сахарных преобразований еще не до конца выведена. Вот об этом было бы интересно послушать. Об этом не пишут в учебниках и не сравнивают с другими реализациями.
Ничего особенного с точки зрения компиляторов. Одна из возможных архитектур в развитии. Показательна ссылка на Dragon book как одну из базовых и уже достаточно устаревших.
Это у вас плохие преподаватели были