[00:01:24] <alexey.veselovsky> “Я тоже подосрал Западу. Переключил раскладку с английского на русский по умолчанию.”
[01:49:50] <vlad2> Гребанный сильвердайт.
[01:50:05] <vlad2> Опять крэшится.
[01:50:18] <alexey.veselovsky> хы
[01:50:26] <alexey.veselovsky> вы не закопали его еще?
[01:51:24] <vlad2> ЗАкапываем. Но юзера не хотят сполдзать с него.
[01:52:01] <alexey.veselovsky> что это они?
[02:40:29] <alexey.veselovsky> rikki_t_tavi:
Знаете, почему севернокорейские чиновники не пишут в твиттер с айфона призывы игнорировать американские товары?
Потому что они их честно бойкотируют - и ни твиттера, ни айфона у них нет.
[03:15:52] <vlad2> /me победил сильверлайт
[03:17:28] <vlad2> С помощью опции линкера. Гы. А вы говорите циклы...
[13:12:58] <geniepro> http://haritonov.kulichki.net/stories/llife.htm
[15:26:01] <geniepro> alexey.veselovsky, а alexey.veselovsky, ты как там делал имитацию Maybe на плюсах?
через классы? через юнионы? как-то ещё?
[15:26:34] <alexey.veselovsky> а я не помню уже :-)
[15:27:43] <geniepro> эх ты! значит плохой Maybe у тебя вышел ))
[15:33:24] <alexey.veselovsky> да на плюсах-плюсах я довольно давно уже писал. давно и мало
[15:38:04] <geniepro> а на чём пишешь? на яваскрипте? или неужели на обероне? ))
[16:06:04] <alexey.veselovsky> objc, c99, matlab в основном иногда js
[16:11:54] <alexey.veselovsky> да, Go еще
[16:19:38] <geniepro> эх, имитация АлгТД на с++ так убого выглядит (( и никакого контроля, никакой безопасности ((
[16:20:52] <alexey.veselovsky> да ладно, все там делается при желании
[16:20:59] <alexey.veselovsky> через лямбды и такую-то матерь :-)
[16:21:18] <alexey.veselovsky> получается что-то похожее на Дишную библиотечную реализацию
[16:22:13] <geniepro> через какие такие лямбдбы-шмамбды? )) у меня с++билдер 6 )))
[16:22:25] <alexey.veselovsky> а, ну тогда у тебя нет ничего похожего на С++
[16:22:37] <geniepro> ну называется-то с++ ))
[16:22:49] <geniepro> классы есть? есть )))
[16:22:50] <alexey.veselovsky> неа, не называется. называется он с++ билдер 6
[16:23:05] <alexey.veselovsky> классы они и в джаве есть :-)
[16:23:26] <geniepro> ну возьми gcc 3.15 -- скажешь тоже не с++? ))
[16:23:37] <alexey.veselovsky> да, что-то убогое
[16:24:00] <geniepro> скажи это страуструпу )))
[16:24:08] <alexey.veselovsky> а он согласен
[16:32:02] <geniepro> в сишарпе лямбды хоть более-менее человеский синтаксис имеют, не то что в с++12
[16:32:12] <alexey.veselovsky> 11
[16:32:21] <alexey.veselovsky> в шарпе они семантически более бедны
[16:32:29] <geniepro> 11-м разве кто-то пользуется? о_О
[16:32:29] <alexey.veselovsky> поэтому идут лесом
[16:32:41] <alexey.veselovsky> с++11 бывает, с++12 - не бывает
[16:32:58] <geniepro> нормальные лямбды в шарпе, мне хватают
[16:33:18] <alexey.veselovsky> тебе да, а для задач которые решаются на плюсах, такие лямбды не прокатят
[16:34:11] <geniepro> для задач, которые решаются на плюсах, сишарп не прокатит
[16:34:43] <alexey.veselovsky> и шарп не прокатит, и лямбды с “более человеческим синтаксисом” сделать не удастся.
[16:35:21] <geniepro> для плюсовых задач сами лямбды зачем нужны-то? там же по-любому низкий уровень
[16:35:37] <alexey.veselovsky> а лямбды это высокий уровень? :-)
[16:35:42] <geniepro> ну да ))
[16:35:46] <alexey.veselovsky> в каком месте?
[16:35:57] <alexey.veselovsky> вообще что ты под высоким-низким уровнем подразумеваешь?
[16:36:08] <geniepro> в том месте что лямбды экономят усилия программиста, что для плюсов неактуальн
[16:36:27] <geniepro> уровни разные бывают ))
[16:37:15] <alexey.veselovsky> плюсы как раз затем и есть, чтобы экономисть усилия программистов :-)
[16:39:29] <geniepro> что бы на плюсах начать экономить усилия, надо сначала мегафреймворк состряпать )
[16:39:47] <geniepro> сделать половину хаскелля, которая будет тормозить и глючить ))
[16:39:49] <alexey.veselovsky> неа, не надо.
[16:40:13] <alexey.veselovsky> надо просто уметь плюсы :-)
[16:40:26] <geniepro> да никто в мире не умеет все плюсы )))
[16:40:42] <alexey.veselovsky> на достаточном уровне - довольно много спецов
[16:41:15] <alexey.veselovsky> но если задача конечно маленькая, то проще выбрать язык исходы из наличия готового решения в виде либ
[16:41:27] <alexey.veselovsky> поэтому у нас и не плюсы :-)
[16:41:45] <alexey.veselovsky> (ибо по возможности задачу не раздуваем, и решения остаются мелкими)
[16:43:30] <geniepro> какой-то немейнстримный у вас подход )
[16:43:45] <alexey.veselovsky> на мейнстримовый у нас ресурсов нет :-)
[16:44:17] <alexey.veselovsky> ибо стартапъ
[16:46:39] <alexey.veselovsky> в плюсах меня в основном бесит одна штука (ну кроме отсутствие нормальной модульности аля Модула или Ада) - разномастность стилей кодирования. Что ни либа, что ни исходник, то свой извращенный стиль кодирования. Часто со своими велосипедами аля string
[16:46:48] <alexey.veselovsky> Сие оскорбляет мое чувство прекрасного
[16:47:35] <geniepro> так есть же тулзы типа С++Export
[16:47:44] <alexey.veselovsky> и что они делают?
[16:47:57] <alexey.veselovsky> (если что - я не про отступы и куда ставить фигурную скобку)
[16:47:58] <geniepro> переформатируют исходники )
[16:48:04] <alexey.veselovsky> форматирование не важно
[16:48:05] <geniepro> а про что? о_О
[16:48:08] <alexey.veselovsky> стиль - важен
[16:48:18] <geniepro> форматирование -- часть стиля же )
[16:48:25] <alexey.veselovsky> малая часть
[16:49:07] <alexey.veselovsky> стиль именования идентификаторов - более важная часть. равно как и стиль использования исключений, работы с памятью и использования стандартной либы
[16:49:56] <alexey.veselovsky> про нашу космическую электронику: http://habrahabr.ru/post/217427/
[16:55:17] <alexey.veselovsky> https://dripstat.com/game/
[17:45:57] <kpmy> о, хабр ожил
[18:02:32] <_valexey_> Хабр еще вчера ожил
[18:03:01] <_valexey_> А посты появлялись и когда были проблемы с днс у некоторых провайдеров
[18:04:57] <vlad2> geniepro: я пишу на С++11. С лямбдами. Аналог Maybe на плюсах это boost::optional.
[18:09:01] <kpmy> а не было поста про причины пропажи хабра?
[18:09:25] <_valexey_> vlad2: optional это все же не монада, а просто алгебраический тип
[18:09:43] <_valexey_> kpmy:не видел
[18:09:58] <_valexey_> То есть у большинства он и не пропадал
[18:11:16] <_valexey_> Кстати, сегодня при попытке зайти на корпоративное гмыло напоролся на заглушку от провайдера про блокировку и реестр
[18:11:35] <_valexey_> При этом в реестре ни по URL ни по ip оно не значится
[18:11:58] <_valexey_> В результате зашел туда через другой URL
[18:12:11] <_valexey_> Какая-то фигня творится.
[18:18:52] <_valexey_> Интересно, без перегрузки операторов мне что, матрицы перемножать в поефиксной форме что-ли? Mul(a,b) В виде сложного выражения ведь жесть получится. Точнее - лисп.
[18:20:01] <vlad2> Про drшp memory - не понял.
[18:20:45] <vlad2> _valexey_: учись у оберонщиков - закатал рукава и херачь код!
[18:21:21] <vlad2> В oberonjs такой же ужос творился со строками, пока STRING не сделал.
[18:21:27] <_valexey_> vlad2: ужас же будет! Не читабельно!
[18:22:15] <_valexey_> Да фиг с ними, со строками, они штука простая. Уравнения сложнее и ошибка в них грозит многими радостями
[18:23:14] <_valexey_> То есть ничего падать не будет, просто на выходе будет странная лажа.
[18:23:37] <_valexey_> Не понятно из за чего
[18:23:57] <_valexey_> Отладчик тут не особо поможет.
[18:24:26] <_valexey_> /me думает делать математику на go или же таки на плюсах
[18:47:04] <vlad2> Ты драматизируешь :) Пишешь на бумажке с операторами, потом кодишь со скобками :)
[19:14:12] <alexey.veselovsky> vlad2: тогда уж сразу на асме писать
[19:14:15] <alexey.veselovsky> то на то и выйдет
[19:18:41] <vlad2> Клквета! ;)
[19:19:33] <alexey.veselovsky> если тебе начинает для выражений требоваться бумажка, а в коде выражения в хрен знает какой форме получаются, значит у тебя нифига не ЯВУ, а какая-то хрень аля асм
[19:24:21] <alexey.veselovsky> поэтому, кстати, ява идет в лес следом за Go
[19:36:58] <vlad2> Я еще помню код, где перегрузка опнераторов была направи и налево. Еще тот кошмар.
[19:38:12] <alexey.veselovsky> а не надо направо и налево, надо там где это уместно
[20:19:40] <geniepro> vlad2> geniepro: я пишу на С++11. С лямбдами. Аналог Maybe на плюсах это boost::optional
меня интересовал не конкретно сам Maybe, а как вообще АлгТД на плюсах старых имитировать (по работе понадобилось)
[20:20:42] <vlad2> С 6-м билдером-то? Сложно. Посмотри поддерживается ли он бустом. Если поддерживается - можно дальше говорить :)
[20:21:11] <vlad2> В частности можно глянуть на boost::variant
[20:25:54] <geniepro> boost::variant бесполезен, так как мало чем отличается от просто union'а -- проверок при компиляции нету
[20:26:20] <kpmy> неказистые будни плюсофилов
[20:26:44] <geniepro> на обероне эта задача точно так же нерешаема
[20:27:02] <kpmy> если она вообще нужна :)
[20:28:13] <geniepro> я когда программу пишу, обычно сначала на питоноподобном псевдокоде пишу, с алгтд и тд и тп, потом на нужный язык переношу
на хаскелле или другом современном языке без проблем псевдокод переносится в текст программы, а вот с сишными языками беда -- куча говнокода плодится
[20:28:29] <vlad2> В смысле? Там есть все проверки. На этапе компиляции. Единственное чего там нет - это проверки на то, что ты оттуда пытаешься вытащить тип, который туда не может быть положен в принципе (можно придумать случаи, когда тебе нужен именно такй дизайн). Поэтому у нас есть небольшая обертка, которая и это проверяет на этапе компиляции.
[20:28:56] <ЛукоморецЁтун> хехе.
[20:29:02] <ЛукоморецЁтун> =)
[20:29:14] <vlad2> От юниона он отличается принципиально - ты туда можешь класть любые типы.
[20:29:36] <vlad2> (а нетолько POD)
[20:29:56] <geniepro> POD -- это что?
[20:30:18] <vlad2> Plain Old Data - сишные структуры, без конструкторов и прочих радостей плюсов.
[20:30:43] <vlad2> Короче - посмотри нормально на boost::variant.
[20:30:52] <geniepro> ясно, у меня сёдня билдер поругался, когда я в юнион пытался класс засунуть, пришлось выкинуть юнион ))
[20:31:23] <vlad2> Ага. Это оно. А вот boost::variant будет работать.
[20:31:40] <geniepro> http://www.boost.org/doc/libs/1_53_0/doc/html/variant.html
[20:33:23] <vlad2> Посмотри Basic Usage - врооде все понятно.
[20:37:22] <geniepro> всё таки это не совсем то, это просто продвинутый юнион
[20:38:58] <geniepro> boost::variant< int, std::string > v;
v = "hello";
std::string& str = boost::get<std::string>(v);
ок, а как тут будет:
boost::variant< int, std::string > v;
v = 42;
std::string& str = boost::get<std::string>(v);
[20:39:59] <vlad2> исключение будет, как я понимаю.
[20:40:16] <geniepro> ну вот только этим от юниона отличается, по сути
[20:40:45] <geniepro> это не алготд из хацкеля )
[20:41:56] <vlad2> Никто не обещал :) Смю пример - там есть извращенный аналого паттерн матчинга через visitor. Или ты может просто проверить лежит ли там то, что ты думаешь.
[20:42:28] <vlad2> void times_two( boost::variant< int, std::string > & operand )
{
if ( int* pi = boost::get<int>( &operand ) )
*pi *= 2;
else if ( std::string* pstr = boost::get<std::string>( &operand ) )
*pstr += *pstr;
}
[20:44:38] <vlad2> В юнионе ты не можешь проверить тип. Для этого тебе придется завести отдельное поле. Короче, boost::variant это плюсовый юнион, если использовать что-то, то только его. Все остальное будет более громоздким и менеее безопасным.
[20:45:56] <vlad2> Кстати. Там еще есть boost::any - туда можно вообще все класть, а не только предопределенные типы. Может тебе оно надо?
[20:46:41] <geniepro> if ( int* pi = boost::get<int>( &operand ) )
*pi *= 2;
else if ( std::string* pstr = boost::get<std::string>( &operand ) )
*pstr += *pstr;
ну вот так ещё да, можно, почти как в хацкеле )
[20:47:44] <vlad2> Дык, я говорю - почитай basic usage, там все есть и это по всем параметроам лучше union.
[20:50:05] <geniepro> если я правильно представляю, то для имитации алгтд нужно каждый конструктор алгтд оформить как структуру, а потом их в один вариант объединить...
[20:53:01] <geniepro> http://itar-tass.com/nauka/1080665
походу америкосы снова запретят работать фирме Т-Платформы...
[20:56:20] <vlad2> Угу. Так а тебе стэйт нужен у этой структуры или только тип? А то можно еще больше упростить.
[21:01:42] <geniepro> в некоторых вариантах есть состояние, в некоторых нет
если бы нигде не было, то перечисление сгодилось бы
[21:07:19] <ЛукоморецЁтун> получил по почте из испании "MegaFlashROM SCC+ SD 2 slots + 512K RAM" отсюда http://msxcartridgeshop.com/ для моего компа MSX2 КУВТ2 =)
[21:08:13] <ЛукоморецЁтун> жрёт время этот MSX2 немерянно =) похоже настрою для трёх игр и успокоюсь на этом =)
[21:09:24] <ЛукоморецЁтун> а этот девайс испанский сложнющщая штука - огромную массу мануалов читать
[22:31:05] <vlad2> geniepro: ну тогда да, boost::variant. Компилит его у тебя билдер?
[23:18:12] <geniepro> не пробовал, не знаю есть ли там вообще этот буст в стандартной поставке...
[23:18:25] <geniepro> надо попробовать сам буст скачать
[23:18:32] <geniepro> скомпилить
[23:56:07] <vlad2> Я подозреваю, что никакого буста там нет.
[23:56:46] <vlad2> Но я точно знаю, что в какой-то момент бустовские тесты гоняли на билдере. Так что как минимум какой-нибудь древний буст должен заработать на билдере.