[00:06:02] <valexey> ога. подебил
[00:06:08] <valexey> победил :-)
[00:09:07] <valexey> genieprox: а что будет если число возможных подстрок больше чем в даденом массиве слотов?
[00:17:19] <valexey> о-о, сегфолты пошли :-)
[00:33:00] <valexey> Да, разница в скорости примерно в 10 раз получается. 12,2 секунды против 1,4
[00:33:06] <valexey> На строке в полгигабайта.
[00:33:40] <valexey> Правда с fscanf'ом у меня не было веселых сегфолтов, а вот с genieprox функией я успел огрести :-)
[00:36:45] <valexey> + c типами в этой функции явный непорядок, за что хаскелисту должно быть стыдно :-)
[06:31:49] <genieprox> genieprox: а что будет если число возможных подстрок больше чем в даденом массиве слотов?
лишние подстроки игнорируются, слишком длинные подстроки обрезаются
[06:33:00] <genieprox> > а вот с genieprox функией я успел огрести :-)
> + c типами в этой функции явный непорядок, за что хаскелисту должно быть стыдно :-)
чиво-чиво? поподробнее, плиз... о_О
[09:51:21] <geniepro> какие сегфолты? я достаточно тщательно оттестировал свою ф-цию (((
[10:32:28] <geniepro> template <typename T, size_t N>
char (&ArraySizeHelper(T (&array)[N]))[N];
#define arraysize(array) (sizeof(ArraySizeHelper(array)))

#define SprlitCStrm(str,delimiter,substrs) SprlitCStr(str, delimiter, arraysize(substrs), sizeof(substrs[0]), &substrs[0][0])

int SprlitCStr(char *str, char splitter, int substr_cnt, int substr_len, char *substrs);

[11:32:25] <geniepro> xxx: "В целях предотвращения пожаров и борьбы с ними, в Краснодарский край отправлены 25 икон "Неопалимая купина".
xxx: Вот вам модернизация, вот вам Сколково, и вот вам нанотехнологии.
[11:33:47] <geniepro> ххх: кот прыгнул через меня и не рассчитал, попал лапами на клаву - в коде добавилась переменная vza )))
ууу: в кириллице это МЯФ
[11:39:48] <geniepro> грамотный котяра ))
[13:33:10] <geniepro> чоза пусто-пусто?
[13:33:30] <subj_rs> не свято место
[13:40:11] <valexey> geniepro: где пусто-пусто?
[13:42:56] <geniepro> тут пусто пусто
[13:43:20] <subj_rs> тут не свято
[13:43:27] <valexey> 6 ников
[13:43:28] <valexey> нормально
[13:43:41] <valexey> включая жабу
[13:43:53] <geniepro> а чо такое затишье? )))
[13:44:37] <valexey> может народ работает? :-)
[13:44:45] <geniepro> далана о_О
[13:45:02] <subj_rs> /me пытается настроиться на работу
[13:45:11] <geniepro> нипалучится )))
[13:45:17] <shaggie> работать вредно
[13:45:34] <geniepro> если хочешь поработать -- ляг поспи и всё пройдёт
[13:48:36] <valexey> fmemopen таки рулит, да. позволяет закопать sscanf
[13:49:13] <geniepro> а ежели на хацкеле -- так вапще круче )))
[13:49:31] <valexey> хаскель - слишком толсто.
[13:50:01] <shaggie> толсто - это J
[13:50:09] <shaggie> а хацкел в самый раз
[13:50:41] <valexey> толсто в плане рантайма и в плане несоблюдения собственных же стандартов.
[13:51:23] <geniepro> да какие там стандарты??? Haskell98 не менялся давно
[13:55:21] <valexey> 2011 же вышел
[13:55:26] <valexey> или 2010, не помню
[13:55:30] <valexey> 98 закопали же
[13:56:57] <geniepro> да там отличий почти нет. ну не больше, чем между с89 и с99
[14:06:55] <geniepro> module Main where

main = do
   print $ parse "123;456;asdf ; zxcv dsf 4 ;ads faf;23"

parse            :: String -> [String]
parse ""         =  []
parse s          =  let (l, s') = break (== ';') s
                   in  l : case s' of
                                []      -> []
                                (_:s'') -> parse s''
[14:07:05] <geniepro> ["123","456","asdf "," zxcv dsf 4 ","ads faf","23"]

[14:07:24] <valexey> у C99 и C89 ДОФИГА отличий
[14:07:29] <valexey> так что не надо тут :-)
[14:08:06] <valexey> geniepro: а теперь загони ка в хаскель входную строку на 512 миллионов символов. и попробуй распарсить.
[14:08:14] <geniepro> ну вот, это же не мешает на сях писать проги? вот и мелкие несколько отличий между хаскелем 98 и хаскелем10 не могут помешать ))
[14:08:37] <geniepro> такие строки не имеют права на существование ))
[14:08:47] <geniepro> да, так что там за сегфолты-то были?
[14:08:53] <valexey> угу. но может помешать то, что в реальности все на эти стандарты положили, и занимаются содомией с ghc-расширениями
[14:10:37] <valexey> geniepro: а я не помню. помню что проблема была с тем, что твоя мегафункция не говорит какой длины поле нашла. соответственно по результату нужно делать  strlen + если буфер был не достаточной длины, то strlen не скажет нам правду, соответственно у нас будет одно и то же поле дублироваться (просто разные его части будут попадать в буфер).
[14:10:44] <valexey> в общем, не удобно пользоваться.
[14:11:07] <geniepro> кстати, в этом хаскельном варианте рекурсия хвостовая, так что должно работать намана
[14:11:49] <valexey> угу, только 512 миллионов символов отожрут тут далеко не 512 мегабайт памяти.
[14:12:20] <valexey> алсо кешмисов будет больше.
[14:12:34] <geniepro> > помню что проблема была с тем, что твоя мегафункция не говорит какой длины поле нашла.
нипанятно. а зачем это знать? и де хранить эту информацию?
моя функция берёт строку, и массив подстрок, куда она пытается записать подстроки из этой строки. там не может быть сегфолтов
[14:12:53] <geniepro> ну надо битстринг юзать
[14:15:43] <geniepro> да и если эту мегастроку брать из файла, и результат тоже сразу сливать в файл -- то ленивость позволит остаться в пределах нескольких мегабайт озу независимо от размера этой мегастроки
[14:16:31] <geniepro> и вапще, чо там нащёт оберон-7? ))) де решение архитектурной задачи? )))
[14:23:10] <valexey> вот у меня есть дли-инная строка. в ней csv. буфер у меня ну, скажем 128 символов. как мне оттуда считать и скажем распечатать все поля с помощью твоей функции?
[14:32:22] <valexey> 9: [ 33 ] добавлена 2011-07-07 в 01:52
Был такой случай. В нашей парадке два лифта. Заходим с другом в лифт и только двери закрываются, с диким металлическим скрежетом нечто большое и тяжелое проносится мимо за стенкой и приземляется со страшным грохотом. Ну я то сообразил - что-то в мусоропровод выбросили, а друг - не понял и спросил "что это было?". На что ему со спокойным видом ответил, мол, наверное, опять трос у лифта оборвался... Такой паники я еще никогда не видел у людей))))

