LINUX.ORG.RU
ФорумTalks

Функциональное программирование. отчёт по курсовой.


0

0

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

Цитирую

------ 3. Сравнительный анализ императивной и функциональной программ.

Исходный код программы на С++ занимает около 60 строк текста, программы на Haskell – около 20 строк. Таким образом, функциональная программа значительно компактнее, что можно объяснить относительной простотой синтаксиса и частым использованием рекурсии. Следует также отметить, что функциональные программы лучше структурированы. Это связано с самой идеологией функционального программирования. Программа, написанная на функциональном языке, всегда имеет чёткую структуру и по определению легко делится на блоки (блоками этими являются ни что иное, как функции).

В то же время функциональные программы гораздо более сложны в написании, чем императивные. Связано это с тем, что императивный стиль программирования не предполагает жёсткой связи между отдельными логическими блоками программы. Функциональный же стиль, напротив, предполагает, что блоки (функции) используют друг друга или самих себя (т.е. имеет место рекурсия). Функциональные языки программирования требуют от разработчика умения в уме просчитать результат выполнения функции, передачи результата в качестве параметра другой функции и т.д. Вероятность допустить ошибку в этом случае гораздо выше, чем в случае «обычного» для императивного стиля программирования выполнения действий одного за другим. Таким образом, написание сложной программы на Haskell превращается в очень нелегкую задачу, так как при этом приходится держать в уме слишком много факторов сразу, особенно если приходится использовать рекурсию.

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

★★★

> Функциональная программа потребляет гораздо больше памяти, причём зависимость этого параметра от длины входной строки является квадратичной.

Отчислить нахъ

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

Перед отчислением пришить хвост

grob ★★★★★
()
Ответ на: комментарий от MiracleMan

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

CrazyPit ★★★
() автор топика
Ответ на: комментарий от CrazyPit

Да за образец его, скорее всего, могли взять не за смысловую нагрузку, а за последовательность изложения и манеру изложения... А если принимать во внимание смысл, то это невольно наводит на мысль, что кто-то просто сознательно поиздевался над возможными читателями.. :-)

А на какую тему твой курсовой? Что-нить интересное? Было бы любопытно ознакомится...

MiracleMan ★★★★★
()
Ответ на: комментарий от MiracleMan

Общий смысл конечно интересный "Сравнения императивного и функционального стиля программирования". Но сами задания простенькие, например кодирования некой последовательности комманд в типа-того двоичный код и наоборот.

Сравнение тоже хреновое получаеться, ибо в качестве императивного ЯП обязательно использовать С, а у того многое отсутствует, что есть в других иперативных ЯП.

CrazyPit ★★★
() автор топика
Ответ на: комментарий от CrazyPit

Я бы даже заметил, более того, их вообще сравнивать вот так вот, вообщем, без конкретизации не стоит.. Месколько разные парадигмы.. Вот в фокусе отдельно взятых задач и использования для их решения того или иного метода - вот тут уже выбор с учётом достоинств и недостатков был бы уместен, но опять же.. не такое сопоставление..

MiracleMan ★★★★★
()
Ответ на: комментарий от MiracleMan

Ну как раз на конкретных задачах их и сравниваем. Файл там сконвертить ил какие-нибудь операции над множествами. Кстати хаскель приятно удивил всего в 3-5 раз медленне С в моей программе оказался.

CrazyPit ★★★
() автор топика
Ответ на: комментарий от CrazyPit

Вы, возможно, и сравниваете на конкретных задачах... Но, в том отрывке, что ты привёл, открывая тему, никакого намёка на конкретные задачи я не уловил.. ;-)

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

MiracleMan ★★★★★
()

Ничегою Скоро военные кафедры отменят, и оболтусов призовут в Армию. Там им объяснят, что такое императивность и что такое функциональность.

anonymous
()

А что, выкладки получше чем у многих на ЛОРе ;)

anonymousI
()
Ответ на: комментарий от anonymous

"Копать от меня и до обеда" - это декларативная инструкция...

Dork
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.