본문 바로가기
프로그래밍

Statically typed vs. Dynamically typed, 정적 타입 vs 동적 타입

by bantomak 2023. 10. 23.

정적 타입과 동적 타입(Statically typed vs. weakly typed)

정적 타입(statically-typed) 프로그래밍 언어는 컴파일 타입(compile-time)에 타입을 확인한다.

(값에 대한 형식 제약 조건을 확인 그리고 확인 과정)

반면에 동적 타입(dynamically-typed) 언어는 런타임(runtime)에 타입을 확인한다.

 

예시

정적 타입 : C, C++, Java.

동적 타입 : Perl, Ruby, Python, PHP, JavaScript.

 

The Language Cloud. Image Source : Mayank Bhatnagar

 

// C# 예제
public class Program
{
    static void Main(string[] args)
    {
        int a = 3;
        int b = 2;
        int n = 20;
        int answer = 0;
        int r = 0;
        int count = 0;

        while(n >= a)
        {
            count = n / a;
            r = n % a;
            n = (count * b) + r;
            answer += count * b;
        }

        Console.WriteLine($"result : {answer}");
    }
}

 

//JavaScript 예제
//take input from the users
let a = prompt('Enter the first variable: ');
let b = prompt('Enter the second variable: ');

//create a temporary variable
let temp;

//swap variables
temp = a;
a = b;
b = temp;

console.log(`The value of a after swapping: ${a}`);
console.log(`The value of b after swapping: ${b}`);

 

강타입과 약타입(strongly vs. weakly typed)

약타입 언어는 연관이 없는 타입 간에 암시적 형변환을 허용한다.

반면에 강타입 언어는 관련이 없는 타입 간에 암시적 형변환을 허용하지 않는다.

 

//Python 예제
var = 21;            #type assigned as int at runtime.
var = var + "dot";   #type-error, string and int cannot be concatenated.
print(var);

 

//Javascript 예제
value = 21;             
value = value + "dot";
console.log(value);
/*
This code will run without any error. As Javascript
is a weakly-typed language, it allows implicit conversion
between unrelated types.
*/

 

참고 사이트

 

Educative Answers - Trusted Answers to Developer Questions

Contributor: krishna devaki

www.educative.io

댓글