Как стать автором
Обновить
10
0.2

Full-stack web developer.

Отправить сообщение

Слабее == хуже?

Но почему то в одном надо рассматривать ситуацию, когда какой-то недотепа допускает глупую ошибку, но в другом можно на это не обращать внимание, ведь там есть слово, которое его ТОЧНО остановит.

Потому что ситуации разные. В Расте можно не писать unsafe, и определенные ошибки будет контролировать компилятор. В Си ошибку можно получить в обычном коде, неудачно выполнив небольшое изменение.

Тогда, скорее всего, можно сделать аналогично и в Rust: хранить дерево контролов деревом Rc ссылок, а остальные связи - weak ссылками.

все работает само

Язык программирования Аргентум -- это язык со сборкой мусора? Или объект хранит в себе список невладеющих ссылок? Иначе как убедится, что при удалении объекта невладеющая ссылка станет невалидной?

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

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

Ну, может вы просто умеете работать с многопоточностью :)

Я в Раст использовал sqlx -- удобно, пока не нужен аналог query builder (IQueryable<T>)

Си не прост. Прост только синтаксис Си, но не написание и рефакторинг программ, которые очень сложны. У Раста сложнее синтаксис, и сложные правила заимствования, однако это не выдуманная сложность, и ограничения, которые накладывает борроу чекер не искусственные. То, что делает борроу чекер в Расте, по-хорошему, программист на Си должен делать руками. Понятно, что большинство не делает, и оно как-то работает.

Собственно, вариантов несколько, и хороших среди них нет.

Встречный вопрос: а как это сделать на Си или на плюсах? Очевидный ответ (везде хранить указатели на контролы) не совсем правильный, потому что приводит к потенциальным use after free сценариями (собственно, поэтому на Расте это не сделать без ансейф).

Я бы сделал список или словарь контролов отдельно, и везде в дереве, подписках и accessibility метках хранил бы идентификатор контрола.

После C# писал на Rust, и немного расстроился от того, сколько ошибок многопоточности было в моем коде на C#/

Для бизнес приложений (например, джсон апишек) Rust менее удобен, чем C#, только отсутствием LINQ (ну и невозможностью рефлекшена в рантайме, но это нужно гораздо реже).

Rust выбрал стратегию определенного поведения, которая может добавлять дополнительные инструкции. Однако, там есть возможность выполнять и "сырые" операции.

Какие ресурсы проедает, например, Rust?

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

У этого же есть причина, если что, чтобы менять в одном месте и где-то случайно не забыть. Разве такая задача стоит для типов данных? (Если стоит -- всегда можно сделать алиас типа).

Открываем любой код на Rust - и он прям густо густо обвешан ну очень ценными цифрами 8, 32, 64, которые:

а) никакой полезной и нужной информации (как цифры) на самом деле не несут

Чем это принципиально отличается от int/ long / short ?

А если не более быстр, то зачем он вообще тогда нужен?

Тем, что он удобнее, избавляет от целого класса ошибок (которые все еще можно сделать в unsafe, да, я знаю), имеет современные средства в языке.

Нету. Пусть будет вместо Джавы Пайтон, суть моего комментария не в этом. Раст -- это разумный компромисс между скоростью и удобством (при условии, что человек в состоянии на нем писать).

Да, плюсы быстрее (а си еще быстрее), да, Пайтон проще, но Раст -- это возможность получить удобство, соизмеримое с Пайтоном и скорость, приближающуюся к плюсам.

Непонятно, почему Расту надо быть быстрее С++, чтобы быть лучше? Там достаточно преимуществ при сравнимой скорости. Пусть даже Раст будет в три раза медленнее плюсов -- он все равно в десятки раз быстрее джавы или пайтона.

Rust по производительности намного ближе к плюсам, чем к джаве. Если взять плюсы за единицу, то Раст будет, условно, в два раза медленнее, а Джава, условно, -- в пятьдесят.

Все это дудение про "безопасные языки" - это просто-напросто очередная манипуляция. Взять тот же веб с его бесконечными XSS'ами, CSRF'ами и так далее.

Какое отношение особенности работы браузера имеют к серверным языкам?

Только вот неписание на плюсах там отчего-то практически не помогает.

Не помогает от чего? Например, от получения доступа к серверу путем выполнения какого-то HTTP запроса помогает.

Но от ошибок в логике не помогает, да.

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

Но разве процесс проектирование не направлен на то, чтобы (в пределе) формализовать все "устные договорённости"

Формализация договоренностей - это, собственно, и есть написание кода. И описание тикета всегда условно, и всегда содержит много неявных условий. Поэтому не выйдет.

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

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

Пишет, ты сам ее себе придумываешь.

Зеланда в целом не одобряю, но чем менее важным является что-то, тем меньше от него стресса. Так что имеет смысл.

1
23 ...

Информация

В рейтинге
2 099-й
Откуда
Украина
Дата рождения
Зарегистрирован
Активность