Функциональное программирование |
Функциональное программирование всегда привлекало меня в противопоставлении к императивному.
Я очень часто обсуждаю различные аспекты функционального программирования на различных ветках на Базарной площади.
Но хотелось бы собрать всех заинтересованный этой темой в одной ветке.
Я думаю что настало время открыть такую тему. И вот почему.
Исторически функциональное программирование появилось практически вместе с императивным.
Вторым языком после фортрана был лисп.
Но увы, функциональное программирование надолго было уделом исследовательских институтов или специализированных приложений (Искусственный Интеллект)
Конечно не надо считать весь мир дураками из за того что развитие пошло по пути языков Алгол семейства.
Для этого были вполне обьективные причины. Функциональные языки слишком близки к человеку и слишком далеки от машины.
Они сьедают в десятки раз больше рессурсов чем императивные языки.
Вспомните претензии, предявляемые к java - первому императивному языку с виртуальной машиной и сборщиком мусора, толкаемому большими корпорациями в mainstream.
Жутко тормозит, и жрет всю память какая есть. А ведь функциональные языки (далее ФЯ) все без иключения имеют сборщик мусора, виртуальную машину.
Многие из них (семейство лисп) еще и динамические, что только усугубляет положение.
Вполне естественно что появившись более полусотни лет назад они надолго опередилли свое время.
Для широкого распространения ФЯ нужны гигабайты дешевой памяти и гигагерцы дешевых процессоров.
Прошло более 50 лет, прежде чем такие требования к железу стали реальностью.
Это время наступило. СЕЙЧАС.
Добро пожаловать в новую эру программирования.
Jack Of Shadows
Всего в теме 5502 сообщения
Добавить свое сообщение
Отслеживать это обсуждение
- Средства разработки. Языки программирования.
- Delphi 4 or Delphi 5
- Что приобрести в качестве средства разработки?
- Delphi6
- Delphi vs PowerBuilder
- Сравнение компиляторов
- Вот и вышла Delphi 7... Вы рады?
№ 4192 19-03-2008 12:21 | |
Ответ на »сообщение 4191« (Jack Of Shadows)
___________________________
Как видите, производители систем программирования (А Микрософт это все таки САМЫЙ ГЛАВНЫЙ на сегодняшний день производитель систем программирования) игнорировать тренд не собираются.
Да я, собственно, об этом и писал:
>>> параллелизм становится новым buzzword'ом Microsoft
Только еще посмотрим, куда их заведет это новое веяние. Несмотря на упоминание F#, скорее всего, параллелизм будут в первую очередь прикручивать к обычным императивным языкам.
№ 4191 18-03-2008 16:39 | |
Ответ на »сообщение 4190« (Lisp Hobbyist)
___________________________
Но их мнение в данном вопросе вторично --- производители систем программирования и сами разработчики вполне могут массово проигнорировать очередное "железное" новшество.
http://www.microsoft.com/presspass/press/2008/mar08/03-18UPCRCPR.mspx
Как видите, производители систем программирования (А Микрософт это все таки САМЫЙ ГЛАВНЫЙ на сегодняшний день производитель систем программирования) игнорировать тренд не собираются.
Они только что обьявили о вложении 20 миллионов долларов, совместно с Intel на разработку систем параллельного программирования, внимание: aimed at accelerating developments in mainstream parallel computing, for consumers and businesses in desktop and mobile computing.
Так что отвертеться не получится :))
№ 4190 17-03-2008 04:10 | |
Ответ на »сообщение 4185« (Jack Of Shadows)
___________________________
Собрались как то на днях на какой то там своей конференции представители AMD, Intel, IBM, Sun и других производителей процессоров
...
Однако в одном вопросе все сходятся.
Традиционный подход к программированию должен остаться в прошлом.
От производителей процессоров трудно ожидать иного --- им же нужно обеспечить спрос на свою новую продукцию. Но их мнение в данном вопросе вторично --- производители систем программирования и сами разработчики вполне могут массово проигнорировать очередное "железное" новшество. Как минимум, два примера: отсутствие полноценной поддержки в популярных языках IEEE-арифметики и неоднородной организации памяти, которые в "железе" имеются уже много лет. Куда интереснее то, что параллелизм становится новым buzzword'ом Microsoft .
№ 4189 17-03-2008 03:13 | |
Такое впечатление, что Страуструп настолько ненавидит яву, что готов притвориться, будто не понимает, смысла этого языка :)))))))))))))))
Мы тут головами об клавиатуры колотимся, чтобы сделать инструмент ОГРАНИЧИВАЮЩИЙ прикладного программиста (это позволяет снизить требования к квалификации прикладника и генерить более простой и удобочитаемый код), а он призывает "расширить" :))) Не иначе для написания операционок на яве :)))))))))))))
№ 4188 16-03-2008 09:16 | |
№ 4187 15-03-2008 20:14 | |
№ 4186 Удалено модератором | |
№ 4185 26-02-2008 20:22 | |
http://www.eetimes.com/showArticle.jhtml;jsessionid=KILS0V0CPULJAQSNDLPSKHSCJUNN2JVN?articleID=206105179
Собрались как то на днях на какой то там своей конференции представители AMD, Intel, IBM, Sun и других производителей процессоров, и давай обсуждать каким же им путем идти. Все понимают что через несколько лет количество ядер на обычных компьютерах перевалит за сотню.
Одни предлагают модель с разными узкоспециализированными ядрами, другие - множество одинаковых ядер общего назначения. Спорят вобщем.
Однако в одном вопросе все сходятся.
Традиционный подход к программированию должен остаться в прошлом.
Причем переходить на новую модель программирования надо быстро. Времени, судя по всему, уже нет.
Так что наступают по настоящему интересные времена, времена перемен и технологических потрясений :)
№ 4184 25-02-2008 17:43 | |
Ответ на »сообщение 4182« (Илья Ермаков)
___________________________
Вообщем-то, Джек уже многое сказал, но добавлю еще кое-что. Человеческая психология и обучение - дела сложные и глубокие, простым принципом не описать. Но принцип обратной связи весьма действенный и очень фундаментальный. Вот вы говорите, что человек вначале должен понять что такое программирование, а из этого уже ему станет понятно зачем нужны отступы. Так вот, когда явно заставляют ставить отсупы, у человека сразу появляется вопрос - "а зачем?", и вот благодаря этому вопросу у человека появляется внутренний стимул, который помагает ему и мотивирует к тому, чтобы разобраться, что такое программирование... Вот обучение ускоряется и упрощается.
№ 4183 25-02-2008 15:31 | |
Ответ на »сообщение 4182« (Илья Ермаков)
___________________________
Илья, вы же полностью поддержали его мнение :))
Во первых сходу противоречите сами себе:
Ерунда какая-то.
За которую бьют линейкой по рукам умные преподаватели всегда
Так ерунда ? или настолько серьезный просчет что за это аж линейкой по рукам бьют.
Так мелочь которую можно пустить на самотек или настолько необходимая вешь что
отступы должны быть не просто автоматом вдолблены, а отрефлексированы как следствие более важных принципов, которых следует придерживаться в работе.
Непоследовательны Илья.
Далее.
За которую бьют линейкой по рукам умные преподаватели всегда.
Ну а кто подходит на эту роль лучше компилятора бьющего не линейкой а ошибкой по рукам, освобождая преподавателя как от рукоприкладства так и от рутины беганья между партами.
Поскольку далеко не все преподы имеют время и желание насаждать этот нужный навык так яростно, то отсюда и резкое повышение качества и скорости обучения - поскольку компилятор бескомпромиссно насаждает это КАЖДОМУ ученику.
а отрефлексированы как следствие более важных принципов, которых следует придерживаться в работе.
Принципов, имеющих по собой логическую подоплеку и насаждаемую компилятором, а не "я художник тонкая натура, мне претит такая несвобода."
(Нужно ещё учитывать, что отрефлексировать учащиеся могут только отталкиваясь от конкретного опыта).
Именно Илья, именно! Что может быть лучше конкретного опыта некомпилируемого кода ?
Любой балбес поймет :))
Ну отступы и отступы. Сама собой разумеющаяся вещь.
Для вас, не для новичков. К вам осознание необходимости отступов пришло с опытом. У них опыта нет.
Компилятор им это опыт дает.
Если это даёт "самое эффективное улучшение качества и скорости...", то вопрос в том, чему учат. Непохоже, что самым главным вещам.
Ну Илья, это уже несерьезный разговор. Речь ведь идет не о теме обучения а о повышении качества и скорости обучения.
Так например Вы можете учить одному и тому же, но скажем в одном случае использовать компьютеры, а в другом нет, и разница в результатах будет весьма большой.
В данном случае речь шла не о том КАК учить программированию. Уверяю вас, господин Окасаки знает об этом поболее ваших учителей.
Речь шла о том какие инструменты использовать при обучении, языки с какими свойствами дают наибольший позитивный эффект.
Добавить свое сообщение
Отслеживать это обсуждение
Дополнительная навигация: |
|