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

Почему-то не делается цитата про отрыв от предметной области с мобилки :slight_smile:

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

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

А если скажут “такой программист в реальной работе не нужен” - гхм, в предметную область на определенную степень можно просто влиться. 1Сники, вон, за пару месяцев работы разбираются в локальных бумажках не хуже тех же бухгалтеров. Ибо надо. Есть курсы, в конце концов. Или второе высшее, если уж так сильно надо.

Вот видите: Вы опять рассказываете о том, как пишутся традиционные учебники. Материал разбивается на какие-то “уроки”, каждому уроку ставится цель, определяются необходимые способы и средства ее достижения и т.п. Ну не учебник это, сказано ведь уже было! Откройте, к примеру, ту же книгу Йенсен К., Вирт Н. “Паскаль. Руководство для пользователя и описание языка” и поищите там “уроки”. Мало? Откройте книги Кернигана и Ритчи, Страуструпа, Шилдта, … поищите “уроки там”. С планами, целями и описанием целевой аудитории,

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

Вы представляете себе объем материала для подобных советов? В “Целочисленной арифметике”, к примеру, для углубления в тему рекомендовать читать про системы счисления, двоичный код, процессоры, правила арифметики, … “мамонтов, слонов и устройство радиолампы” (с)? Программирование - очень эклектичная наука, мы что, будем так все возможные предметные области охватывать? Не вижу смысла при описании языка говорить о том, как на нем программировать задачу из конкретной предметной области. Нужно отделять составление алгоритма от его реализации. Вот тут речь идет о реализации алгоритма в PascalABС.NЕТ. Совершенно оторвано от предметной области. Нахождение суммы ряда чисел может встретиться везде и абсолютно неважно, какой была постановка задачи и откуда эта задача взялась.

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

Полностью согласен.

Часть 5 готова к выкладке. Помещаю сюда общее для выложенных частей полное оглавление. Возможно (при отсутствии возражений у владельцев официального сайта PascalABC.NЕТ), актуальная версия этого оглавления будет находиться здесь

СводноеОглавление.pdf (305,0 КБ)

Мне кажется, этот код, приведенный в первой главе, только отобьёт охоту от программирования на PascalABC.NET

И подавно он не отражает заявленную суть книги - современное программирование на PascalABC.NET

Книга - она заодно и в определенной степени справочник по языку. Предлагаете вообще все конструкции выкинуть, которые найдутся в базовом Паскале (у Вирта, в ТурбоПаскаль, в Дельфи), для которых есть какая-то замена в PascalABC.NЕТ и оставить только то, что “современно” (кстати, это достаточно дискутируемый вопрос, во многом сводящийся к личным предпочтениям). Работу унарных операторов в части их высшего приоритета все равно показать где-то нужно, потому что я видел задания, где предлагалось перевести выражение из “математической записи” в “однострочную” (?) и эти выражения содержали комбинации унарных операций.

Т.е. на приведенном фрагменте “правильно” писать второй вариант с кучей скобок, а первый нужно запинать ногами и вообще запретить? Вот я считаю, оба варианта имеют право на жизнь, но следует говорить о том, что первый вариант допустим только в языке Паскаль и нигде больше, поэтому писать так можно, но лучше и правильнее сразу привыкать к общепринятому стилю записи с “лишними” скобками.

И еще: я не видел ни одного материала приличного объема, который бы на каждой странице отражал суть своего названия. Все равно приходится временами отступать. Для разъяснений, сравнений и проч.

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

2 лайка

Это не современное программирование. Современное программирование заявлено в названии книги. Это исследование тёмных частностей языка. Ну либо тогда менять название

Выложил Часть 5 - последовательности

Давайте тогда заодно выкинем раздел Inc(n), Dec(n), они несовременные, n+= и n-= круче. Я бы вообще все почти выкинул Дельфийское: оно же сделано было для совместимости, значит - не современное. Но боюсь, получится тогда какой-то обрубок с большим оттенком вкусовщины.

Как-то не очень логично выходит. Когда задается вопрос, почему (зачем?) в PascalABC.NЕТ присутствует та или иная конструкция, по какой причине что-то работает так, а не по-другому, - следует ответ “Потому что так в Дельфи и мы за эту совместимость держимся”. Когда я пытаюсь что-то всего лишь упомянуть, присутствующее в языке издавна - сразу же: “Это не надо, это несовременно”.

Давайте определимся, чтобы не было как в известном анекдоте про еврея в бане: “Вы или крестик снимите, или трусы наденьте”.

