Замечания и предложения

Конечно PascalABC.NET очень хорош для обучения. Иначе бы я даже не пытался его продвигать. Проблема не в PascalABC.NET. Проблема на другой стороне. На стороне учащихся. Они воспринимают PABC как дополнительную когнитивную нагрузку. Шаг в сторону (изнурительную работу) . На Python можно изучать язык программирования играючи (есть такой проект). Или сделать даже неплохую игру. Или сайт серьезный сделать на Django. Или натренировать модель на TensorFlow или Pytorch. Или бота для ВК написать. Да много чего еще.

Python плох, но научиться скрипты писать на нём значительно проще, чем на Pascal.

Может быть есть путь при котором можно гибко писать код? Например, выставил в опциях компилятора автозамену // и % на div/mod. И отступы вместо begin end )))) Да, это будет другой язык, который легко транслируется в Pascal или Python (простые скрипты). И пусть в глазах смотрящего это будет Python. А исполняемый файл будет .Net

А это потому, что Вы их переучивать пытаетесь. Они же знают, что для сдачи ЕГЭ достаточно того, чему их научили. Им не нужно изучать фишки паскаля, им нужно сдать ЕГЭ. А язык они будут в вузе изучать, который по программе там будет.

PascalАВС.NЕТ - это для изучения с азов. Переучивать можно (и нужно) учителей, а не детей. Либо жестко сказать: я делаю разбор только на таком-то языке. И примириться с потенциальной потерей части аудитории. Но вибрировать между диалектами хуже намного.

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

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

А можно несколько конкретных примеров, иллюстрирующих это “значительно проще”? Чтобы стало понятно, о чём Вы говорите. Можно со ссылками - как удобно.

1 лайк

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

/// Поворот матрицы вправо на 90
begin
  var n := ReadInteger;
  var a := MatrRandom(n, n, -99, 99);
  a.Println;
  Writeln;
  for var i := 0 to n div 2 do
    for var j := i to n - i - 2 do
    begin  
      var tmp := a[i,j];
      a[i,j] := a[n-j-1,i];
      a[n-j-1,i] := a[n-i-1,n-j-1];
      a[n-i-1,n-j-1] := a[j,n-i-1];
      a[j,n-i-1] := tmp;
    end;  
  a.Println
end.

Пока еще ни один адепт серпентологии не написал чего-нибудь внятного. Видимо, Ван Россум тут нужен… Поясню: на просьбу показать скрипт-аналог все время ответ в стиле “сам дурак!”.

1 лайк

На мой взгляд недостаток Python в том, что первые программы можно писать не задумываясь о типах. Опять же, ИМХО, плюс классического Pascal в том, что типы нужно описывать явно в отдельном блоке. Это как разница между арифметикой и физикой. И уже оперируя типами в мышлении мы можем легко переходить на вывод типов. Можем писать var a = 2+3. Но когда в самом начале от школьника требуют писать VAR что ему сказать? Для локальных переменных тип указывать? Будет еще больше кода

Код на Pascal читать легче, потому что в синтаксисе больше слов. Непривыкшему глазу проще. По первости код на Си воспринимается как набор крокозябр. Но далее возникает проблема набора “многобукв”. Проще поставить % вместо MOD или && вместо AND. Или вообще не писать BEGIN END, а ставить отступы.

Они воспринимают PABC как дополнительную когнитивную нагрузку.

А это потому, что Вы их переучивать пытаетесь.

Так они в целом Pascal считают нерациональной когнитивной нагрузкой. И стремятся минимизировать свои усилия по его изучению.

Этот “плюс” изгнали все современные языки, он не вписывается в современные парадигмы и ломает оптимизацию кода.

Кода больше не будет. Ну приведите примеры.

2 лайка

В каждом языке есть свои уникальные плюсы. Матрицы в Python его слабое место. Списки вместо массивов его сильная сторона. Вот код решения задачи 27-115 на Python. И не нужно объяснять им про динамические массивы

(PS:не понял, почему картинки такие большие вышли)

Опять не в ту степь! Писать нужно не быстро, а правильно. Быстро только кошки родятся. Код должен быть НАДЁЖНЫМ. Всё остальное - от лукавого. Разработка программы - это не быстрый набор текста, с которым справится и секретарша. А кто докажет верность алгоритма, кто тестирует программу, кто её отлаживает?

ПОСПЕШИШЬ - ЛЮДЕЙ НАСМЕШИШЬ.

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

Всё познаётся в сравнении. Где тесты, доказывающие, что Питон лучше паскаля? Личное мнение и предпочтения доказательствами не являются.

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

Согласен: большая куча дерьма гору не заменит.

begin
  var (n, k) := ReadInteger2;
  var ma := ReadSeqInteger(n).ToList;
  var (max1, max2) := (0, 0);
  foreach var i in 1..n-k do
  begin
    var x := ReadInteger;
    var r := i mod k;
    if ma[r] + x > max1 +max2 then
      (max1, max2) := (ma[r], x);
    if x > ma[r] then
      ma[r] := x
  end;
  Print(max1, max2)
end.

Ну-с… и где преимущество Питона? Хотели со списком - пожалуйста.

1 лайк

Проще всего ничего не писать. Я уже давно так делаю. Но скучно…

1 лайк

Тогда лучше сразу на F#. Там есть над чем подумать ))))

И в чём прелесть этого примера на Питоне? Что такое map? (я знаю) Чем цикл со списком понятнее обычного? Что мешает использовать списки и подобный цикл на паскале? Типы - это основа любой науки. А на Питоне легко можно складывать метры и килограммы. Получатся килограммометры. Что-то со времён 70-х годов я не наблюдаю всплеска когнитивности и креативности у подрастающего поколения. Только лень и нытьё. Вот и ищут они халяву по всем направлениям.

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

КРАТКОСТЬ - МЕДСЕСТРА ТАЛАНТА

1 лайк

Возможно что и лучше. Я такого не пробовал, а спросить не у кого.

Типы скрыты, о чём я и говорил. Есть магия. Есть ToList. Соответственно нужно рассказывать про операции ToList и почему он не Array. А еще меня понесёт и я им расскажу, что он на самом деле Array, только внутри. И при переполнении он перезаписывается в новую память, а это требует времени )))

А заодно еще и про Seq (генераторы) пару слов, что он тоже не Array. И какие операции с ним есть…

А в Питоне они не скрыты? У Вас отсутствие явного указания типа то достоинство, то недостаток. Вы уж определитесь.

Я не понял Вас. Сетуете, что нужно что-то рассказывать? Но это нормально совершенно. Можно подумать, в Питоне не нужно рассказывать ничего. List лишь потому, что Вы написали про List, а так он не нужен, задача явно на массивы, но в Питоне их нет, поэтому костыли-списки используются. И это в Питоне надо обяснять ,почему список - не массив.

В самом начале написал, что это главный недостаток Python, как языка для основ программирования, ИМХО.

Ну пишите var x: integer := ReadInteger; - кто запрещает?

Я и написал в примере выше. “Многобукв” - это заключение от …

… подрастающего поколения. Только лень и нытьё. Вот и ищут они халяву по всем направлениям.

PS: Спасибо за мысли. Буду выдумывать примеры, чтобы продвинуть PABC.NET в массы.

1 лайк

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