[14:38:05] <geniepro> какой такой буфер 128 символов???
[14:38:27] <valexey> в который я читаю поле
[14:38:42] <valexey> очередное
[14:39:34] <geniepro> строка должна быть уже прочитана. должно быть известно, сколько примерно там полей и какой они могут быть максималной длины -- соовтественно делаем массив x*y -- туда и парсим
[14:40:24] <valexey> строка уже прочитана. она размером в 512 мегабайт.
[14:40:35] <valexey> свободной памяти у нас скажем 10 Кб.
[14:40:38] <geniepro> кто сделал такую строку? растрелять!
[14:41:10] <valexey> с помощью fscanf'а я оттуда все прочитаю, а если не прочитаю, то узнаю об этом. с помощью твоей функции - нет.
[14:41:49] <geniepro> если стоит условие -- лениво считываем строку и по мере её появления помещаем её в некий буфер -- то можно просто цикл while (c != ";") -- и не морочить голову
[14:43:03] <geniepro> у меня более адекватные условия задачи -- входная строка несколько десятков (максимум сотен) символов, состоит из нескольких десятков подстрок, каждая длиной максимум несколько сотен символов -- какие проблемы?
[14:46:38] <valexey> слушай, у меня такая строка получилась поскольку я пытался измерить скорость работы алгоритмов так и сяк. я не хочу измерять производительность IO. Другого теста ты не предложил :-)
[14:49:05] <geniepro> ну, как вариант -- дизасемблировать и пощитать такты машкода )))
[14:51:37] <valexey> число тактов отличается от числа команд :-)
[14:51:48] <valexey> так что тут бесполезняк.
[15:02:09] <valexey> "Именно из-за такой убогости строгих языков их обычно (на самом деле всегда — if then else — это уже ленивое расширение) расширяют ленивостью."
[15:07:56] <valexey> "Например, C# и объектно-ориентированный и функциональный, но писать на нем красиво нельзя вообще ни в каком стиле."
[15:09:45] <geniepro> сишарп трудно назвать функциональным
[15:12:08] <valexey> его вообще трудно назвать каким-либо.
[15:12:21] <valexey> аццтой а не язык.  плюсы на порядок целостней.
[15:21:05] <valexey> "Кстати pure и immutable <http://www.digitalmars.com/d/2.0/const3.html> делают D формально "более функциональным" чем ML семейство"
[15:24:19] <valexey> вообще тред правильный и доставляет
[15:24:32] <valexey> я также не вижу смысла изучать ФП на окамле
[15:24:34] <valexey> ибо пробовал
[15:24:37] <valexey> не вштырило
[15:24:52] <valexey> лучше хаскеля тут наверно языка нет.
[15:25:03] <valexey> ну разве что схема какая-нибудь
[15:25:05] <valexey> да и то…
[15:31:50] <valexey> "GHC "из коробки" неюзабелен. Он не оптимизирует как надо и компилирует только бессмысленный и беспощадный игрушечный язык (в вашем случае — haskell 98), который вообще ни на что не годится."
[15:56:32] <geniepro> зачем писать "immutable x = 3 * 4;"
тогда уж "const x = 3 * 4;" -- и то слишком длинно
[16:00:54] <valexey> а зачем писать "mutable x = 3*4;" ? :-)
[16:10:14] <geniepro> короче, D должен умереть!
[16:18:39] <geniepro> http://habrahabr.ru/blogs/pay_system/122341/ какие интересности в виртуальном мире творятся ))
[16:26:53] <valexey> та ну их нафиг. z выбираю реальный мир! Си и оксиметрию!
[16:30:30] <geniepro> http://habrahabr.ru/blogs/java/122061/ как всё сложно в мире явы (( неужели нельзя просто взять -- и сгенерировать машинный код? нафига нужен этот ваш вумный джит?
[16:33:03] <valexey> jit вообще говоря, позволяет программе работать быстрее чем просто сгенерированый код.
[16:34:01] <geniepro> палюбому с этим джитом ява-программа работает не быстрее, чем сишная безджитовая
[16:34:20] <valexey> зависит от. у меня пару раз было что ява работала быстрее сишного варианта.
[16:34:33] <valexey> так что это совсем не палюбому.
[16:34:58] <valexey> в компайл-тайме у тебя меньше информации для оптимизаций нежели в рантайме. поэтому jit имеет смысл в ряде случаев.
[16:36:57] <geniepro> просто в тех случаях джит явы сгенерировал более эффективный код, чем сишный компилер. так бывает у всех трансляторов -- кто-то генерирует более эффективный код, кто-то менее

надо просто сгенерировать максимально эффективный код и всё!
[16:37:14] <geniepro> какая там инфа в рантайме дополнительная???
[16:37:23] <valexey> статистическая.
[16:37:43] <valexey> на лету jit инлайнит нативный код туда, где он чаще востребован
[16:37:48] <geniepro> ну так профайлер в руки и вперёд -- оптимизировать алгоритмы!
[16:38:19] <valexey> профайлер тебе даст данные только на тестовых выборках, и не затронет те случаи которые случились здесь и сейчас у клиента.
[16:39:33] <geniepro> > на лету jit инлайнит нативный код туда, где он чаще востребован
нипанятно! так всё равно часть кода будет интерпретироваться, так почему бы просто не сгенерировать весь машинный код? хуже-то точно не будет...
[16:45:12] <geniepro> "> А вы знали, что возможна АОТ-компиляция Java.

