[00:06:56] <yeo> о, вроде получается
[03:46:54] <OCTAGRAM> I_vlxy_I: ну конкретно этот PEP — про то, как обратимо конвертировать побайтовые строки в UTF-16 или UTF-32
[03:47:21] <OCTAGRAM> без обратимости не получится нормально перейти
[11:55:38] <ada_ru> (nitrocerber) Печаль. Пошёл проходить могучий опрос от stackowerflow, длиннющий список язуков, которыми пользуешься или собираешься пользоваться, начинается с Си. И он алфавитный, да.
[11:55:59] <ada_ru> (nitrocerber) котлин у них блин есть, а ады нет))
[11:56:03] <ada_ru> (I_vlxy_I) Там же можно вписать
[11:56:04] <ada_ru> (nitrocerber) капец
[11:56:05] <ada_ru> (I_vlxy_I) своё
[11:56:15] <ada_ru> (I_vlxy_I) дык котлин в инетах более популярен
[11:56:16] <ada_ru> (nitrocerber) ну я и вписал, не стесняясь в выражениях
[11:56:28] <ada_ru> (nitrocerber) ява с сахаром - это не язык >_<
[11:56:37] <ada_ru> (I_vlxy_I) да, блин, даже у D (который нинужин) в конфе телеграммовской 80 юзеров сидит
[11:57:03] <ada_ru> (I_vlxy_I) Эта ява с сахаром собирается/компилится в: jvm, js, android, native
[11:57:17] <ada_ru> (I_vlxy_I) то есть в нативные бинари тоже. без привязки в jvm какой-либо
[11:57:25] <ada_ru> (nitrocerber) да и госопдь с ней, это ж не язык, а тулчейн тогда
[11:58:08] <ada_ru> (I_vlxy_I) ну и вообще, язык безопасный ;-)
[11:58:10] <ada_ru> (nitrocerber) хотя сейчас, наверно, это уже неотделимые понятия(
[11:58:46] <ada_ru> (I_vlxy_I) а где заканчивается "блаблабла с сахаром" и начинается самостоятельный язык?
[11:59:00] <ada_ru> (I_vlxy_I) вот Ада - это питон с сахаром? А С++ это Си с сахаром?
[11:59:28] <ada_ru> (nitrocerber) Ну где автор языка не начинает презентацию со слов "ну, тащемта, мы взяли яву и чуток её докрутили")
[11:59:55] <ada_ru> (vesalena) Про С++ когда-то давно так и говорили :)
[11:59:58] <ada_ru> (I_vlxy_I) это называется - позицонирование перед потенциальными юзерами
[12:00:18] <ada_ru> (nitrocerber) ада 2012 - это ада с сахором)) а с питоном у них общего тока цвет, оба белых, но один герыч ,а другой соль)
[12:00:27] <ada_ru> (I_vlxy_I) ибо если сказать - это ваще новый язык, ява говно, вы все говно, ваши знания не нужны. пишите на котлине!
[12:00:40] <ada_ru> (I_vlxy_I) то, кажется, автора могут послать далеко и на долго
[12:02:14] <ada_ru> (vesalena) Ну, он огребет скепсиса. Но если язык правда сильно лучше, то никуда не денутся — втянутся и полюбят ))
[12:02:50] <ada_ru> (vesalena) Так что правда не обязательно заигрывать с аудиторией этими вот "вам будет так легко" и "почти ничего не надо учить, это почти как было, только лучше"
[12:04:23] <ada_ru> (I_vlxy_I) к сожалению, чтобы перейти на сильно новый язык, он должен иметь какую-то реальную киллер-фичу.
[12:05:13] <ada_ru> (vesalena) дада. В наш век постмодерна нового уже не придумать...)
[12:05:31] <ada_ru> (I_vlxy_I) например должен довать прирост производительности проги раз в 10-100 (там где производительность важна)
[12:05:32] <ada_ru> (I_vlxy_I) или должен давать ускорение разработки в те же 10-100 раз.
[12:06:01] <ada_ru> (I_vlxy_I) если же он, например просто правит некоторые недостатки существующего языка и дает, например выигрышь в 10-20%, то он должен быть очень похож на старый язык. настолько, что переобучение не требовалось и возможна была бы плавная миграниция кусков проекта на новый язык.
[12:06:11] <ada_ru> (nitrocerber) мы подходим к опасной области, которая называется "ттян не нужны"
[12:06:17] <ada_ru> (nitrocerber) в смсыле новые ЯПы не нужны
[12:06:48] <ada_ru> (vesalena) Не, ну давай так. Старые тоже не все нужны :)
[12:07:03] <ada_ru> (nitrocerber) факт
[12:07:08] <ada_ru> (vesalena) нужность — не единственный критерий, по всей видимости.
[12:07:14] <ada_ru> (I_vlxy_I) нужны - вон их сколько :-) но они не абсолютно новые, и они не просто так, они нацелены на конкретную аудиторию и они решают конкретные проблемы оной аудитории. и позволяют переписывать проект по кускам
[12:07:29] <ada_ru> (I_vlxy_I) например: java-scala, java-kotlin, objc-swift
[12:07:46] <ada_ru> (I_vlxy_I) c++98-c++17 :-)
[12:07:58] <ada_ru> (vesalena) Недавно наш эппл-страдатель ругал swift, кстати.
[12:08:06] <ada_ru> (I_vlxy_I) а чойто он?
[12:08:09] <ada_ru> (vesalena) Что-то там в компиляторе не работает с дженериками что ли.
[12:08:38] <ada_ru> (vesalena) Он засунул шаблон в шаблон с одинаковыми аргументами что ли, и у него не заработало. Если я верно поняла его претензию.
[12:09:03] <ada_ru> (I_vlxy_I) /me как раз собирался прогу написать на свифте
[12:09:04] <ada_ru> (I_vlxy_I) а, ну пофиг на дженерики.
[12:09:47] <ada_ru> (I_vlxy_I) а, да. продолжу: C-Go - эта пара отлично существует и позволяет реально переписывать кусками. сишные либы отлично теребонькаются из Go -- ведь Го понимает сишные хедеры как родные.
[12:09:51] <ada_ru> (vesalena) Вообще, это плохой знак. Недавно человек работает у нас. А до этого было 2 айось разработчика — и оба молча уволились. Даже висящий в офисе портрет Джобса их не остановил! Нынешний разработчик тоже, похоже, долго не выдержит :)
[12:10:07] <ada_ru> (vesalena) Я что-то вижу пару js-go чаще :(
[12:11:32] <ada_ru> (I_vlxy_I) js с go не взаимодействуют же
[12:11:33] <ada_ru> (I_vlxy_I) на уровне языков. единое приложение не пишется
[12:12:07] <ada_ru> (I_vlxy_I) вот что там у раста с интеграцией во все вокруг - я хз.
[12:12:44] <ada_ru> (I_vlxy_I) кстати, С++ взлетел именно потому, что можно было переписывать по кускам существующие сишные проекты. и переходить и учиться постепенно.
[12:12:59] <ada_ru> (I_vlxy_I) то есть это не новая тема с языками. это еще в 80-х было.
[12:14:42] <ada_ru> (nitrocerber) а раст ещё не расширили до RUSTA ? можно вместо эксепшнов (если они там есть) ввести термин "косяк"... ладно, петросян моде офф
[12:15:04] <ada_ru> (I_vlxy_I) нету там иключений
[12:15:15] <ada_ru> (I_vlxy_I) термин "исключение" теперь не модный
[12:15:21] <ada_ru> (I_vlxy_I) теперь модно говорить "паника"
[12:15:32] <ada_ru> (nitrocerber) wut
[12:15:51] <ada_ru> (I_vlxy_I) ни одного свежего языка с исключениями не существует
[12:16:11] <ada_ru> (I_vlxy_I) rust, go, swift - вот эти все guys не имеют их
[12:17:10] <ada_ru> (I_vlxy_I) но на самом деле, технически в rust & go по крайней мере panic это по сути своей исключение - с раскруткой стека, с вызовом деструкторов (в расте) и defer (в go), панику можно перехватить и обработать.
[12:17:48] <ada_ru> (nitrocerber) тот же фаберже, вид с боку. но новый пАААнтовый термин придумали)
[12:17:50] <ada_ru> (I_vlxy_I) но есть важный нюанс в плане дизайна языка: теперь в языке, в стандартной либе и в бестпрактис есть явное разграничение классов ошибок
[12:18:39] <ada_ru> (nitrocerber) ы?
[12:19:05] <ada_ru> (I_vlxy_I) есть штатные, ожидаемые ошибки программы (например сокет не смогли открыть, или там что-то еще) - это не возбуждает панику. это возвращает код "ошибки", вероятно завернутый в какой-нибудь maybe или еще в какую удобняшку (в зависимости от языка)
[12:19:27] <ada_ru> (I_vlxy_I) и есть ошибки когда совсем конец обеда. то есть такие что ваще ух, ваще швах! вон это уже - паника.
[12:19:48] <ada_ru> (nitrocerber) эм ну те же исключения обрабатываются в телах и возвращают коды ошибки... не революция, кароч
[12:20:16] <ada_ru> (I_vlxy_I) революция в удобствах ведь. ну и в производительности
[12:20:30] <ada_ru> (I_vlxy_I) ну и в порождении четкого барьера в сознании программиста
[12:21:20] <ada_ru> (I_vlxy_I) ошибки как ожидаемый и нормальный исход вызова функции - это одно. ошибка когда произошло что-то УЖАСКОШМАРКАКСЭТИМДАЛЬШЕЖИТЬ?! это другое.
[12:21:58] <ada_ru> (I_vlxy_I) если ты пытаешься открыть файл, а его нету - это ошидаемое развитие событий. а если ты например выходишь за границу массива - это уже не очень ожидаемое :-)
[12:22:19] <ada_ru> (I_vlxy_I) хотя это плохой пример. это уже может быть не паника, а abort.
[12:22:33] <ada_ru> (I_vlxy_I) ща получше найду
[12:29:51] <ada_ru> (I_vlxy_I) а, ну например когда ты реализуешь какой-нибудь протокол (допустим, не знаю, какой-нибудь grpc) и к тебе прилетели покаррапченные данные. что с ними делать - ты не знаешь
[12:30:07] <ada_ru> (I_vlxy_I) клиент от тебя ожидает сообщения, точнее ты его за каллбеки дергаешь
[12:30:32] <ada_ru> (I_vlxy_I) вот в таком случае запаниковать не грех
[12:31:04] <ada_ru> (I_vlxy_I) в общем, грубо говоря, паники раскидываются там, где ты бы поставил assert например
[12:42:48] <ada_ru> (anisimkov) Большинство новых языков делают что бы бабла срубить. Как песни пишут в шоу бизнесе.
[12:43:09] <ada_ru> (I_vlxy_I) хм. много на D бабла срубили? а на расте?
[12:43:24] <ada_ru> (I_vlxy_I) то есть где там деньги то?
[12:43:36] <ada_ru> (anisimkov) А энергичные пограммисты бросаются изкчать.
[12:43:37] <ada_ru> (I_vlxy_I) все средства разработки давно бесплатны
[12:43:57] <ada_ru> (anisimkov) Про д и раст ниче не знаю.
[12:44:22] <ada_ru> (I_vlxy_I) ну это ж большинство новых языков как раз :-)
[12:44:42] <ada_ru> (anisimkov) Деньги не от продаж а от проектов
[12:44:47] <ada_ru> (I_vlxy_I) еще есть swift - тоже бесплатно все. хоть под линух хоть под что
[12:45:29] <ada_ru> (I_vlxy_I) а, ну если так то да. какой смысл делать язык который бесполезен? который даже для совоих проектов не пригоден?
[12:45:45] <ada_ru> (I_vlxy_I) что старые языки так делались что новые. это правильно
[12:47:01] <ada_ru> (I_vlxy_I) некоторые вот языки разрабатывались, чтобы деньги попилить :-) когда государство платит, особенно военщина, то всегда распилом пахнет. а платят за это налогоплатильщики.
[12:47:22] <ada_ru> (anisimkov) Я может отстал. Я про джаву и си шарп помню еще
[12:48:24] <ada_ru> (anisimkov) На совсем новые энергии не хратает даже на посмотреть. Илиинтереса
[12:48:57] <ada_ru> (I_vlxy_I) жаба и шарп это старые языки. ну и да, средства разработки тогда были платными. особенно у MS.
а вот жабка она пошла по пути доступности, бесплатности и вообще в инфраструктуру бизнеса хреново ложилась. вот санки и загнулись.
[12:49:19] <ada_ru> (I_vlxy_I) хорошие дела это хорошо, но кушать тоже надо
[12:50:05] <ada_ru> (anisimkov) Ну может не ради денег а ради понтов
[12:52:02] <ada_ru> (anisimkov) Хотя новый язык. Можно бабла срубить на переделку симтемы на новую ох@$тельную технологию
[12:53:15] <ada_ru> (nitrocerber) В необходимости переделки надо ещё убедить башляющего
[12:53:22] <ada_ru> (nitrocerber) Так что тока госсектор
[12:54:20] <ada_ru> (I_vlxy_I) да, с госсектором если удастся убедить, что все нужно переписать на новом едином ЯП, то это считай джекпот!
[13:03:45] <ada_ru> (I_vlxy_I) но вообще, меня мало волнует на какие деньги и как появился тот или иной язык, мне интересно что он из себя представляет и может ли быть полезен мне и моим проектам
[13:03:46] <ada_ru> (I_vlxy_I) язык + доступный мне инструментарий
[14:08:24] <ada_ru> (I_vlxy_I) Я только что понял, что сейчас еду на Стриже и пишу на Swift'e.
[15:19:58] <ada_ru> (nitrocerber) Стрижа надо пить, а не ездить на нём)
[15:20:14] <ada_ru> (nitrocerber) Но или не надо, дело личное
[15:21:17] <ada_ru> (I_vlxy_I) Выпить стриж в стриже и писать на стриже.
[15:21:32] <ada_ru> (nitrocerber) К-к-к-комбо
[15:22:34] <ada_ru> (I_vlxy_I) Блин, но objc легаси в API конечно бесит. Точнее даже С-обертки для objc
[15:23:04] <ada_ru> (I_vlxy_I) С ручной динамической типизацией.
[15:23:48] <ada_ru> (Максим) это в каком API?
[15:23:59] <ada_ru> (I_vlxy_I) macOS
[15:24:12] <ada_ru> (I_vlxy_I) CoreGraphics и все такое
[15:26:59] <ada_ru> (Максим) Ура! Я собрал ASIS в RPM под федорой! 👻
[15:49:07] <OCTAGRAM> А меня там бесит, что не пошли по пути MS COM
[15:49:15] <OCTAGRAM> или GLib
[15:49:54] <OCTAGRAM> не стали делать полноценную инфраструктуру вроде IDL, type libraries, interface repository
[15:50:59] <OCTAGRAM> у них был BridgeSupport, но при детальном изучении файлов выясняется, что там только коррекции, а для всего остального надо либо динамически узнавать метаданные, либо держать полновесный парсер заголовков Objective-C
[15:51:09] <OCTAGRAM> либо не полновесный, но тогда хитрить
[15:51:38] <OCTAGRAM> вот я из-под винды так просто взял и распарсил заголовки для macOS, ага
[15:56:32] <ada_ru> (I_vlxy_I) Ну, у меня задачи не вселенского масштаба, мне бы банально из свифта API макосьное юзать. А оно такоэ...
[15:56:51] <ada_ru> (I_vlxy_I) Оно даже для objc такоэ в этом месте
[15:57:13] <ada_ru> (I_vlxy_I) То нсть использование objc тут ситуацию особо не улучшит :-/
[15:57:33] <OCTAGRAM> почему?
[15:57:36] <ada_ru> (I_vlxy_I) Все эти cfarray и компания.
[15:57:40] <OCTAGRAM> CoreGraphics?
[15:57:57] <OCTAGRAM> а CFArray где нужен?
[15:58:18] <OCTAGRAM> не в AppKit же
[15:58:21] <ada_ru> (I_vlxy_I) Вот в coregraphics нужен
[15:58:25] <ada_ru> (I_vlxy_I) Точнее там функция его выдает.
[15:58:39] <OCTAGRAM> то есть, на самом деле это NSArray
[15:58:40] <ada_ru> (I_vlxy_I) Например попробуй список окон на экране получить
[15:58:46] <ada_ru> (I_vlxy_I) И их свойства
[15:58:51] <OCTAGRAM> но привязки почему-то выдают другое
[15:58:55] <OCTAGRAM> так?
[15:59:20] <ada_ru> (I_vlxy_I) Вроде да. Туда-сюда как-то конвертить можно
[15:59:32] <OCTAGRAM> это тупо одно и тоже
[15:59:39] <OCTAGRAM> начиная с Tiger, кажется
[15:59:45] <OCTAGRAM> или раньше
[15:59:47] <ada_ru> (I_vlxy_I) А внутри cfarray не известно что лежит
[15:59:59] <ada_ru> (I_vlxy_I) Точнее скорее всего это dictionary
[16:00:08] <ada_ru> (I_vlxy_I) Мрак у ужас
[16:00:29] <ada_ru> (I_vlxy_I) Ну почему для свифта норм обертку было не сделать для системного api?
[16:00:50] <OCTAGRAM> то есть, какая-то функция должна была быть объявлена как возвращающая NSArray, а вместо этого она возвращает CFArray
[16:01:08] <OCTAGRAM> и Swift типа не в курсе, что это одно и то же
[16:01:11] <ada_ru> (I_vlxy_I) На кой ляд мне эта динамическая типизация через c opaque pointers?
[16:01:46] <OCTAGRAM> а мне нравится, что такой Fallback есть
[16:02:17] <ada_ru> (I_vlxy_I) А мне не нравится, что вместо решения задачи я страдаю подобной фигней.
[16:02:37] <OCTAGRAM> и сериализовать, и прочитать, и разницу вычислить без знания типов можно
[16:02:59] <ada_ru> (I_vlxy_I) Вкрутили бы отдельно
[16:03:16] <ada_ru> (I_vlxy_I) А мне в проге со статическими структурами удобней.
[16:03:37] <OCTAGRAM> ну это дополнительно
[16:04:09] <OCTAGRAM> вот читает кто-то plist, откуда он знает, какие там статические структуры будут?
[16:04:20] <ada_ru> (I_vlxy_I) У меня прикладная задача. Могли бы сделать, чтобы пользовать апи можно было без доп присяданий.
[16:04:32] <ada_ru> (I_vlxy_I) Да какой плист?
[16:04:37] <ada_ru> (I_vlxy_I) Список окон же
[16:04:45] <ada_ru> (I_vlxy_I) С их свойствами
[16:04:55] <ada_ru> (I_vlxy_I) Они статические и у всех одинаковые
[16:05:56] <ada_ru> (I_vlxy_I) Ну прицепили бы поле с доп свойствами в виде словаря к основной структуре, если хочется расширяемости
[16:06:13] <ada_ru> (I_vlxy_I) Или ооп обмазались бы
[16:23:53] <ada_ru> (nitrocerber) Обмазаться несвежим ооп и диспетчеризировать
[17:41:45] <ada_ru> (I_vlxy_I) Ну или даже на уровне наследования структур бы..
[19:49:00] <yeo> @vgodunko Я построил AdaGL на travis! https://travis-ci.org/reznikmm/adagl