본문 바로가기

Programming/Julia Language

1. 변수와 타입(1) - 변수, 타입

Julia Language


 Julia는 수치 연산을 위해 개발된 High Level, High Performance의 동적 프로그래밍 언어이다. 고수준의 컴파일러, 병렬 연산과 많은 수치연산 라이브러리를 지원하고 있다(수치연산, 선형대수, 난수생성, 문자열 가공 등) 비슷한 언어인 Python에 비해 빠른 처리 속도를 보여주어 머신 러닝 등 많은 연산을 필요로 하는 분야에서 사용되고 있다.

Previous Posting

0. Julia 설치하기

1. 변수

변수 값을 담는 상자와 같다. 은 1, "Julia" 같은 숫자나 문자 등의 데이터를 뜻하며, 변수의 이름은 그 값을 나타낸다.


var = 123  # 변수와 값은 등호(=)를 이용해 묶어(bound)진다

foo = 4354; favorite_digimon = "Dukemon"; α = "Alpha"

# 변수의 이름은 알파벳, 유니코드, 하이픈(_) 등의 조합을 통해 만들어진다

# Latex 기호는 백슬래시(\)와 기호의 이름, 그리고 Tab을 통해 입력한다


변수담고 있는 값에 따라 그 타입이 결정되며, 변수의 타입은 typeof(var) 함수로 알 수 있다. 


print(typeof(foo), "\n"); print(typeof(favorite_digimon), "\n")

# typeof 함수를 통해 변수의 type을 알 수 있다


표현식변수와 연산자/함수가 결합된 구문(口門)으로, 식을 계산하고 결과를 반환한다.


foo = 12; bar = 32; print(foo+bar, "\n")

# 표현식은 식을 계산하고 그 값을 반환한다


REPL에서는 표현식을 입력할 때 마다, 그 값을 볼 수 있다(보지 않고 싶다면, 표현식 뒤에 ;(세미콜론)을 붙이면 된다)


변수를 표현식에 사용하기 전에 값과 묶어야 한다.

a+5 # Error
a=5; a+5 # 10

Julia에서, 모든 구문은 표현식이다. 즉, 모든 구문은 값을 반환한다.


2. 타입
Julia는 동적 타입 언어-프로그램 실행 중에 이미 한 타입으로 묶인 변수를 다른 타입의 값으로 묶을 수 있다-이다.

타입 애노테이션을 사용하여 변수의 타입을 고정할 수 있다. 타입 애노테이션은 변수의 타입을 컴파일러에게 명시하는 작업으로,
타입 애노테이션을 하면-
  1. 프로그램의 성능이 향상된다 
  2. Type Stable 한 코드를 짜기 쉬워진다(프로그램 내에서 변수의 타입이 크게 변하지 않는)
  3. 코드 문서화에 유리하고, 가독성을 높일 수 있다

far = 1
far::Int64
print(typeof(far), "\n")
# 타입 애노테이션으로 변수의 타입을 고정할 수 있다

type(var) 함수를 통해 변수의 타입을 변화시킬 수 있다. 이 때, type은 변화시킬 타입의 이름이다.
(단, 타입 간 변환이 정의된 경우에만 사용할 수 있다. ex) Bool->Int64)

xar = 1
xar = Bool(xar)
print(xar, "\n")
# Type(var)으로 변수의 타입을 바꿀 수 있다

사용자가 타입을 정의할 수 있고, 계층 구조를 가지게 할 수 있다(이는 후에 자세히 다룬다)

타입은 계층 구조를 갖는데, Any는 모든 타입의 상위 타입이고 None은 모든 타입의 하위 타입이다.


Next Post


02. 변수와 타입(2) - 정수형 리터럴과 부동소수점 리터럴, Bool 타입


Code

본 포스팅에서 사용된 Julia 코드는 이 시리즈의 Github 저장소에서 다운받을 수 있습니다