Info21 писал(а):
vvp писал(а):
почему вы их приводите в качестве образцов мне не понятно.
Мне тоже непонятно.
Дело даже не в методических принципах, а в опыте, предшествующем таким принципам.
Ни у кого из указанных авторов нет методического опыта даже близко сравнимого с vvp's one.
Вполне согласен с Info21. Считаю, как раз в книге удачное изложение применительно к КП как "языку вообще" - исходя из того, что она вводная в серии книг и что это первый её вариант. К тому же как писать о языке - отчасти диктуют его свойства (и выбранной для практики среды реализации). Для последующих это будет ещё больше справедливо - исходя из отличий между КП/ББ и "избыточно сложными".
Можно рекомедовать что-то, как правило, только как источники идей по методике и/или изложению. И здесь главная мысль Прохоренко - что нужно показывать через реализацию конкретных вопросов разработки приложений - справедлива, но требует, пожалуй, иной реализации, чем в книгах по другим языкам. Тем более имея в виду задумку автора:
vvp писал(а):
Если интересно, то могу сообщить, что в мыслях трилогия. Первая книга это база, вторая книга о некотором наборе алгоритмов, как они работают и как их реализовать. Третья книга о том, как искать решение.
Не секрет, что при всём богатстве конкретных методов решения задач их в основном (а м.б. и все) можно подразделить на два типа: "что будет, если..." и "как сделать, чтобы...". Вероятно, в третьей книге стоит это использовать (а во всех - учитывать применительно к задаче обучения программированию).
Как реализовать набор алгоритмов в КП/ББ - вообще ничего не знаю -
IMHO, это будет хорошо при некоторых общих условиях. В качестве иллюстрации верной, на мой взгляд, идеи можно предложить эту книгу:
Вложение:
Комментарий к файлу: Проектирование приложения УБД на прогязыке C++ с использованием библиотеки MFC в среде Visual Studio.
Енины-ЛокалСУБД_СвоимиРуками-извл(ВД+Введ+Гл1+Огл).djvu [781.99 КБ]
Скачиваний: 637
Здесь правильно то, что изложение непосредственно увязано со средой "говорения" и содержит решение задачи до конца. Тексты "для машины" и "для человека" не должны существовать сами по себе уже после несистематического введения - только как документы среды (на диске, а существенные моменты работы с ними - в книге, а частично - наверное, постепенно как видеоуроки). Базовый опыт работы со средой должен в пособии фиксироваться, а не где-то вне его - это независимо от того, на каком материале автор считает нужным излагать и по какой системе знания представлять.
Но как прямой аналог использовать не получится - только идеи - ведь принципы методологии формализации разные, что определяет и разницу в языке и среде. Так, у Ениных в Гл.4 описывается тестирование, а в Гл.12 "наивная" отладка - наверное, это на доказательной основе делается иначе Нужно показывать, как в ББ используются инварианты, расставленные посредством assert, как их сформировать в процессе проектирования логики приложения. Как обычно, широко используются "мастера" - это, наверное, заменяется на работу с ББ-библиотеками. Возможно, многие написания оригинальных классов заменятся на умелое использование библиотечных функций - и это нужно показывать для ББ. Есть конкретное приложение теории программирования к формальным языкам в Гл.5,6, к работе со структурами данных в Гл.7 - это очень удачно, но тоже зависит от языка и принципов, лёгших в его основу.
А вот основные идеи авторов - как донести знания о разработке - как раз нужно использовать. Но они в основном содержатся уже во введении, оглавлении и содержании первых глав.
На будущее считал бы интересным, чтобы реализация простого примера (как в Гл.1) служила стержнем второй части вводной книги (а введение в язык, как уже говорил, стало бы приложением, на которое автор ссылается по мере необходимости). Чтобы несистематические знания из первой части сразу получили бы применение в среде с одновременным приведением к некоей системе.
Тогда как реализация примера сложного должна составить основу книги об инженерии, иллюстрируя реализацию представительного набора алгоритмов на КП методами "убедительного" программирования в ББ. Потому что по-своему прав Виталий Валерьевич, что просто двигаться от простого к сложному необязательно - разный масшаб задач потребует разницы и в делании, и в обучении этому деланию. И достоинства вводной книги, такие, как:
Сергей Прохоренко писал(а):
У учебника "Современное программирование с нуля" есть несомненные достоинства:
1) Он тонкий, но содержательный
2) В нем почти нет длинных листингов
3) В нем нет нудного примера, который обсасывается из главы в главу
4) В нем есть иллюстрации
с т. зр. цели второй книги станут уже недостатками (первые три, конечно
- иллюстрации везде нужны, и именно на формально-визуальных языках типа синтдиаграмм прежде всего).
Очень важно, что разработка сложного приложения идёт от проекта (Гл.2 и особенно Гл.3) - и здесь также что-то подходит, а что-то нет. Так, сразу нужно ориентироваться на неразрывность разработки и документирования, показывая, как "пошагово уточняется" именно ББ-документ - составной и целиком отображающий проект "для человека" - и как он вообще делается в триаде "модель-вьюшка-контроллер". Возможно, при этом нужно показать ряд сохранённых версий проектной документации - на диске, ессно.
Некоторые главы из книги теперь в этом сообщении. В принципе мог бы постепенно выложить ещё - если надо.
Ведущим при передаче знаний, "как делать", как уже говорил, считаю показ некоторого набора вариантов "как можно сделать" с изложением особенностей реализации поставленных целей, приводящих к варианту.
Единственное, что опубликовано по Оберону, на мой взгляд, подходящего в этом смысле - Свердлов - там только фрагмент, но годящийся для иллюстрации. Имею в виду /Свердлов С.З., 2007, п. Примеры использования объектной технологии/. Для проекта Гетерогенная очередь на с.159...173 показан принцип реализации концепции ООП средствами компонентного языка различным образом - причём два разных способа средствами одного языка (Оберона).
Вот так и нужно поступать для каждого основного типа функций приложения, выделенных С. Прохоренко - ГИП, ввод-вывод по каналам связи, во внешнюю память, анализ сообщений и команд, типовые вычислительные и манипуляционные работы (с данными в ОП), межпроцессное взаимодействие и работа "с железом", обработка исключений. Но в подробности уже не во вводной книге, разумеется.
Под "манипуляционными" понимаю процессы, которые обычно определяются как "информационные" - т.к. с учётом значения понятия "информация" в таком определении вижу немного смысла. Содержание - определение/изменение положения элементов данных, а также их дублирование.
И вариантность как раз сообщает некоторую некатегоричность и позволяет при вдумчивой работе и учителя, и ученика постепенно дать интуитивное понимание, личностно окрашенное, как формализовать решение задачи в виде приложения с инструкцией по его применению.