본문 바로가기

컴퓨터공부/Javascript

[ES6] 05. 정적타입, 동적타입

by Life & study 2023. 5. 25.
반응형

[ES6] 05. 정적타입, 동적타입

 

동적타입,

동적 타입 언어는 변수 및 함수 매개 변수의 타입이 코드 실행 중에 결정되는 언어입니다. 이는 변수의 유형이 설계 시점에 정의되는 것과 달리, 변수가 할당된 데이터나 함수에 전달되는 값에 의해 결정됩니다.
이러한 언어에서는 자료형을 선언하지 않습니다. 대신 변수는 자동으로 해당 값의 데이터 유형에 따라 동적으로 할당됩니다. 이로 인해 코드 작성이 더 빠르고 유연해지지만, 코드 실행 중 오류가 발생할 수 있습니다.
자바스크립트는 동적 타입 언어의 대표적인 예시입니다. 예를 들어 아래의 코드에서 변수 a의 타입은 문자열(string)입니다.

let a = "hello world";


하지만 같은 변수에 다른 데이터 타입을 할당하면 데이터 타입 에러가 발생합니다.

let a = "hello world";
a = 123; // error: cannot assign a number to a string


동적 타입 언어에서는 특히 협업이나 대규모 프로젝트에서 다른 개발자나 여러 모듈 간의 상호 작용을 관리하는 데 어려움이 있을 수 있습니다. 하지만 이러한 문제는 주로 타입 검사, 테스트 및 문서화 도구를 사용하여 해결됩니다.

 

동적 타입 언어는 코드 작성 및 유지관리에 있어 높은 유연성과 편리성을 제공합니다. 예를 들어 Python의 경우 다양한 자료형의 데이터를 간단하게 처리할 수 있습니다. 아래는 두 개의 숫자를 더하는 간단한 Python 예시 코드입니다.

```python
num1 = 10;
num2 = 20.5;
sum = num1 + num2;
print("The sum of", num1, "and", num2, "is", sum)
```



위 코드에서는 변수 num1과 num2의 타입이 먼저 선언되지 않았습니다. Python은 값을 할당할 때 자동으로 변수의 타입을 결정합니다. 이러한 동작 방식은 코드 작성이 매우 빠르고 직관적이며, 데이터 유형을 계속 일관되게 유지하기 어려운 실제 문제를 해결할 수 있습니다.

또한, Python은 리턴 타입을 선언하지 않습니다. 아래 예시 코드를 통해 단순한 문자열을 리턴하는 함수를 작성할 수 있습니다.

```python
def say_hello(name):
    return "Hello, " + name

print(say_hello("John"))
```



위 코드에서는 "Hello, "와 전달된 이름을 결합하여 문자열을 반환하는 함수를 작성하고 있습니다. Python은 함수의 리턴 타입을 선언하지 않기 때문에, 개발자는 어떤 데이터 타입이든 반환할 수 있습니다. 이러한 기능은 코드를 작성할 때 간편함을 제공하며, 개발자에게 타입 관련 부담을 덜어주는 장점이 있습니다.

 

정적언어 ,  예시코드

정적 타입 언어는 컴파일 시간에 타입을 확인하는 언어입니다. 이는 변수, 함수 및 클래스와 같은 엔터티가 정의될 때 해당 타입을 명시적으로 지정해야 함을 의미합니다. 이를 통해 코드 실행 중에 발생할 수 있는 일부 버그를 런타임 전에 탐지할 수 있습니다. 이는 코드의 안정성과 신뢰성을 높이며, 유지 보수가 쉬워집니다.

C++, Java, C#과 Swift와 같은 언어는 정적 타입 언어입니다. 아래는 C++의 예시 코드입니다.

```c++
#include <iostream>
using namespace std;

int main() {
  int num1 = 5;
  int num2 = 10;
  int sum = num1 + num2;
  cout << "The sum of " << num1 << " and " << num2 << " is " << sum << endl;
  return 0;
}
```



위 코드에서는 컴파일 시간에 변수 num1, num2, sum의 타입이 모두 int로 지정되어 있습니다. 이를 통해 코드 실행 중에 요구되는 타입과 일치하지 않는 문제를 사전에 방지할 수 있습니다. 또한, cout과 같은 함수가 인자로 주어진 값들이 지정된 타입에 부합하는지 확인하여 런타임 중에 발생하는 오류를 사전에 방지할 수 있습니다.

정적 타입 언어는 실행 시간 오류와 함께 유지 보수 기간 동안 수정해야 하는 유지 보수성 이슈 등을 최소화하여 프로젝트를 보다 안정적으로 관리할 수 있습니다. 그러나 더 많은 코드와 자원을 필요로 하며, 처음 개발할 때 조금 더 많은 노력을 요구할 수 있기 때문에, 개발 철학에 따라 선택할 수 있습니다.

 

 

#정적타입검사 #반정적타입언어 #동적타입검사 #동적타입언어 #타입검사 #정적팩토리 #정적vs동적 #레퍼런스타입 #정적타입(staticallytyped)언어 #동적타입(dynamicallytyped)언어 #rust #staticallytypedlanguage

 

#동적타입 ##동적타입 #동적타입검사 #동적타이핑 #동적타입언어 #정적타입검사 #반정적타입언어 #타입검사 #동적분석 #동적배열 #동적할당 #정적타이핑 #동적메모리 #동적sql #동적계획법 #동적인차트 #정적vs동적 #c#동적언어 #동적sql문 #동적결합변수

반응형

댓글