The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Локальная root-уязвимость в подсистеме inotify ядра Linux"
Отправлено Ordu, 05-Авг-17 22:37 
> Смогли бы... Если пришли к расту, предварительно изучив ассемблер и поработав год-другой
> на си (и потыкавшись в несколько прежних "серебряных пуль"). Но они
> ж напрямую норовят лезть, и те вещи, который для сишника очевидны,
> относят к магии компилятора.

Я не могу говорить определённо в силу отсутствия фактов -- раст действительно молодой язык, -- но всё же мне кажется, что растового понимания указателей, ссылок и памяти вполне достаточно для того, чтобы реально понимать происходящее. В том смысле, что можно изучать как это всё работает, кувыркаясь с C и заглядывая в асм код, и создать в своей голове понимание достойное какого-нибудь там Линуса Торвальдса, а можно достигнуть того же самого, заменив C на rust.

Rust реально очень недалеко ушёл от C в том смысле, что именно он делает за программиста. Он далеко ушёл в объёмах того, что он _не_позволяет_ делать программисту. Правда это с моей точки зрения, то есть с точки зрения человека, который многие вещи давным давно считает самоочевидными и не заслуживающими внимания. Эти вещи при этом могут быть неочевидными и требующими весьма пристального внимания в процессе обучения.

> прежних "серебряных пуль"

Мне не очень нравится сравнение rust'а с серебряной пулей. Мне он больше напоминает серебряную очередь из пулемёта. В том смысле, что там нельзя выделать какую-то одну идею, которая может претендовать на роль серебряной пули, там очень много чего есть, начиная естественно с системы типов, продолжая, например, типами Result и Carrier для структурной обработки ошибок, и заканчивая тем как организован процесс исследования путей дальнейшего развития rust'а, разработка rust'а и его документирование. Не последнюю роль играет и пакетный менагер при rust: одна из вещей, которую людям приходящим из C/C++ приходится менять в своей голове, для того чтобы освоить rust -- это отношение к депендансам. В C/C++ принято всё писать вручную, подключая дополнительные библиотеки только тогда, когда это сэкономит больше недели напряжённого кодинга, иначе овчинка выделки не стоит. В rust'е я могу засунуть в депендансы пакет содержащий один макрос, который я бы сам написал за час-два, и нисколько не париться на этот счёт. Излишняя увлечённость тем, чтобы писать максимум своими руками, тоже ведёт к повышению количества ошибок.

> Раст ещё молод, чтобы это было с ним на практике видно, но
> у нас уже есть PHP, Python, Javascript и Java - там
> очень наглядно, что используемый язык на количество ошибок влияет очень слабо.

Я не уверен, что такое сравнение имеет смысл, без глубокой рефлексии на предмет того, чего пытались достичь, отливая ту или иную серебряную пулю, что они получили на самом деле и что было упущено, какие ошибки были совершены, что пуля оказалась не серебряной.
Да, все предыдущие попытки сделать более безопасный язык оказались провальными, из чего напрашивается сделать вывод по индукции, что и все будущие ошибки кончат тем же. Но из этого напрашивается ещё один вывод: не стоит даже заморачиваться разрабатывать новые языки, ни в практическом плане, ни в теоретическом. А это уже пахнет для меня махровым консерватизмом и всепроникающей духовностью. И я вижу единственный способ примирить логику с обонянием: считать что индукция в данном случае -- неверный способ рассуждений. В конце-концов, индукция стопроцентов работает только в математике, в виде матиндукции. Даже в физике, которая ближе всего остального к математике, индукция работает не всегда, и иногда выясняется, что уже открытые законы физики надо исправлять. Нассим Талеб даже своего Чёрного Лебедя написал специально для того, чтобы обозначить проблему. Поэтому я не вижу ничего плохого в том, чтобы иногда положить на индукцию с прибором.

А если я кладу на индукцию с прибором, то rust -- это лучший сегодняшний кандидат на создание безопасной замены для C. Более того, я ужасно раздасадован самонадеянными разработчиками D, которые свой язык назвали этой самой буквой. Потому что если глянуть на последовательность
B -> C -> C++ -> ???,
то rust отлично вписывается на роль того, кого надо было бы поставить следом за C++, если рассмотреть C++ как процесс выполнения инкремента. Но эти любители высокоуровневого кодинга всё испортили. С другой стороны ржавчина, корродирующая мозги людей так, что вылезает наружу и начинает корродировать[1] всё остальное, вплоть до ls[2], тоже довольно метафорична. Меня это тоже заразило, я тоже сижу и переписываю избранную мною C'шную программу на rust -- это настолько fun, что меня даже не волнует бессмысленность этого процесса и ненужность программы.

[1] https://github.com/jameysharp/corrode
[2] https://the.exa.website/

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру