Home
Обсуждение программирования на любых платформах
codingteam@conference.jabber.ru
Воскресенье, 17 февраля 2019< ^ >
m4n71k0r установил(а) тему: C, C#, C++, Clojure, Cobol, Common Lisp, D, Erlang, F#, Go, Groovy, Haskell, Java, JavaScript, Kotlin, MATLAB, OCaml, PowerShell, Python, R, Racket, Refal, Ruby, Rust, Scala, Scheme, TypeScript
Telegram channel: https://t.me/codingteam
HQ, логи: https://codingteam.org.ru/
Код постить сюда: http://lpaste.net/
Юным погромцам сюда: http://e-maxx.ru/algo/ , а ещё читать Кнутца, Корменца, Седжвикца и др.
Let's Dev (когда Капитан на мостике): http://www.youtube.com/playlist?list=PLK6mcZkmN4QTusFvp_0GVtscQbCiIg81Y
Tsoding: https://tsoding.github.io/schedule.html
http://i.imgur.com/slnyI6a.jpg
Упоминания о Flash, PHP, Pascal/Delphi/Borland, Basic, 1С караются съедением поциента.
Конфигурация комнаты
Участники комнаты

GMT+3
[00:00:25] <tg> <@no111u3> >> <Minoru> @no111u3: мне было бы интересно услышать какие-то конкретные контр-аргументы к утверждению Портнова. Мне вот тоже кажется, что таких работ довольно мало
Мне очень лень кого-то убеждать. Если человек думает что вокруг все делают скучную работу, то пусть так думает дальще
[00:01:38] <Minoru> ну, про «скучную» ты выдумал, конечно; утверждение было только про алгоритмы. Собирать из кубиков приложения тоже по-своему интересно
[00:02:52] <tg> <@no111u3> >> <Minoru> ну, про «скучную» ты выдумал, конечно; утверждение было только про алгоритмы. Собирать из кубиков приложения тоже по-своему интересно
Рано или поздно надо менять кубики из которых собираешь
[00:04:20] <Minoru> я думаю, эта смена придёт к тебе в виде нового языка или хотя бы фреймворка, а не в виде необходимости написать новую стандартную библиотеку для твоего текущего языка
[00:05:30] <Minoru> то есть, например, решением для «Java тормозит» будет «переходим на плюсы», а не «мы напишем свою собственную JVM». В большинстве случаев так; а меньшинство Портнов покрыл в своём утверждении
[00:06:28] <tg> <@ttldtor> я тут обмолвился в соседнем чате, что смогу тайпклассы на шаблонах плюсовых реализовать. Я не понимаю, что значит "деградировать". Устал - смени работу, проект итд
[00:13:09] <tg> <@ttldtor> гм, точнее зависимые типы.
[00:21:09] uıʃɐɟ∀ вошёл(а) в комнату
[00:28:18] <tg> <@noktoborus> >> <Minoru> почему-то в мире материального производства никто особо за старое говно не цепляется, это только программисты таким страдают. Верят, что байтики не портятся (хотя сами же придумали термин «bit rot»)
ДА ЛААААДНО. До сих пор печами пользуются, технология производства которых устарела лет так на тысячу. Для изготовления хлеба.
[00:30:18] <Minoru> @noktoborus: технология производства современных печей устарела лет так на тысячу? Сомневаюсь
[00:30:39] <Minoru> заводы, которые вокруг этих печей строятся, тоже не тысячелетней давности выдумка
[00:32:20] <tg> <@noktoborus> >> <Minoru> @noktoborus: технология производства современных печей устарела лет так на тысячу? Сомневаюсь
каких современных?
[00:34:11] <tg> <@noktoborus> я про тандыры, например
[00:34:16] <tg> <@noktoborus> из конструкции изменилось ничего
[00:34:19] <tg> <@noktoborus> за кучу лет
[00:34:30] <tg> <@noktoborus> максимум, тебе туда современного кирпича зальют с цементом
[00:34:51] <tg> <@noktoborus> что изменится, если ты в своё древнее приложение зальёшь свежих байтиков?
[00:36:51] <tg> <@noktoborus> вообще, это просто охеренный способ доказать свою точку зрения, делая сравнение на несравниваемую тему, да ещё и утвердить удобный, для себя предмет
[00:44:12] <Minoru> конструкция это алгоритм, а не реализация. Каждый новый тандыр можно строить из более теплоёмкого/дешёвого/экологичного кирпича, что хорошо. Каждую новую реализацию можно писать на более типобезопасном/memory-safe языке, что тоже хорошо. Почему-то никто при постройке нового тадыра не волнуется о том, что кирпич в нём не такой, как в предыдущих ста. Зато если попытаться написать новую реализацию SSL, на тебя накинутся с доводами о том, что нужно «просто» майнтейнить уже существующую OpenSSL
[00:44:29] <Minoru> я не утверждаю, что это абсолютно аналогичные вещи, но с моей точки зрения, параллели здесь есть
[00:49:58] <Minoru> касательно тандыров (наконец почитал про них): ну, допустим, в домах они остались, а на производстве? На заводах их заменили на другие печи, с системами подачи всего на свете, автоматикой и прочим. И никто не парится о том, что рабочим придётся переучиваться и что новый конвейер нельзя приладить к старому кирпичному тандыру
[00:55:34] <tg> <@noktoborus> >> <Minoru> касательно тандыров (наконец почитал про них): ну, допустим, в домах они остались, а на производстве? На заводах их заменили на другие печи, с системами подачи всего на свете, автоматикой и прочим. И никто не парится о том, что рабочим придётся переучиваться и что новый конвейер нельзя приладить к старому кирпичному тандыру
Стоят в харчевнях они, походи по любому крупному городу
[00:56:20] <tg> <@noktoborus> >> <Minoru> касательно тандыров (наконец почитал про них): ну, допустим, в домах они остались, а на производстве? На заводах их заменили на другие печи, с системами подачи всего на свете, автоматикой и прочим. И никто не парится о том, что рабочим придётся переучиваться и что новый конвейер нельзя приладить к старому кирпичному тандыру
Да. И или такое обновление откладывают до последнего, если оно не принесёт молненосной прибыли
[00:57:54] <tg> <@noktoborus> Вместо бессмысленных рассуждений, лучше бы хорошо выполнял свою работу
[00:58:11] <tg> <@noktoborus> Замена конвеерной линии — не в тапки ссать
[00:59:06] <Minoru> будут новый завод строить — наверняка построят на новых технологиях, а не старых
[00:59:23] <Minoru> в отличие от программирования, где «у нас все проекты на плюсах, поэтому сайт тоже должен быть на плюсах»
[01:01:24] <tg> <@noktoborus> Што.
[01:02:10] <tg> <@noktoborus> Новые проекты начинают на каких угодно языках в зависимости от того, на сколько собравшиеся их хорошо знают и на сколько быстро нужно стартануть
[01:03:09] <tg> <@noktoborus> С твоей аналогией — это покупка или перенос устаревшего оборудования и изготовления на нём сотни копееченых товаров, где новотехнолгичность не нужна
[01:04:18] <Minoru> не знаю, у меня на всех работах были негласные правила, что новые проекты должны быть понятны всем и потому писаться на уже используемых языках. Что уменьшает риски, понятные менеджменту, и повышает риски, непонятные менеджменту
[01:05:20] <tg> <@noktoborus> Вариант "давайте начнём завтра продавать офигенную хрень, но начнём её писать вот на таком языке. И не важно, что на его полное изучение и эффективное применение уйдёт 20 лет", мне кажется, ведёт к тому, что с твоим бизнес-проектом тебя похоронят быстрее, чем успеет наступить вторая весна
[01:07:13] m4n71k0r вышел(а) из комнаты
[01:08:02] <Minoru> ты куда-то в другую тему уходишь. Разговор был про «старое говно», т.е. про уже существующие библиотеки и проекты, с которыми теперь (после создания нового языка) «нужно» поддерживать совместимость. Я оспариваю, что совместимость обязательно нужна, и в качестве контр-аргумента привожу материальное производство, где от устаревших вещей отказываются в силу вполне материальных причин (поддержка старого в рабочем состоянии требует расходов). В программировании поддержка не так очевидна, поэтому создаётся впечатление, что её нет; но на самом деле она есть,
и от старого нужно отказываться так же, как и от старого материального
[01:09:56] <tg> <@noktoborus> Ты возводишь в абсолют. Старое заменяется постепенно. Если что-то можно заменить сейчас и это действительно необходимо, то так и делается
[01:10:20] <tg> <@noktoborus> В какой угодно сфере
[01:10:49] <Minoru> ну так ведь ЯП — это лишь часть экосистемы. Я не предлагаю сразу переписать на нём всё, начиная с фирмвари и ОС и заканчивая браузерами и /bin/cat
[01:12:45] <tg> <@noktoborus> Ага, ты предлагаешь написать одну маленькую утилитку, разочароваться в языке/узнать что другие разочаровались и бросили его, и оставить утилитку на долгие годы крутиться и сохранять с ней совместимость
[01:14:03] <Minoru> ты думаешь, лучше не пробовать? Сначала на бумаге вывести идеальный ЯП, и уж потом начинать работу? И, начав, не оглядываться назад и не рефлексировать, насколько получившийся ЯП хорош?
[01:15:27] <tg> <@noktoborus> А потом мы радостно наблюдаем, как один сервис обслуживается пятью разными приложениями, написанными на десяти языках и надеемся, что хоть на одном из них отладка не будет выглядеть как вдумчиваемое всматривание в лог
[01:15:58] <tg> <@noktoborus> Потомучто ни один из блядских отладчиков не работает с таким зоопарком
[01:16:25] <tg> <@noktoborus> Я думаю, что писать дома на коленке можешь на чем угодно
[01:16:42] <Minoru> давай про недостатки распределённых систем в другой раз поговорим. Не нужно смешивать темы
[01:16:55] <tg> <@noktoborus> А в отлаженное производство с охуенными идеями лучше не лезть
[01:18:43] <tg> <@noktoborus> >> <Minoru> давай про недостатки распределённых систем в другой раз поговорим. Не нужно смешивать темы
Где тут распределённая система?  dmesg  | perl | psql стал распределённой системой?
[01:19:28] <tg> <@noktoborus> Ещё программирование под winphone вспомни
[01:19:58] <Minoru> «программная разработка» это не производство. И уж тем более не отлаженное
[01:20:45] <Minoru> dmesg | perl | psql вполне можно считать распределённой системой, потому что тут три независимых компонента, общающихся между собой посредством пайпов. Все компоненты могут быть написаны на разных языках
[01:21:09] <tg> <@noktoborus> Слоенка js - > c# - > c херзнаетчто -> c ещё нормальна, хотя бы потому, что на последних трёх уровнях есть нормальный дебагер
[01:21:21] <tg> <@noktoborus> И это всё в одном приложении
[01:22:49] <tg> <@noktoborus> >> <Minoru> dmesg | perl | psql вполне можно считать распределённой системой, потому что тут три независимых компонента, общающихся между собой посредством пайпов. Все компоненты могут быть написаны на разных языках
ты уже отходишь от темы и вдаёшься в технические особенности. Способ обмена информацией между отдельными обрабатывающими узлами не имеет значения
[01:22:56] <tg> <@noktoborus> в busybox, например, приложений нет
[01:23:09] <tg> <@noktoborus> есть функции, которые их представляют
[01:23:18] <Minoru> (вообще согласно Википедии распределённая система это когда отдельные компоненты находятся на разных компьютерах, связанных сетью)
[01:24:02] <Minoru> да, но каждое отдельное приложение в busybox будет выполняться в отдельном процессе, изолировано
[01:24:27] <Minoru> хотя ты прав, это действительно отход от темы и вдавание в технические подробности
[01:26:26] <Minoru> пойду спать
[01:26:27] Minoru вышел(а) из комнаты
[01:59:07] <tg> <@sarakerrigan> >> <noktoborus> в busybox, например, приложений нет
в busybox всё работает через argv[0] тупо по имени бинарника
[06:40:25] uggur вышел(а) из комнаты: Replaced by new connection
[06:40:26] uggur вошёл(а) в комнату
[08:41:44] portnov вошёл(а) в комнату
[08:42:13] <tg> <@fvnever> >> <no111u3> стронний проект это признак деградации
Выходит, я очень большой деградант 🤷‍♂️
[08:42:23] <tg> <@fvnever> Но прошу заметить, что на питоне я не пишу!
[08:44:27] <tg> <@fvnever> >> <Minoru> таких, чтобы твоей непосредственной задачей было придумывание алгоритмов — вообще единицы, наверное
Нет, это неправда. Таких работ очень много. Просто алгоритмы на «обычной» работе придумываются не для абстрактных вещей типа сортировок, а для каких-то обычных штук, типа каким алгоритмом обменять ресурсы между счетами в условиях наличия транзакций и блокировок. И это тоже интересно.
[08:45:02] <portnov> ну это кстате да
[08:45:20] <portnov> алгоритмы правда получаются мягко говоря гораздо более простые, чем квиксорт
[08:46:54] <tg> <@fvnever> >> <noktoborus> Слоенка js - > c# - > c херзнаетчто -> c ещё нормальна, хотя бы потому, что на последних трёх уровнях есть нормальный дебагер
Ээ, а на каком-то слое там нету нормального дебаггера?
[08:47:04] <tg> <@fvnever> >> <portnov> алгоритмы правда получаются мягко говоря гораздо более простые, чем квиксорт
Не не факт
[08:47:36] <tg> <@fvnever> У нас в банковской системе были весьма зубодробительные алгоритмы, чтобы какие-то там произведения гиперкубов считать
[08:48:34] <portnov> ну хз, мне с блокировками приходилось придумывать алгоритмы, их придумывать сложно, но сами алгоритмы получаются простые
[08:48:45] <portnov> а гиперкубы не на SQL разве делаются?
[08:48:57] <tg> <@fvnever> Ну и в решарпере вон у нас кучи алгоритмов
[08:49:01] <portnov> у нас в отчётах дофига всяких запросов на несколько экранов
[08:49:07] <tg> <@fvnever> Особенно жалуют всякую параллельную муть
[08:49:18] <tg> <@fvnever> Но и монадками балуются местами
[08:49:27] <portnov> ну про решарпер - это ближе к моему предположению про компиляторы
[08:49:31] <tg> <@fvnever> Есть какие-то жуткие места в коде, где какие-то вещи делаются через Y-комбинатор
[08:49:34] <portnov> преобразования графов, вот это всё
[08:50:05] <tg> <@fvnever> Я там вчера вечером побродил немного, и мне всю ночь снилась какая-то муть.
[08:51:20] <tg> <@fvnever> Будто бы меня отправили бороться с Медузой. Я прихожу к ней — а она собрана неправильно! Пришлось сначала правильно пересобрать Медузу, чтобы с ней бороться.
[08:51:35] unclechu вышел(а) из комнаты
[08:52:44] unclechu вошёл(а) в комнату
[09:02:49] <portnov> просто решарпер пишет форневер и ещё пять человек с ним в команде
[09:03:02] <portnov> а 100500 человек пишут преобразование рест-протокола в соап и обратно
[09:03:47] <tg> <@fvnever> Ну на самом деле почти на каждом обычном бизнес-проекте, где мне довелось участвовать, было что-нибудь интересненькое.
[09:04:44] <portnov> ну конечно зависит от определения "интересненького"
[09:05:57] <portnov> у меня чаще всего "интересненькое" - это порождённые кислотой требования клиента, и сиди придумывай как это сделать (что в каком продукте, что в какой подсистеме)
[09:06:22] <portnov> т.е. маппинг бизнес-требований на техническую реализацию
[09:07:13] <portnov> чсх, есть случаи, когда противоречие в требованиях становится понятно только после кодирования - когда тесты гонять начинаешь
[09:08:19] <tg> <@noktoborus> >> <fvnever> Ээ, а на каком-то слое там нету нормального дебаггера?
В js
[09:08:45] <tg> <@fvnever> >> <noktoborus> В js
Нет, там всё ок с отладкой.
[09:09:06] <tg> <@noktoborus> В половине случаев он не работает, а в другой ещё въехать нужно, что происходит
[09:09:08] <tg> <@fvnever> Хоть в ноде, хоть в браузерном жс.
[10:16:17] unclechu вышел(а) из комнаты
[10:20:15] unclechu вошёл(а) в комнату
[11:37:04] m4n71k0r вошёл(а) в комнату
[11:40:46] <tg> <@noktoborus> [Photo]
[11:40:55] <tg> <@noktoborus> Плохо видно, но там ветрчк
[11:41:12] <tg> <@noktoborus> Почти в центре Питера!
[11:43:02] <tg> <@ttldtor> по центру фото?
[11:43:46] <tg> <@ttldtor> о, центр Питера выглядит как центр любого города
[11:44:00] <tg> <@noktoborus> >> <ttldtor> по центру фото?
Да
[11:46:46] unclechu вышел(а) из комнаты
[11:52:07] unclechu вошёл(а) в комнату
[11:55:42] uggur вышел(а) из комнаты: Replaced by new connection
[11:55:43] uggur вошёл(а) в комнату
[11:58:16] <tg> <@ttldtor> что-то тут не так
Добрый день уважаемый Анатолий
Ищу кандидата на позицию GCC Compiler Engineer для разработки революционного процессора в американском проекте с переездом в Братиславу.
[12:13:01] uıʃɐɟ∀ вышел(а) из комнаты: Replaced by new connection
[12:13:05] uıʃɐɟ∀ вошёл(а) в комнату
[12:14:58] <tg> <@a1batross> Революционный процессор!
[12:25:06] <tg> <@noktoborus> Революция нашла тебя, мантикора
[12:42:22] <tg> <@ttldtor> >> <noktoborus> Революция нашла тебя, мантикора
давай проковыривать порты для дебага и дебажить недебажимое
[12:43:29] <tg> <@ttldtor> Свезло кому-то
Братисла́ва (словацк. Bratislava), до 1919 года — Прешпорок или Пре́шпорек (Prešporok, Prešporek), Пре́сбург (нем. Pressburg), По́жонь (венг. Pozsony), в средние века — Истрополис (лат. Posonium, лат. Istropolis) — город в Центральной Европе, столица Словакии.
[12:47:56] <tg> <@ttldtor> >> <noktoborus> Революция нашла тебя, мантикора
жаль, что  я не умею в компиляторы(
[12:48:05] <tg> <@ttldtor> я же деградировал
[13:13:38] <tg> <@noktoborus> Братислава это там, где на 3 доллара можно жить как цари
[13:14:30] unclechu вышел(а) из комнаты
[13:27:04] <tg> <@ttldtor> почеум мы все не там?
[13:27:56] Ender вышел(а) из комнаты: Replaced by new connection
[13:28:00] Ender вошёл(а) в комнату
[13:29:29] <tg> <@no111u3> Потому что приросшие к креслу сычи?
[13:35:46] HazardPointer вышел(а) из комнаты
[13:37:52] ma1uta вышел(а) из комнаты: Replaced by new connection
[13:37:55] ma1uta вошёл(а) в комнату
[13:41:35] <tg> <@ttldtor> бирюки
[13:42:12] <tg> <@ttldtor> https://ru.wikipedia.org/wiki/%D0%91%D0%B8%D1%80%D1%8E%D0%BA
[13:42:18] <tg> <@ttldtor> а то может кто не знал
[13:43:16] <tg> <@noktoborus> башкиры тоже мифические существа?
[13:43:39] <tg> <@ttldtor> как и башкирская нефть
[13:46:23] Ender вышел(а) из комнаты
[14:04:56] <tg> <@noktoborus> а башкирские пчолы настоящие?
[14:14:22] <tg> <@ttldtor> сделайте так, чтобы собиралось как JS. Вас не смущает результат?
((a)=>a+a) + 42
((a)=>a+a) + 42
\
[14:16:04] <tg> <@ttldtor> Вам не кажется, что результа этого как брейнфак-программы более осмысленный?
[14:20:20] unclechu вошёл(а) в комнату
[14:22:06] Minoru вошёл(а) в комнату
[14:46:19] HazardPointer вошёл(а) в комнату
[14:52:34] Ender вошёл(а) в комнату
[16:15:34] <tg> <@fvnever> >> <ttldtor> сделайте так, чтобы собиралось как JS. Вас не смущает результат?
>> ((a)=>a+a) + 42
>> ((a)=>a+a) + 42
Сделать что?
[16:23:04] <tg> <@ttldtor> лямбда не хочет складываться с числом, потому что строчки не разделяются точкой с запятой
[16:23:46] <tg> <@ttldtor> паноптикум
[16:24:17] <tg> <@ttldtor> потом лямбда (или что это) преобразуется прекрасно в строку и соединяется с 42
[16:27:00] <tg> <@fvnever> А, тебе не нравится автоматический расставлятор точек с запятой?
[16:27:08] <tg> <@fvnever> Потому что он тут их не хочет ставить, да?
[16:27:21] <tg> <@ttldtor> не, мне не нравится JS =)
[16:28:16] <tg> <@fvnever> На самом деле это известная проблема расставлятора. Если строка начинается с ( или [, он не будет перед ней ставить точку с запятой, и ты можешь соснуть.
[16:28:35] <tg> <@fvnever> Поэтому наркомансы иногда пишут так:
((a)=>a+a) + 42
;((a)=>a+a) + 42
[16:28:37] <tg> <@ttldtor> просто нарвался на стате1ку, там говорилось, как классно редьюсить с помощью жс
[16:28:45] <tg> <@fvnever> Я думаю, и тебе так же нужно, если ты наркоманс
[16:29:13] <tg> <@ttldtor> я поредьюсил и увидел, что редьюсилка ломается от первого элемента (потому что тупо написана)
[16:29:35] <tg> <@fvnever> Сорян, я не понял, что ты редюсишь с помощью жс
[16:29:43] <tg> <@fvnever> Пока кажется, что мой интеллект :C
[16:30:47] <tg> <@ttldtor> function sum(number_array){
  return number_array.reduce((running_total, next_item) => running_total + next_item);
}
var data = [1,2,3,5,8];
sum(data);
вот такой был пример
[16:31:10] <tg> <@ttldtor> я начал вставлять штуки всякие, строки, null, undefined
[16:31:18] <tg> <@ttldtor> с лямбдами весело получилось
[16:31:51] <tg> <@ttldtor> оно кастует лямбду в строку и конкатенирует с чиселками, которые преобразовало в строки
[16:32:06] <tg> <@ttldtor> я взял просто сумму лямбды и чиселки
[16:32:15] <tg> <@ttldtor> ок, продублировал строку - не ок
[16:32:34] <tg> <@ttldtor> оказалось, что это _известное_ поведение
[16:32:40] <tg> <@ttldtor> спасибо
[16:33:21] <tg> <@ttldtor> у лиспа всё - список, а в жс всё - строка
[16:33:38] <tg> <@ttldtor> хотя про это мне даже эмунер говорил
[16:34:26] <tg> <@fvnever> Не всё строка, есть ещё обжект
[16:34:34] <tg> <@fvnever> Более того, строку можно забоксить!
[16:34:55] <tg> <@fvnever> Попробуй так:
const fook = 'fook';
fook.a = 2;
console.log(fook.a) // ?
[16:39:21] <tg> <@ttldtor> SyntaxError: redeclaration of const fook
[16:40:41] <tg> <@ttldtor> Это в мозилле
или undefined на Node.js
[16:41:39] <tg> <@fvnever> >> <ttldtor> SyntaxError: redeclaration of const fook
Это просто значит, что у тебя уже был fook выше
[16:42:02] <tg> <@ttldtor> первый раз вставил)
[16:42:18] <tg> <@ttldtor> видимо в страничке был
[16:42:19] <tg> <@fvnever> Ну пусть будет let fook
[16:42:21] <tg> <@fvnever> Или var
[16:42:53] <tg> <@fvnever> Кароч, да, суть в том, что строка — не объект
[16:43:03] <tg> <@fvnever> Поэтому у тебя очень херово всё
[16:43:12] <tg> <@fvnever> Ну не вообще, а в частности
[16:43:32] <tg> <@ttldtor> кхм
[16:43:43] <tg> <@ttldtor> может и вообще
[16:43:46] <tg> <@fvnever> fook.a = 2 боксит её в объект и ему выставляет свойство. Но в переменной всё ещё лежит анбоксед, и поэтому ничо не работает
[16:44:11] <tg> <@fvnever> Можно сделать строку объектом, но от этого она перестаёт быть строкой.
[16:45:16] <tg> <@ttldtor> интересно, почему на тривиальных операциях надо кастовать в строку вещи
[16:45:28] <tg> <@ttldtor> почему авторы так решили
[16:46:00] <tg> <@ttldtor> это не вопрос даже.
[16:46:19] <tg> <@fvnever> Посмеяться хотели, имхо.
[16:46:24] <tg> <@ttldtor> В некоторых языках для конкатенации заводят отдельные операторы
[16:46:47] <tg> <@fvnever> В пыхапэ!
[16:46:51] <tg> <@ttldtor> и для объединения списков
[16:47:16] <tg> <@ttldtor> да, в ди тоже
[16:48:26] <tg> <@fvnever> >> <ttldtor> и для объединения списков
Я видал наркоматы, в которых строка — это и есть список символов, представляешь? :)
[16:49:26] <tg> <@noktoborus> 👍
[16:53:36] <tg> <@ttldtor> >> <fvnever> Я видал наркоматы, в которых строка — это и есть список символов, представляешь? :)
иммутабельный хоть?
[16:53:54] <tg> <@fvnever> >> <ttldtor> иммутабельный хоть?
Всяко бывает.
[17:01:51] <tg> <@ttldtor> блин, какой лабудой приходится заниматься в плюсах: делать из мапы вектор из пар key -> value, отсортированных ... а стоп, мне нужен максимальный элемент
[17:19:32] Akon32 вошёл(а) в комнату
[17:25:58] <Akon32> >в которых строка — это и есть список символов
а в эрланге строки - это списки integer, которые (integer) произвольной длины.
[17:26:38] <tg> <@fvnever> Ну это вот и есть содомирование
[17:28:08] HazardPointer вошёл(а) в комнату
[17:30:15] <tg> <@ttldtor> эрланг ёр интежер
[17:34:54] HazardPointer вышел(а) из комнаты
[17:36:57] <tg> <@a1batross> Akon340282366920938463463374607431768211456
[18:08:14] unclechu вышел(а) из комнаты
[18:27:04] unclechu вошёл(а) в комнату
[18:34:54] <portnov> https://golosptic.livejournal.com/1591189.html
[18:35:47] unclechu вышел(а) из комнаты
[18:36:15] unclechu вошёл(а) в комнату
[18:55:36] unclechu вышел(а) из комнаты
[18:56:56] unclechu вошёл(а) в комнату
[19:16:16] uıʃɐɟ∀ вышел(а) из комнаты
[19:16:21] uıʃɐɟ∀ вошёл(а) в комнату
[21:27:35] <Minoru> посоны-плюсоны, у меня любопытная проблема: есть std::linear_congruential_engine со вполне определёнными параметрами, но он генерирует разные результаты на разных платформах/компиляторах. Как так-то. а?
Код: https://github.com/newsboat/newsboat/commit/4f4bdb9b3e339e9b27ff82d7a8e82da4eba254c2#diff-56ad232e81240c2676c31cc92d5cabb9R500
Travis: https://travis-ci.org/newsboat/newsboat/builds/494329143?utm_source=github_status&utm_medium=notification Во всех красных билдах генератор вернул одно и то же число X, в зелёных — одно и то же число Y. Такое впечатление, что есть две реализации алгоритма, но, вроде, такого быть не может
[21:32:40] <tg> <@a1batross> новостная лодка?
[21:53:10] unclechu вошёл(а) в комнату
[22:03:18] <Minoru> @a1batross: ага! Это игра слов над названием предшественника, Newsbeuter (читается «ньюсбота»)
[22:03:47] <Minoru> отличие в том, что «newsboat» может прочесть кто угодно, а «newsbeuter» не осиливает никто :D
[22:04:11] <tg> <@a1batross> хехе
[22:04:43] ma1uta вошёл(а) в комнату
[22:07:18] <tg> <@sarakerrigan> ньюсбойтер
[22:08:52] <Minoru> расскажите лучше, что с кодом делать
[22:08:59] <tg> <@a1batross> Ну хоть не newsbait
[22:09:17] <Minoru> у меня пока что единственная идея — это попробовать другие генераторы в надежде, что хотя бы один из них работает одинаково на всех платформах
[22:10:01] <tg> <@a1batross> О. У тебя тожы catch.
[22:10:22] <tg> <@a1batross> Понятия не имею. Не игрался с std рандомом.
[22:10:29] <m4n71k0r> Minoru: жесть какая. Сложно разобраться в изменения, но например такие штуки попадаются https://github.com/gcc-mirror/gcc/commit/9f5f984d69072babd8d66302e6595d8c081587b0 это не выглядит как typo, а баг в seed, хотя я точно не знаю, что такое __m
[22:10:58] <m4n71k0r> странно, что шланг выдаёт значение
[22:11:31] <m4n71k0r> я не могу понять, в гцц 7 испортили?
[22:12:15] <m4n71k0r> нужен минимальный пример
[22:16:59] <Minoru> m4n71k0r: чтоб тебе мозг совсем вынести: Clang7 локально работает так же, как GCC 8. А на Трависе эти два компилятора выдают разные результаты
[22:17:13] <Minoru> т.е. локально я этот баг вообще воспроизвести не могу
[22:19:06] <m4n71k0r> стандартные либки отличаются
[22:20:41] portnov вышел(а) из комнаты
[22:24:12] <Minoru> поклацал на wandbox-е все мажорные версии GCC и Clang — результат генератора всегда один и тот же
[22:24:26] <Minoru> про либку меня посещала мысль, только я не понимаю, как это проверить
[22:27:10] <Minoru> вроде как все GCC-билды апдейтят libstdc++-6 и ставят libstdc++-V-dev, где V — мажорная версия GCC
[22:29:15] <Minoru> причём похоже, что libstdc++-6 всегда апгрейдится до версии 8.1
[22:29:31] <Minoru> в отличие от dev-пакета, который ставится под указанную версию компилятора
[22:29:43] <m4n71k0r> эххх
[22:31:40] <Minoru> блин, надо было таки перевести всю эту машинерию на Docker. Сейчас можно было бы просто взять тот образ, что используется на Трависе, и локально погонять-потыкать
[22:33:20] <m4n71k0r> в принципеееееееееее энтот юниттест и не очень-то нууууууууужен)
[22:33:41] <m4n71k0r> но результаты прикольные
[22:34:30] <Minoru> ну, он даёт хоть какую-то уверенность в том, что эта сортировка таки на что-то влияет, а не тупо игнорируется, например
[22:34:35] <Minoru> а что бы ты написал вместо этого теста?
[22:38:34] <tg> <@noktoborus> Я бы поссал
[22:38:40] <tg> <@noktoborus> Полезно для потенции
[22:43:19] <m4n71k0r> Minoru: проверил бы, что нарушился как-то порядок
[22:44:34] <m4n71k0r> я бы даже, наверное контракт заюзал вместо теста для этого
[22:46:10] <Minoru> шаффл мог не поменять порядок. Там пять элементов в массиве, вероятность 1/5! = 1/120
[22:46:18] <Minoru> а что за контракт в данном контексте?
[22:51:40] <m4n71k0r> смысл же в том чтобы поменять, не?
[22:53:35] Akon32 вышел(а) из комнаты
[22:53:53] <Minoru> ну, ок, мы можем подобрать сид, который меняет. Но тогда мы заранее знаем результат и можем написать тест. Если тестить «боевую» версию, в которой std::random_device, то с вероятностью 1/120 порядок не меняется и тест провалится
[22:54:31] <Minoru> а, или ты о том, что смысл боевой функции должен быть в том, чтобы *всегда* менять? Т.е. если не поменялось — то это баг? С такой стороны я вообще не думал ._.
[22:54:48] <m4n71k0r> да, я и говорю, что у тебя баг
[22:55:00] <m4n71k0r> судя по тесту)
[22:55:09] <m4n71k0r> точнее, по тому, как ты его проводишь)
[23:02:58] ma1uta вышел(а) из комнаты
[23:35:36] <Minoru> завтра над этим ещё подумаю, спасибо!
[23:35:37] Minoru вышел(а) из комнаты
[23:52:12] <tg> <@ttldtor> @noktoborus
21:33 Крыковник просто умолял вместо него станцевать мамбу в серпентарии. Эх, что не сделаешь ради друга!
Powered by ejabberd - robust, scalable and extensible XMPP server Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!