Что?
за что не любишь?
Есть же раст, зачем си?
А за что любить? Где его использовать то можно? Он не нужен. Для переносимости - Java, для обычного кода - ассемблер, для скриптов - Python. В этом мире нет места для С, это худший язык.
раст это не олдскул
Вот это тоже уважаю. Пусть даже Раст, лишь бы не С.
😁 Олдскул это ассемблер.
Си это ассемблер
Так ассемблер есть. Код на С не перенести с одного МК на другой по нормальному, зачем он мне нужен тогда?
Обоснуй
как ты к такому пришёл
Си это самый близкий к архитектуре компьютера ЯП
Уже давно это не так.
Нет, ассемблер ближе.
ты там делаешь макросы. Си это и есть те самые макросы.
си тоже переносимый же...
Во первых, нет, во вторых, это не делает его ассемблером
Эммм нет. Мои макросы всего лишь макросы, Си это полноценный язык со своим стандартом и рантаймом
А что делает ассемблер ассемблером?
Он не переносимый, он ТИПА переносимый, в кавычках. Чтобы так код перенести по-нормальному, надо делать так: Вот такие, как ты, никогда не писали на С переносимый код, поэтому так легко об этом заявляете. А этот человек попробовал на С написать переносимый код, и что? Переписывал весь свой проект на 10+ архитектур, тупо переписывал один и тот же код на 10+ архитектур в течение 12 лет. Переносимый?
А это не код на си, это код на асм.
70% на С, и всего 20% на ассемблере.
Совершенно верно. Мы сейчас имеем тупо 6 одинаковых инструментов: C#, C, Java, ассемблер, Rust, Go Все они отлично взаимозаменяемы на 90% задач. Так по какому критерию выбирать? Правильно! Любишь\не любишь. Вот и всё.
Ты взял либу, основная цель которой — сложить в неё асм и спокойно дёргать всякое, больше ассемблера не касаясь. Либа состоит из затычек на асме, они непереносимы как раз потому что на асме. Сишный код переносим. Ну и конечно, сишный код, который использует либу, переносим тоже. И не сишный тоже.
Этот вопрос решается раз и навсегда так - сможешь перенести какую-то Windows программу на С, на ARM/PIC/AVR/Linux?
в случае асма дело уже пойдет не в сторону "перенести", в сторону "написать заново"
А в случае с С? Не заново писать будешь?
Возможность делать любые операции, которые позволяет выполнять целевая машина, с помощью исполнения непосредственно её инструкций, полный контроль выходного файла
Можно я тебе сейчас на GitHub скину ссылку проекта, скомпилируешь мне этот проект на ARM? Давно мечтал. А то тут такие возможности внеземные открылись.
мне кажется не правильно трактуешь слово "перенести".
А как его надо трактовать?
У тебя нет арм-устройств :-P И да, Айван меня опередил, скомпилировать != перенести. Точно так же, как перенести != переписать.
уж точно не так: скопировал исходники, изменил целевую архитектуру и готово
основные функции алогоритма остаются без изменения. добавляются правятся те участки кода, которые зависят от архиетктуры/ОС (не знаю только что в таком случае надо менять, не занимался этим). примерно так представляю "перенести". в случае асма переписывать надо ВСЕ, особенно алгорит, заново его отлаживать итд
Шикарно, осталось только найти такой проект, который состоит 90% из какого-то арифметического алгоритма, и готово, мы имеем переносимый С. Подумаешь, всего-лишь большая часть любого большого проекта отвалится и не будет переносима, но зато плюсики и минусики не надо будет менять!
жаба как минимум не запустится на iOS, а сишный код без проблем компилируется в deb
deb - это ЗИП архив если чо. Со специальной структурой директорий и файлов внутри
ну, внутри бинарник
Могут быть и текстовые файлы. Майкрософт так любит listфайлы в /etc/apt/ ложить
а есть какой-то ЯП, который не нужно переносить для разных архитектур?
Конечно, есть. Dart, Java, C# (на любые архитектуры, где есть Windows или Linux).
а как ты libc так перенесешь?
ты ещё один забыл, который мой любимый
Kotlin ещё есть.
и ещё вопрос: а для чего делать код, который будет работать в разных архитектурах?
Я откуда знаю? У Сишников спроси.
Сишники пишут код под Юникс
Ну, как минимум ты оскорбил тех самых любителей MSVC, меня это радует. Всё, что Сишников задевает - меня радует.
что с тобой сделали сишники?
Это дурачьё мне в чате нервы весь день портит.
аааа. Тогда ясно.
а какой ЯВУ имеет противоположный эффект?
Мне кажется единственный язык, с которым Си может конкурировать, это чистый асм
любой. зависит от восприятия
отлично. тогда можно сказать, что сишка делает актуальным написание кода на асм
тогда как это согласуется этим?
Поэтому товарищ и скалится)
компиляторщики потратили уйму человеко-часов на ресерч и реализацию оптимизаций. порой компилируешь с O3 и не понимаешь, почему именно так оно эффективнее. а потом оказывается, что по модели стоимости именно в таком порядке инструкции подавать. мне что, эту модель в голове держать все время? она довольно громоздкая
Удивительно, как много мозгов надо, чтобы заоптимизировать лучше компилятора. Прям на О3 не понимаешь, прям ну так всё сложно там.
не всегда, но случалось
Случалось??? Такого не может быть, ведь компилятор умнее тебя!
я про то, что ты считаешь что сишка делает актуальным и неактульным одновременно написание кода на асм
да. для меня это неактуально, потому что я читал конкретные ресерчи, почему та или иная вещь в бэкэнде компилятора сделана именно так но кто-то, как советский биполярник, все эти абстракции и переносимость кода в гробу видел
Так это ещё и сложно, зачем об этом думать. К тому же, для этого надо изучать чужие труды по оптимизации на ассемблере, а там ВООБЩЕ жесть. Даже от выхлопа компилятора на О3 глаза на лоб лезут, настолько там непонятные секретные зашифрованные инструкции. Так что лучше туда не лезть 😮
Обсуждают сегодня