Обсуждение книги Осипова А.В. «PascalABC.NET: Введение в современное программирование»

Тут это всё обсуждение вашей книги - я не могу. Я бы только порекомендовал всем в своих сообщениях убрать наиболее яростные высказывания про школьных учителей, пусть и фигуральные. Или чем-то их заменить )

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

Отступы во все ЯП пришли из паскаля. Если кто-то не форматирует код - сам дурак. Это не слабость ЯП.

Во всех ЯП отступы, фигурные скобки и ключевые слова выполняют одну и ту же функцию - выделить блоки кода. И ТОЛЬКО в паскале это сделано РАЗУМНО. begin - начало блока end - конец Если немного знать английский (а его изучают с первого класса; да и вообще выучить 20-30 английских слов даже для меня не проблема). Фигурные скобки - уже абстракция. Отступы - это вообще виртуальное обозначение блоков.

Вы говорите с позиции взрослого человека, который уже немало знает о программировании. У детей слабо развито абстрактное мышление. Отступы ничего ему не говорят. Фигурные скобки лучше, но это тоже абстракция. Ключевые слова BEGIN-END - это вполне конкретное обозначение начала и конца блока. Для детей это гораздо понятнее, чем отступы и фигурные скобки.

Да, ключевые слова писать дольше, чем просто сделать отступ. Так мы и говорим об УЧЕБНОМ языке, а не об языке, на котором можно быстро разработать прототип будущей серьёзной программы.

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

Что такое def, elif? procedure, function, if - else if - else - then - это же человеческие слова. В паскале подпрограммы делятся на процедуры и функции, что логичнее, чем только функции, которые или возвращают, или не возвращают значения.

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

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

И в Питоне, и в паскале есть много хорошего. И плохого тоже немало. Нет в мире ничего идеального. Но если говорить об обучении, то паскаль всегда будет лучше Питона.

END.

Попробуйте детям объяснить что такое void. :slight_smile: Мне бы было очень интересно на это посмотреть.

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

3 лайка

Везде есть разумные люди. Так что трагедия с ЯП вполне себе оптимистическая.

BEGIN!

У меня были мысли об организации конференции по PascalABC.NET

1 лайк

На самом деле - из Algol-60:

Пример листинга для тех, кто сомневается ))) Это 1960-й год, уважаемые! Почти 60 лет назад!

Да как сказать… беда, но это не Питона беда, это иное. Беда в том, что списки эти школьникам предлагают считать (и называть (!) массивами) - и это несмотря на то, что совсем иные массивы есть в NumPy.

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

int value = 7;
void *voidPtr = &value;
int *intPtr = static_cast<int*>(voidPtr);
1 лайк

:slight_smile: Это и плюс Паскалю.

В связи с изменением нумерации в текстах всех приведенных в книге программ, весь материал был перевыложен 03.03.2019. Также, внесены изменения и дополнения, связанные с пересмотром разработчиками имен и особенностей некоторых функций и расширений. В части 5 добавлено упущенное мной описание расширения .SelectMany.

1 лайк

В связи с добавлением функционала в метод расширения .foreach для массивов, добавлен подраздел 5.3.3.2 и раздел 8.1.8, что повлекло изменения в последующей нумерации. Обновлены части 5, 6, 8 и сводное оглавление.

Странно, у меня последняя версия и я не вижу ничего нового.
И, по крайней мере, в пункте 5.3.3.2 тоже не вижу ничего нового.

Файлы были помещены несколько часов назад, даты на них пока что указаны старые (03.03.19). Если у Вас действительно последняя версия, то стр. 149 начинается подразделом, которого прежде не было:

5.3.3.2 Перебор элементов массива (.ForEach)

Возможно мы друг друга не поняли… Следующую фразу:

Я понимаю как добавление функционала в PABCSystem, которое я не заметил.

После того как написал вчера написал - я ещё посмотрел через лог черепахи гита. И в изменениях PABCSystem за последний месяц - нет ничего про .ForEach.

Та фраза означала что то другое?

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

Я еще раз вынужден напомнить, что все материалы, касающиеся функционала PascalABC.NЕТ, берутся либо на основе Справки, либо на основе информации, полученной непосредственно от разработчиков. Изучение текcтов c Github сюда не входит. В данном случае, соответствующие сведения были найдены в Справке и после уточнения у разработчиков были добавлены в книгу.

2 лайка

Перевыложена “Часть 3. Логика в программе”. Сделаны незначительные редакционные правки.

Выложена “Часть 9. Файлы”.

3 лайка

Выложена “Часть 10. Стандартные коллекции”.

3 лайка

Выложена “Часть 11. Модули и библиотеки”.

4 лайка

11.1.1.6:

uses имя in путь_к_файлу\имя.pas;

Интересно, а это вы откуда достали? Я вроде за всем слежу внимательно, но о таком уровне технологий и не подозревал)))