LINUX.ORG.RU

типобезопасность — что это?

 


0

2

Есть такой, можно сказать, устоявшийся термин. Я призадумался, что же это может значить. Начнем с того, зачем нужны типы. Вопреки распространенному мнению, что типы нужны для того, чтобы бить обезьянам по рукам, на самом деле, типы нужны для ускорения лукапов. То есть, переменные разных типов содержаться в различных неймспейсах, сответственно, исполнитель при явном указании типа сразу знает, где ее искать, за счет этого увеличивается производительность. То, что компилятор бъет по рукам обезьяне при ошибке типа, есть лишь следствие.

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

UPD все, я понял. Это значит, тупо, отсутствие привидения типов. Вопрос закрыт.



Последнее исправление: terminator-101 (всего исправлений: 1)

На самом деле, типы нужны чтобы функции предполагающие наличие некоторых свойств своих параметров не получали их некорректными. Какой «исполнитель» и какие «неймспейсы»? Откуда процессор(исполнитель) в случае С++ знает о неймспейсах и о том что по адресу расположен int, а не double?

anonymous
()

означает строгую явную типизацию

он означает нормальную строгую явную типизацию, без всякого type erasure, сам знаешь откуда, или dynamic из с#, или еще всяких там null.

anonymous
()
Ответ на: комментарий от anonymous

в случае С++

тут пацаны о типобезопасности вещают, а ты о С++

anonymous
()
Ответ на: комментарий от tailgunner

на самом деле

...всё не так, как в реальности

... которой не существует

i-rinat ★★★★★
()
Ответ на: комментарий от anonymous

Да я эту ахинею неоднократно видел. У людей вообще нет представления, о том как работают языки. Без комментариев.

terminator-101
() автор топика

частность пречека кода обычно.

в сферическом мире(там где кони) наличие алгебры на типах делает дешевле программирование.

qulinxao ★★☆
()

То есть, переменные разных типов содержаться в различных неймспейсах,

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

Убейся уже, ебанутый!

anonymous
()
Ответ на: комментарий от terminator-101

Еще раз: Без комментариев.

Когда малограмотный ПТУшник имеет наглость высказывать мнение о Харпере, это само по себе комментарий.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

малограмотный ПТУшник

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

anonymous
()

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

anonymous
()
Ответ на: комментарий от terminator-101

Я говорю, что тут безопасность не причем, как таковая. Все идет от кнута.

безопасность-то она безопасность..

другое дело что это не серебрянная пуля, а всего-лишь защита от одного вида ошибок.

представь себе домофон.

домофон поможет для безопасности от пьяного-глупого бомжа? да поможет (вероятнее всего). но серебрянной пулей домофон не является, так же как и типобезопасность :-)

user_id_68054 ★★★★★
()
Ответ на: комментарий от terminator-101

А когда старшие товарищи у тебя таблетки сегодня отняли, они тебя головой в унитаз макали?

anonymous
()
Ответ на: комментарий от qulinxao

частность пречека кода обычно.

А что значит частность? Я так представляю. Если чекер принимает на вход строку 1+«1» у него только 2 варианта — либо попытаться привести к единому типу, либо, бросить ошибку. Есть еще варианты?

terminator-101
() автор топика

Это значит, тупо, отсутствие привидения типов.

The Ghost of Types — смотрите во всех срачиках любителей динамики vs. любителей статики!

Virtuos86 ★★★★★
()
Ответ на: комментарий от terminator-101

чекер чего?

во времена стародавние ....

....

вариантов вагон и маленькая тележка.

тип - это грубо: ограничение на возможные операции(отсюда растут АТД в которых не гарантируется sizeof и прочие implemented specific)

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

qulinxao ★★☆
()

это когда код типа безопасен и вообще пишешься типабезопасность, неуч.

qnikst ★★★★★
()

Это значит, тупо, отсутствие неявного привидения типов.

починил: потому, что явных привидений не бывает

next_time ★★★★★
()
Ответ на: комментарий от next_time

Это ты свою дурость показал.

коровы паслись на лугу.

Поправил:

несиние коровы паслись на лугу

потому что синих коров не бывает

Смотрите nexttime: дискусия о существовании зеленых коров

terminator-101
() автор топика
Ответ на: комментарий от next_time

Придурок, на уровне компилятора нет никакого явного/неявного, он либо приводит либо не приводит. Неявно — это для тебя, пользователя языка.

anonymous
()
Ответ на: комментарий от next_time

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

anonymous
()

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

Прости им, ибо не ведают, что творят. Помечу бисер что ли...

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

Динамические типы — это свойство значений языка. Значения появляются только в результате исполнения выражений. Типы значений используются при выполнении операций над значениями.

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

Сильная/слабая типизация — это мера строгости ограничений на статические типы подвыражений, которые необходимо соблюдать для корректного присваивания типа цельному выражению. Явная — когда статический тип явно прописывается рядом с выражением; неявная — когда тип можно однозначно вывести из структуры выражения. Оба этих понятия ортогональны выразительности статической системы типов.

Пожалуйста, не выгляди больше дебилом.

ilammy ★★★
()
Ответ на: комментарий от ilammy

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

terminator-101
() автор топика
Ответ на: комментарий от terminator-101

Ты ебанутый. Начисто. Прими уже свои таблетки наконец.

anonymous
()
Ответ на: комментарий от ilammy

Какие типы значений? странно это слышать от Вас. Значения — это те же самые выражения. Вычислитель вычисляет выражения, и «значение» это — всего лишь выражение, которое снова идет на вход. Разница между выражениями и значениями — это условность

anonymous
()
Ответ на: комментарий от ilammy

Что-то Вы намудрили п-ц. Сам процесс прост до безобразия. Статическая типизация сродни макровам. Прежде чем оттранслировать код, чекер проверяет синтаксис и типы по сигнатуре, если находит ошибки, он валит компиляцию, вот и все. Какие на*й значения-выражения. Если чекер либо пропускает косячные типы, либо приводит их, будет нестрогая/утиная. Это все, по-сути. Процесс может быть сложным, в несколько проходов, но это сути не меняет. Все остальное — хомячиные базворды.

anonymous
()
Ответ на: комментарий от anonymous

А эта «типобезопасность» — это как-раз, когда чекер валит все ошибки без разбора. То есть, наиболее тупой чекер является наиболее «типобезозопасным».

anonymous
()
Ответ на: комментарий от ilammy

Оба этих понятия ортогональны выразительности статической системы типов.

Только для достаточно выразительных зависимых типов неявная типизация становится невозможной.

motto
()
Ответ на: комментарий от motto

Системы типов, ага, мы верим. Только, жалко, комп про них нихера не знает.

anonymous
()
Ответ на: комментарий от terminator-101

А что значит частность? Я так представляю. Если чекер принимает на вход строку 1+«1» у него только 2 варианта — либо попытаться привести к единому типу, либо, бросить ошибку. Есть еще варианты?

третий вариант: найти подходящий operator+().

emulek
()
Ответ на: комментарий от terminator-101

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

В динамически типизированных — да, надо. Потому что там есть только один тип выражений: «Выражение». Транслятор не знает, что получится, пока исполнитель не исполнит цикл, так что проверки будет выполнять исполнитель.

ilammy ★★★
()
Ответ на: комментарий от anonymous

Если только в языке выражения являются first-class объектами.

ilammy ★★★
()
Ответ на: комментарий от anonymous

s/невозможной/алгоритмически неразрешимой/

ilammy ★★★
()
Ответ на: комментарий от anonymous

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

next_time ★★★★★
()

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

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.