170 похожих чатов

Читаю тут статью о синтаксисе раста и там пишут: "Программа,

написанная на Rust, не имеет информации о типах во время выполнения, так как при компиляции происходит "стирание типов". "

то есть как так?? типа как в тайпскрипте? типы только во время компиляции? наверное в чат раста лучше...

32 ответов

14 просмотров

Бред

Pavel-Shakhov (pongo) Автор вопроса

может там про какую-нибудь рефлексию идет речь?

Не знаю🤷‍♂

Типизация- это представление данных в удобном для человека виде Чтобы он использовал правильные операции над данными Для скомпилированной программы тип данных не имеет смысла

Имеет смысл как раз больше для скомпилированной программы) Без типизации можно спокойно обойтись, что и делают А при указании типов, ты даёшь команду сколько ячеек в оперативной памяти бронировать, там выигрыш по памяти огромный

Когда ты соберёшь программу- будет инфа сколько выделить памяти и тд Ну и от компилятора зависит ещё

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

Компилятор знает, под что бронирует, так как знает, под какую разрядность компилирует бинарник лол

Ясно, пусть будет так)

Оно так и есть лол

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

Чел, выебывайся в дворе своем, пожалуйста

Ой бля, начинается... 🤦‍♀ Завязывай, обиделся что-ли?))

!ро выясняет отношения и стебет без причин

комплятор не может прогнать все возможные варианты

О таргетах слышал?

нет

Вы что тут развели? Компилятор в глаза не видели и ещё о таргетах не слышали. Выделение ОЗУ одно из не многих, что есть программирование

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

Для этого используются библиотеки обычно которые информацию о типе собирают в бинарник сам

Ты конкретно о расте? В плюсах, например, тип в рантайме сохраняется, есть таблица функций, связанная с конкретным классом, на которую ссылаются экземпляры, и dynamic_cast работает опять же в рантайме

все равно ничего не мешает тебе создать какой-нибудь void поинтер и кастануть потом во что нибудь другое

Я на плюсах не писал, помню только си

И что? Это что показывает/доказывает? Кастануть приведением типов в стиле си ты можешь (хотя смысл не ясен, зачем иметь указатель на void), а вот dynamic_cast`ом - нет

И да, этот ответ четкий и без херни, которую чел выше писал

Оно разве не должно жрать производительность, кстати?

Да, считается, что это дорогая операция (относительно, конечно)

да типизация присутствует в том или ином виде во всех языках с которыми приходилось сталкиваться, даже пыха и джаваскрипт🧐

Стат типизацию можно добавить поверх языка, например через аннотации + стат анализатор, прикрученный к CI. В php например появился psalm, имеет почти все фичи TS.

Указатель это просто переменная, которая может указывать на любой участок памяти. Сам по себе указатель никак не связан в рантайме с типом, не несёт информацию о нём Возможность кастовать указатели без проверки типов (указание нужного типа в скобках) в плюсы пришла по наследию из си и вообще то использование такого приведения типов крайне не рекомендуется, и вряд ли пройдёт код ревью. Правда есть reinterpret_cast, который делает то же самое, но и его использование код ревью вряд ли пройдёт, конечно же если оно не оправдано и используется вместо других преобразований (dynamic/static cast). Необходимость reinterpret_cast это редкие кейсы, и я лет за пять написания кода на плюсах ни разу с такими не сталкивался А для преобразования типов в рантайме в плюсах используется dynamic_cast, который как раз проверяет возможность каста и кидает исключение при попытках приведения несвязанных родством типов (или возвращает nullptr, если преобразование идёт от предка к потомку) Вообще можно допустить ситуацию, что указатель на экземпляр типа А будучи жёстоко приведенным к не связанному с ним типу Б (через преобразование в си стиле, или через reinterpret_cast) позволит корректно обращаться к полям/методам объекта: если таблицы методов для объектов этих классов будут совпадать (на самом деле хз, будет ли так даже если объявления классов будут идентичны с точностью до символа). Но это будет просто читом В общем, информация о типах в рантайме в плюсах сохраняется А вот что там в расте - хз, но интересно, как они решили проблемы, если у них действительно в рантайме нет инфы

Речь идёт о структурах как в C. Там тоже происходит стирание типов. Выразились криво просто. Не суди ребят строго

В комментариях выяснили этот вопрос, автор как-то подозрительно умолк, видимо всё-таки фигню сморозил

Похожие вопросы

Обсуждают сегодня

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
короче сгенерила мне эта штука код на ассемблере: struc string val { common local .value dq .value .value: if ~val eq db val end if db 0 } fo...
Vi Chapmann Chapmann
12
Всем привет! Массив вводится с клавиатуры, кол-во элементов неизвестно, поэтому я указал arr db 100 dup(?) С нахождением максимума проблем нет, а вот минимум почему-то всегд...
En Vind Av Sorg
11
Помогите, пожалуйста, делаю программу для для подсчёта корней квадратного уравнения, знаю, что есть куча недочётов, недоработок, но основная проблема в том, что почему-то при ...
NYC
13
#include <stdio.h> int main(void) { int n; scanf("%d", &n); int digits1[n] = {0}; int digits2[n] = {0}; я не могу таким образом заранее массив нулями заполнить?
Linus
12
в сях есть множество как в питоне? для удаление дубликатов
Linus
25
читать файл максимально быстро? странный вопрос))
zamtmn
53
я про форму записи. смысл указывать что 8 байтный регистр 8 байт?
Aiwan \ (•◡•) / _bot
10
Вроде бы вопрос уже заезжанный, но тем не менее У меня есть функция menu() которая выводит набор возможных действий, а затем спрашивает у пользователя что он хотел бы сделать....
David Golovatin
3
а как бы вылезти из ИО, что то типа IO -> Ether или в какую сторону смотреть ? что то туплю
Fedor
14
Карта сайта