Обсуждение:Типобезопасность

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Хорошая статья. Конечно, лучше указать источники на фразу о С++ (памятуя о другом обсуждении). Вот еще (немного старо?):

А ещё в тему:

(на видео была бурная реакция Stephen Kell http://www.cl.cam.ac.uk/~srk31/blog/2014/10/07/ , отшитая в блоге http://psnively.github.io/blog/2014/10/14/Curry-Howard-the-Ontological-Ultimate/ ).

Еще заметил, что в статье не упомянуто, что полностью реализовать типобезопасность на этапе компиляции невозможно, в общем случае нужна поддержка в рантайме. (Вот только не помню, где об этом читал, в англовики почему-то нет источника) РоманСузи 18:57, 26 ноября 2014 (UTC)[ответить]

Проработал источники и выяснил, что в английской была написана полнейшая демагогия и отсебятина. «Типобезопасность» нигде не рассматривается как ГРАДАЦИЯ — она рассматривается как БУЛЕВА величина: или типобезопасно (то есть контроль типов в рантайме становится не нужен), или нет. Уже четыре очень разных источника это утверждают, ещё по Аде проработать можно — наверняка пятый выйдет. То, что у них было написано про динамическую типизацию и «memory type safety» было написано без единого АИ. Я не видел ни одного источника, который бы называл динамическую систему типов «safe» или «sound» (не «strong»). Райт и Феллайзен ни коим боком не смягчили трактовку безопасности до динамических языков. Они вообще не занимались формулировкой «определения безопасной системы типов» — они исследуют возможность более простого и универсального доказательства надёжности для системы типов Хиндли-Милнера, чем предшествующие педантичные и частные. Аннотация к работе: «We present a new approach to proving type soundness for Hindley/Milner polymorphic type systems». Если кто-то хочет заявить, что их доказательство применимо и к другим системам типов, то это ещё само по себе требует доказательства. Далее, приведения нотаций «сохраняемости» и «продолжаемости» явным образом я там не нашёл. Но даже если просто взять фразу, которая была в английской статье: «прошедшая проверку типов программа никогда не „застрянет“, то есть не войдёт в неопределённое состояние, при котором никакие дальнейшие операции не возможны» — то только искуссный демагог сумеет сделать из этого вывод, что «это является свойством динамической семантики» и тем более, что «под это определение попадает множество языков». Здесь же русским по белому написано: « прошедшая проверку типов». Уже прошедшая, и не абы где, а уже в рамках системы типов с доказанной надёжностью. Короче, я переписываю русскую статью под ноль, а там глядишь и с английской поспорить наглости хватит. Arachnelis 09:13, 20 января 2015 (UTC)[ответить]

  • Ок. Но тем не менее какая-то связь должна быть между type safety и memory safety. Например, [1]. Значит, откуда-то это идёт. Чисто интуитивно, я так понимал type safety в двух ипостасях: безопасность работы с «железом» и безопасность формализации алгоритма (термины мои), то есть, программа она как бы меж двух огней. Программер может неверно кодировать «алгоритм», но ещё хуже, когда это затрагивает нижележащий уровень (если в языке это допустимо, уровень абстракции настолько дырявый). РоманСузи 10:18, 20 января 2015 (UTC)[ответить]
  • А знаете, я, наверное, не совсем прав. Если сильно типизированный язык поддерживает массивы с произвольным доступом (Pascal, SML), то проверка выхода индекса за границы может производиться только в рантайме. У Ахо-Сети-Ульмана это сказано, но я как-то проигнорировал. Arachnelis 18:24, 21 января 2015 (UTC)[ответить]

Программы, прошедшие проверку типов, не могут «сбиться с пути истинного»[править код]

В статью вставлена фраза Робина Милнера, процитированная в заголовке данной темы. Мне кажется, тут очень-очень сильно не хватает контекста или пояснений. Ведь в текущем виде фраза выглядит как полный абсурд, поскольку сильное обобщающее утверждение (не могут «сбиться с пути истинного») делается на слишком слабом для этого основании (прошедшие проверку типов). Любой специалист согласиться, что типобезопасность вовсе не гарантирует то, что программа не может «сбиться с пути истинного». У меня нет первоисточника, поэтому прошу того, у кого он есть, скорректировать фразу так, чтобы она не выглядела столь глупо. Если же этого добиться невозможно, то и смысла в приведении данной цитаты нет, её следует удалить. Евгений Мирошниченко 15:15, 4 февраля 2017 (UTC)[ответить]

Robin Milner famously said “well typed programs don’t go wrong” [Mil78]. To “go wrong” means to exhibit undefined behavior. For example, programs written in strongly statically typed programming languages cannot crash, write to random memory locations, or read past the end of a buffer. In the study of programming languages it is generally accepted that these are undesirable behaviors.

Bsivko (обс.) 15:37, 4 февраля 2017 (UTC)[ответить]

  • Что ж, я просмотрел статью, но пока не вижу, как можно скорректировать цитату так, чтобы она не выглядела глупой. Зачем вообще она нужна? Согласно ВП:Цитирование «Если нет уверенности, что именно эта цитата необходима и именно в этом месте текста, то лучше от цитирования отказаться». Евгений Мирошниченко 15:40, 4 февраля 2017 (UTC)[ответить]
    В данном случае это слоган, и к нему не следует придираться формально. Дополнительно кавычки «с пути истинного» говорят об этом. Bsivko (обс.) 15:46, 4 февраля 2017 (UTC)[ответить]
    По-моему, здесь проблема в подаче. «Робин Милнер определил рамки типобезопасности» - явно разговор идёт не о рамках. Помимо этого, доп источники говорят о «famously said», что намного лучше отражает цитату. Bsivko (обс.) 15:51, 4 февраля 2017 (UTC)[ответить]
    Википедия не знает какого-то специального понятия «слоган», нет? Если это цитата, это цитата. Второе, в статье Милнера это просто кусок фразы из абстракта статьи, «слоганом» его в источниках не называют. Зачем эта фраза нужна в статье, непонятно, поскольку сама по себе фраза не только ничего полезного не утверждает, но и утверждает нечто вредное. А по правилам, «Если нет уверенности, что именно эта цитата необходима и именно в этом месте текста, то лучше от цитирования отказаться». Евгений Мирошниченко 17:28, 4 февраля 2017 (UTC)[ответить]
    Выше ссылка на диссертацию в CS, которая начинается с этой цитаты. Оченьвидно, что цитата значима. Другой вопрос в чём она значима и как описана в контексте. Скорее всего в статью она попала из англовики, но по пути смысл и форма были обезображены. Bsivko (обс.) 21:21, 4 февраля 2017 (UTC)[ответить]