|
Какой рейтинг вас больше интересует?
|
Главная /
Каталог блоговCтраница блогера Хабрахабр: Коллективные / Блоги / Захабренные/Записи в блоге |
|
Хабрахабр: Коллективные / Блоги / Захабренные
Голосов: 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 (интенсионность) означает способность некой сущности описывать бесконечное множество предметов: например, понятие простого числа. Ему противоположно свойство экстенсионности — сущность описывает конечный набор предметов: например, понятие страны — члены НАТО.
Свойство локальности — сущность влияет только на отдельную часть системы. Соответственно, глобальность — сущность влияет на всю систему в целом.
Дак вот, учитывая эти два свойства, авторы указанного исследования составляют такую таблицу:

Пользуясь ей легко определить, что относится к уровню архитектуры, а что — к уровню проектирования. И вот мой вывод: выбор парадигмы программирования, платформы и языка — это решение уровня архитектуры, т.к. этот выбор глобален (затрагивает все части системы) и интенсионен (парадигмы определяют способы решения бесконечного множества задач).
Тем не менее, решить столь глобальную задачу (найти критерии выбора подходящей парадигмы) мне пока не по силам. Поэтому я решил выбрать два уже существующих класса задач и показать, что для них стоит использовать не привычный для многих ОО подход, а функциональный, который в последнее время приобретает (заслуженно) всё большую популярность.
Классы задач я выбрал необычным методом — я взял два паттерна ОО проектирования и показал, что они, по сути — ограниченная реализация понятия из области функционального программирования — функции высшего порядка (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-трудными задачами на практике является применение приближенных алгоритмов.
Рассмотрим лучший известный приближенный алгоритм решения задачи о вершинном покрытии.
Читать дальше →
Категория «Природа»
Взлеты Топ 5
|
| ||
|
+344 |
353 |
ГОРОСКОП |
|
+342 |
418 |
glois-en101 |
|
+318 |
355 |
ALTAR-NIK |
|
+308 |
361 |
Кладезь информации! djrich.info |
|
+284 |
351 |
Петербуржец |
Падения Топ 5
|
| ||
|
-2 |
87 |
Обойдемся без болезней |
|
-4 |
8 |
SUPER ANI - Информационно-познавательный проект. |
|
-16 |
396 |
Чтобы выжить |
|
-17 |
2 |
Красное Море Дайвинг |
|
-18 |
295 |
Marina Pletneva |
Популярные за сутки
Загрузка...
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.
взяты из открытых общедоступных источников и являются собственностью их авторов.