Я изучал этот вопрос. И ответа не нашел. В оригинальной JVM HotSpot этого к сожалению её нет. Есть несколько сторонних реализации АОТ-компилятора для Java. Но у всех есть недостатки. Бесплатный gnu/gcj — практичеки умер. Немецкий exe4j, только под виндовс и платный, а вот российский Excelsior JET может создавать код под Linux и Windows, но на столько же, на сколько он великолепен, на столько невероятно дорог. Его стоимость вызывает шок. Возможность АОТ компиляции есть в некоторых JVM от IBM, но они специализированны исключительно под сервера и продукты IBM. Так что с АОТ компиляторами в Java все довольно печально."
[17:24:28] <valexey> я говорил о инлайне функций, интерпретироваться ничего не будет :-)
[17:51:36] <valexey> один фиг ява в среднем шустрее хаскеля и тюнинговать быстродействие там очевидней.
[18:40:03] <genieprox> > один фиг ява в среднем шустрее хаскеля и тюнинговать быстродействие там очевидней.
ложь и провокация! клевета!!!
на реальных приложениях хаскелл рвёт яву как тряпку
[18:41:19] <shaggie> кто-нибудь видел реальное приложение на хаскеле?
[18:42:14] <genieprox> > я говорил о инлайне функций, интерпретироваться ничего не будет :-)
где чаще востребован! а значит -- в других местах код будет интерпретироваться и в среднем выполняться всё равно медленнее, чем если бы он нормально компилировался в машкод
[18:43:10] <genieprox> > кто-нибудь видел реальное приложение на хаскеле?
это дорогостоящий коммерческий софт. кто его будет разбрасывать направо и налево, тем более что он там заточен под конкретного заказчика...
[18:49:02] <valexey> genieprox: еще раз - он не будет где-либо интерпретироваться ВООБЩЕ
[18:49:14] <valexey> но там где код чаще используется, функции будут инлайниться прямо на лету
[18:49:44] <valexey> пойду домой :-)
[20:55:03] <genieprox> ping
[20:58:42] <Жаба> genieprox, Pong from you:  218.828854 s
[21:26:50] <subjrs> http://rutracker.org/forum/viewtopic.php?t=553542
вот еще советую фильмец если кто не смотрел
[21:32:41] <genieprox> да ну, мелодрама какая-то )))
[21:34:07] <subjrs> знаю
[21:34:14] <subjrs> но очень хорошая
[21:34:21] <subjrs> редкий фильм в общем
[21:34:32] <subjrs> для поднятия настроения самое оно )
[21:35:53] <genieprox> http://www.kinopoisk.ru/level/1/film/63920/
вот чо надо смотреть )
[21:38:34] <subjrs> genieprox: да, както натыкался, но не решился посмотреть. пожалуй качну, благодарствую ))
[21:39:05] <genieprox> комедия прикольная, но молодёжная...
[21:39:44] <subjrs> намана )
[21:40:28] <subjrs> genieprox: Больше чем любовь - уже нифига не молодежная (тоже комедия в общем то). просто красиво
[22:28:07] <valexey> Приматизм! http://www.dailymotion.com/video/xjrqzl_yyyyyyyyy-yyyyyyy-yyyyyyy-rise-of-the-planet-of-the-apes-yyyyyyyy-yyyyy_shortfilms
[22:31:26] <valexey> С форума по боевым искусствам
x: Мужики если честно кто-нить хоть раз дрался с Айкидистом? У меня спор на днях вышел в клубе с преподавателем айкидо он утверждал что я в него даже не попаду... Я надел перчатки а он домой ушел...

y: Это называется - победа без боя :)
[22:45:55] <valexey> http://fishki.net/comment.php?id=91495
[22:46:15] <valexey> самки фоткаются, самцы других автоматом гоняют
все как у людей
[23:00:08] <genieprox> "Заводной апельсин" Стенли Кубрика смарю -- вроде ничо так ))
[23:01:07] <valexey> кошмар какой. ты бы еще Pi посмотрел :-)
[23:02:41] <genieprox> что посмотрел? что за Pi?
[23:03:14] <valexey> фильма такая
[23:03:16] <valexey> тоже артхаус
[23:04:32] <valexey> http://ru.wikipedia.org/wiki/%D0%9F%D0%B8_(%D1%84%D0%B8%D0%BB%D1%8C%D0%BC)#.D0.A1.D1.8E.D0.B6.D0.B5.D1.82
[23:04:51] <genieprox> ароновски -- вроде известный режиссёр
[23:06:05] <valexey> артхаусом оно от этого быть не перестает.
[23:06:18] <valexey> Произошло это в 1942 году.

Фашистский рейд в составе линкора и трех эсминцев во время патрулирования пути лендлиза наткнулся на одинокий советский лесовоз "Ижора". Командир линкора презрительно заявил, что тратить целый залп своих орудий не намерен, поэтому поручил это дело своим сопровождающим, отметив, что "десяти снарядов этому корыту должно хватить."

Немцы произвели десять выстрелов. Двадцать. Тридцать. Затем еще и еще, но вдребезги разбитая "Ижора" решительно не хотела тонуть. В конце концов, разорились даже на две торпеды. Упрямое судно оставалось на плаву.

Затраченных снарядов уже хватило бы на пару-тройку залпов орудий линкора, когда командующий понял: бесподобная живучесть корабля вызвана наличием на ней нетонущего груза - лесовоз, все-таки. Оконфузились, ничего не скажешь.

Помните, люди, эту "Ижору"! В. Пикуль. "Реквием по каравану PQ-17".
[23:39:45] <genieprox> а, Аронофски -- "Реквием по мечте" же )))
[23:41:46] <valexey> угу. бессмысленно и беспощадно
[23:41:49] <valexey> артхаус :-)
[23:41:53] <genieprox> ещё и Чорный лебедь? о_О надо найти эту фильму всё-таки
[23:44:05] <valexey> genieprox: на самом деле, я рекомендую посмотреть Фонтан : http://ru.wikipedia.org/wiki/%D0%A4%D0%BE%D0%BD%D1%82%D0%B0%D0%BD_(%D1%84%D0%B8%D0%BB%D1%8C%D0%BC,_2006)
[23:44:14] <valexey> Режисер тот же.
[23:48:59] <genieprox> надо глянуть )