PHP는 약한 유형의 언어입니다
변수의 데이터 유형을 PHP에 선언할 필요는 없습니다.
PHP는 변수를 해당 값에 따라 올바른 데이터 유형으로 자동 변환합니다. 강력한 형식의 프로그래밍 언어에서는 변수를 사용하기 전에 변수의 형식과 이름을 선언(정의)해야 합니다.
1. 먼저 몇 가지 기본 개념을 정의하세요
프로그램 오류
갇힌 오류. 0으로 나누기, 범위를 벗어난 배열 액세스 등 Java의 트랩되지 않은 오류와 같이 프로그램이 실행을 종료하도록 합니다. 오류 후에도 실행이 계속되지만 임의의 동작이 발생할 수 있습니다. 예를 들어 C의 버퍼 오버플로, 잘못된 주소로 점프
금지된 동작
언어를 설계할 때 트랩되지 않은 모든 오류를 포함해야 하지만 트랩된 오류가 포함될 수도 있습니다.
잘 행동하고 나쁘게 행동함
잘 행동함: 프로그램 실행 중에 금지된 행동이 가능하지 않으면 잘 행동한 것입니다.
잘못된 행동: 그렇지 않으면 나쁜 행동입니다...
2 위의 개념을 바탕으로 강형과 약형, 정적 및 동적 유형을 논의해 보겠습니다.
강한 유형과 약한 유형
강한 유형 : 모든 프로그램이 제대로 작동하면 언어는 강력한 형식입니다. 즉, 금지된 동작은 불가능합니다.
weakly typed: 그렇지 않으면 약한 유형입니다. 예를 들어 C 언어의 버퍼 오버플로는 트랩된 오류, 즉 금지된 동작에 속합니다. 따라서 C는 앞서 언급한 것처럼 암시적 유형을 허용하는 것을 선호하는 등 약한 유형의 언어입니다. 전환. 예를 들어 C 언어의 int는 double로 바뀔 수 있습니다. 결과는 다음과 같습니다: 금지된 동작을 생성하기 쉽기 때문에 약한 유형이 지정됩니다.
동적, 정적 유형
정적 유형이 정적으로: 잘못 동작하는 프로그램이 컴파일 시간에 거부되면 정적으로 유형이 지정됩니다.
동적 유형 동적으로: 런타임 시 잘못된 동작이 거부되면 동적으로 유형이 지정됩니다.
3. 오해
C 언어는 int a, int b 등을 써야 한다고 생각하는데, Python은 굳이 쓸 필요가 없기 때문에(a, b를 직접 쓰면 됩니다) C는 정적이고 Python은 동적입니다. . 이러한 이해는 충분히 정확하지 않습니다. 예를 들어 Ocaml은 정적으로 유형이 지정되지만 명시적으로 작성할 필요는 없습니다. Ocaml은 정적 암시적 유형입니다.
정적 유형 지정은 두 가지 유형으로 나눌 수 있습니다.
유형이 언어 문법의 일부인 경우 유형이 컴파일 타임에 추론되면 암시적으로 유형이 지정됩니다. ML 및 Haskell
4은 다음과 같습니다.
유형 없음: Assembly
약한 유형, 정적 유형: C/C++
약한 유형, 동적 유형 검사: Perl/PHP
강한 유형, 정적 유형 검사: Java/C#
강력한 타이핑, 동적 타입 검사: Python, Scheme
정적 명시적 타이핑: Java/C
정적 암시적 타이핑: Ocaml, Haskell
위 내용은 참고용입니다!
추천 튜토리얼: PHP 비디오 튜토리얼
위 내용은 PHP는 강력한 형식의 언어인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!