Как стать автором
Обновить
-12.5
Карма
0.8
Рейтинг
Александр @Gordon01

Разработчик

  • Подписчики 28
  • Подписки 2

Применение Rust в разработке: страдания и высокий порог входа. Григорий Петров разбирается, когда этот язык необходим

unwrap on None в неосновном потоке не приводит к завершению программы.

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

Си должен умереть

А помните был такой IAR embedded compiler?)

Не под линукс и только под arm, но все же)))

Си должен умереть

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

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

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

Си должен умереть

Просто вы не понимаете что такое указатель.

Указатель в Си — это не адрес в памяти, это абстракция. Тот указатель, который передается инструкции x86 mov не имеет ничего общего с указателем в языке Си, хотя и компилируется в нее.

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

Если вы хотите сравнивать, вычитать, складывать разные указатели как числа — пишите код на ассемблере. В Си это невозможно и некорректно.

Программисты на С/С++ ошибочно полагают, что эти языки — низкоуровневые, хотя они ими не являются. https://queue.acm.org/detail.cfm?id=3212479

This is a fairly trivial example, yet a significant proportion of programmers either believe the wrong thing or are not sure. When you introduce pointers, the semantics of C become a lot more confusing. The BCPL model was fairly simple: values are words. Each word is either some data or the address of some data. Memory is a flat array of storage cells indexed by address.

The C model, in contrast, was intended to allow implementation on a variety of targets, including segmented architectures (where a pointer might be a segment ID and an offset) and even garbage-collected virtual machines. The C specification is careful to restrict valid operations on pointers to avoid problems for such systems. The response to Defect Report 2601 included the notion of pointer provenance in the definition of pointer:

"Implementations are permitted to track the origins of a bit pattern and treat those representing an indeterminate value as distinct from those representing a determined value. They may also treat pointers based on different origins as distinct even though they are bitwise identical."

Си должен умереть

Проблема в том, что они не дают никакой гарантии — и анализаторы, и санитайзеры ловят, грубо говоря, 99% случаев, а 1% всё равно остаётся. 

Если человеку нужна 100% гарантия, то он выбрал совершенно не тот язык.

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

Это более чем очевидно. Не думал, что такое нужно объяснять.

Другое дело, что у пользователей современных языков большинство этих проверок выполняется после каждого нажатия на клавишу в редакторе. И начинают работать сразу из коробки после установки одним кликом бесплатного плагина из стора, никогда не разваливаются, не падают и не отжирают 32 ГБ памяти в попытках проиндексировать 100 тысяч строк кода.

Нет «привычки». Есть понимание реальности. Вы же её не понимаете и рассказываете какие-то байки о том, что подсмотрели в замочную щёлку вместо собственного опыта.

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

Потому что они непосредственно стыкаются с железом, не? В отличие от прочих названных, где как раз C/C++ обеспечили им независимость и возможность поплёвывать свысока на мучения «холопов»?

Давайте расскажите как раст не стыкуется с железом)))

Типичная байка, будто на с/с++ только ОС и драйверы пишут.

Си должен умереть

Разбудите меня через десять лет и спросите о чем говорят Сишники и я отвечу — про разыменование нулевого указателя и прочие UB.

Скучно.

На практике, конечно, давно придуманы всякие valgrind, санитары, clangd, pvs студии и прочие штуки, которыми надо обмазаться, чтобы написать на с/с++ что-то, что проработает больше дня без падения.

Настоящая же проблема с/с++ — отсутствие средств сборки. Точнее их тысячи, но дай бог, если одно из них совместимо хотя бы с парочкой других. Над ними надстроены еще обычно проекто-специфичные самописные системы сборки, которые управляют ширпотребными системами сборки...

То же самое с остальным тулингом вокруг этих языков. В каком-нибудь вскоде официальный плагин для c/c++ довольно ограниченный и заметно хуже того экспириенса, который есть в студии с решарпером. И чтобы этот опыт улучшить надо возиться. В нашей компании ребята попробовали приспособить clangd, но за несколько месяцев НИКТО из плюс-минус сотни разработчиков так и не попробовал. Никому это не интересно, все привыкли страдать и принимать отсутствие IntelliSense как должное. Да, можно пользоваться студией или редакторами от JB, но это в случае если ты пишешь только на с/с++. Мне, например, нравится что в вскоде, как в виме или емаксе можно работать с любым языком.

Другая проблема в непортабельности исходников с/с++. Код на питоне, тайпскрипте или расте можно просто взять и запустить/собрать на любой из поддерживаемых платформ и он сразу заработает. Удачи просто собрать исходники с/с++ на новой платформе.

Так что разыменование нулевого указателя это так, мелочи.

Зачастую на отладку и тестирование программ уходит больше времени, чем на проектирование и написание самого кода. 

