Ядро Linux в 2024: 10 критических причин выбора Си вопреки трендам C++ и Rust

Sdílet
Vložit
  • čas přidán 13. 09. 2024
  • 🧠 Почему Linux-ядро всё ещё пишется на Си, несмотря на мощь C++ и модность Rust?
    🔗 Ссылки
    🗂️ [github](github.com/yel...)

Komentáře • 149

  • @ted_res
    @ted_res Před 21 dnem +29

    Недавно делал ядро на C++, писал свой рантайм поверх UEFI. Собственно, требуется предоставить операции new/delete и ещё stack unwinding (процессорозависимый) для обработки исключений. Никто не заставляет тащить весь stdlib. В совокупности минимальный рантайм можно в 30 KiB исходника запихать. Шаблоны работают и без рантайма, там компилятором всё делается.

    • @default-writer
      @default-writer Před 16 dny

      вспомни демосцены 4к, на с++. можно, но это одноразовая поделка, никак изменить код нельзя, чтобы не выйти за границы 4к, например, все предельно упаковано, не читабельно, и выглядит как сплошной mind hack C++. ни о какой поддержке такого кода С++ речи быть не может. если разработчик умер - всё, пиши всё с нуля, сам.

    • @ted_res
      @ted_res Před 16 dny

      @@default-writer Ну, то, что я описал, не имеет отношения к качеству кода. Я исторически джавист-перфекционист, так что мой код (как для джависта) самодокументирован. Хотя на поддержку своего детища не претендую, это образовательный проект был.

    • @MrCter
      @MrCter Před 15 dny

      а можно ссылку на код? интересно глянуть кое-что. спасибо

  • @user-vq6nz7fd8k
    @user-vq6nz7fd8k Před 19 dny +18

    Пока папа может в Си- все в порядке в Линукси! 😅

  • @moshamiracle
    @moshamiracle Před 16 dny +8

    Как большой любитель C и системного программирования хочется сказать... насколько же автор тут притягивает каждый пункт за уши, то ли специально, пытаясь сыграть на том, что кто-то может не знать, то ли из-за полной неграмотности в разбираемом вопросе

    • @jp2en
      @jp2en Před 5 dny

      второе, скорее всего

  • @kirillpetrakov3282
    @kirillpetrakov3282 Před 21 dnem +17

    Реальные причины, их 2, и то, наверное можно сказать, что и 1: это ABI, потому что в си нет манглирования, как в С++, а на манглировании устроен механизм перегрузки. Все остальное - скорее отговорки, так как современные компиляторы, в том числе и GCC, состоят из 2 или даже 3 частей, из которых точно есть front-end, и back-end. И, по идее, если у компилятора есть back-end для какой-то архитектуры, то не важно на каком front-end-е написана программа. Но. всё же думаю не для всех архитектур может в принципе быть реализован такой back-end, но это скорее исключение в наши дни.

    • @safocl9768
      @safocl9768 Před 17 dny

      при чем тут манглирование? чо за дичь про аби что от автора видео, что в посте? - в чем нестабильный аби в с++ ? хоть однажды пример можно?

  • @f3arning
    @f3arning Před 20 dny +6

    c++ вполне классно живёт на голом железе, без директив всяких и ужимок, только линкеру спеку указать и стл пашет нормально даже

  • @madnessandescapism
    @madnessandescapism Před 17 dny +7

    Жалко, что автор вместо того чтобы поговорить о реальных проблемах rust, привел кучу устаревших или невалидных аргументов, а я уже было надеялся что у кого-то есть взвешанная точка зрения. С кроссплатформенностью у rust всё отлично, просто писать надо на rust, а не на ассемблеровских вставках - для этого есть hal. Проблемы есть с эргономикой, особенно если говорить про экосистему, но фанаты rust это не признают, а хейтеры - обижены на borrow checker и дальше него обычно не продвигаются.

    • @mikeofs1304
      @mikeofs1304 Před 16 dny +3

      автор просто не понимает что такое LLVM, и собс за счет него раст с кроссплатформенностью справляется нормльно, и дальше будет лучше, потому что LLVM оч активно развивается.
      Про борроу чекер - мне кажется это школьники какие то о него вспотыкаются, по факту ничего там такого нет - по сути принуждение к чистоте и порядку, хороший код (который если без всякой уличной магги для каких то особенных случаев) в принципе также может выглядеть в других языках. Лайфтаймы на мой взгляд гораздо более пугающий новичков механизм - особенно когда не хоумпетпроджект, а более менее большой проект

    • @paulliaous167
      @paulliaous167 Před 12 dny

      Те же ассемблерные вставки в Rust тоже есть, если очень надо...

  • @melancholy_dream
    @melancholy_dream Před 22 dny +8

    пространные рассуждения.
    С железом плюсы прекрасно дружат. Отключение rtti и исключений не делает из плюсов С.

  • @amletfb
    @amletfb Před 20 dny +14

    К сожалению в этом видосе оказалось очень поверхностное понимание работы и архитектуры современных компиляторов, языков программирования и менеджмента разработки сложных систем. А из таких поверхностных исходных получились странные выводы, которые, так уж получается, не очень отражают действительность. За труды спасибо, но пока слушал видео пару тройку батхёртов словить пришлось.

    • @safocl9768
      @safocl9768 Před 17 dny +1

      программисты под ентот видос явно знатно фейспалмили)))

    • @safocl9768
      @safocl9768 Před 17 dny +1

      думаю сам Линус бы тож фейспалмил)))

    • @mikeofs1304
      @mikeofs1304 Před 16 dny +1

      показать бы создателям LLVM эти рассуждения))

    • @moshamiracle
      @moshamiracle Před 16 dny

      вот сама в шоке сидела от всего рассказываемого с рукой у лица, причем сама люблю, уважаю и пишу на C

  • @kuqmua755
    @kuqmua755 Před 22 dny +18

    Смысл от safe если существует блок unsafe - значит все будем писать в unsafe. Действительно, ведь в си не надо писать блоки unsafe. Как удобно. Вау

    • @user-qt5hy3vn5p
      @user-qt5hy3vn5p Před 21 dnem +11

      unsafe rust в разы более ограничен чем С. Но адептам легаси кала некогда - нужно искать сегфолт

    • @nanoqsh
      @nanoqsh Před 20 dny +1

      ​@@user-qt5hy3vn5p > unsafe в раст более ограничен
      Тут как посмотреть. unsafe на расте писать сложнее, чем просто код на си. Но зато код на сейф расте писать проще (с точки зрения обеспечения сейфти) чем на си. unsafe в расте не отключает правила алиасинга, тебе всё равно нужно следить за мутабельностью и неизменяемостью. В си всё что угодно можно менять через указатель (на самом деле даже если указатель const это валидно), разве что указатель на статические константы и на какую-то полностью рид онли память нельзя. Но сверх этого, в расте ещё и нужно писать unsafe код так, чтобы его потом можно было использовать через safe API - а этого добиться уже очень сложно, даже прогон кучи тестов через miri тебе не гарантирует что твой API нельзя как-то неправильно использовать и поломать его сейфти гарантии. В Си думать о подобных вещах не нужно, там по сути все функции неявно unsafe, просто если ты что-то сломал то сам виноват.
      Но всё же, несмотря на сложность растового unsafe-а считаю что такой подход всё же имеет куда больше преимуществ, так как делает язык универсальнее, позволяя писать на нём не только системный софт и ембед, но и более хайлевельный софт уровня Go.
      Тут уже выбор между писать всё на одном языке (пусть safe и unsafe раст различаются, всё же это один и тот же язык) или писать на Си в паре с каким-то хайлевельным сейфным языком где всё, от синтаксиса до библиотек будет разным. И тут уже выбор довольно индивидуален как кому больше нравится. Лично я не люблю учить по 20 языков чтобы делать, в общем-то, не такие уж и принципиально разные вещи

    • @MrChelovek68
      @MrChelovek68 Před 18 dny +4

      @@user-qt5hy3vn5p не смузихлебам поминать священную ошибку) раст это именно ограниченный язык.спецификация си все говорит сама. а нащет сегфолтов, они на стадии написания проги тестятся. как и утечки. смешные такие,пишут на копрокале и еще чет вякают

    • @killerboss4585
      @killerboss4585 Před 17 dny +3

      "Bad programmers worry about the code. Good programmers worry about data structures and their relationships."
      А вы продолжайте сравнивать молоток и отвёртку.

    • @safocl9768
      @safocl9768 Před 17 dny

      @@MrChelovek68 ага -- а еще в ядре линукс юзался (и возможно до сих пор) УБ как вариант оптимизации -- "работало же в предыдущих версиях gcc" -- сказал Торвальдс -- "я понимаю, что по стандарту енто УБ" продолжил он... На что ему верно пояснили гуру написания компилятора, что на то оно и УБ, что на него нельзя полагаться в поведении...

  • @TheQNigma
    @TheQNigma Před 22 dny +16

    9:57 - Я бы не сказал, что у разработчиков ядра производительность - основная причина в выборе С. Скорее причина в том, что С очень понятно транслируется в ассемблер - а это очень важно при низкоуровневой разработке. У того же С++ или Rust компилятор так жонглирует абстракциями, что то как они лягут на уровень машинного кода предсказать очень сложно. А Rust ещё jmp на ошибки в runtime в конце кода накидывает с ломаты, на каждый чих.
    13:30 - помнится в прошлом году был огромный срач в сообществе Rust потому, что разработчик модуля сериализации (serde) стал распространять его в бинарном виде, т.к. его компиляция стала занимать чуть ли не весь день! Всего то 1 модуль; библиотека! Да и С++ с boost::spirit тоже компилируется не быстро.

    • @user-cb8jr3rj7s
      @user-cb8jr3rj7s Před 22 dny +5

      си ближе к железу да, думать на си в работе с железом гораздо удобнее, чем как вы верно сказали на абстрактном с++.

    • @user-it6lj2jg8t
      @user-it6lj2jg8t Před 22 dny +3

      Я пропустил эту новость. Но странно звучит что serde компилируется весь день... Это ведь интерфейс, а не реализация.... Наверное речь о serde_derive макросе
      Да и вообще, у меня игры на bevy собираются с нуля всего 10 минут. И это всё статическая сборка.
      Помниться статическая сборка Qt приложение занимала часы..

    • @TheQNigma
      @TheQNigma Před 22 dny

      @@user-it6lj2jg8t Ну вот та конкретная драма и была из за того, что serde_derive перенесли в бинарный вид. Последнее, что я читал об этом была статья "Handling of the recent drama involving T-libs member David Tolnay" от alonely0. Это если вам будет интересно во всём этом копаться.
      Ну а про скорость компиляции... ну у меня примеры наоборот, rust оказался хуже при сборке gui приложения. Хотя я это даже в качестве аргумента не использую, ибо сильно зависит от того, что ты разрабатываешь и на какой системе собираешь. Это просто пальцем в небо )

    • @safocl9768
      @safocl9768 Před 17 dny

      @@user-cb8jr3rj7s чем же си ближе к железу чем с++? можно хоть один факт? прям раз -- вырезка из стандартов, и все бы тут же было признано -- и никаких приреканий... -- а так ентот бред про близость к железу и какие то "абстракции" с++ можно вечно нести... в чем абстракции с++ относительно си?

    • @safocl9768
      @safocl9768 Před 17 dny +1

      можно вырезку из стандарта си, в которой говорится про понятность (предсказуемость) транслируемости в асм? ну хоть строчечку?
      или под си снова понимается конкретный компилятор? если так -- то вообще нет смысла такие посты делать, поскольку компилятор енто всего лишь реализация, -- и на следующий день в нем может поменяться многое, и енто будет все тот же комиплятор си или с++ -- по ентому только важно указывать отсылки на стандарт языка -- а трансляция в асм туда не входит...

  • @mikepotanin
    @mikepotanin Před 15 dny +1

    Rust появился уже после того, как браузер mozilla был уже огромным работающим продуктом написанном в основном на плюсах. То, что Rust уже почти в нем догнал плюсы говорит о целесообразности его внедрения.

  • @safocl9768
    @safocl9768 Před 18 dny +2

    25:48 -- раскрываю невиданную скрытую тайну.... компиляторы мало сча делаются неслоёными -- и фронтенд языка там может меняться на какой угодно, и будут доступны все реализованные в бекенде архитектуры для ентих фронтендов... -- тот же gcc или clang... все перечисленные архитектуры на видео уже давным давно доступны для с++ (на сколько я осведомлён)

  • @act0r399
    @act0r399 Před 21 dnem +3

    Круто, продолжай также, ждём след видосов про линукс:)

  • @bulba1995
    @bulba1995 Před 10 dny

    Почитав комментарии узнал много нового и понял что очень мало знаю )
    Спасибо за видео и за умные комментарии.

  • @ugood
    @ugood Před 21 dnem +7

    4:14 говорят, браузеры давно обогнали операционные системы по сложности и по количеству строк кода.
    а как Вам новый язык Zig? его систему сборки уже используют в stlib и xserver.

    • @DmitriNesterov
      @DmitriNesterov Před 18 dny

      На xserver ориентироваться не стоит. Похоже, на stdlib тоже, но тут я не до конца понял, что сказал. Надо думать. Смотрите тут самый первый комментарий (должен быть про stdlib)

    • @mikeofs1304
      @mikeofs1304 Před 16 dny +2

      Браузеры , браузерами - у мелкомягкого офиса 65М. Шах и мат))

  • @Eugenij7
    @Eugenij7 Před 20 dny +2

    26:45 не соглашусь, LLVM хоть даже с питона или js, хоть даже микс из сотен языков)) вам скомпилирует ядро которое будет совместимо с **любой** архитектурой для которой вы напишите ассемблер LLVM (который даже проще СИ)

  • @user-ry5oh3qt2u
    @user-ry5oh3qt2u Před 19 dny +1

    Пример на Си без ОС точно также реализуем и на плюсах, потому что уже есть ядро. А надо код на чистом Си, без системных вызовов) Это надо будет самому сделать драйвера для монитора,консоли и т.д.

  • @ted_res
    @ted_res Před 21 dnem +6

    Ну, ABI это не совсем про код, это всё же про бинарную совместимость, то есть к примеру порядок параметров в стеке и кто этот стек потом вычишает, вызывающая функция или вызываемая. Очевидно, говоря про С, вы говорите про gcc, ведь ABI MSVC не просто отличается от gcc, но и с завидной регулярностью ломает обратную совместимость.

    • @serhiymalokhatko
      @serhiymalokhatko Před 21 dnem +1

      Ну не совсем, MSVC ABI не менялся с 2015 года, впрочем как и GCC - 2015 год. Изменения ABI не от хорошей жизни делают, обычно это и улучшение производительности и подстраивание под новые реальности.

    • @safocl9768
      @safocl9768 Před 17 dny

      @@serhiymalokhatko но к языку программирования енто какое отношение имеет?

  • @sergeyn5504
    @sergeyn5504 Před 22 dny +9

    Если бы мы в 2024 году писали бы ядро операционной системы, то на одни из нас не трепали бы языком на ютуюбе, а другие не развешивали бы уши тут же.

  • @Sneg00vik
    @Sneg00vik Před 20 dny +3

    25:32 продолжение цитаты "Если написал код на C, то будет работать везде ... херово". Если мы хотим перфоманса, а на C мы хотим перфоманса, то под каждую платформу нужно будет переписывать код. И если ещё у нас под разными платформами разные компиляторы, то здравствуйте новые UB.
    Также под платформу собирает не фронтенд компилятора, который для разных языков разный, а бэкэнд, которому пофигу на каком языке написана программа.

  • @vloboo
    @vloboo Před 17 dny +2

    Все видео пацан доказывал на примерах высосанных из пальцах, что Си благороднее Раста, а Плюсы для сравнения добавил чисто, что бы казалось объективным сравнением. Безусловно, некоторые пункты имеют долю истины, но сверху начинают такое накидывать на вентилятор, что видно, что человек не понимает даже как Си ведет себя в тех пунктах, которые он доказывает. А говорить о его компетентности в знании нюансов Раста и Плюсов даже не приходиться.

  • @kuqmua755
    @kuqmua755 Před 22 dny +4

    На счёт ОС - не согласен. "Проще делать" - чисто субъективное мнение

  • @two-spikes
    @two-spikes Před 20 dny +2

    а зачем переписывать ядро linux? пусть и будет на си

  • @gippopotamius
    @gippopotamius Před 2 dny

    На самом деле, если на С++ писать как на Си, то и результат компиляции будет практически одинаковый.
    Конечно, у этих языков есть с десяток несовместимостей, но это несущественные и решаемые мелочи.
    Оба языка позволят написсть код для микроконтроллера без библиотек и практически ассемблерных вставок.
    В общем случае С++ удобнее из за бесплатных плюшек, контроля типов, и чуть более лаконичного кода. (Пока о объектах речи нет)
    А что не так? Почему не перешли?
    А переходят, и обычно довольны.
    Дело в чуть худшей переносимости, и чуть более мутной стандартизации. Именно чуть чуть. Но сколько споров из за этого.

  • @SC6UT
    @SC6UT Před 20 dny +2

    про ансейф везде и вся рассмешил. неужто весь код ядра это доступ к железкам? что-то я сомневаюсь, что там отсутствуют какая-либо логика. такое ощущение будто ничего сложнее hello world вы не писали

    • @MrChelovek68
      @MrChelovek68 Před 18 dny

      если ты соединяешь лбой высокоуроовневый язык с сишной либой,у тя всплывет небезопасная работа с память. что на расте,что на жабе, что на шарпах. в этом плане он ничем не отличается от языков со сборщиком мусора. что оч забавно

  • @usser-0bYdldQ
    @usser-0bYdldQ Před 20 dny +1

    Шаблоны порождают IFNDR это еще хуже UB.
    Ну и вообще стандарт дырявый так как вариантов комбинаторно много.
    Пример кода, который компилируется см "delete delete" это IFNDR.
    template
    void del(T a){
    delete delete a;
    }
    int main(){return 1;}

  • @safocl9768
    @safocl9768 Před 18 dny +1

    17:45 -- а без исключений ты ичего не обрабатываешь? при ентом ты вынужден каждый раз проверять в нескольких местах условия обрабатывая возвратный код из функции... а исключения работают именно когда они выкидываются -- не надо каждый раз "прокидывать" коды ошибок -- тоесть как раз наоборот -- исключения экономят рантайм

  • @eternalemperor
    @eternalemperor Před 20 dny

    привет!
    спасибо за ролик, хорошо подсветил интуитивно просящиеся вещи )
    интересно твое мнение (в том числе по тематике видео) про zig.
    сам пока, к сожалению, его не пощупал, но на мой взгляд выглядит интересным

  • @rtfdfhjrggth4220
    @rtfdfhjrggth4220 Před 16 dny +2

    Ядро линукс используется преимущественно на смартфонах и wi-fi роутерах, некотором сетевом оборудовании. Серверов миллионы, но девайсов и смартфонов МИЛЛИАРДЫ. В них особенно могут быть критичны размеры ядра и производительность. Си и только си. Какой еще Раст? С++ да, то Раст это усего лишь еще один убийца С++, не более.

    • @vitall789
      @vitall789 Před 16 dny

      Раст мёртворожденный?

    • @wsxpocxeafx
      @wsxpocxeafx Před 12 dny

      @vitall789, а ты его ответу свято поверишь?

  • @safocl9768
    @safocl9768 Před 18 dny +1

    27:57 -- а где в стандарте си указано что компилятор обязан делать все построчно неотходя от приданного программистом порядка действий -- в случае когда компилятор может сделать аналогичную по логике программу?
    в ентом и проблема подобных видосов -- авторы почти никогда вообще не исследуют именно объективную сторону вопроса -- и конкретные значимые сведения

  • @safocl9768
    @safocl9768 Před 18 dny +1

    12:13 -- вот тут надо смотреть что за код сравнивается -- скорее всего там просто непомерно неравнозначный код сделан...

  • @safocl9768
    @safocl9768 Před 18 dny +2

    11:25 -- каких нафиг абстракций? можно хоть один пример? с++ вмещает в себя си -- тут вообще нечего сравнивать -- для с++ просто доступны многие оптимизации (а некоторые из них являются обязательными по стандарту) которых в си нельзя сделать. Не может код на с++ быть менее быстрым чем на си... енто антинаучно и абсурдно -- там в примере скорость компиляции, а не работы... рантайм си не может быть быстрее рантайма с++...

    • @AlexAlex-jk2tn
      @AlexAlex-jk2tn Před 16 dny

      Я смотрел код этих "бэнчмарков", там такое написано, что лучше бы я этого не видел, автор намеренно исопльзовал динамическую память, там где нужна стековая, да и сам бэнчмарк если его правильно написать выполнился бы в компайл тайме, в общем это вообще не тесты производительности, не обращайте на них внимания...

  • @kuqmua755
    @kuqmua755 Před 22 dny +1

    Более проще сделать компилятор для другой архитектуры на си и более проще словить не очевидный баг также. Это скорее костыль нежели чем преимущество

  • @DilmurodIsmailov-d6x
    @DilmurodIsmailov-d6x Před 17 dny

    Спасибо за видос. Я не супер продвинутый в линукс, но подобная утилита для скриншотов из коробки на zorin os (core edition тут как раз wayland)

  • @yuriimakalish1285
    @yuriimakalish1285 Před 9 dny

    Когда наступят 70-е и мы вернемся в каменный век, где будут 16 битовые процессоры одноядерные какой там Rust или С++, то вспомтят Pascal, там тоже можно на asm вставки писать. А может все перейдут на Fortran. Или будут писать на Basic, любителей было много. В те времена много инструкций в процессоре небыло, mmx, sse появилось только 1997, а сам процессор 32 бита 40 мгц только 1985г, до этого руками оптимизировали. Но никто не задумывается что ChatGPT 5.0 или 10.0 будет писать весь софт под ваше NULL железо, написав ему лишь пару слов. Сам напишет, оптимизирует, скампилирует, протестирует и еще установщик напишет или загрузчик на любом языке. Технологий не стоят на месте, только древние люди которым нравиться писать ручками с нуля, но не на старых машинах, а на многоядерных и многие это любят делают на asmblere куда там rust\с\с++.

  • @safocl9768
    @safocl9768 Před 18 dny

    29:02 -- а вот тут как раз таки можешь -- атомарные операции поддержаны в с++... можно как раз задать именно зависимость порядка выполнения одной части программы от другой.

  • @germanmalinovsky1719
    @germanmalinovsky1719 Před 21 dnem +4

    Скорее корректнее сравнивать Zig с С и Rust с C++? Все-таки это две разные ниши. С++ и Rust все-таки на уровень выше и там уже абстракции пригодятся. Но тема интересная, спасибо !

    • @Dmytro-Tsymbaliuk
      @Dmytro-Tsymbaliuk Před 18 dny +1

      В Zig есть свои плюшки в виде метапрограммирования, но разработчик языка при этом стремится сделать его достаточно простым, плюсы просто нечитаемые

    • @safocl9768
      @safocl9768 Před 17 dny

      а можно хоть один момент из с++ привести, где он чем то выше по абстракции относительно си?

  • @GremL1N3500
    @GremL1N3500 Před 18 dny +1

    Если адаптировать с++ и rust до написания ядра, то их придется адаптировать до С

  • @mikepotanin
    @mikepotanin Před 15 dny

    Видеоблогер: "C решает проблему биранкой совместимости!"
    Разработчики и пользователи загружаемых модулей ядра линукс: "Да ну???"

  • @mikepotanin
    @mikepotanin Před 15 dny

    Нужна переносимость! LLVM? Нет, не слышал...

  • @vitall789
    @vitall789 Před 16 dny

    Писали бы на Ассемблере если бы не так муторно было бы, C - компромисс!

  • @deusex8576
    @deusex8576 Před 10 dny

    Кто будет переписывать бесплатно миллионы строк кода на другом языке? Все разработчики ядра будут обязаны изучить еще один язык, чтобы что? Плюсов от переписывания больших нет. А сложности на пустом месте - есть. Вот поэтому все и пишется на все том же C.

  • @emmetray9703
    @emmetray9703 Před 20 dny

    Красавчик . 100%

  • @arturerm9097
    @arturerm9097 Před 14 dny

    если ОС будет слишком толстым слоем, то получится браузер

  • @DAlexMaster
    @DAlexMaster Před 15 dny

    Вопреки утверждению автора о том, что на C++ нельзя работать на голом железе (или очень затруднительно), имею опыт запуска программ C++ на голом STM32. Запуск одинаково возможен, что на C, что на C++, однако по размеру кода, занимаемой оперативной памяти и быстродействию ситуация будет не в пользу C++. Хотя в моём случае разница не превышала 5% по быстродействию и 12% по памяти.

  • @wsxpocxeafx
    @wsxpocxeafx Před 12 dny

    10:54 А C# компилируется ещё быстрее. И что (я знаю, что C# не системный язык и вообще всё о нём знаю, речь не об этом)? Мне кажется, что это всё притянуто за уши. Я бы точно не стал выбирать системный язык только по скорости компиляции. Скорость компиляции у C будет всегда выше любого нового языка, который имеет много возможностей для написания безопасного, но при этом всё ещё быстрого кода.

    • @wsxpocxeafx
      @wsxpocxeafx Před 12 dny

      Каким боком там Go???

  • @user-cb8jr3rj7s
    @user-cb8jr3rj7s Před 22 dny +3

    Си привнес удобство в общение с машиной , стало гораздо проще организовывать ресурсы и выстраивать логику для выполнения задач, Си ближе к скорости , чем с++ и более высокоуровневые языки, си это супер середина супер баланс между человекопонятным синтаксисом и эффективностью работы.
    Все что выше си например, с++, раст, итд, это однозначно ещё большая простота в использовани, синтаксис становится ещё проще, но и цепочка посредников обеспечивающая эту простоту возрастает и в следствии этого падает производительность. кроме того реализация не всегда самая эффективная в этом упрощении синтаксиса. такие мысли.
    в любом случае си будет оставаться базовой базой до тех пор пока индустрия придерживается булевской логики.

    • @NNAKG
      @NNAKG Před 22 dny +3

      У C++ больше простота использования чем у C? У C++ синтаксис сложнее, больше ключевых слов + ООП. У него больше возможностей, но и сложней в использовании

    • @SaCorv
      @SaCorv Před 22 dny +1

      ​@@NNAKG
      у плюсов есть "встроенные" вектора и строки, что уже само по себе делает его синтаксически слаще чем стандартные си. Да, на плюсах чрезмерно много библиотек, что делает его сложнее в использовании, понимании и обучении. Однако писать что-то высокоуровневое со словарями, хэш таблицами, алгоритмами и т.д. на плюсах гораздо проще и удобнее.
      ИМХО: плюсы удобнее чем си в использовании в 60% случаев, когда нужен низкоуровневый язык, и в 95% случаев, когда нужно собрать что-нибудь прикладное. Из этого следует, что плюсы - язык более простой в использовании* (следует отличать, что не простой в плане синтаксиса (хотя и это сомнительно ввиду отсутствия ООП на сях)) чем си

    • @SaCorv
      @SaCorv Před 22 dny

      ​@@NNAKGЕсли коротко, то плюсы проще в использовании, но зачастую сложнее в синтаксисе

  • @safocl9768
    @safocl9768 Před 18 dny

    15:11 -- как раз будет многое уже доступно в с++ -- freestanding либа -- советую почитать что такое и зачем она -- лучше сразу стандарт или на цппреференсе -- и что туда сча входит в обязательном порядке.

    • @safocl9768
      @safocl9768 Před 18 dny

      и енто как раз на си пишут код, эмулируя конструкции из с++ -- даже в ядре линукс таких конструкций ну прям очень много... при ентом они делаются сильно неэффективно, поскольку си не позволяет их реализовать эффективно -- а с++ позволяет -- и компилятор в ентих моментах может делать кучи оптимизаций дополнительных

  • @igorolikov1997
    @igorolikov1997 Před 24 dny +14

    Неужели хоть 1 нормальный канал нашел по C на русском.

    • @andreevgerman1298
      @andreevgerman1298 Před 20 dny +2

      Ktotonokto можешь ещё посмотреть

    • @igorolikov1997
      @igorolikov1997 Před 20 dny

      @@andreevgerman1298 видел

    • @proletarian
      @proletarian Před 18 dny +3

      Лучший канал тот на котором хвалят твой язык)

  • @araz911
    @araz911 Před 22 dny +3

    k chertu c davay na pascal pisat

  • @andrewbondaryuk
    @andrewbondaryuk Před dnem

    17:18 syscall что делает?

  • @jp2en
    @jp2en Před 5 dny

    а с хрена нет то??? на микроконтроллеры пишу и на С++ и на расте... там нет ни каких ОС, могут быть, но чаще всего не нужны. чувак, ты грустный

  • @safocl9768
    @safocl9768 Před 18 dny

    28:29 -- простыми словами -- все что компилятор с++ делает (может делать) забортом контроля кодера -- на си пишут ручками -- при чем в точности повторяя суть ентих оптимизаций -- иначе код на си был бы вообще настолько неоптимальным по производительности, что про си бы уже давно забыли заслуженно как страшный сон.

  • @andrewduma6467
    @andrewduma6467 Před 17 dny

    Будущее за умными компиляторами (оптимизаторами) энивнэй

  • @coldmind3973
    @coldmind3973 Před 21 dnem

    Накидай вим плагинов, которыми пользуешься по приоритетности

  • @default-writer
    @default-writer Před 16 dny

    пишу на С, сделал прототип

  • @sunsunich2580
    @sunsunich2580 Před 24 dny

    Интересная тема

  • @marshall366
    @marshall366 Před 14 dny

    Какой же бред: чел вообще за компиляторы не шарит, а "ключевые" причины строятся именно на них

  • @LexGorod
    @LexGorod Před 17 dny

    9:14 я тут проверил... Война и Мир - 188(!) тысячи слов...
    т.е. строк(!) в браузере в 200 раз больше, чем слов(!) в ВиМ о_О

  • @user-fq4li4hs5y
    @user-fq4li4hs5y Před 20 dny

    Мое мнение такое, Си - это хороший язык, но устарел морально, и ему либо нужно совершенствоваться, либо искать другие инструменты. Тем самым появился раст и плюсы, но их опыта мало еще в наше время, чтобы создать что-то вроде линукса. Во всем есть плюсы и минусы
    По поводу производительности, то у rust на уровне компилятора всегда есть лишняя проверка какая-нибудь, чтобы не совершать ошибка переполнения и так далее.

  • @MrChelovek68
    @MrChelovek68 Před 18 dny

    Все просто- С это свобода и гибкость.ну на мой взгляд по кр мере

  • @safocl9768
    @safocl9768 Před 18 dny

    28:40 -- не обязательно -- нет такой гарантии в стандарте си. -- могу лишь рекомендовать к прочтению стандарты языков -- иначе будут подобные "чьи то мнения" и не более -- объективными доводами енто вообще никак нельзя назвать я считаю

    • @safocl9768
      @safocl9768 Před 18 dny

      а еще если углубиться в то, что именно аппаратура может поменять местами ход выполнения программы -- тут вообще понимаешь, что только особые команды аппаратуре дадут тебе именно тот ход выполнения, который ты хочешь видеть -- но енто увы будет сильно менее оптимальным по производительности.

  • @safocl9768
    @safocl9768 Před 18 dny

    11:34 -- для написания ОС нету рантайм библиотеки -- там будешь юзать freestanding версию либы -- или самому все сделать, но енто гемор просто дополнительный и ненужный.
    уже одалели если честно енту тему вообще поднимать -- линукс на си только по одной единственной причине -- потому что Линус Торвальдс хейтер с++ и адепт си -- больше нет никаких причин -- и тем более нет вообще никаких объективных

  • @user-wv5wj7sz2e
    @user-wv5wj7sz2e Před 13 dny

    Rust это вообще бред, а на плюсах можно писать также эффективно как на С если не использовать множественное наследование. Мне так плюсы удобнее чем С. Но Торвалд Линус предпочитает С поэтому ядро на С....

  • @Japrajah
    @Japrajah Před 18 dny

    34:27 нейронка, программисты уже не нужны.

  • @OCTAGRAM
    @OCTAGRAM Před 19 dny +1

    Выберите Аду

  • @kuqmua755
    @kuqmua755 Před 22 dny +1

    И что значит как долго код будет поддерживаться? Причем тут поддержка если у ABI только одна стабильная версия? Разве если взять за основу одну и туже версию с++ или Раст и не мигрировать их на новые версии - это вам не даст аналог "стабильного не меняющегося ABI"?

    • @user-it6lj2jg8t
      @user-it6lj2jg8t Před 22 dny +1

      Не знаю зачем стабильный ABI в монолитном ядре, где все модули статические. Но даже внешние модули должны быть собраны под конкретную версию ядра. Так что не понятно что имел ввиду автор.
      Но по поводу ABI, в расте до сих пор все библиотеки распространяются кодом, а не бмнарниками. В этом есть плюсы (маленький размер бинаря в итоге, и опции настроек), но а в минусе скорость сборки... И размер target большой

  • @sinushkin
    @sinushkin Před 19 dny

    Ну блин, почему не выделить часть кода, близкую к железу в "драйвер" и написать на С, а остальное в Rust сделать. Основная проблема - трудозатраты - работает сейчас и пусть работает.

    • @AlexAlex-jk2tn
      @AlexAlex-jk2tn Před 16 dny +1

      Вы не поверите, но бОльшая часть ядра ОС - это драйверы, так что смысл писать на расте, если 99% кода будет на Си...

    • @moshamiracle
      @moshamiracle Před 16 dny

      Так и делают, просто сейчас вот эту прослойку ядра, которую нужно писать на ассемблере целевого железа, уже и используется в других языках, которые тоже позволяют делать ассемблерные вставки. Т.е. не использовать, например, два высокоуровневых языка, как Вы написали (C и Rust), а выбрать какой-то один и спокойно это сделать, чтобы было меньше сущностей, что полезно сказывается на качестве и отладке.

  • @sauki1541
    @sauki1541 Před 20 dny

    Ну несколько я знаю мозилла уже не использует раст для своего браузерного движка. Команду которая писала на расте в итоге распустили..

    • @mikeofs1304
      @mikeofs1304 Před 16 dny

      Команда раста финансируется теперь чрез опенсорс механизм, но закидывают деньги теперь туда в том числе и Мелкомягкие.

  • @EvgenyChannel
    @EvgenyChannel Před 4 dny

    К сожалению автор несёт чушь. Проверяйте всё что он говорит, (не)приятно удивитесь. В частности, компиляторы С умеют оптимизировать код. Ну и хинт. Если вы нагородили что-то на С++ такое, что оно стало тормознее С, просто используйте С реализацию. Добиться того, чтоб С++ был тормознее С технически невозможно, потому что всегда можно взять программу на С и сказать что это С++. (мелкие хаки на темных местах стандарта, когда С код не является валидной программой на С++ не в счёт)

  • @vitall789
    @vitall789 Před 16 dny

    Кто такой Раст?

  • @kuqmua755
    @kuqmua755 Před 22 dny +21

    Причем тут не тот rust не тот c++? Причем тут их философия? Что за высосанные из пальца аргументы? Также можно и про философию с сказать

  • @cglike
    @cglike Před 20 dny

    Дайте пожалуйста исходники бенчмарков

  • @amonix4035
    @amonix4035 Před 17 dny

    Не в восторге от Rust, но аргумент против него в том что ядро firefox с большего на cpp не верный, просто они еще не все переписали.
    Что касается Си vs С++/Rust. Первый аргумент это - Си не имеет паник и исключений, а значи некий код ядра потенциально имеет меньше шансов сломать рантайм выбросив исключение или панику. Второй аргумент компилятор Си намного проще чем Cpp/Rust и уже портирован на многие архитектуры.
    Про производительность, у Cpp намного лучше компиляторы по оптимизации, их годами задрачивали но вот рантайм либа у cpp намного жирнее и в том же embedded с десятками и сотнями килобайт памяти может занимать слишком много памяти или вообщеине вылазить за доступные объемы. В тех же машинах исспользую очень много чипов, обычно там памяти может быть десятки килобайт и ни какие либы для поддержки исключений, дженериков, многпоточности и др. туда просто не помещаются. Для более мощых по памяти девайсов cpp это очевидный выбор т.к. в "любимый" Си до сих по не добавили даже модульность аля неймспейсов и удобную обработку ошибок, что на практике геморой и много мусорных строчек в прикладном коде.

    • @AlexAlex-jk2tn
      @AlexAlex-jk2tn Před 16 dny +1

      На самом деле, ваш коментарий, гораздо лучше, чем всё видео. Единственное с чем я бы поспорил, это с исключениями, они очень легко отключаются в С++, а на уровне ядра они явно будут лишними (по крайней мере на самом низком уровне). В общем исключения - не проблема, т.к. их можно отключить там, где они не нужны. А вот с тем, что компилятор Си проще (а следственно безопаснее) чем С++/Rust - это 100%.

    • @moshamiracle
      @moshamiracle Před 16 dny

      Да и про портированность на большое количество платформ уже не так. Сейчас любой производитель нового железа пишет лишь бэк под инфраструктуру llvm, а не выпиысвает полный компилятор под конкретный высокоуровневый язык. Теоретически лишь могли остаться очень специфичные старые архитектуры, под которые еще бэк не писали, но при этом там еще существует какой-то экзотический компилятор C

    • @amonix4035
      @amonix4035 Před 12 dny

      @@AlexAlex-jk2tn спасибо.

    • @deusex8576
      @deusex8576 Před 10 dny

      Они не gecko переписывают на Rust, а с нуля создают Servo

  • @rayo3914
    @rayo3914 Před 20 dny

    А в чем преимущества С# над С и С++? Вопрос не по теме

    • @ryzh6544
      @ryzh6544 Před 20 dny +5

      C# - это совсем другой язык для совсем других задач. Преимущества в том, что те "другие задачи" на нём решать легче, чем на С и С++.

  • @shirakibaka
    @shirakibaka Před 18 dny

    В коментах гении собрались

  • @usergnusmas6879
    @usergnusmas6879 Před 22 dny +1

    В с++ уже есть модули

    • @serhiymalokhatko
      @serhiymalokhatko Před 21 dnem +1

      Нет. Вернее как бы есть, но в продакшн код это еще ой как рано.

    • @tuguzT
      @tuguzT Před 20 dny

      Когда они везде нормально будут работать, отпишите

    • @ggnet-lm7pg
      @ggnet-lm7pg Před 20 dny +2

      std20 не на многих платформах поддерживается, если говорить о С, то там до сих пор С99 (или вообще С89) в большинстве случаев.
      Имхо, С и С++ нужны современные гигиеничные макросы, ну и модульную систему, конечно, доделать. Эти header guards - это отвратительно. Еще хотелось бы статическую рефлексию на уровне языка (привет С++26 experimental)

  • @kuqmua755
    @kuqmua755 Před 22 dny +1

    Стабильность ABI = стабильность багов, стабильность костылей, стабильность непроизводительных решений. Это скорее вынужденная поддержка Легаси костылей а не стабильность

    • @НоунеймНофамов
      @НоунеймНофамов Před 22 dny +2

      баги, костыли и "плохие" решения это скорее проблема прокладки между стулом и клавиатурой, а не проблема языка.

  • @safocl9768
    @safocl9768 Před 18 dny

    32:06 -- а почему не должно? можно хоть один пример?

    • @nikisik
      @nikisik Před 18 dny

      python 2 и python 3

    • @safocl9768
      @safocl9768 Před 17 dny

      @@nikisik ??? чо питон?

  • @AntiBandera
    @AntiBandera Před 21 dnem +1

    хруст ....

    • @tuguzT
      @tuguzT Před 20 dny

      Растишка

  • @als-creator
    @als-creator Před 20 dny

    на рутубе есть?

  • @recycle-bin-camp
    @recycle-bin-camp Před 8 dny

    деген

  • @Qsderto
    @Qsderto Před 22 dny +1

    Чем высокоуровнее язык, тем больше неоднозначностей в нем можно начудить, отсюда ошибки, взломы, ..итд. Мое мнение.

    • @burbilog
      @burbilog Před 22 dny +5

      на си налажать проще всего и взломов больше всего именно сишных тупых ошибок за границами массивов и проч.