Сегодня 28 февраля, суббота ГлавнаяНовостиО проектеЛичный кабинетПомощьКонтакты Сделать стартовойКарта сайтаНаписать администрации
Поиск по сайту
 
Ваше мнение
Какой рейтинг вас больше интересует?
 
 
 
 
 
Проголосовало: 7281
Кнопка
BlogRider.ru - Каталог блогов Рунета
получить код
Хабрахабр: Коллективные / Блоги / Захабренные
Хабрахабр: Коллективные / Блоги / Захабренные
Голосов: 10
Адрес блога: http://habrahabr.ru/blog/
Добавлен: 2007-10-24 18:05:40 блограйдером Robin_Bad
 

Программирование / [Из песочницы] Паттерны Command и Strategy с точки зрения функционального программирования

2011-06-01 17:27:50 (читать в оригинале)

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

Паттерны проектирования и функциональное программирование? Как это вообще связано?


В умах многих разработчиков, привыкших к объектно-ориентированной парадигме, возникает впечатление, что проектирование программного обеспечения, как таковое, неразрывно связано с ООП и всё остальное — суть ересь. UML, большей частью нацеленный на ООП, используется как универсальный язык для проектирования — хотя он таким, конечно, не является. И мы видим, как мир объектно-ориентированного программирования постепенно погружается в пучину преступного переинженеринга (1).
В силу этого зачастую даже не ставится вопрос о выборе парадигмы программирования. Тем не менее, этот вопрос является весьма существенным, и зачастую правильный ответ даёт большие преимущества (3). Это, вообще говоря, выходит за рамки того, что мы привыкли называть проектированием — это вопрос из области архитектуры.

Лирическое отступление: разница между архитектурой, проектированием и реализацией

Не так давно я наткнулся на весьма интересное исследование — (2). В нём рассматривается задача формализации понятий «архитектура», «проектирование» и «реализация», которые чаще всего употребляются неформально. И авторам удаётся вывести весьма интересный критерий: критерий Intension/Locality. Я не буду углубляться в философию и просто приведу краткое описание критерия (эта часть — фактически перевод) и мои выводы из него.
Свойство Intension (интенсионность) означает способность некой сущности описывать бесконечное множество предметов: например, понятие простого числа. Ему противоположно свойство экстенсионности — сущность описывает конечный набор предметов: например, понятие страны — члены НАТО.
Свойство локальности — сущность влияет только на отдельную часть системы. Соответственно, глобальность — сущность влияет на всю систему в целом.
Дак вот, учитывая эти два свойства, авторы указанного исследования составляют такую таблицу:
image
Пользуясь ей легко определить, что относится к уровню архитектуры, а что — к уровню проектирования. И вот мой вывод: выбор парадигмы программирования, платформы и языка — это решение уровня архитектуры, т.к. этот выбор глобален (затрагивает все части системы) и интенсионен (парадигмы определяют способы решения бесконечного множества задач).

Тем не менее, решить столь глобальную задачу (найти критерии выбора подходящей парадигмы) мне пока не по силам. Поэтому я решил выбрать два уже существующих класса задач и показать, что для них стоит использовать не привычный для многих ОО подход, а функциональный, который в последнее время приобретает (заслуженно) всё большую популярность.
Классы задач я выбрал необычным методом — я взял два паттерна ОО проектирования и показал, что они, по сути — ограниченная реализация понятия из области функционального программирования — функции высшего порядка (higher-order function, далее: ФВП). Гипотеза заключалась в том, что паттерны — это устоявшиеся решения определённых проблем, а раз возникают проблемы и их устоявшиеся решения, видимо есть некие слабости и недостатки, которые приходиться преодолевать. Для рассмотренных паттернов это действительно так.
Кстати говоря, подобный подход был использован в (5) и (6). В (6) вообще было указано на возможность замены большинства паттернов, но подробный анализ каждого не проводился. В (5) было более подробное рассмотрение Command и Strategy, но немного с другой стороны. Я решил сделать что-то более практичное, чем в (6), и с другими акцентами, чем в (5). Итак, приступим.

Читать дальше →


Социальные сети / Мониторинг социальных медиа

2011-06-01 17:17:59 (читать в оригинале)

Вы занимаетесь продвижением в социальных медиа?! Тогда, эта статья для Вас. Кто-то найдет новую информацию для себя, а кто-то сможет поделиться своим собственным богатым опытом.

Еще несколько вопросов, на которые Вам нужно ответить перед прочтением)) Какой программой или сервисом Вы пользуетесь в социальных медиа? Удовлятворяет ли Ваши потребности? Мониторите ли упоминания о своем бренде в интернете? Используете ли конкретный сервис для мониторинга или делайте это собственными усилиями?

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

Существует много средств отслеживания активности пользователей. Вопрос остается открытым – Какие средства для мониторинга существуют и какие из них лучшие?!

Не буду много писать, представлю статистику (источник flowtown) и свои комментарии, основанные на собственном опыте работы SMM в Бизнес-инкубаторе «Ингрия».
Читать дальше →


Платежные системы / [Из песочницы] НСПК: пострадавшие и выигравшие

2011-06-01 15:53:46 (читать в оригинале)

Сегодня я хотел бы обсудить проект создания в России «Национальной системы платежных карт», реализуемой в качестве части проекта «Универсальной электронной карты». Хотя говорить непосредственно об этих картах рано, сейчас важнее понять, кто выиграет и кто проиграет от ухода с российского рынка Visa и MasterCard.
Читать дальше →


Алгоритмы / Жадные алгоритмы. Матроид

2011-06-01 06:58:07 (читать в оригинале)

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

Есть много методов решения тех или иных задач: динамическое программирование, перебор. Не менее известными и довольно распространенными являются жадные алгоритмы.

Думаю, каждый программист в своей жизни хотя бы раз написал жадину, может быть, даже не задумываясь об этом. Что же это такое? Добро пожаловать под кат.
Читать дальше →


Алгоритмы / [Из песочницы] Задача о вершинном покрытии

2011-06-01 03:29:32 (читать в оригинале)

Введение.


На данный момент не известно полиномиальных по времени алгоритмов точного решения NP-трудных задач. Более того, специалисты по теории сложности склоняются к варианту, что таких алгоритмов не существует. Однако, NP-трудные задачи часто встречаются в жизни. Одним из способов борьбы с NP-трудными задачами на практике является применение приближенных алгоритмов.

Рассмотрим лучший известный приближенный алгоритм решения задачи о вершинном покрытии.
Читать дальше →


Страницы: ... 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 ... 

 


Самый-самый блог
Блогер Рыбалка
Рыбалка
по среднему баллу (5.00) в категории «Спорт»


Загрузка...Загрузка...
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.