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

В принципе и при желании PascalABC.NET вполне можно и вероятно сделать монструознее, чем С++. Вероятно, у некоторых задача именно такая. В итоге у нас останутся полтора гордых пользователя этого ЯП. Меня это не устраивает. Я не разработчик языка, я несу его в массы. Сделать это всё сложнее, потому что он, как декабристы, страшно далёк от народа. Именно благодаря стараниям и усердию активных форумчан.

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

Не, все побежали, и я побежал.

2 лайка

@Admin, перенесите, пожалуйста, сообщения, не касающиеся темы кортежей, в Болталку.

1 лайк

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

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

Пусть желающие лепят мне любые ярлыки, но я все же еще раз замечу, что считап необходимым и поэтому несколько раз высказывал разработчикам свои опасения по поводу вырождения языка в элитарный. В GitHub лежат древние issue, до которых никак не дойдут руки. Почему? Ну вот теперь мои слова подтвердил еще один участник:

Пусть меня сочтут дурным, необразованным, неграмотным, но большую часть “улучшений” языка, сделанных за последние полгода, я даже не могу понять - она сто лет (на мой профанский взгляд) не нужна в Паскале простым смертным. Зато сколько полезного времени это все забрало у разработчиков!. Эти улучшения НИКОГДА и НИГДЕ, кроме “Справки”, описаны не будут именно по причине своей ненадобности массовому пользователю. Вспомните: только американский стандарт на язык C++ занимает более 1000 страниц описания. Мы идем к этому?

Мы ничего не делаем зря.

Можно уточнить, о каких “бесполезных” улучшениях идёт речь? Чтобы я мог предметно пояснить.

1 лайк

Уважаемый @Valery! На форуме может сложиться ощущение, что PascalABC.NET существует только для форума и четырёх-пяти человек, которые здесь что-то обсуждают. Поверьте - это не так :slight_smile:

Форум несомненно - это очень узкий клуб. Но на нем мы по крайней мере слышим некоторые идеи, разочарования, и - вот - фразы, что мы идём не туда )) Это гораздо лучше, чем не иметь никакой обратной связи.

По факту. PascalABC.NET используется как основное средство для обучения школьников в Компьютерной школе при мехмате ЮФУ. Это примерно 300 школьников в год. Есть единомышленники - ряд курсы по программированию для школьников в России проводится на PascalABC.NET.

PascalABC.NET является третьей по распространённости системой программирования на олимпиадах по программированию среди школьников. Вот пруфлинк: Статистика языков программирования Россия на региональном этапе 2018-19.xlsx (22,0 КБ)

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

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

1 лайк

Давайте сразу уточним: было написано

Т.е. это моя личная точка зрения. Я уже писал (и не раз), что если что-то заявляю, то это всегда моя личная точка зрения, а не какое-то “мнение возмущенной общественности”, но мало ли…

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

Далее - предложения, почему-то сразу вылившиеся в issure. Их там тьма-тьмущая, что-то сделано, что-то нет, зачем нужно было полгода спешно рыться в этих конструкциях, которые я здесь увидел впервые в жизни и которые я представить не могу, с какого перепугу могут встретиться в реальной паскалевской задаче. Я не стану сюда переписывать половину GitHub, чтобы приводить примеры.

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

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

Из приведенных данных можно сделать несколько любопытных заключений.

  • среди программировавших на Паскале доля использующих PacalABC.NЕТ составила 83.3%, а доля этих школьников составила лишь 19.8% от общего числа участников;
  • в 40 из 74 регионов 100% школьников, программирующих на Паскале, выбрали PascalABC.NЕТ;
  • В Ярославской области Паскаль оказался немного популярнее С/С++, но там почти не знают о PascalABC.NЕТ;
  • Адыгея, Удмуртия, Алтайский край, Омская область и Крым используют исключительно Free Pascal, а Псковская Область, Северная Осетия и Ямало-Ненецкий АО вообще не используют Паскаль.

В целом же, я бы не стал говорить, что PascalABC.NЕТ был третьим по популярности, но статистика тем и “замечательна”, что полученные данные можно интерпретировать различными, чуть ли даже не противоположными способами.

В приведенной выборке указано процентное отношение школьников, выбравших PascalABC.NЕТ к общему числу школьников, представлявших регион.

А вот то, что среди “паскалей” PascalABC.NЕТ уверенно лидирует (83.3%) - несомненно. Регионы, сделавшие 100% ставку на С/С++, если честно, меня удивили.

2 лайка

Для продвижения “языка” в массы можно наверное выложить какие-то курсы по программированию на https://welcome.stepik.org/ru/teach

Эти лекции можно наверное выложить на сайте https://infourok.ru/webinar

У харьковчан, по моему, получился не плохой цикл видеоуроков, который лежит в открытом доступе.

С первых же минут насторожило:

Мы будем изучать Free Pascal, но пользоваться редактором PascalABC.NЕТ. PascalABC.NЕТ шире чем Free Pascal…

Ну это все равно, что сказать “Мы пойдем в ресторан, выберем из меню то, что нам понравится, а потом закажем пиццу с колой”.

2 лайка

Я на это не обратил внимания. Не являясь программистом, в тот момент я ещё не понимал что Паскаль из когда-то прямого саженца превратился в деревцо с множеством ветвей, некоторые из которых уже перестали расти, поэтому не осознавал или не обращал внимания на разницу в названиях версий. К тому же, у Полякова на сайте, на пример, тоже сказано что для решения задачек из его книги могут быть использованы и Free Pascal и 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 на поиск на официальном сайте проекта, я не смог найти никакого сравнительного анализа с целью это доказать широкой общественности. А есть ли оно вообще? И если есть, то где? Может, стоит ближе к главной странице вытащить?