Личный кабинет

Несколько слов о учебнике по программированию

А возможен ли хороший учебник в принципе
Виталий Потопахин ( Пользователь )
Осенью выйдет из печати в ДМК-пресс моя книга с примерным названием "Основы программирования. Компонентный Паскаль".
Редактор разрешил мне выложить часть материала на форумах. Я хотел бы, чтобы если кому не лень почитали и покритиковали немного. ОБщая структура книги такова:

1 часть: неформальное введение

Рассчитана на новичков. Но не малышей, я так думаю хотя бы 8 классов за душой ученик должен иметь.
Первая часть на задачах объясняет, что есть программрование и с чем это едят. По окончанию ученик должен уметь писать несложные программы. Язык компонентный паскаль - вводится несистемно по мере необходимости. Фактически вводится некоторое подмножество языка.

2. часть: КП. Систематическое изложение языка

3. часть: методы программирования. Некоторый минимальный набор программисткого инструментария.

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

П.С.

Странно, не нашел как присоединить файл. Это нельзя?

А вот нашел.
Виталий Потопахин ( Пользователь )
Да кстати, наверняка там есть мелкие ошибки. Я думаю, что перед передачей издателю я сам их увижу. Если кому интересно покритиковать ищите, что вам сильно не нравится.
Роман Еннер ( Пользователь )
Про присваивание можно побольше пожевать, как то уж быстро все вводится.

Условие задачи. Арифметическая прогрессия задана тремя величинами:...
Второе решение отличается от первого только sum:=a1;
Следовательно второе решение подсчитает сумму N+1 члена ряда

Объяснение цикла REPEAT
Цитата
Повторять
Вычислить очередной член прогрессии
Вычислить очередное значение суммы
Пока Сумма<= Предельного значения

А на КП это же запишется так:

sum:=a1;
k:=1;
REPEAT
a1:=a1+d;
sum:=sum+a1;
k:=k+1;
UNTIL sum>W;

Последние строки как то не согласуются:знаки в условиях в словесном алг: <= а в формальном алг: >

В задаче №10: "Все величины – целые числа." Зачем это говорить, если пока про типы данных ни слова, и все задачи по умолчанию решались с целыми величинами.

В условном операторе ни слова о StdLog.String
да и полное решение по моему здесь не нужно.

Условие задачи. Дано число. Выяснить, является ли оно простым.
опять полноценное решение на КП по моему несколько рано, т.к. сразу приходится "бороться" с несколькими проблемами:
  • типы данных не введены, и сразу говорим про логический тип (голова кружится)
  • сначала преобразование типов, а только потом узнаем что есть разные типы, и даже разные целые типы:INTEGER, LONGINT а насколько они целые? REAL кстати что это? (...очень сильно кружится)
  • говорим про плюсы жесткой типизации хотя про типы так ничего и не знаем (упали... :) )

Виталий Потопахин ( Пользователь )
Первое замечание важное. Я по невнимательности могу делать такого рода ошибки. Надо будет вычитать весь текст на предмет такого рода глюков.

Фраза "Все величины целые числа" несет в себе математический понятный 8-класнику смысл. ЭТо не обязательно должно быть воспринято как тип данных. А начинать говорить надо. В этом соль. Понемногу использовать те слова, смысл которых будет усложняться.

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

Логический тип может быть действительно рановато. Надо подумать, но в общем-то уже много решено, а все только целые числа. Хорошо ли это.

Два последних замечание по типы и сильную типизацию действительно надо подумать, тут наверное вы правы, может быть как-то текст изменю.
Виталий Потопахин ( Пользователь )
Кстати о жесткой типизации. Конечно она не "жесткая" а сильная. Это неаккуратность в терминах. Но такие вещи я всегда вычитываю в последнюю очередь.
Федор Ткачев ( Пользователь )
Цитата (Потопахин Виталий, 13.07.2009, 02:18) <{POST_SNAPBACK}>
Кстати о жесткой типизации. Конечно она не "жесткая" а сильная. Это неаккуратность в терминах.

Почему же обязательно неаккуратность.
"Жёсткая" доходчивей, чем "сильная".
Жёсткая, значит, никакой гибкости. Понятно: целой переменной -- целое значение, точка.

А причём тут какая-то сила.

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

Прилагательное "слабая", скажем, в математическом термине "слабая топология" несёт в себе образный и доходчивый смысловой заряд -- примерно как "жёсткая" применительно к типизации.
Виталий Потопахин ( Пользователь )
А разве "сильная типизация" не устоявшийся термин.
Я из неформального введения этот термин выкинул, но он мне нужен дальше. Поэтому хотелось бы уточнить. Я где-то видел термин "жесткая", но пара "сильная-слабая" используется очень часто.
Федор Ткачев ( Пользователь )
Цитата (Потопахин Виталий, 13.07.2009, 07:50) <{POST_SNAPBACK}>
А разве "сильная типизация" не устоявшийся термин.
Я из неформального введения этот термин выкинул, но он мне нужен дальше. Поэтому хотелось бы уточнить. Я где-то видел термин "жесткая", но пара "сильная-слабая" используется очень часто.

В сфере ИТ очень много дурацких устоявшихся терминов.
Притом что их "устоялость" относительная.

Вам решать. По совокупности соображений. В случае чего, можно сносочку сделать с пояснением и ссылкой на педагогический опыт :) -- чтобы не обвинили в незнании терминологии, а то
"сами знаете, какой у нас народ" (С).
Федор Ткачев ( Пользователь )
"жесткая типизация" часто встречается, как сообщает яндекс.
Андрей Комаров ( Пользователь )
Цитата (cher, 21.10.2008, 18:51) <{POST_SNAPBACK}>
Увы. :( Вы не обижайтесь, но похоже, что пишите Вы о вещах, о которых имеете достаточно смутное представление. Дайте в первую очередь себе четкий ответ на вопрос: "на какую аудиторию расчитан мой текст". В его текущем варианте он расчитан даже не знаю на кого. Вы сами сказали, что это программный текст, развернутое изложение вашего первого сообщения здесь. Если это так, то никакое это не введение.

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

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

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

Мой Вам совет. Напишите для начала хороший учебник по Оберону/КП/Блекбоксу. Если он действительно получится хорошим, все (и даже так называемые "нелюбители последователей Вирта" :) ) будут Вам очень признательны, и все интересные находки будут с благодарностью использованы в работе. Вам пока рано замахиваться на учебник такого уровня, о котором Вы заявляете. Извините.


Честно говоря, надо поощрять инициативы а не гасить. Пускай человек пишет, это же не водку продавать, это поможет разобраться тем, кто преподает программирование. Я предлагаю для задач практического прогр. язык Python. На мой взгляд это самый удачный на 2011 год яз. прогр. для обучения.

footer logo © Образ–Центр, 2020. 12+