정적 타입 언어 (Static Typed Language)

김동환·2023년 8월 23일
0

개발자 이야기

목록 보기
5/9
post-thumbnail

정적 타입 언어(Static Typed Language)란

  • Static Typed Language(정적 타입 언어)는 프로그램의 타입을 컴파일 시간에 검사하는 프로그래밍 언어를 말한다. 실행 전에 변수의 타입이 결정되고, 그 후 변경할 수 없다는 것을 의미한다.
  • 컴파일러가 코드를 검사하면서 타입 에러를 발견하면 컴파일을 중단하는데, 이렇게 하면 실행 시간에 발생할 수 있는 오류를 미리 방지할 수 있다. 이러한 특성은 코드의 안정성을 증대시킨다.
  • 정적 타입 언어는 일반적으로 동적 타입 언어보다 더 빠른 실행 속도를 가진다. 컴파일러가 모든 변수의 타입을 알고 있기 때문에 메모리 할당과 기계 코드 생성 등에서 최적화가 가능하기 때문이다.
  • 정적타이핑은 코드 자체에서 데이터 구조와 함수의 예상 입력/출력 등을 명확하게 알려주므로 다른 개발자들이 코드를 이해하고 유지보수하는데 도움이 될 수 있다.
  • 정적타임 체킹으로 인해 IDE와 같은 개발 툴들이 더 강력한 기능들(예: 자동완성, 리팩토링 지원)을 제공할 수 있게 되므로 가독성과 유지보수성 역시 증대된다.
  • 대규모 어플리케이션 개발에서는 주로 정적 타입 언어가 사용된다.

1. C

C는 1972년 데니스 리치(Dennis Ritchie)와 켄 톰슨(Ken Thompson)에 의해서 개발된 고급 프로그래밍 언어다. C의 특징은 다음과 같다.

  • Low-level 언어로, 하드웨어 제어, 메모리 관리 등을 할 수 있음
  • 표준 라이브러리가 제공되지 않아서 다른 라이브러리에 의존해야 함
  • 현재는 다른 언어들에 비해 오래된 언어이기 때문에, 많은 라이브러리 및 프레임워크가 존재함

2. C++

C++는 C 언어를 기반으로 개발된 객체 지향 프로그래밍 언어다. C++의 특징은 다음과 같다.

  • 객체 지향 언어로서 클래스를 사용하여 객체를 생성하고 관리함
  • 다중 상속을 지원하며, 템플릿, 예외 처리 등의 기능이 있음
  • 객체 지향적인 프로그래밍 패러다임과 함께 임베디드 시스템, 네트워크 장비, 그래픽 라이브러리 등 많은 분야에서 사용됨

3. Java

Java는 1991년 제임스 고슬링(James Gosling)과 Sun Microsystems에서 만들어진 객체 지향 프로그래밍 언어다. Java의 특징은 다음과 같다.

  • 객체 지향 언어로서, 메모리 관리를 Garbage Collection이 담당함
  • 운영체제에 독립적이므로 한 번의 컴파일로 어떤 운영체제에서든 실행 가능
  • 네트워크 서버, 모바일 애플리케이션, 빅데이터 분석 등 다양한 분야에서 사용됨

4. Kotlin

Kotlin은 2011년 JetBrains에서 발표한 정적 타입의 객체 지향 프로그래밍 언어다. Kotlin의 특징은 다음과 같다.

  • Java와 100% 호환되므로 Java 코드와 함께 사용 가능
  • NullPointer 예외를 방지하기 위한 안전한 널 처리 기능이 있음
  • 함수형 프로그래밍, 코루틴 등의 기능 지원

5. Swift

Swift는 2014년 애플에서 발표한 객체 지향 프로그래밍 언어다. Swift의 특징은 다음과 같다.

  • C와 Objective-C에 기반해 만들어졌지만, 간결한 구문과 풍부한 기능을 지원함
  • 안정적인 코드와 낮은 메모리 요구량을 보장하는 ARC(Automatic Reference Counting)을 사용함
  • iOS, macOS, watchOS 등 애플 플랫폼에서 사용됨

6. Go

Go는 2009년 구글에서 발표한 정적 타입으로 컴파일되는 프로그래밍 언어다. Go의 특징은 다음과 같다.

  • 빠른 컴파일 속도와 간결한 구문을 가짐
  • 자동으로 메모리 관리를 해주는 Garbage Collection 기능 지원
  • 동시성 처리를 위한 고루틴(Goroutine)을 제공함

7. Rust

Rust는 2010년 모질라(Mozilla)에서 발표한 시스템 레벨 프로그래밍 언어다. Rust의 특징은 다음과 같다.

  • C와 C++보다 안정적인 메모리 관리를 지원함
  • 병렬성과 안전성에 집중하여 개발되어, 멀티스레드 환경에서 안정적인 처리 가능함
  • 최근에는 WebAssembly를 지원하여 웹앱 개발에도 사용됨

8. TypeScript

TypeScript는 2012년 마이크로소프트에서 발표한 자바스크립트의 상위 집합 언어다. TypeScript의 특징은 다음과 같다.

  • ES6(ECMAScript 2015)이상의 모든 기능을 지원하며, 추가적인 타입 검사 및 추론 기능을 제공함
  • AngularJS, React 등 다양한 프레임워크와 함께 사용됨

9. C#

C#은 마이크로소프트에서 개발한 객체 지향 프로그래밍 언어다. C#의 특징은 다음과 같다.

  • 안정적인 메모리 관리를 위한 Garbage Collection 기능을 지원함
  • 비동기 처리 및 병렬 처리를 위한 async, await 키워드를 제공함
  • 윈도우즈 데스크톱 애플리케이션, 모바일 애플리케이션, 게임 등 다양한 분야에서 사용됨

10. Objective-C

Objective-C는 1980년대에 브래드 콕스(Brad Cox)가 개발한 객체 지향 프로그래밍 언어다. Objective-C의 특징은 다음과 같다.

  • C 언어에 객체 지향 기능을 추가한 형태로, iOS, macOS에서 사용됨
  • 다운 캐스팅의 편리함과 함께 프로토콜(Protocol) 지향 프로그래밍을 지원함
  • Swift의 출현으로 인해 최근 많은 기업들이 Swift로 전환하면서, 대체 언어 때문에 Objective-C의 지지력은 주춤하고 있습니다.

11. Scala

Scala는 백엔드 서버 프로그래밍 및 빅데이터 처리를 위한 객체 함수 프로그래밍 언어다. Scala의 특징은 다음과 같다.

  • Java와 호환되는 JVM(Java Virtual Machine)을 기반으로 실행되므로 Java와 함께 사용 가능
  • 함수형 프로그래밍과 객체 지향 프로그래밍을 모두 지원하여 코드의 간결성과 가독성이 크게 향상됨
  • Apache Spark 등의 데이터 처리 프레임워크와 함께 사용됨

12. PHP

PHP는 웹 프로그래밍을 위한 스크립팅 언어로, 원래는 동적 타입 체킹을 지원하는 언어다. 그러나 최근에는 정적 타입 체킹을 지원하는 Hack과 같은 확장 버전등으로 인해, 일부 정적 타입 기능도 사용 가능하게 되었다. PHP의 특징은 다음과 같다.

  • 웹 서버와의 간편한 통신을 위해 개발되어서 웹 개발에 주로 사용된다.
  • 동적 타입 언어지만, Hack처럼 일부 정적 타입 기능도 지원한다.
  • 워드프레스, 드루플 및 다양한 웹 애플리케이션 프레임워크에서 사용된다.
profile
프론트엔드 개발자

0개의 댓글