| (no subject) |
[Jun. 19th, 2008|09:37 am] |
Предлагаю отменить нахуй в джаве нуллы или хотя бы добавить возможность ставить аннотации на generic type parameters.
Кто-нибудь знает, как JIT относится к классам-холдерам типа class X {String value;}? Инлайнит их при случае? |
|
|
| (no subject) |
[May. 11th, 2008|07:01 pm] |
J2EE fucking suxx, и туториалы по нему - один хуже другого.
Он, похоже, громоздок и неповоротлив, требует по десять конфигов на каждый чих и десятков тысяч человекочасов разработчиков IDE на то, чтобы это благородие хоть как-то можно было понимать и писать.
Не нашел в инете ни одного туториала, который бы охватывал все жизненно важные темы на минимальном уровне - аутентификацию, persistence, jsp, и прочее. Все туториалы либо размером в 1542 страницы (официальный туториал), либо ничего толком не рассказывают, а только льют воду про то, какой J2EE классный фреймворк для построения распределенных транзацкионных десятислоеных клиент-серверных корпоративных интегрированных xml-платформ веб-приложений на основе EJB, JAAS, JPA, JNDI, JSF, JSP, JSQL, JWTF и JZOMG.
Да - это все основано на впечатлениях от недоделанной до конца простейшей лабы. Так что, скорее всего, я во всем ошибаюсь и на самом деле J2EE - это небольшой легковесный веб-фреймворк с пологой кривой обучения. |
|
|
| О функциональщине |
[Apr. 9th, 2008|10:02 am] |
До сих пор я долгое время придерживался мнения, что попытки писать в функциональном стиле на джаве, к примеру - обречены на провал, т.к. все будет засрано анонимными классами и истинное дао все равно не постигнется.
Я изменил это мнение: написание одного средних размеров класса с дюжиной статических методов (комбинаторов) - очень простых, но засранных анонимными классами - и затем выражение всей существенной логики через них с помощью one-liners - это очень круто.
Понятно что круто потому, что коротко, крайне читаемо и легко изменять - но ведь с этим приходят еще 2 бонуса: - Так же как и в, гм, других функциональных языках - ноль ошибок реализации, только концептуальные - Есть дебаггер - есть REPL. Можно ввести такой же one-liner в Inspect window. Это, братцы, силища исполинская.
Минусы: - В дебаггере сложнее отследить, как именно происходит вычисление. Это компенсируется тем, что можно за секунды поиграть в Inspect window с другим вариантом алгоритма; мне собственно отслеживать step-by-step не пришлось вообще. - Наличие некрасивого класса с набором комбинаторов. Это уж увы; впрочем, назвать этот класс "сложным" или "трудно поддерживаемым" никак нельзя. - Возможно, производительность. Но это вообще мелочи.
Конечно, это все имеет место только если задача такова, что удобно поддается декомпозиции в функциональном стиле - мне попалась именно такая. |
|
|
| (no subject) |
[Apr. 3rd, 2008|11:02 am] |
Купил-таки в Москве книжку Вольфенагена "Комбинаторная логика в программировании" - очень интересное, хоть и специфическое чтиво. Интересное: я не был знаком с комбинаторной логикой на столь глубоком уровне и не представлял, что ее можно так гибко применять. Специфическое: полностью отсутствует вода, книжка состоит в основном из задач с подробными решениями; в аннотации написано, что "предварительная математическая подготовка" не требуется, однако, ни слова не сказав о теории категорий, аффтар провозглашает (примерно) "Оболочка Каруби - это категория, описывающая одинаковым образом типы и термы" и пускается в категориальные изыскания, доказательство того, что оболочка Каруби - это категория и т.п. Начинается "влоб", с нескольких десятков задач вида "выразите такой комбинатор через S и K" - без особенного пояснения, что такое S/K и зачем они нужны. В следующей же главе, впрочем, почти все эти задачи разбираются и дается общий способ преобразования лямбда-термов в базис SK.
Мораль - определенно стоит прочитать целиком и решить все задачи. Время бы еще найти.
Оболочка Каруби, похоже, очень интересна - но я пока в нее не до конца врубился. Дошел до суперкомбинаторов; похоже, дальше будет самое интересное. |
|
|
| Слабо? |
[Jan. 17th, 2008|09:23 am] |
|
Доказать или опровергнуть существование persistent purely functional hashtable/array с операциями за (хотя бы амортизированное) O(1) при любой последовательности операций. |
|
|
| (no subject) |
[Jan. 8th, 2008|01:51 pm] |
Вдогонку reader-writer lock на эрланге: еще потестил, он умеет открываться-закрываться 400 тысяч раз в секунду. Я тестил на простом случае: всего один читающий процесс, но он так устроен, что нет никаких причин, чтобы он работал медленнее при бОльшем числе процессов.
Господа френды, что, на ваш взгляд, наиболее важно осветить в рассказе о некоем языке, и в каком порядке? По-моему: - Обзор главных свойств языка, вообще без упоминания синтаксиса - Краткий обзор синтаксиса на примере простой и понятной программы - Архитектура более сложной программы, но без подробностей реализации, только с несколькими характерными маленькими кусками кода - Кто этот язык как и для чего использует в real-world - Обзор имеющихся мощных библиотек и тулов для real-world задач - Результаты нескольких бенчмарков, выводы - что на нем работает хорошо, а что плохо - Peculiarities, исторические справки, литература |
|
|