Обсуждение:How to Design Programs

Материал из Поле цифровой дидактики

Из введения

Во многих профессиях требуется определённая форма программирования. Бухгалтеры программируют электронные таблицы; музыканты программируют синтезаторы; авторы программируют текстовые процессоры; веб-дизайнеры программируют таблицы стилей. Когда мы написали эти слова для первого издания книги (1995–2000), читатели могли считать их футуристичными; к настоящему времени программирование стало необходимым навыком, и множество ресурсов — книг, онлайн-курсов, учебных планов для K-12 — отвечает на эту потребность, всегда с целью улучшить карьерные перспективы людей. Типичный курс по программированию обучает подходу «пробуй, пока не сработает». Когда программа работает, студенты восклицают: «Это работает!» и переходят к следующему этапу. К сожалению, эта фраза также является кратчайшей ложью в вычислениях и стоила многим людям многих часов жизни. В отличие от этого, наша книга сосредоточена на привычках хорошего программирования. Под «хорошим программированием» мы понимаем подход к созданию программного обеспечения, который основывается на систематическом мышлении, планировании и понимании с самого начала, на каждом этапе и для каждого шага. Чтобы подчеркнуть эту мысль, мы говорим о систематическом дизайне программ и систематически разработанных программах. Критически важно, что последнее формулирует обоснование желаемой функциональности. Хорошее программирование также удовлетворяет эстетическое чувство достижения; элегантность хорошей программы сопоставима с проверенными временем стихотворениями или черно-белыми фотографиями ушедшей эпохи. Короче говоря, программирование отличается от хорошего программирования так же, как рисунки цветными карандашами в закусочной отличаются от масляных картин в музее. На самом деле, мы идем еще дальше и утверждаем, что дизайн программ — но не само программирование — заслуживает такой же роли в образовании в области гуманитарных наук, как математика и языковые навыки. Студент-дизайнер, который больше никогда не прикоснется к программе, все равно приобретет универсально полезные навыки решения проблем, испытает глубоко творческую деятельность и научится ценить новую форму эстетики. Остальная часть этого предисловия подробно объясняет, что мы имеем в виду под «систематическим дизайном», кто получает выгоду и каким образом, а также как мы собираемся это все преподавать.