Kotlin in action 책을 다시 한번 보면서 코틀린에 대해 공부해야겠다.
오늘은 1장을 공부해보고 정리한 내용을 공유해보려고 한다. 그럼 시작!
코틀린이란 무엇이며 왜 필요한가?
1. 코틀린이란?
- 자바 플랫폼에서 돌아가는 새로운 프로그래밍 언어이다. 간결하고 실용적이며 자바 코드와의 상호운용성을 중시한다.
- 코틀린의 주 목적은 현재 자바가 사용되고 있는 모든 용도에 적합하면서도 더 간결하고 생산적이며 안전한 대체 언어를 제공하는 것. 즉, 더 적은 코드로 더 편하게 프로그래머의 목표를 달성하게 해줌
2. 정적 타입 지정 언어?
- 코틀린은 컴파일러가 문맥을 고려해 변수 타입을 결정하는 기능을 활용한다. 일명 타입추론!
- 코틀린도 정적 타입 지정 언어이다. 모든 프로그램 구성 요소의 타입을 컴파일 시점에 알 수 있고 프로그램 안에서 객체 필드 나 메서드를 사용할 때 마다 컴파일러가 타입을 검증해준다는 뜻.
- 실행 시점에 어떤 메서드를 호출할지 알아내는 과정이 필요 없으므로 메서드 호출이 빠르고, 컴파일러가 프로그램의 정확성을 검증하기 때문에 실행 시 프로그램이 오류로 중단 될 가능성이 적음
- 코드에서 다루는 객체가 어떤 타입에 속하는지 알 수 있기에 처음보는 코드를 다룰 때도 쉽다.
3. 널 타입을 지원한다?
- 널이 될 수 있는 타입을 지원함에 따라 컴파일 시점에 널 포인터 예외가 발생할 수 있는지 여부를 검사할 수 있기에 프로그램의 신뢰성을 높인다.
4. 함수형 프로그래밍?
- 함수를 일반 값처럼 다룰 수 있다. 함수를 변수에 저장할 수 있고, 함수를 인자로 다른 함수에 전달할 수 있으며, 함수에서 새로운 함수를 만들어서 반환할 수 있다.
- 함수형 프로그래밍에서는 일단 만들어지고 나면 내부 상태가 절대로 바뀌지 않는 불변 객체를 사용해 프로그래밍을 작성한다(불변성)
- 함수형 프로그래밍에서는 입력이 같으면 항상 같은 출력값을 내놓고 다른 객체의 상태를 변경하지 않음
5. 함수형 프로그래밍의 장점?
- 간결성이다. 함수를 값처럼 활용할 수 있으면 더 강력한 추상화를 할 수 있고 이를 활용해 코드 중복을 막을 수 있다.
- 다중 스레드를 사용해도 안전하다. *다중 스레드 프로그램에서는 적절한 동기화 없이 같이 데이터를 여러 **스레드가 변경하는 경우 가장 많은 문제가 생기는데 함수형 프로그래밍은 불변 데이터 구조를 사용하기에 같은 데이터를 여러 스레드가 변경 할 수 없다.
* 다중 스레드 프로그램은 하나의 프로세스 내에서 두 개 이상의 스레드를 동시에 실행하는 프로그램을 말합니다.
** 스레드는 프로세스 내에서 실행되는 가장 작은 실행 단위입니다.
6. IDE란?
- IDE는 "Integrated Development Environment"의 약자로, 코드 작성, 테스트, 디버깅, 프로젝트 관리 등 프로그래밍 관련 다양한 작업을 한 곳에서 통합적으로 수행할 수 있도록 도와주는 소프트웨어 도구입니다.
7. 코틀린 빌드과정
코틀린 소스코드를 저장할 때는 .kt라는 확장자를 파일에 붙인다. 코틀린 컴파일러는 소스코드를 분석해 .class파일을 생성한다. 만들어진 .class는 개발중인 애플리케이션 유형에 맞는 표준 패키징 과정을 거쳐 실행되는데.. 커맨드 라인에서 kotlinc 명령을 통해 코틀린 코드를 컴파일한 다음 java 명령으로 그 코드를 실행하는 것.
코틀린은 자바의 단점을 보완한 언어라고 간단하게 생각을 해왔지만 그보다 더 깊은 사실이 숨어 있는듯하다. 현재는 안드로이드 스튜디오를 사용해서 하고 있지만 IntelliJ IDEA에서 더 활용할 점이 많다고 하니 나중에 해봐야겠다. 나는 람다함수에 대해 아직 부족한 점이 많다고 생각하는데 이번에 람다함수와 스코프함수에 대해 깊게 알아가야겠다고 생각이 들었다. 코틀린 언어로 코드를 간결, 간편, 한눈에 잘 사용할 수 있도록 해봐야겠다.
'기초를 모르면 나가리(코틀린 인 액션)' 카테고리의 다른 글
코틀린 constructor 주생성자, 부생성자 (1) | 2023.10.27 |
---|---|
코틀린 기초 람다식 , 람다 프로그래밍 (0) | 2023.10.20 |
코틀린 클래스, 객체, 인터페이스 (0) | 2023.10.17 |
코틀린 컬렉션과 확장함수 (0) | 2023.10.16 |
코틀린 기본구조, 변수 선언 등 기초 설명 (0) | 2023.08.29 |