За все время работы с сишниками у меня сложилось впечатление что им нравится этим заниматься. Сишник/плюсовик лучше потратит несколько лет на рассказы про байки UB, священную борьбу и написание книг/статей на эту тему, вместо того чтобы взять sonar/pvs/etc и прогнать свой говнокод через него. Поговорите с любым отбитым сишником (или почитайте их в твиттере) про раст и сразу все поймете.

Ну не хотят люди жить хорошо, привыкли они так. И это не плохо. Просто так сложилось.

Сингапур — техно-утопия или авторитарный контроль

Из напрашивающегося — недорогое аэротакси

Зачем?

тревелаторы повсюду

Это город для инвалидов?

магические системы шумоподавления

Зачем? Откуда шуму взяться?

дешевая и автоматизированная доставка продуктов

Уже изобрели магазины в пешей доступности

Отсутствие проблем с парковкой, ну или робототакси.

Почему эта проблема должна возникнуть?

Что добавить?

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

Renault показала концепт летающего автомобиля, похожего на дрон

Интересно, сколько можно заработать на спекуляциях с акциями благодаря таким роликам...

Столько автоскама последнее время, грузовики Nikola и другое электробудущее. Неужели найдутся инвесторы, которые вкинутся в это...

I believe I can fly: настоящее и будущее летающих автомобилей

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

Зато они проще, надежнее, дешевле, изучены, для них готова инфраструктура, обеспечивающая максимальную эффективность и по ним могут ездить 100% транспорта экстренных служб. При всем при этом, они используются преимущественно только в развитых странах западной Европы.

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

А вертолёты не везде могут приземлится, потому что громоздки.

Небольшие вертолеты даже меньше какого-нибудь типичного SUV.

Летающим автомобилям также понадобится наземная инфраструктура, те же посадочные площадки, с которых на "обычную" дорогу еще выехать надо и доехать до точки назначения. А там бордовое и 9 баллов, 400 метров едем 10 минут.

Личный опыт лечения от коронавируса в Дании

Он действовал как герой, вы ничего не понимаете. Если бы вызвал таксиста — мог бы и его заразить.

Да и машина есть, права есть, что добру пропадать, ехать надо!

I believe I can fly: настоящее и будущее летающих автомобилей

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

Для этого уже изобрели выделенные полосы.

Спасательные и поисковые операции в труднодоступной местности станут проще.

Для этого уже изобрели вертолеты.

I believe I can fly: настоящее и будущее летающих автомобилей

Типичный инвесторский скам.

Вообще, в целом, летающие автомобили — это решение проблемы, которую никто не просил решать.

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

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

Пройдемся по пунктам мошенников:

разгрузка транспортного трафика;

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

мобильность;

Просто случайное слово

экологичное передвижение;

Летающий транспорт потребляет в несколько раз больше энергии, чем самый неэффективный вид — автомобиль

сокращение количества ДТП;

Малая авиация — самая смертельная. Логично предположить, что то же самое будет с летающими машинками

сокращение износа общественного транспорта;

Ложь. Чем больше людей пользуются ОТ, тем лучше и наоборот.

развитие системы доставок;

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

оперативность экстренных служб: медицинских, пожарных, военных;

Если нет пробок и есть выделенные полосы, проблемы не существует.

рост и развитие рабочей силы.

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

Rust — будущее инфраструктуры JavaScript

Когда наступит будущее и все изменится уже поздно будет пить боржоми

Rust — будущее инфраструктуры JavaScript

Всегда меня так веселят оголотелые староверы любители того-самого правильно.

Но потом, через 5-10 лет почему-то пишут "ой, что-то на Делфи и Паскале вакансий не найти", "ой, что-то ПХПшникам платят меньше чем доставщикам пиццы"

Rust — будущее инфраструктуры JavaScript

ноль, false, пустая строка, nil.

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

Очевидно, они ошиблись.

Rust — будущее инфраструктуры JavaScript

А вы хотя бы букварь читали? https://go.dev/tour/basics/12

А вы? Там написано что неинициализированные переменные неявно "инициализируются" каким-то рандомным значением, которое разработчики почему-то посчитали подходящим.

Это не инициализация, это присваивание переменным рандомного значения, которое ничем не лучше мусора, который си читает из неинициализированной памяти.

Это как? >An array's length is part of its type

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

A nil slice has a length and capacity of 0 and has no underlying array.

Rust — будущее инфраструктуры JavaScript

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

В го можно читать из переменных, которые не были инициализированны. Длинна неинициализированного массива — 0. Даже в TS такой дичи нет.

Го не сильно медленнее, но в разы проще.

До тех пор, пока в коде не появились неявные ошибки.

Пока, Хабр

Просто уберите кремлеботов и будет нормально

Информация

В рейтинге
1,319-й
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность