Pull to refresh
4
0
Станислав Михалкович @miksmiks

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

Send message

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Например, для поиска подстроки в строке и 50 лет назад и сейчас использовалась стандартная функция. Да и алгоритм вычисления синуса все таки никто не пишет.

Даа, кто говорит. Но олимпиадное программирование это как высокий спорт. Это малое направление для избранных.

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

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

Ну нет, не надо. Это зависит от методики. Тем более, что во многих языках sort - внешняя функция.

Просто время игрушечных языков 50 летней давности ушло.

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

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

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

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

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

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

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

В непосредственном окружении - десятка два, которые учат именно школьников. Остальные - или в сети или же школьные учителя, с которыми мы контачим вживую.

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

Про синтаксический сахар - надо конечно определиться, что каждый из нас понимает под синтаксическим сахаром. Мы, когда учим школьников, начинаем с минимальным синтаксическим сахаром. Ну вот скажем Scratch и события в нем - это синтаксический сахар или что? Или использование готовой функции min - это сахар и надо самому писать?

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

По поводу методичек и Pascal собственно. Сейчас два года уже как Паскаль вымарывается из школьной программы, полностью или почти заменяясь Питоном. В новом ФГОС образца 2022 года на углубленном уровне Паскаль отсутствует. Всякий: Турбо, Delphi, PascalABC.NET. Там Python и C++. Все новые учебники уже полностью переписаны под Питон. А старыми нельзя будет пользоваться. Питон идет с 7 класса. Потом в 8, 9, 10 и 11. И начало выглядит так (учебник Босовой): ввод числа

a = input()
a = int(a)

а ввод двух чисел -

a,b = map(int, input().split())

И это на первых же занятиях. Так что пока мы с вами спорим синтаксический сахар пришел в виде тотального Питона.

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

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

Ну сейчас, спустя много лет, я наблюдаю-таки развитие языка Delphi - и очень неплохое. Дженерики насколько я понимаю в стиле C++, вот внутриблочные или по-ихнему inline-описания завезли и даже описание переменной цикла for в заголовке.

А оконные приложения на нем по-прежнему делать очень удобно.

Язык для обучения здесь явно звучит в уничижительном смысле - в противовес чему-то великому, используемому в промышленном программировании. Не принимается - это не так. PascalABC.NET используется для обучения, но сфера его применения куда больше - думаю, проще почитать на сайте. По мощности он в чем-то опережает даже современный Delphi (в котором так и не появились лямбда-функции с автовыводом типа), а по производительности немного отстает от C#.

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

(0..1000).Where(x -> Valid(x)).First.Print

Это не "что-то, выглядящее как функциональщина", это цепочки методов, которые и являются одним из элементов функционального программирования, которое сегодня немного в разное время стало появляться в современных меинстрим языках: Java, Kotlin, Rust и даже в C++ 20 довернули-таки ranges. Замечу, что в этом все упомянутые языки похожи друг на друга и никто не обвиняет друг друга, чем же это отличается от кого-то. Эти средства сегодня должны быть почти в каждом современном языке.

Сермяжного смысла переучиваться с begin-end нету никакого - те, кто к ним привык, смогут программировать по-старому и наверное будут это делать в чем-то другом, но опять-таки не все. Мы же используем это для обучения юных или молодых, которым не надо переучиваться и у которых нет неизгладимого опыта прошлого.

Я заинтересовался вашей фразой про "неявно созданные классы" - какие классы вы тут имели в виду?

Даже не знаю, что ответить по поводу горизонтального двоеточия ..

Диапазоны - они настолько повсюду, что я задумался - как можно спутать a..b и a.b и утверждать, что первое плохо, а второе - самое оно. И в Pascal собственно оно встречается с 1970 года например в статических массивах: array [1..10] of real или литеральных множествах [1..5, 10].

Но на вкус и цвет как говорится ..

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

Тут раз пять встречаются диапазоны в виде горизонтального двоеточия. Горизонтальное двоеточие не гуглится - даже пытаться не стоит.

Ну это мир LINQ, а не мир Питона всё-таки.

Нет, память не отъедается - вот реализация:

function Cartesian<T>(Self: sequence of T; n: integer)
  : sequence of (T, T); extensionmethod;
begin
  foreach var x in Self do
    foreach var y in Self do
      yield (x, y)
end;

В каждый момент времени в памяти - один кортеж. Сокращение перебора y от 0 до x - это всего лишь в 2 раза. И можно ошибиться с этим условием и получить неправильный ответ - на ЕГЭ бы я не рисковал. Там будут похожие задачи, но другие.

Здесь тоже

(0..1000).Where(valid).First.Print

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

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

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

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

Учителя не надо гнать из профессии - им и так несладко. Недавно был потрясен зарплатами - наши пошли помочь новой школе. Итог - 14200 на ставку, 3200 - доплата за степень, 3400 - доплата за 20 летний стаж. Без комментариев.

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

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

Например, в учебнике Босовой 2022 года для 7 класса на втором (!) занятии в теме Программирование используется код

a,b = map(int, input.split())

Сразу после переменных и присваивания.

Information

Rating
Does not participate
Location
Ростов-на-Дону, Ростовская обл., Россия
Registered
Activity