Сильная и слабая типизация

Сильная и слабая типизация Классификация языков программирования по типу системы Строгая типизация: строгие правила набора текста, высокая вероятность ошибок компиляции  […]

Сильная и слабая типизация

  • Классификация языков программирования по типу системы

    • Строгая типизация: строгие правила набора текста, высокая вероятность ошибок компиляции 
    • Динамическая типизация: типы имеют значения, проверка типов выполняется во время выполнения 
    • Слабая типизация: более свободные правила, непредсказуемые результаты, возможность неявных преобразований 
  • История и определения

    • Барбара Лисков и Стивен Зиллес ввели термин «строгая типизация» в 1974 году 
    • К. Джексон в 1977 году описал строгую типизацию как фиксацию типов данных и коммуникационных требований 
  • Примеры «сильной» и «слабой» типизации

    • «Сильная типизация» включает безопасность типов, статическую проверку типов, безопасность памяти 
    • «Слабая типизация» может включать неявные преобразования типов, арифметику с указателями, союзы без тегов 
  • Различия в языках программирования

    • Java, Pascal, Ada, C требуют явного объявления типов, поддерживают явные преобразования 
    • C поддерживает больше неявных преобразований, но не имеет статической проверки типов 
    • Java и C# управляют обходом статической системы типов через виртуальную машину и «небезопасный контекст» 
    • Delphi устраняет ограничения системы типов Pascal 
    • Smalltalk, Ruby, Python, Self не используют статическую проверку типов, но предотвращают ошибки ввода во время выполнения 
    • Lisp и его диалекты поддерживают различные формы объявлений типов, некоторые компиляторы используют их для оптимизации 
    • Стандартные ML, F#, OCaml, Haskell, Go, Rust статически проверяют типы, но компилятор определяет тип автоматически 
    • Ассемблер не имеет проверки типов, программист должен сам убедиться в соответствии данных функциям 

Полный текст статьи:

Сильная и слабая типизация

Оставьте комментарий

Прокрутить вверх