Показаны сообщения с ярлыком Функциональное программирование. Показать все сообщения
Показаны сообщения с ярлыком Функциональное программирование. Показать все сообщения

Всепоглощающий C#

Публикация в блоге очень интересного аналитического материала (так же прочтите и комментарии, тоже любопытно) - "Code Contracts в .NET и монополия C#".

Google представил свой язык программирования

Публикация в новостях - "Google представил свой язык программирования".















Цитаты:

"Компания Google представила собственный новый язык программирования под названием Go, который ориентирован на "быструю разработку". Он позволит создавать различные приложения с поддержкой многоядерных процессоров и параллельных вычислений.
...
По словам представителей компании, Go — это экспериментальный язык, который объединяет в себе высокую производительность и безопасность C++ со скоростью динамических языков программирования, таких как Python."

Комментарии под новостью:

"Усё пожрал проклятый суслик...

Как назвать программера, пишущего на Go?
Goпник?

http://golang.org/
чё стебаццо? быстро скачали, поставили и начали кодить!
неужели неинтересно? smile.gif

гуглоось только на линуксе....

>> Посмотрел http://golang.org/doc/go_faq.html но так и не понял зачем он нужен :-(
> Я тоже не понял, чем этот пример лучше чем:
> include
> int main() {
> printf("Hello, world\n");
> }
> Изобрели велосипед называется.
ну чтож тут непонятного этот пример будет скомпилирован и выполнен многопоточно smile.gif"

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

Если вы читали мою критику на счет функционального программирования (Часть 1 и Часть 2), тогда попробуем проанализировать один момент.

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

И вот, наступает такой момент, для таких "продвинутых" товарищей, когда в ФП приходится иметь дело с состояниями.Тут сразу теряется все хваленое преимущество при работе с многопоточностью, ведь как раз отсутствие состояний у объектов - в мире ФП - как раз и позволяло им говорить о некоторых преимуществах.

Небольшое отступление. Далее будут упомянуты 2 ссылки, на видео, все на английском, поэтому хорошо знающим английский язык - лучше просто посмотреть их, и прочитать краткие пояснения к ним, там же (Ссылка 3, Ссылка 4).

Если же лениво, и вы хотите довольствоваться моим "обгрызанием" темы, с моим техническим английским, с которым я эти видео-демонстрации не смотрел, а вынужден довольствоваться только английским текстом рядом с ними - тогда можете оставаться. :)

Кстати, обращаю внимание тех, кто знает английский лишь на уровне технического - в упомянутой уже Ссылке 3 - текста (английского) - кот наплакал, поэтому все-таки кликните. Ну в самом деле там крохи того текста.

А вот в упомянутой Ссылке 4 - английского текста много, но он читается совершенно легко, для тех кто знает только технический английский (надеюсь данная ссылка имеет отношение к предыдущей, мне показалось что имеет).

Выделим характерную цитату из упомянутой Ссылки 3:
"When mutable state is needed, Clojure offers a software transactional memory system and reactive Agent system that ensure clean, correct, multithreaded designs."

И после этого "приложим" сюда рассказ про "реактивный" ФП-фреймворк из упомянутой Ссылки 4.

Что же получается? (с поправкой на то, что сами видеоматериалы лично я не смотрел)

Получается примерно такая картина - когда в ФП приходится иметь с состояниями - то решение сводится к транзакционной памяти, которую введут в .NET 4 (заимствование идеи из мира СУБД - фиксация удачной операции, если другой поток не внес изменения; сама идея еще прорабатывается, хотя для желающих уже доступна версия для скачивания), а так же - к использованию событий (куда, каким-то хорошим боком, относится всем известный паттерн Observer из GoF).

В общем-то все, что я хотел сказать...

Функциональное программирование, свежий взгляд на вещи - 2.

Статья перемещена в тематический блог и доступна по новому адресу - ссылка.

Функциональное программирование, свежий взгляд на вещи.

Статья перемещена в тематический блог и доступна по новому адресу - ссылка.