2 лайка

А зачем эти дельфийские фичи нужны вообще? Ладно б можно было дельфийские проекты собирать, а так… Программисты Delphi, в основном, или студенты печальных вузов (которым плевать, что там писать надо, они это программирование в том виде, что им дают, в гробу видали), или старые дядьки, тянущие за собой горы легаси-кода (они сам Паскаль в гробу видали). Зачем? Delphi - мертвая среда, пора ее уже таковой признать.

4 лайка

Вообще, я подумываю чтобы какие-то редкие Delphi-фичи выкусывать из языка. Раньше мы сильно гнались за совместимостью…

2 лайка
...

Алекс, с РХ!

По своему опыту знаю, что даже конструктивная критика часто выглядит как попытка зарисоваться за чужой счёт. Может и так, но ваш вариант с диалогами всё равно подразумевает уровень собеседника (целевая аудитория), контент (тема и рема) и красную нить – мотивацию и подразумеваемую пользу. Речь не о методике или дидактике: ну не бывает типа душевный разговор ни о чём и без причины. Кроме того, мозг (как концентратор информации и центр принятия решений) выбирает то, что чётко классифировано, имеет понятные внутренние связи, органично вписывается в имеющиеся знания – логично, интересно и полезно (может пригодиться), а всё остальное – в утиль, увы.

Припоминаю, что сам Вирт в комментариях к языкам Оберон и Модула высказывался об излишествах Паскаля, включая тот же избыточный inc(A,-B) [минимум восемь знаков] для целых/перечислимых типов, в отличие от лаконичного A+=B [четыре символа]. Лично я знаю о inc/dec; pred/sucс, но мне это ни разу [в чистом виде] не пригодилось и не попадалось в живом коде, не говоря о вашем примере с унарными ++±—. Хотя автор выражает свой взгляд на предмет и аспекты на своё усмотрение, однако и собеседник (ведь это не монолог?) имеет право подробнее узнать, ознакомиться с другим мнением и затем принимать осознанное проинформированное решение. В принципе, если обойтись без глоссария, можно хоть тематические ссылки на wiki, а кому подробнее – знают откуда и что искать. Может больше акцент на общепринятые методы в сравнении с анти-паттернами (старым методом программирования)?

С приоритетами пока тоже непонятно: ни старый Паскаль, ни преимущества .NEТ, ни наследие Delphi… Любой ЯП – это всего лишь средство достижения цели, а не просто слова, поэтому я пока не представляю в какой категории или на какой стадии мне было бы это интересно. Конечно же, придираюсь - вдруг зашлифуем алмаз в бриллиант)

1 лайк

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

Поздравляю Всех! Конечно это хорошо писать книгу для PascalABC.Net. Я, по мере возможности, просматриваю эту книгу. Очень хорошо. Пока каких либо ошибок или не понимания не встречалось. Однако это всё в консольном режиме. Думаю в будущем будет и в визуальном. Я сам тоже пишу книгу для этого языка на визуальном режиме, но он на таджикском языке. Успехов автору и Всем коллегам.

2 лайка

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

Один мой знакомый книголюб (у него в двух комнатах стояли по трем стенам стеллажи от пола до потолка с книгами) любил говорить: “Если ты купил книгу и хотя бы одна страница для тебя в ней оказалась полезной, - ты потратил деньги не зря.”

2 лайка

Там были книги по Паскалю? :slight_smile:

Тогда о Паскале еще никто не знал… Да и не нужен был ему Паскаль: это был старый выпускник ростовского физмата, занимавший должность доцента одной из кафедр инженерного вуза, преподававший автоматику и промышленную электронику. Мой первый научный руководитель…

У него в квартире висел приличного размера плакатик: “Все, что ты прочел - твое, но книгу верни!”

3 лайка

Весёлый по жизни, видимо, был Ваш знакомый.

Веселый - временами, все в меру хорошо. Но вот незаурядный - это точно. Рядом с ним было ощущение, что ты маленький вагончик, который прицепили к несущемуся вперед локомотиву. Несмотря на примерно 30-летнюю разницу в возрасте. Ну да не будем дальше в теме спамить: в конце концов, благодарность у нас живет в душе, а не состоит в рассказах о том, “как это было”.

P.S. Ну надо же: отыскал его на сайте ЮФУ: “фото Выпуск физико-​математического факультета РГУ. 1946 – 1951”

4 лайка