@@joech1065 Затем, что C - самая зрелая технология. Отлито в бронзе.
@joech10653 жыл бұрын
@@NickMukhin Лично мое мнение что только системы типов дают какие-то гарантии. C язык зрелый в плане того что за десятиления уже хорошо известны его риски и что любой сложный софт, который пишется на нем несколькими людьми, будет иметь существенные риски как безопасности и корректности, так и продуктивности и поддержания и легкости обновления. Тут много деталей, но чтобы разобрать только один пункт - безопасность - то 70% всех багов безопасности это баги памяти (на софте который в основном написан на c или c++), которых просто банально бы не было бы в языке где система типов просто не дает совершить эти баги. И это не от неопытности, а от невозможности человеческому уму вообще думать на таком уровне, где можно понять что точно в софте, который пишут несколько людей, нет таких багов. Это уже выучено от openssh до linux, где включены одни из наиболее опытных программистов, и где код на который смотрит весь мир, и все равно постоянно там находятся катастрофические баги такого типа, которые абсолютно предотвратимы. Более того мы даже не знаем всех этих багов, так как как мы убедились по Pegasus, когда хакерам платят миллионы чтобы их находить, то они находят их везде при желании и об этом не говорят, в том числе в софте который специально сделан для безопасности: браузерах и операционных системах. Им не составило особого труда делать коммерческий продукт который позволяет взламывать кого угодно, работает на разных операционных системах и проникает через разные браузеры/приложения, и получает полный root контроль устройства, так как они не только находить как минимум один такой баг в приложении через которое они проникают, но и в коде операционной системы, которая пытается сдерживать это приложение. Единственные гарантии которые могут быть в софте это формальные гарантии, которые либо есть (есть математическое их доказательство), либо их нет. Если эти гарантии есть, то любой код, по определению, написаный в системе которая дает эти гарантии будет иметь эти гарантии и для этого не нужно 30 лет использования, чтобы сказать что какой-то код “стабилен”. Этот код будет по определению стабилен в плане предоставления каких-то гарантий. И наоборот, 50 лет использования какой-то технологии не придадут этой технологии никаких гарантий, которых в ней никогда не было. После Pegasus нужно было всем программистам просто собратся и признать что без какой-то системы типа которая автоматически им не позволяет писать код где это возможно или каких-то формальных гарантий, никакие люди в мире, никакой проэкт не способен не допускать эти баги в коде над которым работают несколько людей. И то что на данный момент, в 2021, NGO Group все еще продает Pegasus, находя все новые баги в самом безопасном коде на который смотрят больше всего людей, и они все также успешно полностью взламывают разные операционные системы от Android до iOS, это последний гвоздь в гроб идеи стабильности без системы типов, которая дает какие-то конкретные гарантии какой-то конкретной стабильности (например, от багов памяти или гонок данных).
@ihateregistrating3494 Жыл бұрын
Отличный доклад, очень харизматичный человек
@Bisirsky3 жыл бұрын
Почти как стендап :)
@ivanaaa60493 жыл бұрын
PyPy требует "рассовой чистоты", т.е. если хоть один импортируемый модуль написан на С (например, NumPy, Pandas), то он вываливается с ошибкой на строчке импорта. А с Cython нужно долго разбираться, чтобы хоть что- то написать.
@BloodJazMan5 жыл бұрын
Спасибо докладчику за мнение про nim ;) очень схоже с моими мыслями
@denissavran73225 жыл бұрын
Хардкорный рефакторинг без каких-либо библиотек: RESPONDENT_KEY = "@respondent@" def send_notification(respondents: list, message: dict) -> None: to_send = copy(message) to_send.setdefault("from", None) no_subject = "subject" not in to_send respondent_key_count = to_send["body"].count(RESPONDENT_KEY) respondent_crc = crc_code(RESPONDENT_KEY) * respondent_key_count body_crc = crc_code(to_send["body"]) body_crc_without_respondent_crc = body_crc - respondent_crc for resp in respondents: if no_subject: to_send["subject"] = "Hello, " + str(resp) to_send["body"] = message["body"].replace(RESPONDENT_KEY, resp) resp_crc = crc_code(resp) * respondent_key_count to_send["crc"] = body_crc_without_respondent_crc + resp_crc Для 10 000 получателей с длиной email-а от 20 до 29 символов и письма с телом из 5024 символов получил следующие результаты: 2.63 s ± 9.99 ms per loop (mean ± std. dev. of 10 runs, 1 loop each) - старая 29.5 ms ± 310 µs per loop (mean ± std. dev. of 10 runs, 1 loop each) - новая gist.github.com/blaxpy/3d774566bf67563ee3238fb5fd720a75
@RusShbreak1 Жыл бұрын
Т.е. в 80 раз?
@ion11625 жыл бұрын
Все бы хорошо, только в crc_code берется ord от unicode символа, а в crc_code2 ord от бинарного представления, что даст разные результаты.
@phyllobolus4 жыл бұрын
Кстати, докладчик не попробовал суммировать utf-8 в pypy. Чтобы в байтовую строку перевести, cython не нужен.
@АлександрИванов-ъ7р6ч2 жыл бұрын
Интересный доклад. Спасибо
@anatolyalekseev1012 жыл бұрын
Суммаризируем: не было проведено начальное профилирование - время программиста тратилось на оптимизацию неоптимально; не были созданы тесты (на представительной выборке), обеспечивающие проверку равенства выходов процедуры до и после оптимизации, из-за чего в продакшене, видимо, все клиенты кроме первого получили сообщение с чужим именем; не было замечено, что использованная реализация crc аддитивна по отношению к имени клиента (при одном и том же основном сообщении), следовательно может быть существенно ускорена кэшированием crc базового сообщения, а в цикле можно было вычислять лишь crc имени клиента (и то закэшировать) и плюсовать с crc основного; не была применена многопроцессорность.
@mishuha Жыл бұрын
Я такой же программист, пишу код 3 часа в год. Но когда услышал что есть времязависимые модули, у меня пригорело. Семафоры, флаги и пайпы для кого?
@python_interview3 жыл бұрын
Отличный доклад, узнал много нового, спасибо!
@maelstrom2543 жыл бұрын
Чего только не придумают что бы не писать на C++
@joech10653 жыл бұрын
Ну как бы могли и на Rust написать. Там и абстракции есть и скорость, и не нужно переживать за память и баги как в c++. Я думаю следующее поколение языков за borrow checker'ом в одной форме или в другой, так как это как раз таки позволяет писать быстрые программы на высоком уровне абстракции. Многие боятся c++ и borrow checker как раз таки им позволяет писать такие (быстрые) программы без страха или опыта работы с памятью, так как их ошибки поймает система типов.
@ЗеновичНикита3 жыл бұрын
@@joech1065 а зачем в с++ переживать за память в данных примерах?
@vdarasun2 жыл бұрын
@@ЗеновичНикита , сразу вспомнил пример докладчика про 14 строк кода на С в ядре Linux. :)
@knowledgedose19562 жыл бұрын
что бы такое написать чтобы показаться умным, да автор?
@НикН-о7о5 ай бұрын
Использовать go!
@maratimus4 жыл бұрын
Спасибо, бро.
@mexey3 жыл бұрын
Жаль нет бенчмарка с использованием чистого С кода скомпилированного в библиотеку, я думаю тоже получилось бы неплохо и не пришлось бы менять интерпретатор # c code unsigned int checksum(char* buf) { unsigned long idx; unsigned int out; unsigned long bufLen = strlen(buf); for(idx = 0L, out = 0; idx < bufLen; out += (unsigned int)buf[idx++]); return out; } # python code import ctypes clib = ctypes.CDLL('clib.so') checksum = clib.checksum(input_string)
@gvozdyara9563 Жыл бұрын
Просадка по скорости при переводе типов python => C и обратно
@stanislavsheev77483 жыл бұрын
Пишу свои модули на С. А если еще помнить, что есть HyperTreding, можно в рамках одного процесса получить ускорение.
@Drak0sha133 жыл бұрын
Где-то я слышал про грааль, что его надо было откапывать.
@qunki95333 жыл бұрын
Надо написать тоже самое на С XD
@ehlopenkoАй бұрын
посмотрел на х2
@oriontvv3 жыл бұрын
профайлинг, C ABI + Rust для узких мест (PyO3)
@alexandermaretskiy39843 жыл бұрын
вынос copy(message) за пределы цикла даст модификацию message при первом проходе в цикле и тогда последующие проходы уже заменять @respondent@ не будут, то есть все получатели получат сообщение адресованное одному из них
@anatolyalekseev1012 жыл бұрын
А ведь это полный провал, Карл...
@СергейПресняков-о4р5 жыл бұрын
Программировать 3 часа в день Говорить, что есть не очень много времени на программирование ????? А сколько тогда надо? Чтобы даже во сне кодить?
@yaruzki70223 жыл бұрын
10
@Woodreack2 жыл бұрын
@@yaruzki7022 аватарка подходящая
@nakidai2 жыл бұрын
Ты спишь 21 час в сутки?
@ГеннадийАлейников-с4н2 жыл бұрын
Чзх?! Славой Жижек выучил Python?
@fun_dev3 жыл бұрын
почему бы не посчитать отдельну "crc" для сообщения без респондента, а потом приплюсовывать к ней в цикле "crc" ТОЛЬКО респондента? будет то же самое, только считать меньше.
@theALFEST3 жыл бұрын
Зачем вообще считать сумму символов? Может проще использовать __hash__() строки, или в python хеш строки вычисляется лениво?
@fun_dev3 жыл бұрын
@@theALFEST я не знаю что там в питоне, просто предложил оптимизацию существующего алгоритма
@anatolyalekseev1012 жыл бұрын
тоже об этом подумал )
@Алексей-р2л9д4 жыл бұрын
Переписать на net, java, что тут еще остается)
@ЗакировМарат-в5щ3 жыл бұрын
Да пишите всё на плюсах, а лучше прямо на ассемблере дополненным классами и ромбовидным виртуальным наследованием, зачем заморачиваться?
@melnikovivan855 жыл бұрын
Отличное выступление. Интересно, какие основные рабочие обязанности докладчика?
@phyllobolus4 жыл бұрын
Говорить ртом, какой Яндекс замечательный.
@phyllobolus3 жыл бұрын
@DaXz чиво, бля?
@phyllobolus3 жыл бұрын
@DaXz перечитай, что ты понаписал, борзописец ты наш.
@Пятеркаа2 жыл бұрын
Выступать перед публикой
@NSRomanov3 жыл бұрын
Если код на Python тормозит, значит не надо было писать его на Python)
@berkut10113 жыл бұрын
Если код на Python тормозит, значит код уже написан на Python. Или предлагаете вернуться на машине времени в прошлое и выбрать другой язык? )
@steps-in-forest3 жыл бұрын
Человек предлагает не связывать свою жизнь с ущербным инструментом
@artemTHISNAMEALREADYTAKEN3 жыл бұрын
@@steps-in-forest Что ты имеешь в виду?
@demoonk4202 жыл бұрын
Любой сложный проект на С превращается, со временем, в плохооптимизированный, неспецифичный интерпретатор Python.
@hajvklkaj64622 жыл бұрын
@@demoonk420 прям как linux, да?
@takethecompressor22393 жыл бұрын
Писать на ассемблере.
@anysym6484 жыл бұрын
намба эффективный при правильном его использовании, у вас же как-то криво он пошел (почтитайте документацию к намба). обычно python + numba показывает результат в 1600% по скорости от того же C++ при правильном его использовании. откуда цифры такие? а вы попробуйте сами.
@backer013 жыл бұрын
Да, numba очень неплох на самом деле, я его использовал для ускорения игр (простенькие, конечно)
@NSRomanov3 жыл бұрын
1600% от С++? В 16 раз быстрее С++?! Серьёзно?! Ты что курил? Если писать код грамотно, то ничего быстрее С/С++ быть в принципе не может (asm не в счёт).
@aralsea_3 жыл бұрын
18:54, дальше смотреть не стал, после слов об убранной строчке на заведении ссылки на ссылку.
@knowledgedose19562 жыл бұрын
почему же?
@irinamilaya3 жыл бұрын
Здравствуйте, нужно доделать сайт на питоне, сколько по цене
@hack_1ess3 жыл бұрын
Смотря какой сайт
@irinamilaya3 жыл бұрын
@@hack_1ess как можно с вами связаться
@hack_1ess3 жыл бұрын
@@irinamilaya мой телеграмм @PyCoder1
@thomasshadows27973 жыл бұрын
смешно смотреть доклады от разработчиков Яндекса по ускорению кода, когда приложения от Яндекса одно за другим тормозит как не в себя... И это на среднем уровне устройства от 25к...А что творится на бюджетных моделях, даже представить сложно
@Русь-Родина3 жыл бұрын
Надо сняться с ручника и перейти на другой язык программирования. Все просто.
@demoonk4202 жыл бұрын
дорого, долго и плохой саппорт.
@pasza5 жыл бұрын
"купи козу" от программирования: 1. придумать язык который тормознее в 100+ раз чем соотв. машинный код 2. начать страдать 3. придумать хак который "ускоряет" всё обратно (не всё, а частично) 4. что называется, профит P.S. на питоне пишу, но ситуация от этого менее анекдотичной не становится P.P.S. доклад интересный, спасибо Григорию
@elfthecrazy4 жыл бұрын
Вам кто-то мешает писать сразу на машинном коде? Ну, если ваша цель не быстрая и понятная разработка, а только скорость исполнения кода ))
@ИванИванов-н9т9ъ3 жыл бұрын
@@elfthecrazy Да, действительно, зачем использовать медленный Python, когда можно писать на чистом машинном коде. Можете, например, написать программку на одном и другом языке, скачивающую страничку с сайта, и легко убедиться, что на машинном языке все работает гораздо быстрее;-)
@skelesheit3 жыл бұрын
Анекдот: почему ваш Python код тормозит? Потому что вы пишите код на Python.
@AndreasKobzar2 жыл бұрын
пишЕте
@wxSoftThePointOfU5 жыл бұрын
АхаХа, переходить на Go конечно же
@theALFEST3 жыл бұрын
Вместо того, чтобы написать нормальную функцию хеширования строки или использовать существующую - эксперименты с другими языками.
@insar213 жыл бұрын
1. Смириться. 2. Переписать на нормальном языке.
@megargan2 жыл бұрын
Если на питоне ваш код тормозит, следует не писать код на питоне) Все просто
@jivoievchik44803 жыл бұрын
Что делать если у вас не то что тормозит какой-то там код на питоне а вы никогда к этому небыли причастны а вам всякую хуиту в реки закидывает
@ВікторА-к2й2 жыл бұрын
Три точечки ---> Не интересно. Пользуйтесь.
@Rundik3 жыл бұрын
Читал только заголовок, но предполагаю, что ответ - не писать на питоне
@platonelenin3 жыл бұрын
Выкинуть Питон и взять Джулию.
@dmitriimolchanov49713 жыл бұрын
Переходить на нормальный язык)))
@devlab32493 жыл бұрын
Уважаемые коллеги программисты, бегите, пожалуйста, подальше от Python, меняйте язык на любой другой. Заранее прошу прощение, если ниже сказанное кого-то оскорбит, но просто накипело, поймите, никого обидеть не хочу. Синтаксис ужас, сам язык медленный и с морально устаревшей идеологией, как и библиотеки написанные для него (имею ввиду в частности django). Писал разные проекты под разные платформы и назначения, занимаюсь разработкой уже 15 лет. Пишу на C, C++, C#, Java, PHP (Laravel), Ruby (RoR), JavaScript (Vue, React), Objective-C, Swift, и на Assembler немного (Также застал времена Pascal, Basic, Delphi). Ни в одном из перечисленных языков не встречал такого маразматичного подхода и синтаксиса как в Python.
@agentdaun56993 жыл бұрын
Тебе по аватарке ~24 года. Большего даже писать не нужно
@ДмитрийУшаков-л6ж2 жыл бұрын
Ты хочешь сказать, что у PHP, например, синтаксис и подход лучше?