Если вы читали мою критику на счет функционального программирования (Часть 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).
В общем-то все, что я хотел сказать...
Минск и Москва. Начало конца
Публикации в прессе - ссылка 1 и ссылка 2.
Цитата:
"В ответ на это в Минске развернулась антикудринская кампания, в ходе которой его сравнивали с "вякающим отморозком" и "кладовщиком"."
Цитата:
"А.Лукашенко: В.Путин организовал заговор против Белоруссии"
От себя добавлю (как абсолютно непредвзято относящаяся ко всем тут сторона), что, конечно, недавние утверждения Лукашенко, что во всем виновата российская пресса, в деле откладывания признания Абхазии и Южной Осетии со стороны Беларуси - смотрятся смехотворно. Вместе с тем... Вместе с тем - это уже когда обе стороны совершают ошибки, одну за другой.
См. так же - "IT в России. Мрачные перспективы" (статья успела обрасти многочисленными дополнениями).
Цитата:
"В ответ на это в Минске развернулась антикудринская кампания, в ходе которой его сравнивали с "вякающим отморозком" и "кладовщиком"."
Цитата:
"А.Лукашенко: В.Путин организовал заговор против Белоруссии"
От себя добавлю (как абсолютно непредвзято относящаяся ко всем тут сторона), что, конечно, недавние утверждения Лукашенко, что во всем виновата российская пресса, в деле откладывания признания Абхазии и Южной Осетии со стороны Беларуси - смотрятся смехотворно. Вместе с тем... Вместе с тем - это уже когда обе стороны совершают ошибки, одну за другой.
См. так же - "IT в России. Мрачные перспективы" (статья успела обрасти многочисленными дополнениями).
Прелюбопытнейший роман
IT прочно вошли в нашу жизнь и, порой, программисты совсем не обращают на жизнь вокруг. В лучшем случае - суета сует. А, тем временем - мимо может пройти по настоящему интересное!
Есть в Белоруссии один эксцентричный (хотя речь не о нем, это все предисловие) владелец крупнейшей дизайн-студии страны. Эдакий отечественный Лебедев, на публике частенько играющий роль Жириновского. Между тем, как говорится - иногда "правильные мысли говорит". В частности советует своим дизайнерам, при отсутствии идей - выйти на улицу и оглядеться. Понаблюдать мир. Тогда и идеи появятся...
Программисты! Собратья по разуму! Не пропустите цикл рассказов интересного автора в "Компьютерре-онлайн" Василия Щепетнева - о русском писателе Некрасове.
Цитата из 4-ой, заключительной части:
"Править непросто, но Некрасов справляется отменно. В ход идут все маленькие хитрости того времени. Процветает право первой ночи: дебютную вещь журналы публикуют безгонорарно. Вот типичный пример: Толстой посылает в "Современник" повесть "Детство". Некрасов её хвалит, обещает поместить в ближайший номер и обещание выполняет. Вскоре "Детство" предстает перед читателями, но автор напрасно ждет денег. Вместо них он получает письмо следующего содержания:
Милостивый государь!
Прошу извинить меня, что я замедлил ответом на последнее Ваше письмо – я был очень занят. Что касается вопроса о деньгах, то я умолчал об этом в прежних моих письмах по следующей причине: в лучших наших журналах издавна существует обычай не платить за первую повесть начинающему автору, которого журнал впервые рекомендует публике.
Этому обычаю подверглись все доселе начавшие в "Современнике" свое литературное поприще, как-то: Гончаров, Дружинин, Авдеев и др. Этому же обычаю подверглись в свое время как мои, так и Панаева первые произведения. Я предлагаю Вам то же, с условием, что за дальнейшие Ваши произведения прямо назначу Вам лучшую плату, какую получают наши известнейшие (весьма немногие) беллетристы, т. е. 50 р. сер. с печатного листа. Я промешкал писать Вам еще и потому, что не мог сделать Вам этого предложения ранее, не поверив моего впечатления судом публики: этот суд оказался как нельзя более в Вашу пользу, и я очень рад, что не ошибся в мнении своем о Вашем первом произведении, и с удовольствием предлагаю Вам теперь вышеписанные условия. Напишите мне об этом. Во всяком случае могу Вам ручаться, что в этом отношении мы сойдемся. Так как Ваша повесть имела успех, то нам очень было бы приятно иметь поскорее второе ваше произведение. Сделайте одолжение, вышлите нам, что у Вас готово. Я хотел выслать Вам IX № "Современника", но, к сожалению, забыл распорядиться, чтобы отпечатали лишний, а у нас весь журнал за этот год в расходе. Впрочем, если Вам нужно, я могу выслать Вам один или два оттиска одной Вашей повести, набрав из дефектов.
Повторяю мою покорнейшую просьбу выслать нам повесть или что-нибудь вроде повести, романа или рассказа, и остаюсь в ожидании Вашего ответа.
Готовый к услугам
Н. Некрасов."
Ссылки:
"Василий Щепетнёв: Путь поэта".
"Василий Щепетнёв: Путь Поэта. Штурм Крепости".
"Василий Щепетнёв: Путь Поэта. Перо в камне".
"Василий Щепетнёв: Путь Поэта. Царь Горы".
Есть в Белоруссии один эксцентричный (хотя речь не о нем, это все предисловие) владелец крупнейшей дизайн-студии страны. Эдакий отечественный Лебедев, на публике частенько играющий роль Жириновского. Между тем, как говорится - иногда "правильные мысли говорит". В частности советует своим дизайнерам, при отсутствии идей - выйти на улицу и оглядеться. Понаблюдать мир. Тогда и идеи появятся...
Программисты! Собратья по разуму! Не пропустите цикл рассказов интересного автора в "Компьютерре-онлайн" Василия Щепетнева - о русском писателе Некрасове.
Цитата из 4-ой, заключительной части:
"Править непросто, но Некрасов справляется отменно. В ход идут все маленькие хитрости того времени. Процветает право первой ночи: дебютную вещь журналы публикуют безгонорарно. Вот типичный пример: Толстой посылает в "Современник" повесть "Детство". Некрасов её хвалит, обещает поместить в ближайший номер и обещание выполняет. Вскоре "Детство" предстает перед читателями, но автор напрасно ждет денег. Вместо них он получает письмо следующего содержания:
Милостивый государь!
Прошу извинить меня, что я замедлил ответом на последнее Ваше письмо – я был очень занят. Что касается вопроса о деньгах, то я умолчал об этом в прежних моих письмах по следующей причине: в лучших наших журналах издавна существует обычай не платить за первую повесть начинающему автору, которого журнал впервые рекомендует публике.
Этому обычаю подверглись все доселе начавшие в "Современнике" свое литературное поприще, как-то: Гончаров, Дружинин, Авдеев и др. Этому же обычаю подверглись в свое время как мои, так и Панаева первые произведения. Я предлагаю Вам то же, с условием, что за дальнейшие Ваши произведения прямо назначу Вам лучшую плату, какую получают наши известнейшие (весьма немногие) беллетристы, т. е. 50 р. сер. с печатного листа. Я промешкал писать Вам еще и потому, что не мог сделать Вам этого предложения ранее, не поверив моего впечатления судом публики: этот суд оказался как нельзя более в Вашу пользу, и я очень рад, что не ошибся в мнении своем о Вашем первом произведении, и с удовольствием предлагаю Вам теперь вышеписанные условия. Напишите мне об этом. Во всяком случае могу Вам ручаться, что в этом отношении мы сойдемся. Так как Ваша повесть имела успех, то нам очень было бы приятно иметь поскорее второе ваше произведение. Сделайте одолжение, вышлите нам, что у Вас готово. Я хотел выслать Вам IX № "Современника", но, к сожалению, забыл распорядиться, чтобы отпечатали лишний, а у нас весь журнал за этот год в расходе. Впрочем, если Вам нужно, я могу выслать Вам один или два оттиска одной Вашей повести, набрав из дефектов.
Повторяю мою покорнейшую просьбу выслать нам повесть или что-нибудь вроде повести, романа или рассказа, и остаюсь в ожидании Вашего ответа.
Готовый к услугам
Н. Некрасов."
Ссылки:
"Василий Щепетнёв: Путь поэта".
"Василий Щепетнёв: Путь Поэта. Штурм Крепости".
"Василий Щепетнёв: Путь Поэта. Перо в камне".
"Василий Щепетнёв: Путь Поэта. Царь Горы".
Когда программисты стареют
Очень интересная история жизни отечественного мэтра программирования, Михаила Донского - "Жизненный цикл программиста".
Цитата:
"В это же время пришлось осваивать C++. Мое знакомство с этим языком началось с экскурсии в офис Bell Laboratories в Murray Hill, которую мне устроил в 1989 году автор Юникс Кен Томпсон. Мы с сыном жили у Кена в гостях, и в воскресный вечер он предложил прокатиться в офис. Офис был безлюден, и я с интересом смотрел на технические чудеса, которых там хватало. В какой-то момент Кен показал на дверь кабинета со словами «А здесь сидит чудак, который думает, что на его языке будет программировать весь мир». Табличка на кабинете гласила, естественно, «Б. Страутсруп»."
Цитата:
"В это же время пришлось осваивать C++. Мое знакомство с этим языком началось с экскурсии в офис Bell Laboratories в Murray Hill, которую мне устроил в 1989 году автор Юникс Кен Томпсон. Мы с сыном жили у Кена в гостях, и в воскресный вечер он предложил прокатиться в офис. Офис был безлюден, и я с интересом смотрел на технические чудеса, которых там хватало. В какой-то момент Кен показал на дверь кабинета со словами «А здесь сидит чудак, который думает, что на его языке будет программировать весь мир». Табличка на кабинете гласила, естественно, «Б. Страутсруп»."
Как запомнить Java API. Текст, строки, буферизация
1) В J2SE 5.0 появился класс StringBuilder. До него был класс StringBuffer. Эффективным является StringBuilder, его и следует применять (напомню, область его предназначения - множественные операции при работе с текстовой переменной, вместо класса String). Устаревший класс StringBuffer позволяет множеству потоков добавлять и удалять символы, только в этом случае его следует использовать. Выделим ключевое слово в его названии - "buffer".
2) В J2SE 5.0 появился класс Scanner. До него был класс BufferedReader. Классы позволяют считывать данные в текстовом формате (из файла, например). Опять же - "буферное" в названии класса - класс устаревший (у него нет методов для считывания чисел, у Scanner - есть).
P.S. У потоков с "данными" - "буферизованные" названия классов - классы не устаревшие. Т.е. речь только про то, что относится к тексту.
Запомнили? Возможно эта небольшая запоминалка даст вам лишний правильный ответ при тестировании на собеседовании, при сдаче на сертификат и просто в работе (в API J2SE 6.0 - 3777 классов, при этом некоторые классы имеют объем по 2000 и более строк).
2) В J2SE 5.0 появился класс Scanner. До него был класс BufferedReader. Классы позволяют считывать данные в текстовом формате (из файла, например). Опять же - "буферное" в названии класса - класс устаревший (у него нет методов для считывания чисел, у Scanner - есть).
P.S. У потоков с "данными" - "буферизованные" названия классов - классы не устаревшие. Т.е. речь только про то, что относится к тексту.
Запомнили? Возможно эта небольшая запоминалка даст вам лишний правильный ответ при тестировании на собеседовании, при сдаче на сертификат и просто в работе (в API J2SE 6.0 - 3777 классов, при этом некоторые классы имеют объем по 2000 и более строк).
Электронное правительство 5. Тотальная стратегическая антихакерская оборона - рытье окопов продолжается
Публикация в прессе - "Контроль Рунета: новые идеи".
Цитата:
"Если говорить о порядке подтверждения данных, то уже с 1 октября и так вводятся новые правила регистрации доменов .RU, в которых реализован компромисс между подтверждением данных лиц, регистрирующих домены, и возможностью развития доменной зоны. Аналогичные условия подтверждения данных прописаны и в проекте правил регистрации доменов .РФ"
Цитата:
"Если говорить о порядке подтверждения данных, то уже с 1 октября и так вводятся новые правила регистрации доменов .RU, в которых реализован компромисс между подтверждением данных лиц, регистрирующих домены, и возможностью развития доменной зоны. Аналогичные условия подтверждения данных прописаны и в проекте правил регистрации доменов .РФ"
Еще одна экспериментальная ОС от Microsoft
Текст новости здесь.
Цитата: "Helios - это операционная система, предназначенная для упрощения задачи подготовки, развертывания и настройки приложений для гетерогенных платформ. В Helios введены вспомогательные ядра, которые экспортируют единообразный набор абстракций ОС для процессоров различных архитектур и с разными характеристиками производительности. Доступ к системе ввода/вывода, например файловой системе, прозрачен и осуществляется через удаленную передачу сообщений, которая расширяет абстракцию передачи сообщений между микроядрами до инфраструктуры вспомогательных микроядер. Helios перенаправляет приложение на доступные шины ISA путем компиляции кода из промежуточного языка".
Еще одна ссылка - "Barrelfish и Windows 8".
Цитата: "Напомню, что проект Singularity, начатый в далеком 2003 году, подразумевал создание высоконадежной ОС, в основе которой лежит идея использования программно-изолированных процессов (Software Isolated Processes, SIP), общение между которыми происходит посредством сообщений."
Цитата: "Helios - это операционная система, предназначенная для упрощения задачи подготовки, развертывания и настройки приложений для гетерогенных платформ. В Helios введены вспомогательные ядра, которые экспортируют единообразный набор абстракций ОС для процессоров различных архитектур и с разными характеристиками производительности. Доступ к системе ввода/вывода, например файловой системе, прозрачен и осуществляется через удаленную передачу сообщений, которая расширяет абстракцию передачи сообщений между микроядрами до инфраструктуры вспомогательных микроядер. Helios перенаправляет приложение на доступные шины ISA путем компиляции кода из промежуточного языка".
Еще одна ссылка - "Barrelfish и Windows 8".
Цитата: "Напомню, что проект Singularity, начатый в далеком 2003 году, подразумевал создание высоконадежной ОС, в основе которой лежит идея использования программно-изолированных процессов (Software Isolated Processes, SIP), общение между которыми происходит посредством сообщений."
Подписаться на:
Сообщения (Atom)