[08:54:11] <geniepro> valexey'> info21  похоже живых аппонентов не хватает уже :-)
valexey'> приходится приставать к репликам годичной давности
[08:54:37] <geniepro> у них там просто отношение к форуму, как будто это школа, а они строгие учителя...
[09:47:50] <_valexey_> geniepro: :-)
[09:48:12] <_valexey_> Забавная разновидность преподов
[10:54:06] <geniepro> валексей, чо я хотел-то...
[10:54:20] <geniepro> попробовал я этот мир танков -- нифига не понятно
[10:54:50] <geniepro> надо было при регистрации реферал-код указать например твой -- вдруг за это тебе награду бы дали...
[10:55:21] <geniepro> э, нету его
[10:59:41] <valexey> geniepro: в смысле нету? вот он я :-)
[10:59:46] <valexey> кстати, куда пропадал то?
[11:00:03] <geniepro> да запарки всё время, некогда ничего делать ))
[11:00:18] <geniepro> но чат читал )) лог
[11:01:25] <valexey> да, я видел :-)
[11:01:43] <valexey> мы тут немного клеветами пробавляемся периодически :-)
[11:01:47] <geniepro> как? о_О по логам сервера? ))
[11:02:13] <geniepro> да чота нету толковых, жирных клевет! этот чат уже забыл слово Хаскелл!!!
[11:02:42] <valexey> как это забыл?
[11:02:56] <geniepro> так нету же ничо про хаскелл ))
[11:03:34] <valexey> [04:13:32] <valexey'> дас. похоже что в D можно относительно просто сделать bit syntax аля ерланг.
[04:16:41] <valexey'> пример использования bit-синтаксиса на ерланге:
[04:16:46] <valexey'>   -define(IP_VERSION, 4).
       -define(IP_MIN_HDR_LEN, 5).

       DgramSize = size(Dgram),
       case Dgram of
       <<?IP_VERSION:4, HLen:4, SrvcType:8, TotLen:16,
       ID:16, Flgs:3, FragOff:13,
       TTL:8, Proto:8, HdrChkSum:16,
       SrcIP:32,
       DestIP:32, RestDgram/binary>> when HLen >= 5, 4*HLen =< DgramSize ->
       OptsLen = 4*(HLen - ?IP_MIN_HDR_LEN),
       <<Opts:OptsLen/binary,Data/binary>> = RestDgram,
       ...
       end.

[04:17:11] <valexey'> прикидка как оно может выглядеть на D (оно уже компиляется, но "мяса" еще нет):
[04:20:21] <valexey'> const auto IP_VERSION = 2;
const auto IP_MIN_HDR_LEN = 2;
byte[] dgram;
match(dgram,
           ( _!(IP_VERSION, 4), _!(4, "hlen>=5 && 4*hlen <= drgam.size") hlen,
             _!(8) srvcType, _!(16) totLen,
             _!(16) id, _!(3) flgs, _!(13) fragOff,
             _!(8) ttl, _!(8) proto, _!(16) hdrChkSum,
             _!(32) srcIp,
             _!(32) destIp, byte[] rest)
           {
               int optsLen = 4*(hlen - IP_MIN_HDR_LEN);
               byte[] opts = rest[0..optsLen];
           }   
     );

[04:26:15] <valexey'> похоже на D получится сделать то, что у меня (и у других тоже) так и не получилось сделать на хаскеле
[04:26:26] <valexey'> даже используя template haskell
[04:32:30] <valexey'> вот так на хаскеле пытаются делать: http://hackage.haskell.org/packages/archive/BitSyntax/0.3.2/doc/html/Data-BitSyntax.html
[04:33:32] <valexey'> там это в три этапа:
[04:33:35] <valexey'> decodeOptions bs ([_, hlen], _, _, _, _, _, _, _, _, _)
  | hlen > 5  = return $ BS.splitAt (fromIntegral ((hlen - 5) * 4)) bs
  | otherwise = return (BS.empty, bs)
[04:33:41] <valexey'> ipDecode = $(bitSyn [PackedBits [4, 4], Unsigned 1, Unsigned 2, Unsigned 2,
                     PackedBits [3, 13], Unsigned 1, Unsigned 1, Unsigned 2,
                     Fixed 4, Fixed 4, Context 'decodeOptions, Rest])
