February 24th, 2009

with Cat The Cat

Парочка новостей со слешдота и некоторое объяснение.

Комментарий к созданию игрушки от NASA за деньги налогоплательщиков: Libertarianism is the new Communism. It's an ideology that sounds nice on paper, but doesn't really work in real life. The idea that unrestrained capitalism can, by itself, lead to a fair and functional society is a fairy tale. It's a religiously held belief with no basis in reality - Free Market Fundamentalism.

В свете мнения, что в США собираются строить социализм по примеру Англии 1945-го, этот здоровенный комментарий выглядит очень интересно. Обычно на слешдоте поднимают наверх комментарии в защиту рынка.
А вот ещё обсуждение, на этот раз проблем с пользовательским интерфейсом платформы Android - для мобильных телефонов, автор идеи Google.

Поскольку я не специалист в пользовательских интерфейсах, я могу рассуждать совершенно свободно. Что я и сделаю.

На Windows выбор одного из нескольких действий осуществляется диалогом с переключателем (radiobutton) с действиями с одной стороны и кнопками Ok/Cancel с другой (я не спец!!!). На Макоси тот же диалог должен выглядеть, как три кнопки со своим действием каждая, Ok отсутствует, Cancel выполняется закрытием окна (щелчком по красному сигналу или AppleW). На обоих платформах присутствует иконка с важностью действия и ещё на макоси в обязательном порядке присутствует описание последствий действий (или предпосылок к этому выбору). Кстати, кнопки на макоси представляют собой глаголы - это тоже регламентировано.

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

Это позволит, в частности, преобразовывать большие диалоги, не влезающие на экран, в последовательность диалогов, например. Или указывать на плохо заполненные поля вне экрана каким-либо дрожанием чего-либо. Там много, что становится возможным.

Тут у меня мысль, как всегда, останавливается.
А ещё я сформулировал для себя критерий, почему мне неинтересно рассматривать языки типа Nemerle. Это "оправдание" выглядит, конечно, как в стихе про ханжу и сыр, но тем не менее.

Очень многие вещи в языках типа Nemerle для меня не важны или даже вредны. Они либо ничем мне не помогут в работе, либо просто-напросто её затянут. Я некоторые перечислю.

Целью Nemerle не было создание безусловно лучшего языка программирования.

"Метапрограммирование - признак необходимости в языке выше уровнем." Фред Брукс, Мифический Человеко-месяц.

.Net.

Иерархическая система имен означает, что количество идентификаторов в пространстве имён будет зашкаливать. Это провоцирует написание слишком больших модулей, что, с моей точки зрения, является плохим дизайном.

Я отдаю себе отчет в том, что это всё отговорки, и что это всё нехорошо. Но ничего поделать не могу. ;)

Кое-что в Nemerle мне действительно сильно помешает в работе.
Пришёл к выводу, что Java очень тупой язык, после трехкратного написания кода наподобие следующего:
    Vector<Pair<Long,Long>> vecSample = new Vector<Pair<Long,Long>>();
    vecSamples.add(new Pair<Long,Long>(new Long(x),new Long(y)));
Vector повторено два раза, Pair три, а пара Long - четыре.

Это безобразие. Так нельзя. ;)