일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- #스파르타코딩클럽후기 #내일배움캠프후기
- gitbash
- Machine Learning
- 코딩온라인
- terminate
- 플젝후체크
- 비동기
- taskkill
- 필사
- 파이콘
- 마크다운
- 클라이언트사이드렌더링
- expression statement is not assignment or call html
- Morphological analysis #Corpus
- PID
- Kakao
- Anaconda
- github markdown
- 자바파이썬
- Technical Writing
- SSR
- 파이썬
- 카우치코딩 #couchcoding #6주포트폴리오 #6주협업프로젝트
- 카우치코딩 #couchcoding #6주포트폴리오 #6주협업프로젝트v
- github
- khaiii
- 출처: 자바의 신 8장
- 모바일웹스킨
- address
- 서버사이드렌더링
- Today
- Total
개발 일기
면접 1주차 본문
정적 타입 언어와 동적 타입 언어의 차이
타입: 자료형 타입을 뜻함
정적 타입 언어:
Ex: Java, C, C++ 등
String name = "tuna"
Int num = 123 등
컴파일 시 변수의 자료형 타입이 결정되는 언어
변수에 들어갈 값의 형태에 따라 직접 변수의 타입을 명시해줘야 함.
컴파일 시 자료형에 맞지 않는 값이 들어있으면 컴파일 에러가 발생함.
장점: 타입 에러로 인한 문제점을 초기에 발견 가능. 타입 관련 런타임 오류 방지할 수 있다.
컴파일 시에 미리 타입을 결정하기 때문에 실행 속도가 빠르다.
코드의 가독성이 좋다. 다수의 협업, 프로젝트의 장기개발/유지보수에 유리하다.
단점: 코드 작성 시 변수형을 결정해줘야 해서 번거롭다.
동적 타입 언어
컴파일 시 자료형을 정하는 것이 아니라 런타임 시에 결정됨.
타입 없이 변수만 선언해서 값을 지정할 수 있다. 컴파일러가 없다.
Ex. Python, Javascript, PHP 등.
장점: 런타임까지 타입에 대한 결정을 끌고 갈 수 있기 때문에 유연성이 높다.
컴파일 시 타입을 명시해주지 안아도 되기 때문에, 코드 작성이 빠르다.
단점: 실행 도중에 변수에 예상치 못하는 타입이 들어오는 경우 타입 에러가 발생할 수 있다.
동적타입 언어는 런타임 시 확인할 수 밖에 없기 때문에, 코드가 길고 복잡해질 경우 타입 에러를 찾기가 어려워 진다고 한다.
정적 타입 = compile, 동적 타입 스크립트 언어 인가?
컴파일 vs 런타임 에러
-컴파일 에러: 문법을 잘못 작성한 경우 (대개 syntax 에러같은 문법적 오류 등)
-런타임 에러: 프로그램 실행 중 발생한 에러. 논리적으로 잘못된 에러 등.
참고
Java 코드의 컴파일 과정
Java와 컴파일
-컴파일 언어는 기계어로 컴파일 되어야만 실행시킬 수 있다.
-자바는 컴파일러, 인터프리터가 모두 구현되어 있다.
(1) 자바 클래스 파일 (.java가) 자바 compiler를 통과하고 나면 .class파일 Bytecode 가 생긴다.
(2) 컴파일 된 Bytecode 는 JVM 의 클래스 로더에게 전달된다.
(3) 클래스 로더는 동적 로딩을 통해 필요한 클래스를 로딩 및 링크해서 런타임 데이터 영역 (JVM 의 메모리에 올린다)
-로드: 클래스 파일을 JVM 메모리에 로드
-검증: 자바 언어 명세 및 jvm 명세에 명시된 대로 구성되어 있는지 검증
-준비: 클래스가 필요로 하는 메모리 할당 (필드, 메서드, 인터페이스 등)
-클래스의 symbolic reference를 다이텍트 reference로 변경 (?)
0과 1로된 주소로 바꿔줌.
-초기화: 클래스 변수들을 적절한 값으로 초기화함.
(4) 실행 엔진은 JVM 에 올라온 바이트 코드를 명령어 단위로 하나씩 가져와서 실행함.
두 가지 방식으로 변경함
-인터프리터: 바이트 코드 명령어를 하나씩 읽어서 해석하고 실행. 전체적인 실행속도가 느리다.
-jit 컴파일러: 인터프리터 단점보완 위해 도입됨. 바이트 코드 전체를 컴팡이
참고