Я в интернете

РСС    Джейсон-фид

Есть автоматические трансляции в Тумблер и Же-же. Если не работает, напишите мне: ilyabirman@ilyabirman.ru.

Позднее Ctrl + ↑

Кроме беззаботный

Utel рекламируется на радио:

Предложение действительно для всех тарифных планов, кроме «Беззаботный» и «Лёгкий»

Эх... Ну почему австрийский банк умеет говорить по-русски, а вы, русская компания, не умеете?

Дельта Нила

Разница между максимальным и минимальным уровнями Нила называется дельтой Нила (ΔНила).

Цитата дня

Хорошее наблюдение Вадима Артамонова:

Сейчас многие употребляют слово «контент» по тому же принципу, по которому системный блок называют «процессором»

Самые комментируемые заметки

Некоторые интересуются, почему самые комментируемые заметки за последний месяц как-то странно отсортированы:

  • сначала идёт заметка с 28-ю комментариями, потом — с 46-ю, после этого — с 18-ю;
  • сначала идёт заметка за 1 сентября, потом — за 22 июля (sic!), потом — за 29 августа.

По какому критерию они сортируются?

Surprisingly enough, они сортируются по количеству комментариев, написанных за последний месяц (30 дней).

Про вероятность

Как мы уже знаем, есть две интересных категории граждан:

Не менее интересную категорию составляют те, кто не понимает, что:

  • событие, вероятность которого равна 1, в общем случае не является достоверным (то есть, может и не произойти);
  • событие, вероятность которого равна 0, в общем случае не является невозможным (то есть, может и произойти).

Чтобы как-то связать это с предыдущими двумя категориями, скажу, что, например, предел функции x^^y^^ в точке 0, если мы не знаем с какой стороны точка (x; y) движется к нулю, равен единице с вероятностью 1. Некоторые могут сказать, что эта вероятность равна 0,(9), а не 1. Но мы-то знаем, что это одно и то же.

Об ООП

Наконец-то сформулировал, что меня не устраивает в объектно-ориентированном программировании.

Объектно-ориентированное программирование — это не парадигма, а просто синтаксис, но многие его считают парадигмой и чуть ли не молятся на него.

Инструкции процессор пока что исполняет по очереди, ну и ещё он умеет прыгать по разным адресам. Возможность в языках программирования использовать всевозможные ветвления и остроумные циклы вроде foreach вместо повсеместного goto — это не парадигма, а просто удобный синтаксис. Иногда нам удобен if, иногда — case, иногда — while, иногда — for, а иногда, как ни крути, goto. Но всё это сводится к jmp, jz и подобным.

Возможность использования подпрограмм — это ещё чуть более сложная абстракция от прыганий по адресам в памяти, на этот раз ещё и с использованием стека. Она настолько важная, что реализована прямо в железе, и поэтому сводится к call и ret.

Но ничего принципиально нового в теорию алгоритмов все эти конструкции не вносят, они лишь дают возможность формулировать эти алгоритмы более наглядно. Глупо, скажем, вообще всё, что угодно, в программе реализовывать через функции. Для некоторых задач удобнее макросы, а для некоторых даже простой copy/paste кода. Синтаксически операторы часто удобнее и нагляднее функций: a = b+c понятнее, чем a = sum (b, c);

Всё то же самое и с ООП. Объекты — это штуки, которые дополняют список операторов, функций, макросов и всякого другого. Это ещё один вид абстрации от реальности, который иногда удобен, а иногда — нет. Поскольку это всего лишь синтаксис, то использовать его нужно только тогда, когда это удобно, а не вообще всегда.

Проиллюстрируем сказанное на примере:

// a = sin (b);

s = new Sinusor ();
s -> angle = b;
s -> initiateEvaluation ();
a = s -> extractValue ();
Ранее Ctrl + ↓