Строгая типизация
Строгая типизация обычно означает, что язык программирования задает некоторые ограничения на смешение операций над разными типами данных.
Это один из наиболее противоречивых терминов в области типизации, так как он не имеет одного общепринятого значения, и разные авторы используют его в разных значениях. Ниже приведены наиболее популярные определения.
- в языке со строгой типизацией запрещены изменения типа переменной в течение времени ее жизни;
- язык со строгой типизацией проверяет возможность возникновения ошибки типизации перед выполнением каждого оператора и в случае возникновения ошибки гарантирует возникновение соответствующего исключения или определенной ошибки. Альтернативой является простое выполнение оператора и неопределенное поведение (вплоть до аварийного завершения программы) в случае возникновения ошибки;
- в языке со строгой типизацией запрещены преобразования типов данных;
- в языке со строгой типизацией разрешены только явные преобразования типов данных;
- язык со строгой типизацией не имеет встроенного способа избежать системы контроля типов (например, предоставления разработчику непосредственного доступа к низкоуровневому представлению данных);
- язык со строгой типизацией должен иметь развитую высокоспециализированную систему типов данных с составными типами данных. Альтернативой являются системы типов, состоящие всего лишь из нескольких скалярных типов.
Строгая типизация является противоположностью нестрогой типизации.
- A+
- ABAP
- Ada (диалекты: Ada 2005, Ada 2012, Ada 83, Ada 95, SPARK)
- Agda
- Baltie
-
BARSIC
-
BARSIC
- BARSIC 10.65
- BARSIC 10.66
- BARSIC 10.67
- BARSIC 10.68
- BARSIC 10.69
- BARSIC 10.70
- BARSIC 10.71
- BARSIC 10.72
- BARSIC 10.73
- BARSIC 10.74
- BARSIC 10.75
- BARSIC 10.76
- BARSIC 10.77
- BARSIC 10.78
- BARSIC 10.79
- BARSIC 10.80
- BARSIC 10.81
- BARSIC 10.82
- BARSIC 10.83
- BARSIC 10.84
- BARSIC 10.85
- BARSIC 10.86
- BARSIC 10.87
- BARSIC 10.88
- BARSIC 10.89
- BARSIC 10.90
- BARSIC 10.91
- BARSIC 10.92
- BARSIC 10.93
- BARSIC 10.94
- BARSIC 10.95
- BARSIC 10.96
- BARSIC 10.97
- BARSIC 10.98
- BARSIC 10.99
- BARSIC 11.00
- BARSIC 11.01
- BARSIC 11.02
- BARSIC 11.03
- BARSIC 11.04
- BARSIC 11.05
- BARSIC 11.06
- BARSIC 11.07
- BARSIC 11.08
- BARSIC 11.09
- BARSIC 11.10
- BARSIC 11.11
- BARSIC 11.12
- BARSIC 11.13
- BARSIC 11.14
- BARSIC 11.15
- BARSIC 11.16
- BARSIC 11.17
- BARSIC 11.18
- BARSIC 11.19
- BARSIC 11.20
- BARSIC 11.21
- BARSIC 11.22
- BARSIC 11.23
-
BARSIC
- C# (диалекты: Cω, ECMA-334, ISO/IEC 23270:2003, Polyphonic C#)
-
C++
(диалекты:
C++03,
C++11,
C++98)
- Acorn C/C++
- Borland C++ Builder
-
Digital Mars C/C++
- Digital Mars C/C++ 8.0
- Digital Mars C/C++ 8.10
- Digital Mars C/C++ 8.12
- Digital Mars C/C++ 8.13
- Digital Mars C/C++ 8.15
- Digital Mars C/C++ 8.17
- Digital Mars C/C++ 8.18
- Digital Mars C/C++ 8.18A
- Digital Mars C/C++ 8.18C
- Digital Mars C/C++ 8.18D
- Digital Mars C/C++ 8.18E
- Digital Mars C/C++ 8.20
- Digital Mars C/C++ 8.22
- Digital Mars C/C++ 8.23
- Digital Mars C/C++ 8.25
- Digital Mars C/C++ 8.26
- Digital Mars C/C++ 8.27
- Digital Mars C/C++ 8.28
- Digital Mars C/C++ 8.29
- Digital Mars C/C++ 8.30
- Digital Mars C/C++ 8.31
- Digital Mars C/C++ 8.32
- Digital Mars C/C++ 8.33
- Digital Mars C/C++ 8.34
- Digital Mars C/C++ 8.35
- Digital Mars C/C++ 8.36
- Digital Mars C/C++ 8.37
- Digital Mars C/C++ 8.38
- Digital Mars C/C++ 8.39
- Digital Mars C/C++ 8.40
- Digital Mars C/C++ 8.41
- Digital Mars C/C++ 8.42
- Digital Mars C/C++ 8.43
- Digital Mars C/C++ 8.44
- Digital Mars C/C++ 8.45
- Digital Mars C/C++ 8.46
- Digital Mars C/C++ 8.47
- Digital Mars C/C++ 8.48
- Digital Mars C/C++ 8.49
- Digital Mars C/C++ 8.50
- Intel C/C++
- MIPSpro C/C++
- Microsoft Visual C++
- Open Watcom C/C++
- Open64 C/C++
- PGI C++ Workstation
- Sun Studio C/C++
- Watcom C/C++
- g++
- COBOL
- Cyclone
- D
- Dylan
- Eiffel
- Erlang
- Euphoria (диалекты: orac)
- F#
- Factor
- FORTRAN (диалекты: F, FORTRAN 66, FORTRAN 77, Fortran 2003, Fortran 2008, Fortran 90, Fortran 95, High Performance Fortran)
- Go
- Groovy
-
Haskell
(диалекты:
Haskell 98,
O'Haskell)
- GHC
- Gofer
- HBI и HBC
- Haskell++
- Helium
- Hugs
- Hugs98 for .NET
- Jaskell
- Jhc
- O'Hugs
- Template Haskell
- YHC
- Yale Haskell
-
nhc98
- nhc98 1.04
- nhc98 1.06
- nhc98 1.08
- nhc98 1.10
- nhc98 1.12
- nhc98 1.14
- nhc98 1.14a
- nhc98 1.16
- nhc98 1.18
- nhc98 pre-release 1
- nhc98 pre-release 10
- nhc98 pre-release 11
- nhc98 pre-release 12
- nhc98 pre-release 13
- nhc98 pre-release 14
- nhc98 pre-release 15
- nhc98 pre-release 16
- nhc98 pre-release 17
- nhc98 pre-release 18
- nhc98 pre-release 19
- nhc98 pre-release 2
- nhc98 pre-release 3
- nhc98 pre-release 4
- nhc98 pre-release 5
- nhc98 pre-release 6
- nhc98 pre-release 7
- nhc98 pre-release 8
- nhc98 pre-release 9
- nhc98 release 1.00
- nhc98 release 1.02
- Icon (диалекты: Extended Icon)
- J
- Java
- Limbo
- Mercury
- Mesa
- Miranda
-
ML
(диалекты:
CAML,
Standard ML)
- Caml Light
- Caml Special Light
- Dependent ML
- Edinburgh ML
- Extended ML
- GAML
- HaMLet
- HaMLet S
- Heavy CAML
- Lazy ML
- ML Kit
- MLj
- MLton
- MOSCOW ML
- MicroML
-
Objective CAML
- Objective Caml 1.00
- Objective Caml 1.01
- Objective Caml 1.02
- Objective Caml 1.03
- Objective Caml 1.04
- Objective Caml 1.05
- Objective Caml 1.06
- Objective Caml 1.07
- Objective Caml 2.00
- Objective Caml 2.01
- Objective Caml 2.02
- Objective Caml 2.03
- Objective Caml 2.04
- Objective Caml 3.00
- Objective Caml 3.01
- Objective Caml 3.02
- Objective Caml 3.03 ALPHA
- Objective Caml 3.04
- Objective Caml 3.05
- Objective Caml 3.06
- Objective Caml 3.07
- Objective Caml 3.08.0
- Objective Caml 3.08.1
- Objective Caml 3.08.2
- Objective Caml 3.08.3
- Objective Caml 3.08.4
- Objective Caml 3.09.0
- Objective Caml 3.09.1
- Objective Caml 3.09.2
- Objective Caml 3.09.3
- Objective Caml 3.10.0
- Objective Caml 3.10.2
- Poly/ML
- SML#
- SML.NET
-
SML/NJ
- SML/NJ 110.41
- SML/NJ 110.43
- SML/NJ 110.40
- SML/NJ 110.42
- SML/NJ 110.44
- SML/NJ 110.45
- SML/NJ 110.46
- SML/NJ 110.47
- SML/NJ 110.48
- SML/NJ 110.49
- SML/NJ 110.50
- SML/NJ 110.51
- SML/NJ 110.52
- SML/NJ 110.53
- SML/NJ 110.54
- SML/NJ 110.55
- SML/NJ 110.56
- SML/NJ 110.57
- SML/NJ 110.58
- SML/NJ 110.59
- SML/NJ 110.60
- SML/NJ 110.61
- SML/NJ 110.62
- SML/NJ 110.63
- SML/NJ 110.63.1
- SML/NJ 110.63.2
- SML/NJ 110.64
- SML/NJ 110.65
- SML/NJ 110.69
- SMLtoJs
- Successor ML
- TILT
- sml2c
- Modula (диалекты: Modula-2, Modula-2+, Modula-3, Objective Modula-2)
- Nemerle
- Nimrod
- Oberon (диалекты: Active Oberon, Component Pascal, Oberon, Oberon-2, Zonnon)
- Objeck
- Objective-C
- Opa
- Oz (диалекты: Mozart)
-
Pascal
(диалекты:
Extended Pascal,
Object Pascal,
PASCAL-XSC,
Standard Pascal)
- Borland Delphi
- Borland Pascal
- Free Pascal
- GNU Pascal
- HP Pascal
- HiSoft Pascal
- IP Pascal
- Irie Pascal
-
Pascal ABC
- Pascal ABC 1.7
- Pascal ABC 1.8
- Pascal ABC 1.9
- Pascal ABC 2.0
- Pascal ABC 2.1
- Pascal ABC 2.2
- Pascal ABC 2.3
- Pascal ABC 2.4
- Pascal ABC 2.5
- Pascal ABC 2.5.3
- Pascal ABC 2.6
- Pascal ABC 2.6.2
- Pascal ABC 2.6.3
- Pascal ABC 2.6.4
- Pascal ABC 2.6.5
- Pascal ABC 2.7
- Pascal ABC 2.7.2
- Pascal ABC 2.7.3
- Pascal ABC 2.7.4
- Pascal ABC 3.0
- Pascal-XT
- PascalABC.NET
- Prospero Extended Pascal
- Turbo Pascal
- UCSD Pascal
- Virtual Pascal
- PL/B
- PL/C
- PowerShell
-
Prolog
(диалекты:
Edinburgh Prolog,
ISO Prolog,
Strawberry Prolog)
- Arity Prolog
- Arity/Prolog32
-
B-Prolog
- B-Prolog 1.0
- B-Prolog 1.2
- B-Prolog 1.5
- B-Prolog 1.6
- B-Prolog 2.0
- B-Prolog 2.1
- B-Prolog 3.0
- B-Prolog 3.1
- B-Prolog 3.2
- B-Prolog 4.0
- B-Prolog 5.0
- B-Prolog 5.0-a
- B-Prolog 5.0-b
- B-Prolog 6.0
- B-Prolog 6.0 beta
- B-Prolog 6.1
- B-Prolog 6.2
- B-Prolog 6.4
- B-Prolog 6.5
- B-Prolog 6.6
- B-Prolog 6.7
- B-Prolog 6.7-1
- B-Prolog 6.7-3
- B-Prolog 6.8
- B-Prolog 6.9
- B-Prolog 7.0
- B-Prolog 7.1beta4
- B-Prolog 7.4-3
- B-Prolog 8.0
- BinProlog
- Brain Aid Prolog
- Ciao Prolog
- CxProlog
- ECLiPSe CLP
- EZY Prolog
- GNU Prolog
- IF/Prolog
- JIProlog
- K-Prolog
- MINERVA
- Open Prolog
- PDC/Turbo Prolog
- Poplog (Prolog)
- Qu-Prolog
- SICStus Prolog
- SWI-Prolog
- Trinc-Prolog
- Visual Prolog
- YAP
- Python
- Ruby
- S-lang
-
Scala
-
Scala for JVM
- Scala 1.0.0-b2
- Scala 1.0.0-b4
- Scala 1.0.0-b5
- Scala 1.0.0-b6
- Scala 1.0.0-b8
- Scala 1.1.0-b1
- Scala 1.1.0-b3
- Scala 1.1.1.0
- Scala 1.1.1.3
- Scala 1.2.0.0
- Scala 1.2.0.1
- Scala 1.3.0.10
- Scala 1.3.0.2
- Scala 1.3.0.3
- Scala 1.3.0.4
- Scala 1.3.0.7
- Scala 1.3.0.9
- Scala 1.4.0.0
- Scala 1.4.0.1
- Scala 1.4.0.2
- Scala 1.4.0.3
- Scala 1.4.0.4
- Scala 2.0.0
- Scala 2.1.0
- Scala 2.1.1
- Scala 2.1.2
- Scala 2.1.3
- Scala 2.1.4
- Scala 2.1.5
- Scala 2.1.6
- Scala 2.1.7
- Scala 2.1.8
- Scala 2.2.0
- Scala 2.3.0
- Scala 2.3.1
- Scala 2.3.2
- Scala 2.3.3
- Scala 2.4.0-final
- Scala 2.5.0-final
- Scala 2.5.1-final
- Scala 2.6.0-final
- Scala 2.7.7-final
- Scala 2.8.0-final
-
Scala for JVM
- Seed7
- Sparkel
- SQL (диалекты: T-SQL)
- Vala
- X10
- Глагол