Здравствуйте, Курилка, Вы писали:
К>Не согласен. Как раз в том и дело, что функциональщики в первую очередь рассмативают функциональные вещи, т.к. к этом больше приковано их внимание, а писать "хэллоу ворлд" им неинтересно.
Вопрос интересный.
Давайте рассмотрим Hello World с точки зрения обучения, а не с точки зрения программирования. Вот для чего эта программа?
Если отвлечься от "здравствуйте", эта программа
запускается, выводит в консоль некоторый текст, и завершается. Во времена, когда С был новым крутым языком, основное, что делали программы — это запускались, выводили в консоль какой-то текст, и закрывались, вернув в ОС код завершения. Классическая hello world является замечательной иллюстрацией, которая показывает начинающим программерам насколько просто писать такие продвинутые приложения на новом языке.
Если мы попробуем посмотреть на программу с позиции современных требований, то Hello World окажется не вполне удачным примером. К примеру, я с трудом могу представить, как мне построить минимальное или чуть менее минимальное веб-приложение.
Если начинать рассказывать об ФП с точки зрения высшей математики, то такой курс прекрасно отсеет неспособных к абстрактному мышлению. Вместе с теми, кому интересно некотрое практическое применение. Вот обучить человека Екселю очень-очень просто. Там никого не смущает двусмысленность оператора =. Главное — мы ставим простую иллюстративную задачу (например, Здравствуй, Налоговый Инспектор) и показываем, как она решается. Я бы вообще преподавал FP на основе Екселя. Показывая, как можно решить понятную неспециалисту задачу.
Книжки по императивному программированию для детей сначала преодолевают некоторый барьер в мышлении человека, обучая его концепции "ящичков с цифрами" и "стрелочек, показывающих на ящичек". Уже потом переходят к переменным, членам класса, областям видимости и т.п.
Я полагаю, если ФП представлять в виде "ячеек с формулами", как в Excel, то всё будет намного проще объяснить. Конечно, довольно быстро придется отказаться от спредшитов, потому что они всё таки чрезмерно убоги. Но в качестве основы для формирования правильных представлений это, имхо, намного более перспективно, чем все эти упражнения по выводу чисел Фибоначчи и факториалов. Как только начинается пример "допустим, нам нужно вычислить первые сто чисел фибоначчи", возникает искушение сказать "вам нужно — вы и вычисляйте. А я хочу заставить трёхмерный кубик крутиться или написать программу, которая прикольно искажает голос". Да всё, что угодно, только пусть это будет реалистичный пример. По крайней мере, настолько же реалистичный, как Hello World. Не в том смысле, что нужно сразу MineSweeper написать. Но функции, которые берут вход неизвестно откуда и отдают его неизвестно куда, сллишком далеки от народа. Hello World можно прямо запустить и увидеть замечательный эффект; многие реальные программы устроены вполне аналогичным образом.
К>Т.е. неправильное построение учебников есть как раз следствие другой ориентации, чтоли, функциональщиков и получается аля "чтобы понять рекурсию нужно сначала понять рекурсию Естественно всё имхо.
1.2.0 alpha rev. 655