[04:35:09] <valexey'> в результате получаем тупл, об который обпаттернматчившись можно получить именованные переменные
[04:35:26] <valexey'> "This function has several weaknesses compared to the Erlang version: The elements of the bit structure are not named in place, instead you have to do a pattern match on the resulting tuple and match up the indexes. The type system helps in this, but it's still not quite as nice."
[11:04:33] <valexey> вот, было же!
[11:04:34] <geniepro> это я видел, но не уверен, что претензии к хаскелю тут обоснованны
[11:05:03] <valexey> я долго мучался с хаскелем чтобы сделать бит-синтаксис. советовался на haskell@c.j.r - так и не получилось ничего
[11:05:08] <valexey> вменяемого то есть
[11:05:11] <geniepro> в конце концов, ну кому может прийти в голову работать с битами на хаскелле? для этого сишечка надо
[11:05:26] <valexey> на сишечке тоже не удобно же :-) там тоже нет бит-синтаксиса
[11:05:41] <geniepro> ну там есть битовые структуры
[11:05:53] <valexey> битфилды то? а они суксь в общем случае
[11:06:18] <valexey> они в частности зависят от биг/литтл ендиана машины
[11:06:27] <valexey> ну и от выравнивания тоже
[11:06:49] <geniepro> да, вопщем эрланг спасёт отца русской демократии )))
[11:07:01] <valexey> ерланг too sloooow
[11:07:03] <geniepro> как там сестра? замуж не вышла ещё? )))
[11:07:13] <valexey> нет конечно. программистка же!
[11:07:14] <valexey> :-)
[11:07:34] <geniepro> о_О я знаю нескольких программисток -- ни одна не замужем ))
[11:07:43] <valexey> алсо ерланг слишком толсто для ряда задач :-)
[11:09:06] <geniepro> да, но одна (сапёрша) вполне себе замужем, москвичка
[11:09:36] <geniepro> раньше она на сях по для военных тренажёров делала, но сбежала в сап за бльшими деньгами
[11:52:06] <valexey> .
[11:52:48] <valexey> geniepro: вот почему бы на хаскиле сервера не писать?
[11:52:58] <geniepro> какие?
[11:53:05] <geniepro> да и пишут же...
[11:54:10] <valexey> да любые. а если писать, то как жить без бит-синтаксиса? :-)
[11:54:35] <valexey> иначе на хаскеле писать будет не более, а то и менее удобно нежели на сях
[11:55:58] <geniepro> хаскель же не для таких задач предназначен...
[11:56:21] <valexey'> то есть не для серверов? :-)
[11:56:29] <valexey'> и не клиентов :-)
[11:56:35] <valexey'> то есть не для сети и не для работы с файлами
[11:58:59] <valexey'> Вроде как хаскелл преподносится в том числе и как крайней выразительный язык, годный для создания eDSL
[12:00:02] <valexey'> И эта задача - простейший пример где требуется создать примитивный eDSL для сильного упрощения работы. По сути без этого невозможна декларативная работа с протоколами/форматами
[12:00:15] <valexey'> то есть хаскель данные разбирает ИМПЕРАТИВНО
[12:00:16] <valexey'> :-)
[12:00:43] <valexey'> даже если все насквозь типизировано и чисто с точки зрения побочных эффектов
[12:01:29] <geniepro> valexey'> то есть хаскель данные разбирает ИМПЕРАТИВНО
ага, сам пейтон джонс писал про это -- хаскелл самый лучший императивный язык )))
[12:01:50] <valexey'> в данном случае он хуже сей :-)
[12:01:54] <valexey'> ибо менее выразителен
[12:06:23] <valexey'> geniepro: ты вот лучше скажи, на чем должно быть писано (либа +  язык) правильное GUI-приложение?
[12:06:41] <geniepro> на сишарпе или дельфы )))
[12:07:05] <geniepro> на всём остальном мне не нра
[12:07:23] <valexey'> не, ты с точки зрения пользователя скажи :-)
[12:07:31] <valexey'> а то на шарпе мне не нра - тормоз жирный же
[12:08:19] <geniepro> ну тогда дельфы без вариантов
[12:08:57] <valexey'> Ня. Блидер. Ужоз
[12:08:57] <geniepro> с точки зрения юзера, если на программера плевать -- то винапи
[12:08:59] <valexey'> А что не Qt?
[12:09:13] <valexey'> (хочется кроссплатформенности конечно)
[12:09:15] <geniepro> Qt? тормозное углучище
[12:09:39] <valexey'> а Qt Creator вроде и не тормозит и не углючит
[12:10:55] <valexey'> gtk не вариант?
[12:15:02] <geniepro> гтк ненативный, да и ниасили я его
[12:15:46] <valexey'> даже на хаскиле ниасилил?
[12:15:53] <geniepro> ага
[12:16:24] <valexey'> гм. а вроде там довольно кошерный биндинг. наверно самый кошерный гуй из имеющихся для хаскеля
[12:16:33] <valexey'> довольно декларативненько :-)
[12:48:01] <valexey'> "И с учетом этого мне очень интересно, как воспитывать детей в мире, который захвачен глобальным компьютерным паразитом. Возможно, надо сразу обучить их принципу "выдерни шнур, выдави стекло"."
[12:48:06] <valexey'> http://f5.ru/freshf5/post/390915
[13:33:31] <geniepro> Мама, купившая своему ребенку чехол к мобильному телефону, принесла его в магазин, чтобы вернуть продавцу.

