Denis
false
Alexander
Пятница начинается не с кофе. Она начинается с языкосрача!
Denis
вот здесь проверял: https://js.do/
Denis
да это же не срач, это просто шок какой-то
Denis
😊
Aleksei (astynax)
Да, язык надо знать, внезапно
Denis
Ilya
Aleksei
Ну если знаешь как сравнивать, то норм) Главное помнить что NaN не равен сам себе)))
Aleksei (astynax)
Aleksei (astynax)
Развели тут вкусовщину!
Aleksei (astynax)
(как обычно, лол)
Denis
Ilya
Aleksei (astynax)
Мы про питон все ещё?
Ilya
я да
Alexander
На уровне Hello World только...
Есть один чудесный, прекрасный, удивительный косяк дизайна языка, который противоречит самой его философии.
https://stackoverflow.com/questions/1132941/least-astonishment-and-the-mutable-default-argument
Aragaer
Alexander
Ну и прочих приколов в нем хватает
Aleksei (astynax)
Писал на питоне пррфессионально шесть лет. Брат жив.
Aleksei (astynax)
Язык неидеален, но всяко сильно лучше, чем JS
Alexander
Aleksei (astynax)
Писать на нем я больше не хочу, но прозвучавшие нападки - странные. Питон есть за что ругать, но не за вышеперечисленное
Aragaer
у меня пока самая болезненная травма - от с#
Aragaer
уж сколько лет прошло, но до сих пор не могу себя заставить на него смотреть
Alexander
Denis
Denis
И да, я плевался.
Alexander
У меня где-то есть документик, где я рефлексировал про недостатки Питона.
Aragaer
я не про дизайн. Конкретно у меня была задача принять из сокета пачку байт и распарсить в структурку. На теплом ламповом си это делается одним кастом. На шарпе я бился лбом об стол и не понимал, чего он от меня хочет.
Aragaer
что-нибудь
Alexander
Aragaer
какая разница, что - все равно так делать не надо
Aleksei (astynax)
12345 - большая чиселка. Не кеширует питон такие
Ilya
Ilya
правильный "зависит от реализации"
Ilya
на python3 False, на pypy True , например
Aleksei (astynax)
cpython конечно
Aleksei (astynax)
на ваши тупые нападки заканчиваю реагировать
Aragaer
char buf[1024];
recv(sock, buf, sizeof(buf), 0);
my_struct *s = (my_struct *) buf;
Aragaer
типа такого
Alexander
Но как же... Лайоут полей?
RattenKong 🦧🐀🦍️
Alexander
Компилятор же может их перетусовывать по усмотрению
Aragaer
ну там с проверками, что пришло сколько надо
Ilya
Aragaer
мм. нет, не может
Aragaer
выравнивание может быть, но тут все было ок предусмотрено
Alexander
Это точно? Насколько я помню, порядок тоже может внезапно измениться. Чтобы выравнивание получилось
Aragaer
а шарп мне заявил "иди читай про маршаллинг многостраниц, раз ваще ничего не умеешь"
Alexander
Ну а как бокснутые структуры кастом создать?
Aragaer
нет, в си порядок будет ровно какой надо, но может быть выравнивание добавлено между полями
Aragaer
что значит бокснутые?
Aragaer
в жаве может быть изменен порядок полей в классе, чтобы сгруппировать сначала все то, что выравнивается по 8 байт, а потом что по 4 байта, а потом остальное
Alexander
Да, тут надо терминологию выровнять. Ты пытался в struct это запихать? Это как-то не очень даже звучит. Но он хотя бы value type
Aragaer
нет, я просто пытался указатель на последовательность байт привести к типу "указатель на структуру". С поправками на выравнивание.
Aragaer
в обычном си это совершенно нормальная практика
Alexander
Указатель на struct? А где он должен лежать, сам struct?
Aragaer
там, где лежат байты
Aragaer
обращение по этому указателю будет попадать на те же байты, с корректными смещениями и приведениями типов
Alexander
Но где лежат байты? Неясно. Вычитал, положил в байт массив, сделал указатель на это? Я бы даже пытаться не стал, на C# так не пишут, как на Си. Ну или тебе прямая дорога в managed c++
Alexander
Вообще, эти пограничные вопросы требуют более глубокого погружения в то, как в языке обрабатываются данные.
Aragaer
ну я про то и говорю, что в си это совершенно идиоматичный код. Создал на стеке массив, вчитал в него байты, затем наложил на эти байты структуру (я это обычно в таких терминах описываю) и получил нужные мне данные.
Alexander
Но в чем здесь недостаток C#?
Aragaer
я не говорю, что недостаток. Я говорю, что я это не осилил сделать на шарпе. Он меня послал читать про маршаллинг и анмаршаллинг, я силился это понять, не смог, сделал все как-то совсем на коленке (эндианнесс известен, порядок полей тоже, вручную все со сдвигами слепил, завелось) и больше к шарпу с тех пор не прикасался
Alexander
Ну вот есть MarshalPtrToStructure:
https://msdn.microsoft.com/ru-ru/library/4ca6d5z7(v=vs.110).aspx
И это не так уж страшно
Aragaer
и вот только в этом году впервые снова столкнулся с анмаршаллингом (в го парсил жаваскрипт в структуру) и что-то сложилось
Alexander
Aragaer
ну да. Тогда я видимо это не нашел. Или не осилил, как массив превратить в "неуправляемый блок памяти". Или что-то еще. Молодой был, глупый. Сейчас не сильно умнее, но все-таки много времени прошло
Aragaer
Универсальная платформа Windows
Доступно с 8
Aragaer
хм. Но там говорится, что в .net 1.1 оно уже было. Тут я уже плохо помню. Семерка тогда еще не вышла. А я это делал как плагин для аутлука 2003
Alexander
Вообще, у моих коллег был опыт общения managed C# кода и unmanaged C++ кода. Делали это через managed C++. Местами было очень больно, особенно со строками. Мне, к счастью (или к сожалению?), не пришлось слой интеропа писать, я только результатом со стороны C# пользовался
Denis
Если Хаскель самый хорошо сделанный (спроектированный) язык, значит на нем нужно (можно) писать все, от ОС до веба?