Архив 29 мая 2013

Кредит = кретин + бандит

И первые, и вторые прекрасно описаны в ЖЖ [info]mikhayluk:

http://mikhayluk.livejournal.com/25410.html

Про криптографию и программистов

Мне кажется, статейка заcлуживает внимания:

http://happybearsoftware.com/you-are-dangerously-bad-at-cryptography.html

Собственно, об этом писал [info]sporaw:

стали неумело применять “тяжелую криптографию”, воспринимая ее как “серебряную пулю”, но ничерта не понимающие в ней и в особенностях ее использования

Нет, функция md5() в PHP не решит ваших проблем.

Railway Oriented Programming

В подтверждение записи о том, что работа программиста – это придумывание языков программирования. В одном англоязычном блоге обнаружил пример этого подхода, так сказать, в действии. Рассматривается простая задачка, элементарная последовательность действий, каждый шаг в которой может привести к какой-либо ошибке. Постановка задачи и начало ее решения, прямо скажем, не впечатляют. Но во второй части, как раз и названной “Railway Oriented Programming” – как раз и происходит самое интересное.

Диаграммка типа “поток данных” в принципе, выглядит вполне привычно для многих. Слева вход, справа выход(ы), в квадратиках написаны какие-то функции – все замечательно. Но для того, чтобы перевести ее в реальный программный код на “классическом” ЯП – нужно выполнить некоторую формальную процедуру. Предлагается что-то типа “универсального” языка – который одновременно и изображает конструкции с диаграммы (используются железнодорожные аналогии – типа “стрелка”, “тупик” и т. п.) – и одновременно позволяет записывать программы. Что это, если не язык программирования?

Не так давно мне пришлось освоить одну систему “программирования мышкой”. Нет, это не мейнстримное “визуальное программирование”, обычно понимаемое, как “накидать компонентов на форму”. Та система, с которой мне пришлось столкнуться (что-то типа “русского LabVIEW на коленке”) – это в чистом виде “программирование мышкой”, но идеологически очень близкое к вышеописанному подходу. Изображенные на некоей двумерной схеме “виртуальные приборы” соединяются линиями (”виртуальными проводами”). Авторы утверждают, что с помощью подобной системы можно разрабатывать какие угодно SCADA-приложения (SCADA – это Supervisory Control and Data Acquisition, “диспетчесрское управление и сбор данных”). Как может убедиться практически любой, “каркас” такой системы реализуется на подходящем языке программирования с помощью нескольких десятков строк кода.