П: На что жалуетесь?
М: Ребенок отказывается пользоваться чехлом.
П: Почему? Что не устраивает?
М: Мы заказывали чехол с человеком-пауком. На чехле надпись SPIDER-MAN. Так вот, когда застегиваем молнию, становится не видно букву S.
[14:01:36] <valexey'> :-)
[14:03:53] <valexey'> geniepro: оберонщики походу изобретают монады :-)
[14:03:59] <valexey'> "Что мешает сделать этапы логическими функциями? Тогда было бы просто...
Код:
IF <этап0> AND <этап1> AND <этап3> ... THEN…."
[14:04:07] <valexey'> http://forum.oberoncore.ru/viewtopic.php?p=68903#p68903
[14:04:16] <geniepro> о_О де это они так опростоволосились? ))
[14:04:35] <geniepro> так это же старая тема
[14:04:47] <valexey'> "25 Декабрь, 2011"
[14:06:28] <geniepro> ну начинался топик год назад ещё, я там успел нафлудить...
[14:08:58] <valexey'> но у них же уже "Я всегда так пишу... не задумываясь. Стандартный такой шаблон уже в мозгах"
[14:08:59] <valexey'> :-)
[14:09:27] <valexey'> и еще:
[14:09:36] <valexey'> "Я для себя с некоторых пор стал различать функции и процедуры-функции (в собственном смысле).
Не то чтобы я это где-то вычитал. Этакое изобретение моей больной фантазии  
Отличаются они тем, что результат работы функции - это собсна то, что она возвращает. (ну и без побочных эффектов ессесна)
А результат работы процедуры-функции как у обычной процедуры, с той лишь разницей, что она еще сообщает (возвращая булево), сделала ли она то, что от нее требовалось."
[14:09:42] <valexey'> ну, то есть еще пару шагов и они изобретут хаскель :-)
[14:09:54] <valexey'> с его разделением на чистые функции и IO-функции
[14:10:16] <valexey'> у них осталась последняя проблема:
[14:10:19] <valexey'> "Трудность тут в том что и та и другая могут возвращать булево. Я в своем коде такие случаю четко различаю. А вот кодер со стороны может не врубиться."
[14:10:32] <valexey'> то есть хочется их как-то различать по типам :-D
[14:10:41] <valexey'> а язык то не позволяет!
[14:13:07] <geniepro> у них уйдёт ещё лет 10, что бы дойти до идей хацкеля
[14:13:35] <valexey'> ну таки да. они пока даже до плюсов по нормальному не дошли :-)
[14:14:08] <valexey'> а до хаскеля, даже без всякого ghc и просто 98го стандарта там еще как до луны конечно
[14:15:35] <valexey'> но идут они в верном направлении, хотя и кружным путем :-)
[14:18:32] <valexey'> geniepro: кстати, напомни, а что у хаскеля с юникодом?
[14:18:56] <geniepro> да намана всё с юникодом у хаскеля )))
[14:19:12] <geniepro> ну иногда нет-нет глюкнет, так это от неумения же
[14:19:33] <geniepro> я в том месте переделал у себя -- всё штатными средствами получилось окей!
[14:19:38] <valexey'> не, я более детально спрашивал :-) какой там вариант юникода унутре используется?
[14:19:45] <geniepro> utf8
[14:20:05] <valexey'> то есть операция индексации за O(n)?
[14:20:41] <valexey'> ну и подсчет длины слова например тоже
[14:20:46] <geniepro> эм... это кодировка файлов, с которыми работает прога, а так видимо 32-битные символы
[14:21:01] <geniepro> если брать  String
[14:21:05] <valexey'> ага. utf-32 значит
[14:21:16] <valexey'> ну или ucs-4, что то же самое
[14:21:19] <geniepro> ByteString -- там да, сложнее
[14:22:03] <geniepro> ну, 32-битные символы я не тестировал, но 24-битные у нас нет-нет проходят, вроде намана всё
[14:22:21] <geniepro> конкретно вот этот символ: №
[14:25:56] <valexey'> ucs-4/utf-32 всегда кодирует символ четырьмя байтами
[14:58:42] <valexey'> гм. создал на базе нетбинза приложение. дистр получился 7 метров.
[14:58:58] <valexey'> под маздаем смотрится нативно и в классике и в висте-семерке
[14:59:04] <valexey'> в макоси тоже смотрится нативно
[14:59:22] <valexey'> в распакованном виде - порядка 18ти метров
[14:59:41] <valexey'> при этом это универсальный дистр получился. и для винды и для макоси и для линукса
[14:59:52] <valexey'> + есть сервис автообновлений
[15:00:04] <valexey'> похоже приложение на базе нетбинзы - мой выбор
[15:00:34] <geniepro> это ява?
[15:00:59] <geniepro> мне нетбинз тоже понравился, но так как с явой я не работаю, то не пользовал серьёзно
[15:01:33] <geniepro> вот эклипс мне не нра
[15:02:00] <valexey'> ява
[15:02:02] <valexey'> swing
[15:03:09] <valexey'> думаю не имеет смысла извращаться со всем остальным. тем более что автоапдейт - это необходимая для меня фишка
[15:07:19] <geniepro> какой автоапдейт?
[15:16:15] <valexey'> приложения
[15:16:17] <valexey'> с интернету
[15:17:01] <valexey'> собственно это на тему вот этого примерно: http://oberspace.dyndns.org/index.php/topic,156.0.html
[19:10:50] <valexey'> "нельзя создать объект, используя оператор new, тип которого является параметром generic-а"
[19:10:54] <valexey'> жаба такая жаба…
[19:11:19] <shaggie> есть такое, страшно бесит
[19:11:51] <shaggie> ну типо runtime type erasure, всё такое
[19:12:50] <valexey'> итить его налево, но в плюсах ведь тоже в рантайме никаких шаблонов нет!
[19:12:57] <valexey'> но new T; сделать можно
[19:14:32] <shaggie> ниасилили
[19:14:49] <shaggie> в шарпе кстати можно: http://stackoverflow.com/questions/840261/c-sharp-generic-new-constructor-problem
[19:14:53] <shaggie> но не без приседаний
[19:15:46] <valexey'> поганцы
[19:16:17] <valexey'> а коль мне динамичность, что в жабе и дотнете имеется, нафиг не уперлась, нафига мне этот геморрой на свою голову?
[19:17:54] <valexey'> shaggie: говорят что вот так надо делать:
[19:17:56] <valexey'> private static class SomeContainer<E>
{
    E createContents(Class<E> clazz)
    {
        return clazz.newInstance();
    }
}

[19:18:03] <valexey'> http://stackoverflow.com/questions/75175/create-instance-of-generic-type-in-java
[19:18:52] <shaggie> да, но только конструктор без аргументов дёргаться будет, то есть те же приседания
[19:19:26] <valexey'> а через рефлекшн нельзя выцепить конструктор с аргументами?
[19:19:56] <shaggie> хм. не знаю, не проверял
[19:20:44] <shaggie> мои глаза, они кровоточат!!!
return   (E)((Class)((ParameterizedType)this.getClass().getGenericSuperclass()).getActualTypeArguments()[0]).newInstance();
[19:21:16] <valexey'> Ж-)
[19:21:21] <valexey'> но таки можно же!
[19:25:34] <valexey'> вообще, теперь вопрос - чем ЭТО отличается от простого new? Ужель нельзя было засахарить?
[19:26:05] <shaggie> ниасилили же
[19:26:36] <valexey'> кошмар же
[19:27:09] <valexey'> если бы они хаскелл писали, то фиг бы нам а не do-нотация для монад!
[20:08:26] <valexey'> ня. опять у меня какая-то мерзопакостная message bus получается