о языках программирования

Sep 28, 2009 00:09

чуть больше года назад ximaera пытался убедить меня в достоинствах функционального программирования. собственно, я не спорил, потому что об этой парадигме тогда не знал совсем ничего. чуть позже Артём дал мне ссылку на запись в блоге Steve Yegge, где он в аллегоричной форме высмеивает громоздкость конструкций, обычно возникающих при программировании на ( Read more... )

java, google, coding, cmc

Leave a comment

Comments 12

hr0nix September 28 2009, 04:24:46 UTC
Есть мнение, что главная проблема языков группы "А" (ну и многих из группы "Б" тоже) -- то, что они базируются на Фон-Неймановской парадигме, которая в каком-то смысле ныне умирает. Причина этого в том, что закон Мура перестал выполняться, а распараллелить систему, написанную на императивном языке, очень сложно вручную и практически невозможно автоматически. Функциональные языки в каком-то смысле лишены этого недостатка: покуда при выполнении программы не возникает сайд-эффектов, параллелить ее автоматически -- одно удовольствие. Собственно, это сейчас одно из основных направлений исследований, например, в Haskell-community.

Возможно, здравый подход, -- совмещать парадигмы, как сделано, например, в Nemerle и (отчасти) в C# 3.0

Reply

semifinalist September 29 2009, 09:17:47 UTC
да, это, конечно, более серьёзная проблема. хотя насчёт фон-неймановской архитектуры я не совсем согласен - он как раз говорил, что программа и данные - это одно и то же, а в той же Схеме принцип "code is data" реализуется eval'ом и higher-order функциями, так что это ещё вопрос, кто больше фон-неймановский. но насчёт отсутствия состояния - это абсолютно верно. курс CS61A UC Berkeley как раз начинается с изучения функционального программирования (и только потом - ООП и пр.), и лектор делает упор на то, что "функциональный" код легко параллелится. (если интересно, вебкасты легко гуглятся).

это, кстати, интересный вопрос - какой процент программ требует экспоненциального роста производительности. возможно, текущей мощности хватит для большинства задач, и лишь малую часть придётся параллелить из-за нехватки производительности? (хотя это, конечно, звучит как заявление Гейтса о пределе 640К памяти :)

а вообще, в интересное время мы живём. топливо кончается, вычислительные ресурсы кончаются. везде надо искать альтернативные источники.

Reply

hr0nix October 1 2009, 21:09:44 UTC
Интересно будет лет через 20 посмотреть, выберется ли мир из ямы =)
Вообще, я думаю, что если программы начнут автоматически параллелиться, то хуже точно не будет.

Reply


ext_72902 September 28 2009, 05:12:14 UTC
Интересно, каким местом Haskell похож на Lisp?

Reply

semifinalist September 29 2009, 09:00:11 UTC
ну, как я написал, Хаскель почти не знаю. есть только первое впечатление - функциональный язык, рекурсия. похоже на Лисп. ну и паттерн-матчинг в глаза бросился.

Reply

ext_72902 September 29 2009, 09:00:50 UTC
Да ни фига Лисп не функциональный...

Reply

semifinalist September 29 2009, 09:22:08 UTC
я не очень понимаю, что Вы хотите этим сказать. понятно, что на любом языке можно писать, выходя за рамки его парадигмы - например, на C++ писать как на C и не использовать объектно-ориентированность. но изначально ведь Лисп задумывался как "высокоуровневый" функциональный язык. или я не прав?

Reply


Leave a comment

Up