Мощь Си в ЛЮБОМ языке!

  Рет қаралды 30,699

Senior Software Vlogger

Senior Software Vlogger

Күн бұрын

Привет! Когда я был совсем новичком, то часто ругался на скриптовые языки за отсутствие скорости. Вот если бы это переписать на Си, то все быстрее бы заработало! Но ведь мощь си можно добавить в любой язык. Сегодня мы исследуем эту тему и засунем си куда-нибудь. И засунем не только си, а так же го и раст.
Курс по Java с оплатой после трудоустройства: clck.ru/33Lnup
00:00 Не только Си
00:37 Зачем? 3 причины использовать
02:02 Как реализовано
03:41 Реклама на развитие (16+)
05:02 Примеры: Си в руби через FFI
06:47 Руби native extension
10:09 Rust в руби через FFI
11:15 Go в руби через FFI
12:22 Кто быстрее?
Доступ к плюшкам:
boosty.to/seniorsoftwarevlogger
www.youtube.com/@SeniorSoftwa...
Телеграм: t.me/seniorsoftwarevlogger
Сайт: seniorsoftwarevlogger.com/
Senior Software Vlogger - канал о жизни людей в айти и интересных фактах. Написание кода, интервью с программистами, переезд на ПМЖ в другие страны, лайфхаки профессии.
#программирование #ityoutubersru

Пікірлер: 186
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger Жыл бұрын
clang -03 все равно проиграл dima@macbook-pro-3 ruby % ruby ./factorial.rb user system total real Ruby 0.000173 0.000050 0.000223 ( 0.000414) C 0.000052 0.000201 0.000253 ( 0.000656) Go 0.000041 0.000019 0.000060 ( 0.000052) Rust 0.000029 0.000013 0.000042 ( 0.000018)
@iliasalaur
@iliasalaur Жыл бұрын
Блин, обидно. Может сама библиотека ffi корявая?) Но уже ладно
@tihonsergienko8584
@tihonsergienko8584 Жыл бұрын
Компиляция сишной библиотеки без флагов оптимизации (-O2 или -O3) равняется сборке в режиме дебаг :) В то время как при компилировании раст-либы виден параметр release (аналогия как в cmake CMAKE_BUILD_TYPE=Release), который как раз добавит флаг -O3. Так что результат не удивляет. С го тоже более менее понятно, ведь у этого языка есть gc (правда хз насколько он в данном случае играет роль) и так называемый рантайм (какие-то нужные для работы го вещи, которые грузятся в оперативную память независимо от воли программиста). Это кстати ограничивает возможность использования го на всяких встраиваемых устройствах с мизерной оперативкой. Интересно посмотреть ассемблер на выходе, скорее всего компилятор развернул циклы (loop unrolling) и может даже векторизовал вычисления. Хотя последнее вряд ли тк у Вас ARM-процессор, а компилируете Вы под x86_64. А у этих архитектур совершенно разный набор SIMD инструкций
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger Жыл бұрын
clang -03 все равно проиграл dima@macbook-pro-3 ruby % ruby ./factorial.rb user system total real Ruby 0.000173 0.000050 0.000223 ( 0.000414) C 0.000052 0.000201 0.000253 ( 0.000656) Go 0.000041 0.000019 0.000060 ( 0.000052) Rust 0.000029 0.000013 0.000042 ( 0.000018)
@ivan7094
@ivan7094 Жыл бұрын
Полезный выпуск, приятно смотреть и слушать! (ps.."на заднем плане ноутбук на ноутбуке? У меня скулы сводит от такого..:))
@TheRedbeardster
@TheRedbeardster Жыл бұрын
Молодец, Дима! А после рубей - эликсир :)
@dancef2
@dancef2 Жыл бұрын
смысла в Елексире нет, он уже не далеко уходит по скорости от Руби. А в реализации Ruby/truffleruby (--jvm) даже обходит в несколько раз. Если какую и использовать альтернативу, так это Go.
@Mostwonted7
@Mostwonted7 Жыл бұрын
Чувак ты слишком умён для меня. Чувствую себя ребенком 8 летним, которому объясняют логарифмы. Эх спасибо что находишь время пилить ролики, успехов.
@Furry_Cultist
@Furry_Cultist Жыл бұрын
Мне нравится его фигура. Эх, вот бы увидеть его без футболки
@jameskim4274
@jameskim4274 Жыл бұрын
Ролик огонь!
@user-qw6ku2uh1q
@user-qw6ku2uh1q Жыл бұрын
Вот такие видео мне нравятся!
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger Жыл бұрын
Мне нравятся подписчики, которые верили, что такие видео ещё будут 😀
@user-qw6ku2uh1q
@user-qw6ku2uh1q Жыл бұрын
@@SeniorSoftwareVlogger ладно подпишусь обратно)
@korvet348
@korvet348 Жыл бұрын
ООООО добро пожаловать. Тоже пришел к Си)
@megaman13able
@megaman13able Жыл бұрын
Жирный лайк за контент про руби
@dimitridoroshko
@dimitridoroshko Жыл бұрын
Классно!
@KillMeBabyOneMoreTime
@KillMeBabyOneMoreTime Жыл бұрын
Было бы круто оставить всё же финальный комментарий в описании, где был бы обычный руби бенчмарк и оптимизированный СИ. Но в любом случае, спасибо!!
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger Жыл бұрын
в телеге написал
@user-rd8ff9ms2x
@user-rd8ff9ms2x Жыл бұрын
Круть!
@kl45gp
@kl45gp Жыл бұрын
жизнь она как ревью, проходит по диагонали)
@user-dm4yi9ch3n
@user-dm4yi9ch3n Жыл бұрын
Си язык богов.это самый ахрененный язык
@MrPe4KiN96
@MrPe4KiN96 Жыл бұрын
Blazingly fast!
@allcreater_
@allcreater_ Жыл бұрын
А сишная версия была какая, с преобразованиями на каждой итерации вычисления факториала? Ну тогда удивительно, что она так быстро отработала... Или все-таки все версии были с нативным модулем и библиотекой FFI?
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger Жыл бұрын
Сишная версия была такая же как и остальные - FFI.
@askket
@askket Жыл бұрын
Борода классная
@antonrrtyq
@antonrrtyq Жыл бұрын
следующий видос можно про jit 😁
@dmitry-lz1ny
@dmitry-lz1ny Жыл бұрын
Какой бы вы 2-ой язык посоветовали при питоне основным? Думаю между c++, ,Go, Rust. Плюсы как то устаревше смотрятся, раст у меня тут не сильно востребован, а вот Go очень интересно смотрится под питон.
@divelix2666
@divelix2666 Жыл бұрын
Зависит от того, чем ты хочешь заниматься. Go наиболее узко специализированных из трёх. Он проще остальных, но и всегда хуже в рантайме (в первую очередь из-за наличия сборщика мусора). Rust - лучший из трёх, если рассуждать в отрыве от реальной жизни (синтаксис, перфоманс, экосистема), но в реальности он ещё слишком молод, чтобы полность вытеснить C++ (при этом развивается сильно быстрее, чем C++ и Go) + unsafe синтаксис делает его не очень удобным на самом низком уровне (например, программирование микроконтроллеров). Тем не менее, в бэкенде, многие большие компании постепенно переходят с Go на Rust (e.g. Discord, Figma, FANG). C++ имеет одно главное преимущество перед Go и Rust - он вездесущь. Он слишком много позволяет пользователю, из-за чего разработка на нём очень медленная, а в конечной программе много багов и уязвимостей (из-за этого, крупные корпорации меняют его на Rust). Моё мнение: начинать лучше с C++ (больше образовательных материалов, вакансий, практической применимости). Изучить его до комфортного для написания и чтения простых программ уровня, после чего начать параллельно изучать Rust. Изучение раста улучшит твои навыки программирования на C++, так как Rust, это по сути компиляция лучших практик разработки с запретом лишенго функционала на уровне синтаксиса (RAII, move-semantics, immutable variables по умолчанию и т.д.). Плюс к тому времени, вероятно, раст уже вытеснит плюсы на столько, что вакансий будет сопоставимое кол-во с C++. На Go я бы забил, т.к. Rust снимает его полностью в его узком домене.
@user-tr8xi3ik3c
@user-tr8xi3ik3c Жыл бұрын
@@divelix2666 , не знаю как там Rust заменит Go, но судя по вакансиям никогда.
@vas_._sfer6157
@vas_._sfer6157 9 ай бұрын
@@divelix2666 Rust вполне себе востребован. Но увы не так сильно в России, чтобы компании отдельно искали разработчика. А вот unsafe вам просто не пригодится в большинстве случаев.
@user-oz4gi1yy4t
@user-oz4gi1yy4t Жыл бұрын
только об этом подумал, а видео уже в рекомендованых появилось. Алгоритмы научились мысли читать?)
@evgenyjagushinsky6695
@evgenyjagushinsky6695 Жыл бұрын
Дмитрий, как всегда очень классное повествование от Вас! Я сам присматриваюсь к тому какой язык начать учить. Сейчас пробую питон, но он такой раскрученный и столько людей на нём пишут код, что скоро 90% будет питоновцев) Подскажите, плиз, какой на Ваш взгляд лучше учить язык С или С++ если выбирать из них и какие известные курсы могли бы нормально помочь изучить? Заранее спасибо!
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger Жыл бұрын
Спасибо за отзыв! Я не думаю, что я компетентен отвечать на этот вопрос. Есть и другие языки, не только си и питон. Я недавно видел вот эту карту изучения си++ от авторитетных людей twitter.com/e_salmer/status/1630128565806137345
@evgenyjagushinsky6695
@evgenyjagushinsky6695 Жыл бұрын
@@SeniorSoftwareVlogger я понял и спасибо за подсказку!)
@user-ne4bd3ry1n
@user-ne4bd3ry1n Жыл бұрын
FFI впервые в какой язык завезли? в luajit?
@realfootball338
@realfootball338 4 ай бұрын
Очень легко в ноду засунуть Zig. Ну C/C++ вообще без проблем. Sass/Scss/webpack частично написаны на C. Именно N-API. Webassembly C не даст такой же прирост производительности.
@user-ju7oo6kr5l
@user-ju7oo6kr5l Жыл бұрын
В Кате изучают только java или есть возможность до.языков
@oriontvv
@oriontvv Жыл бұрын
Писал расширение на расте для питона(двустороннее). Это сейчас вообще популярная тенденция в сообществе. Появляются либы которые проще развивать(pydantic) и часто они показывают лучший перфоманс(orjson). Привязку удобно генерить через макросы py03, для простого кода и математики прям очень хорошо. Но есть особенности при работе с многопоточным кодом из-за GIL'а в связке с борроу-чекером и иногда нужно поприседать. Еще есть отдельный вопрос по видосу: как гошный код упаковывется в либу - тяжелее ли она и тянет за собой какой-то рантайм? надо ли дружить сборщики мусора го и скриптового языка? хотелось бы выхлоп ld глянуть
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger Жыл бұрын
Могу сказать, что либа на го весит 1.3M, когда на расте 2.1М
@oriontvv
@oriontvv Жыл бұрын
@@SeniorSoftwareVlogger по умолчанию либа достаточно жирная на расте, да. Есть страничка с шагами которые очень сильно ужимают. Есть академический интерес как горутины и выделение фреймов в бинарнике будут выглядеть
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger Жыл бұрын
Я могу тебе скинуть .so напиши в телегу soexpired
@andrewgjfye299
@andrewgjfye299 Жыл бұрын
Была задача вычислить md5 файла прямо в браузере перед загрузкой. Написал на rust'е 3 строки полезного кода, скомпилировал в webassembly. Результатом доволен, гораздо быстрее готовых библиотек. На процессоре R9 5900x файл 18.5гб считается за 132сек
@AEF23C20
@AEF23C20 Жыл бұрын
тестовый доисторический 3570k винт интел520 ворохи гиговых файлов с чтением с винта каждый гиг - 1.5 сек мд5 и да, в четыре потока если - ещё быстрее, но ессно упрётся в винт вы довольны результатом?
@h4purch4pur
@h4purch4pur Жыл бұрын
Что-то не впечатляет вообще, на том же 5900x, однопоточный md5sum в ~6 раз быстрее: $ du -hs manjaro-kde-22.0-minimal-221224-linux61.iso 3.1G manjaro-kde-22.0-minimal-221224-linux61.iso $ time md5sum !$ time md5sum manjaro-kde-22.0-minimal-221224-linux61.iso e59c6ba6a77d5685444d9a6570e80211 manjaro-kde-22.0-minimal-221224-linux61.iso real 0m3.822s user 0m3.356s sys 0m0.460s
@andrewgjfye299
@andrewgjfye299 Жыл бұрын
@@AEF23C20 Да, пока не найду решение получше
@AEF23C20
@AEF23C20 Жыл бұрын
@@andrewgjfye299 так если известно [всегда известно], что существует решение получше - то как можно вообще в принципе быть довольным чему или кому либо?)
@zhandosissayev9798
@zhandosissayev9798 Жыл бұрын
Чувствует тренд. Что на рынке останутся боевые пенсионеры с бородой.
@user-tq9bu6ki2h
@user-tq9bu6ki2h Жыл бұрын
1) Действительно, зачем сравнивать без оптимизации? 2) Почему в расте i32 и в го просто int, а в С целый long long?
@nameundef8076
@nameundef8076 Жыл бұрын
в go есть фиксированные целочисленные типы также
@rapapa-rapapa
@rapapa-rapapa Жыл бұрын
и в C есть свои int32_t
@diman1ght491
@diman1ght491 Жыл бұрын
Когда я вижу как ты пишешь на Rust - малыш, ты меня волнуешь 😘
@aleksandr-belousov_1
@aleksandr-belousov_1 Жыл бұрын
Уже более двух лет с растом, все летает
@user-qx6nf7xg2z
@user-qx6nf7xg2z Жыл бұрын
blazing fast huly ))))
@Ramzes200986
@Ramzes200986 Жыл бұрын
ого, а ты сможешь к примеру переписать библиотеку adoddb на си
@mosaica_art
@mosaica_art Жыл бұрын
Go
@Nandarion
@Nandarion Жыл бұрын
Проект на скриптовом языке имеет слабый перфоманс, но для его поддержки достаточно знать только этот скриптовый язык. Можно переписать на С++ или Раст, тогда все заработает быстро, и для поддержки нужен будет нужен программист на С++ или Раст, зато скриптовый язык можно будет забыть. Можно написать расширения, или динамические библиотеки, все заработает более-менее быстро, но поддерживать придется как проект на скриптовом языке, так и расширения.
@grenadier4702
@grenadier4702 Жыл бұрын
Скриптовый язык зависит от среды, в которой он исполняется. Он не может быть рассмотрен сам по себе. Тот же Node.js, написанный на С++, ни чуть не хуже .NET будет, а то и лучше
@AntonioBenderas
@AntonioBenderas Жыл бұрын
Если в кадре моник, то должен быть на него обзор
@Lo1jke
@Lo1jke Жыл бұрын
unsigned long long -> int
@kpechenenko
@kpechenenko Жыл бұрын
Круто, может быть когда-нибудь пригодится, чтобы переписать костыль с Си в удобный костыль на Python. Не могли бы подсказать при помощи чего вы смогли добиться такого построчного вывода исходников с затемнением фона в текстовом? Хотел бы использовать этот прием/программу в своих презентациях.
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger Жыл бұрын
t.me/seniorsoftwarevlogger/1104
@sashka_al2245
@sashka_al2245 Жыл бұрын
Я удивлён, что вы удивлены по поводу скорости Rust.
@Pschenichniy10
@Pschenichniy10 Жыл бұрын
Интересно, будет ли быстрее если на Си собрать с оптимизациями.🤔
@protiv_bio
@protiv_bio Жыл бұрын
Я удивлен, что вы удивлены, что он удивлен по поводу скорости Rust.
@nekitak3472
@nekitak3472 Жыл бұрын
А как ускорить обратную задачу? Мне нужно запустить python скрипт из под с/с++, например, 10000 раз. Через консоль это на столько медленно, что я скорее умру от старости, чем интерпретатор питона столько раз запустится.
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger Жыл бұрын
А чем си тут поможет? Скорее надо обернуть вызов скрипта как функцию и запустить ее в цикле питона
@nekitak3472
@nekitak3472 Жыл бұрын
@@SeniorSoftwareVlogger тем, что мне из под си надо вызвать скрипт питона много раз. Не один и тот же, разумеется. Есть вспомогательный код, разные питон скрипты, но мне нужно их запускать из под срр, т.к. основая программа на плюсах.
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger Жыл бұрын
хз, это в область моего исследования не входило. Возможно как то можно запустить интерпретатор один раз и потом переиспользовать его docs.python.org/3/extending/embedding.html
@ildsjei
@ildsjei Жыл бұрын
Переписывай всё на голанг😎
@snippet_dev8079
@snippet_dev8079 Жыл бұрын
Нет, никакого смысла сравнивать C и Rust в плане производительности, так как со стороны реализации, это практически идентичные языки, это считай один и тотже компилятор. Разница в том, что к Rust прикрепили функциональные парадигмы и линтер, да и всё. С точки зрения производительности тоже не слишком много отличий и в основном в районе погрешности. А Go? Ну что Go, у него Garbage Collector и этим всё сказанно
@AlexeiCheban
@AlexeiCheban Жыл бұрын
у Go ещё свой написанный компилятор, а вот есть говорить про Rust и C то они используют llvm
@AEF23C20
@AEF23C20 Жыл бұрын
для вычислений факториалов ну точно юзается коллектор))))) вот прям создаются объекты миллионами ага ага
@user-pq7dj1ny4h
@user-pq7dj1ny4h Жыл бұрын
В Go всё - таки есть GC. И это реально удивило. Rust компилятор один из лучших за все времена, если не лучший.
@iliasalaur
@iliasalaur Жыл бұрын
Если вы судите по тестам из видео, то нет, не лучший, Раст компилился с -O3, а clang компилирует по дефолту без оптимизаций
@rairax1519
@rairax1519 Жыл бұрын
Я ставил на 1. C 2. Rust 3. Go Хотя очень сомневался в том, что раст медленнее Си. Слишком много я услышал от своего друга про этот язык
@ildsjei
@ildsjei Жыл бұрын
Rust немедленный, но он намного удобнее и практичней С.
@user-ez4gf6fu3p
@user-ez4gf6fu3p Ай бұрын
"Папа может в C" :)
@eugenn2848
@eugenn2848 Жыл бұрын
Оффтоп. Почему отказались от использования трекпада и перешли на трекбол? Неужели он лучше?
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger Жыл бұрын
Да
@eugenn2848
@eugenn2848 Жыл бұрын
@@SeniorSoftwareVlogger Что? Но почему? На тачпаде же есть куча полезных жестов, а на трекболе - ничего.
@liiillii776
@liiillii776 Жыл бұрын
я вообще не шарю, но разве С и Rust не использует один и тот же бэкэнд LLVM?
@dmitry.i.kabanov
@dmitry.i.kabanov Жыл бұрын
нет, есть много разных компиляторов Си. Например, компиляторы gcc и icc не используют LLVM, а clang использует
@wMwPlay
@wMwPlay Жыл бұрын
Ещё не все осознали, но почти всегда Rust быстрее С. Дизассеамблируя бинарники, вы заметите, что Rust создаёт более минималистичный и чистый assembly-код чем Си.
@vryaboshapko
@vryaboshapko Жыл бұрын
3:19 подсветка монитора выдаёт склейки)
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger Жыл бұрын
Так я их и не пытаюсь спрятать
@vryaboshapko
@vryaboshapko Жыл бұрын
@@SeniorSoftwareVlogger да, это ни в коем случае не придирка, просто формат ютуба предполагает, что любой комментарий лучше, чем никакого. Поэтому раз уж глаз зацепился, решил написать.
@topalov_maxim
@topalov_maxim Жыл бұрын
как ты ноут на ноут поставил или зачем :)
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger Жыл бұрын
Как-нибудь отдельно расскажу
@AEF23C20
@AEF23C20 Жыл бұрын
чем бы дитя не тешилась, лишь бы в дотнет не лезла и это хорошо!
@iliasalaur
@iliasalaur Жыл бұрын
Кхм кхм, clang по дефолту компилирует с -O0, то есть практически без оптимизаций, а компилятор раста компилирует с opt-level 3, то есть все оптимизации. Так что тест не очень корректный. Надо было сначала выключить все оптимизации у обоих и сравнить скорость (будет плюс/минус одинаковая) а потом врубить полные оптимизации и тогда у раста будет скорость на процентов 20-30 ниже
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger Жыл бұрын
Раст все равно победил
@wMwPlay
@wMwPlay Жыл бұрын
1 - Rust, 2 - C, 3 - Go
@GexPlayerMD
@GexPlayerMD Жыл бұрын
Прыкольно =) Думал такое возможно только в питоне, и только на си.
@user-vc5nj9zd6i
@user-vc5nj9zd6i Жыл бұрын
CRustGo
@user-ne4bd3ry1n
@user-ne4bd3ry1n Жыл бұрын
почему CI/CD шелупонь?
@Negator92
@Negator92 Жыл бұрын
1. c 2. rust 3. go досмотрел, ну оптимизации, очевидно, порешают, кмк
@marksto6581
@marksto6581 Жыл бұрын
Вот пишу я на Clojure. Функциональный, иммутабельный, data-driven язык. И вот крайне тяжко и редко удачно, потому что "под капотом" мутабельное состояние, оборачиваются в Clojure такие "библиотеки на C" (на Java, на Python, на Go, на Rust, etc.). [критическое замечание к названию ролика - увы, не "в ЛЮБОМ"]
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger Жыл бұрын
Я не понял, что вы хотели сказать.
@marksto6581
@marksto6581 Жыл бұрын
Привет, Дима! Просто хотел отметить, что на практике, увы, не всегда получается легко пошарить кусок логики между разными платформами. И, по моим наблюдениям, чем это "дальше" от просто вычислений (математика, статистика, криптография и др. алгоритмические вещи), тем большую роль будут играть парадигмальные разницы языков и платформ. П.С. Это критический комментарий к названию ролика, в общем-то. Не "в ЛЮБОМ". Увы... =/
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger Жыл бұрын
В джаву легко си заходит через JNI, конечно над склеиванием парадигм надо поприседать, но мы же сами творцы своего счастья. Где-то кложа помогает, где-то мешает. Серебряной пули нет
@marksto6581
@marksto6581 Жыл бұрын
Да, всё верно, и JNI ситуацию не спасает сам по себе, если API библиотеки принципиально мутабельное. Универсальных решений не существует.
@Andrei-vc1oz
@Andrei-vc1oz Жыл бұрын
Жаль не было raw ruby в бенчмарке
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger Жыл бұрын
Да, упустил. В телеграм добавлю попозже
@codingfox
@codingfox Жыл бұрын
Месье знает толк) говорят, в реальных проектах основная причина медленной работы - проблемы с I/O, особенно на стороне БД (например, медленные запросы). А так спасибо за обзор, было познавательно 🙂
@vas_._sfer6157
@vas_._sfer6157 11 ай бұрын
На самом деле не всегда. Порой вана ещё скорость старта или вычисления, потребление оперативной памяти
@10Dima01
@10Dima01 9 ай бұрын
Таки а зачем в I/O синхронно ходить?
@vas_._sfer6157
@vas_._sfer6157 9 ай бұрын
@@10Dima01 Потому что это IO. В большинстве случаев, конкурентная модель работы с IO необходима. Это связано с тем, что вашему коду приходится ждать результатов работы другой программы, взаимодействия с сетью или даже ожидания выполнения процесса в реальном мире. Во всех этих случаях крутить в холостую цикл - это лишнее потребление процессорного времени. Потому большинство операционных систем предлагают асинхронные механизмы, чтобы иметь возможность возобновить работу по получению сообщения.
@10Dima01
@10Dima01 9 ай бұрын
@@vas_._sfer6157 так я и имел в виду зачем ходить в I/O синхронно, если можно асинхронно...
@kamnsv
@kamnsv Жыл бұрын
Rust, c, go
@kvatofermer
@kvatofermer Жыл бұрын
когда Джон Уик 4 выйдет?
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger Жыл бұрын
Эта информация доступа по подписке в бусти
@artemyvolkov
@artemyvolkov Жыл бұрын
С, Rust, Go
@user-vy1lo2gr8d
@user-vy1lo2gr8d Жыл бұрын
C, Rust, Go
@mishankov44
@mishankov44 Жыл бұрын
C Rust Go
@HoboHero
@HoboHero Жыл бұрын
1. Rust 2. Go 3. C Ютюб когда-то в рекомендациях подкидывал видос про то, как линуксовые утилиты, изначально написанные на Си переписывают на Расте. Угорел с того, как bat уделывает cat. kzfaq.info/get/bejne/mreRbNCnyrq3hmg.html
@andreybulygin2625
@andreybulygin2625 Жыл бұрын
Использовал такую хитрость чтобы быстро высчитывать расход памяти процесса в руби. Странно что в руби нет метода который бы это делал из коробки :)
@maxsalov9521
@maxsalov9521 Жыл бұрын
Самое интересное, что Rust потокобезопасный и после 2021 года ещё и асинхронный, что сильно выделяет этот ЯП среди других. Я им начал заниматься год назад, и лично мне понравилось, что можно разложить приложение на разные потоки и перед запуском проинициализировать все необходимые кучи статично и не будет в такой ситуации утечек памяти, с которыми я сталкивался на Python, когда скрапил на selenium и обучал нейросети на PyTorch. В рунете мало кто делает контент по Rust. Спасибо автору. Быть может в Rust появятся официальные декораторы, чтобы я мог полностью забыть о Python. Хотя пока я мало где использую новомодные для себя макросы с обработкой RAW-текста. Хотя уже документы на Гигабайт в Rust обретают смысл, потому что в нём быстрое чтение и обработка данных.
@user-qz8wt6vd2y
@user-qz8wt6vd2y Жыл бұрын
Ща бы в 2023 писать на c/c++ когда есть Rust
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger Жыл бұрын
Раст, которого нет в видео 🥴
@user-qz8wt6vd2y
@user-qz8wt6vd2y Жыл бұрын
@@SeniorSoftwareVlogger говорю в общем, а не за ваше видео🤦🏻‍♂️
@iliasalaur
@iliasalaur Жыл бұрын
@@user-qz8wt6vd2y про embedded слышал?)
@dev_zloi
@dev_zloi Жыл бұрын
Думал будет видео про wasm, но оказалось интереснее
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger Жыл бұрын
Про васм тоже будет потом :)
@duoduoo6732
@duoduoo6732 Жыл бұрын
непонятно где в бандле си находится. а так интересно
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger Жыл бұрын
Ты имеешь в виду factorial.bundle? Сам бандл - бинарный файл, си компилируется в него с доп обвязкой.
@duoduoo6732
@duoduoo6732 Жыл бұрын
@@SeniorSoftwareVlogger да спасибо чуть лучше понял
@dmitry.shpakov
@dmitry.shpakov Жыл бұрын
Сравнивать с С без оптимизаций это конечно объективно.
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger Жыл бұрын
С оптимизацией -О3 все равно проиграл. Что еще попробовать? dima@macbook-pro-3 ruby % ruby ./factorial.rb user system total real Ruby 0.000173 0.000050 0.000223 ( 0.000414) C 0.000052 0.000201 0.000253 ( 0.000656) Go 0.000041 0.000019 0.000060 ( 0.000052) Rust 0.000029 0.000013 0.000042 ( 0.000018)
@dmitry.shpakov
@dmitry.shpakov Жыл бұрын
​@@SeniorSoftwareVlogger Спасибо. Так всё таки лучше и более объективно, чем в изначальном тесте, где может показаться, что С проигрывает на порядок в такой же задаче. Конечно ещё можно поиграться с флагами компилятора, взять среднее или сравнить GCC и clang, но это не была темой вашего видео. Также признаю, что все эти сравнения скорости исполнения, дело не благодарное и даже бесполезное, до тех пор пока не решается узкий круг задач. В общем спасибо за видео, было интересно узнать кое-что новое.
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger Жыл бұрын
Да я сам затупил конечно. Но и у меня никакого продакшен опыта с этими технологиями нет. Наверняка если правильно собрать, то Си обгонит. Бенч больше для развлечения :)
@daniildoroshenko7321
@daniildoroshenko7321 Жыл бұрын
1 - С 2-Go 3- Rust мне так кажется))
@user-bk9cc1lv2w
@user-bk9cc1lv2w Жыл бұрын
Ката заставляет обманывать работодателя, приписывая опыт работы. Хрошо ли будет учить? Учить не будут, будут просто список обучения отдавать и ревью принимать.
@spinacker16
@spinacker16 Жыл бұрын
норм. я тоже так писал после курсов. позволяет запрыгнуть на мидла и если курс хорошо готовит к продакшну то проблем не будет
@olgafedyanova
@olgafedyanova Жыл бұрын
@@spinacker16 какой курс так хорошо вас подготовил к продакшну?
@aks964
@aks964 Жыл бұрын
Привет, коллега. Тоже задолбало что они рисуют 3,5 лет стажа?
@dimitryrusu4022
@dimitryrusu4022 Жыл бұрын
@@aks964 ну 3,5 многовато конечно, а вот в том чтоб год накинуть не вижу ничего такого... Без этого тебя просто пошлют и даже собеседовать не будут.
@aks964
@aks964 Жыл бұрын
@@dimitryrusu4022 тут я согласен, рынок такой. Но н 3,5 как они делают сейчас
@test3565
@test3565 Жыл бұрын
В данном подходе есть очень большая проблема, если вы пишете библиотеку, то рассчитываете на поддержку сообщества. Написав код на си, далеко не каждый сможет в нем разобраться, а тем более поможет написать необходимый модуль. А ваши ишью будут состоять из ошибок компиляции на различных платформах.
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger Жыл бұрын
Есть такая штука, но можно писать библиотеку для себя. Не рассчитывая на поддержку
@grasslawn7544
@grasslawn7544 Жыл бұрын
1 C 2 Rust 3 Go
@user-pu1pn7pi4x
@user-pu1pn7pi4x Жыл бұрын
Но есть одна проблема: при вызове, например, си из другого языка, будет создаваться отдельный сишный рантайм, контекст которого занимает память. А если приложение многопоточное, на каждый поток, при вызове си, по рантайму. Так что с умом надо такое использовать :)
@dimagor555
@dimagor555 Жыл бұрын
В котлине это всё намного проще и намного лучше поддерживается самим языком И поддерживается не только С, но и JS/Swift Котлин подходит идеально для шаринга общей библиотеки, шаринг общей библиотеки на низкоуровневых языках как С, Go или Rust - это дичь
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger Жыл бұрын
Да, котлин - молодец.
@oeaoo
@oeaoo Жыл бұрын
Котлин. Намного. Хорошо. Узя. Узязя.
@AEF23C20
@AEF23C20 Жыл бұрын
а в дотнете это всё поддерживается вообще падифолту))
@h4purch4pur
@h4purch4pur Жыл бұрын
В твоей функции факториала, else - лишний.
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger Жыл бұрын
Я ее конечно же со стэка скопировал 🥸
@user-uf5rl9lj9g
@user-uf5rl9lj9g Жыл бұрын
1 Go 2 C 3 Rust
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger Жыл бұрын
Го первый? Ну комон :)
@user-uf5rl9lj9g
@user-uf5rl9lj9g Жыл бұрын
@@SeniorSoftwareVlogger , как-то препод показывал создание 100к потоков на C и 100к Горутин, Go в тот раз не дал никаких шансов C. Думал в это раз тоже самое будет ) P.S. Я сам изучаю Rust, даже не ожидал что он будет на 1м месте 👀
@SeniorSoftwareVlogger
@SeniorSoftwareVlogger Жыл бұрын
Но ведь потоки и горутины - немного разные вещи 🥲
@Violancergta
@Violancergta Жыл бұрын
Через несколько лет все это захлебнется... технологии , рантаймы , фреймворки , еще какая хрень чтоб все это взаимоработало - генерятся каждый день в геометрической прогрессии. Если посмотреть глобально на всю кухню то это напоминает си++ и dll и ocx времен зарождения винды когда все новое и нихрена не понятно как с этим работать , а времени на изучение нет. Только освоил - появилось что то новое а старое уже в утиль. Пожалейте процессор. Должен быть один язык программирования - самый быстрый и точка. В противном случае множество ответвлений от каждой парадигмы генерит подмножество технологий чтобы все это связать воедино. В результате проц нагибается по полной а код еле ворочпется. Как ни крути , как не изворачивайся там на верхнем уровне , процессор неумолимо шаг за шагом на аппаратном уровне выполняет свой асм ни быстрее ни медленее .. и плевать он хотел на все эти вот выкрутасы ... Вот еслиб поменять саму архитектуру.. чтоб говнокод на питоне ворочался как чистый асм на 5ти гигагерцовом проце из под доса. .
@jolybells
@jolybells Жыл бұрын
первый ?
@Die_MF_Die
@Die_MF_Die Жыл бұрын
!Нет
@aks964
@aks964 Жыл бұрын
Ката! Перестаньте выпускникам рисовать 3,5 лет опыта! Вы оборзели
@olgafedyanova
@olgafedyanova Жыл бұрын
Бугага. Синьеры
@aks964
@aks964 Жыл бұрын
@@olgafedyanova тебе смешно, а они рынок так невероятно разжули что в страшном сне не приснится
@keklola
@keklola Жыл бұрын
Так в чем проблема? Если выпускник смог пройти собес, то значит либо у него хватает знаний для работы, либо конторка так себе, куда берут кого попало
@olgafedyanova
@olgafedyanova Жыл бұрын
@@aks964 мне не смешно. Я знаю это всё изнутри и скорблю вместе с вами. Но звучало забавно. А так понятно, что всё катится в пропасть
@aks964
@aks964 Жыл бұрын
@@keklola тебя готовят именно проходить собес. А потом эти люди пишут мне. Они не то что рест написать, они не знают что брейк поинты можно ставить
@EdgeOfDoom
@EdgeOfDoom 4 ай бұрын
Какой у руби отвратительный синтаксис
@username8614
@username8614 Жыл бұрын
дурацкая борода у тебя, сорян. лучше было бритым или с короткой аккуратной
@unheilbar
@unheilbar Жыл бұрын
Стоит отметить большой оверхед при вызове Си кода из го. Оверхед именно на сам вызов. Поэтому зачастую лучший способ оптимизации это сократить количество вызовов Си кода. К примеру, если используем написанные на Си хэш функции из под Го, и нам нужно считать множество хешей, значительно быстрее будет создать в Си либо обертку над функцией расчета хэша, которая принимает сразу массив значений и возвращает массив хэшей.
@mediazador
@mediazador Жыл бұрын
My expectation is [C, Rust, Go]
маленький брат прыгает в бассейн
00:15
GL Show Russian
Рет қаралды 4,4 МЛН
О, сосисочки! (Или корейская уличная еда?)
00:32
Кушать Хочу
Рет қаралды 6 МЛН
Do you have a friend like this? 🤣#shorts
00:12
dednahype
Рет қаралды 16 МЛН
顔面水槽がブサイク過ぎるwwwww
00:58
はじめしゃちょー(hajime)
Рет қаралды 114 МЛН
Как дообучить ChatGPT на своих данных?
3:01
Pine Forest AI
Рет қаралды 1,1 М.
Уроки Blender с нуля / #3 - Трансформация и добавление объектов
24:11
Школа itProger / Программирование
Рет қаралды 52 М.
1v1 Coding Lockout Championship Finals
3:37:39
Errichto Hard Algorithms
Рет қаралды 69 М.
🫙He Had To Repeat After Her And Crumple The Bottle😲🤪🤠
0:18
BorisKateFamily
Рет қаралды 29 МЛН
Самый КРЕПКИЙ ученик!👍
1:00
Petr Savkin
Рет қаралды 4,3 МЛН
Bottle Head Smashing World Record Attempt!
0:38
MrBeast
Рет қаралды 108 МЛН
Пьяница приставал к людям в кафе 😠
0:19