모든 언어가 그렇듯이 그 시작 포인트가 있다.
C 계열
int main(void){
print("Hi")
return 0;
}
JVM 계열
class main{
public static void main(String[] args){
System.out.println("Hello world!");
}
}
이는 실행시 메모리를 할당하고 프로세스 종료시에 같이 종료됨을 의미한다.
때문에 모든 언어가 프로세스를 실행하는 목적으로 시작점
을 가지고 있다.
처음 JAVA
를 배우는 경우 Hello, World
를 출력하기 위해 다음과 같은 스크립트를 보게된다.
핵심은 System.out.println()
이지만 중요한 것은 쓰레드를 실행하기 위한 main() 이다.
물론 초기 초보 개발자들은
그냥 외우세요.
라고 말하지만 취업 준비를 하는 과정에서는 꼭 알고 넘어가야하는 메소드중 하나이다.(종종 면접 문제로 나온다.)
class main{
public static void main(String[] args){
System.out.println("Hello world!");
}
}
저 모든 요소가 의미를 가지고 있지만 간단하게
모든 클라스에서 접근가능하며 정적상태(실행시 Heap 영역에 저장)되고 main()
메소드 이름으로 실행하게된다.
라는 뜻으로 JAVA에서는 애플리케이션을 실행하게 되면 가장먼저 main()
메소드를 실행하게된다.
String[] args
는 “연속적인 문자열 데이터가 args라는 변수에 저장된다.”라는 의미이다.
이는 JVM 환경에서 실행되는 모든 언어에서 공통으로 적용되는 사항이다.
오늘의 주제를 이야기 하기 앞서 우리는 파이썬에 대해 알아야한다.
1991년에 발표된 이 언어는 플렛폼에 독립적이며
객체 지향 / 함수형 / 절차적 명령형 프로그램 의 특직을 가지도 있다. 때문에 멀티 패너다임
언어라고도 말하기도 한다.
가장 중요한 요소는 인터프리터
방식을 채택한 언어라는 것이다.
인터프리터
방식은 컴퓨터와 이야기 즉, 대화형 언어
라는 의미이며 파이썬 파일에서도 함수 하나만 입력해도
바로 바로 시작되니 다른 언어에 비해 진입장벽이 낮은 이유도 그 중 하나일 것이다.
또한 동적 타이핑
언어로 구분되어 수학 / 과학과 관련한 분야에서 분석
하기 위한 언어로 사용되는 큰 이유가 되었다.
교재에 따라 다르지만 알고리즘 공부를 위해 파이썬을 공부하는 나는 파이썬의 시작점
을 배우지 못했다.
실재로 파이썬 파일을 생성하면 print("Hi")
라는 명령어 한 줄로 실행이 되니 시작점이 없다고 생각하였다.
그리고 최근 파이 썬또한 시작점
을 가지고 있음을 알게되었다.
if __name__ == '__main__':
print("Hi!")
의미는 __name__
변수의 값이 __main__
인지 확인하는 코드로
현재 스크립트 파일이 프로그램의 시작점이 맞는지 판단하는 작업이다.
# calc.py
def add(a, b):
return a + b
def mul(a, b):
return a * b
if __name__ == '__main__': # 프로그램의 시작점일 때만 아래 코드 실행
print(add(10, 20))
print(mul(10, 20))
맞는지 판단?
이라는 말은 사용자가 시작점을 정할 수 있다는 말인가?
인터프리터
라는 특성상 하나의 내부 스크립트를 실행할 경우 시작점을 사용하지 않아도 된다.
그러나 모듈로 가져와 사용하려는 경우 모듈을 직접 호출하지 않는 이상은 함수가 사용되지 않는다.
이유는 인터프리터 대상의 스크립트는 시작점
이 아니기 때문이다.
그리고 직접 함수를 호출하는 경우는 호출 대상의 모듈에 시작점
이 있으며 print()
함수가 있기 때문에
함수 호출만 해줘도 출력은 자동으로 된다.
import calc
calc.add(50, 60)
calc.mul(50, 60)
# RESULT
110
3000
파이썬이 처음에 개발 될 당시에는 리눅스/유닉스에서 사용하는 스크립트 언어 기반이었기 때문에 프로그램의 시작점이 따로 정해져 있지 않았다.
보통 리눅스
/유닉스
의 스크립트 파일은 파일 한 개로 이루어진 경우가 많은데,
이 스크립트 파일 자체가 하나의 프로그램이다 보니 시작점이 따로 필요하지 않았다.
이후 C 언어나 자바같은 언어는 처음 만들어질 때부터 소스 파일을 여러 개 사용했기 때문에 여러 소스 파일의 함수들 중에서도 시작 함수(main)를 따로 정해 놓은 것이다.
모르는 사람이 있는데 파이썬은 절대 최신 언어가 아니다.
자바 C 보다도 역사가 길다.