![](https://blog.kakaocdn.net/dn/9GnvL/btsyHbojGLt/Sch0USeeVHjJk0aGtW1nv1/img.png)
안녕하세요 이번에 '우아한테크코스 프리코스' 안드로이드 부분에 지원하게 되었습니다.
처음 접해보는 코틀린이라는 언어를 프리패스기간 동안 배우면서 진행해야 돼서 걱정이 되면서도 새로운 도전에 기대가 되네요🥹🥹
관련 서적으로 아래의 책 두권과 함께 공부를 진행하고 있습니다
![](https://blog.kakaocdn.net/dn/dOLy8c/btsyMqD9ruP/kKh04oLeBaEnT7ZeKKIMZK/img.png)
1. 코틀린이란 무엇이며 왜 필요한가?
먼저 코틀린(Kotlin)에 대해 배우기 위해선 코틀린이란 무엇인가? 라는 개념을 알고 가야 합니다.
코틀린은 자바 플랫폼에서 돌아가는 새로운 프로그래밍으로써, 간결하고 실용적이며, 자바 코드와의 상호운용성(interoperability)을 중시합니다. 현재 자바가 사용 중인 곳이라면 거의 대부분 코틀린을 활용할 수 있으고, 대표적으로 서버개발, 안드로이드 앱 개발 등의 분야에서 코틀린을 쓸 수 있습니다.
코틀린의 주요 특성
1. 정적 타입 지정언어
코틀린도 자바와 같은 정적 타입 지정 언어입니다.
정적 타입 지정(statically typed)이라는 말은 모든 프로그램 구성 요소의 타입을 컴파일 시점에서 알 수 있고 프로그램 안에서 객체의 필드(field)나 메서드(method)를 사용할 때마다 컴파일러가 타임을 검증해 준다는 뜻입니다.
한편 자바와 달리 코틀린에서는 모든 변수의 타입을 프로그래머가 직접 명시할 필요가 없이 스위프트와 같은 타입 추론 기능(type inference)을 사용합니다.
정적 타입 지정의 장점
- 성능 : 실행 시점에 어떤 메서드를 호출할지 알아내는 과정이 필요 없으므로 메서드 호출이 더 빠르다.
- 신뢰성 : 컴파일러가 프로그램의 정확성(correctness)을 검증하기 때문에 실행 시 프로그램이 오류로 중단될 가능성이 적어진다.
- 유지 보수성 : 코드에서 다루는 객체가 어떤 타입에 속하는지 알 수 있기 떄문에 처음 보는 코드를 다룰 때도 더 쉽다.
- 도구 지원 : 정적 타입 지정을 활용하면 더 안전하게 리팩토링(refectoring) 할 수 있고, 도구는 더 정확한 코드 완성 기능을 제공할 수 있으며, IDE의 다른 지원 기능도 더 잘 만들 수 있다.
2. 함수형 프로그래밍과 객체지향 프로그래밍
스위프트, 자바를 경험해 보셨으면 객체지향(object oriented) 프로그래밍의 핵심을 잘 이해하시고 계실 거라고 생각합니다.
하지만 함수형 프로그래밍은 새로운 개념일 수 있습니다.
📝 스위프트에서 함수형 프로그래밍을 공부했지만 기억이.... 하하하😂
함수형 프로그래밍의 핵심 개념
- 일급 시민인(first-class) 함수 : 함수를 일반 값처럼 다룰 수 있습니다. 함수를 변수에 저장할 수 있고, 함수를 인자로 다른 함수에 전달할 수 있으며, 함수에서 새로운 함수를 만들어 반환할 수 있습니다.
- 불변성(immutability) : 함수형 프로그래밍에서는 일단 만들어지고 나면 내부 상태가 절대로 바뀌지 않는 불변 객체를 사용해 프로그램을 작성합니다.
- 부수 효과(side effect) 없음 : 함수형 프로그래밍에서는 입력이 같으면 항상 같은 출력을 내놓고 다른 객체의 상태를 변경하지 않으며, 함수 외부나 다른 바깥 환경과 상호작용하지 않는 순수 함수(pure function)를 사용합니다.
코틀린 함수형 프로그래밍 지원
- 함수 타입을 지원함에 따라 어떤 함수가 다른 함수를 파라미터로 받거나 함수가 새로운 함수를 반환할 수 있습니다.
- 람다 식을 지원함에 따라 번거로운 준비 코드를 작성하지 않아도 코드 블록을 쉽게 정의하고 여기저기 전달할 수 있습니다.
- 데이터 클래스는 불변적인 값 객체(value object)를 간단하게 만들 수 있는 구문을 제공합니다.
- 코틀린 표준 라이브러리는 객체와 컬렉션을 함수형 스타일로 다룰 수 있는 API를 제공합니다.
무료 오픈소스
코틀린 언어와 컴파일러, 라이브러리 및 코틀린과 관련된 모든 도구는 모두 오픈소스며, 어떤 목적에든 무료로 사용할 수 있습니다.
코틀린은 아파치(Apache) 2 라이선스하에 제공되며, 개발은 깃허브(Github)를 통해 이뤄지고 있습니다.
애플리케이션을 개발하고 싶은 경우 인텔리J 아이디어 커뮤니케이션, 안드로이드 스튜디오, 이클립스 같은 오픈소스 IDE를 활용할 수 있습니다.
코틀린 응용
코틀린은 주로 서버와 안드로이드 개발에서 널리 쓰이고 있습니다.
저는 안드로이드 공부를 하고 있기 때문에 서버는 생략하고 안드로이드만 설명드리겠습니다.
코틀린 안드로이드 프로그래밍
코틀린 언어의 특성과 안드로이드 프레임워크의 특별한 컴파일러 플러그인 지원을 조합하면 안드로이드 개발 생산성을 더 높이고 개발의 즐거움을 더할 수 있습니다.
안드로이드 개발에 코틀린을 사용하는 느낌을 보여주기 위해 간단한 안드로이드 코드 예제를 가져왔습니다.
verticalLayout {
val name = editText()
button("Say Hello"){
// 버튼에 리스너를 추가하고 토스트(표시창)를 표시하는 간결한 API입니다.
onClick { toast("Hello, ${name.text}!"}
}
}
코틀린을 사용하면 얻을 수 있는 이익으로는 애플리케이션의 신뢰성이 더 높아진다는 점을 들을 수 있습니다.
코틀린의 타입 시스템은 null 값을 정확히 추적하며 널 포인터로 인해 생기는 문제를 줄여줍니다.
최종 요약
- 코틀린은 타입 추론을 지원하는 정적 타입 지정 언어이다.
- 코틀린은 객체지향과 함수형 프로그래밍 스타일을 모두 지원한다.
- 코틀린은 서버 어플리케이션 개발에 잘 활용할 수 있다.
- 코틀린은 안드로이드에서도 활용할 수 있다.
- 코틀린은 무료 오픈소스이다.
- 코틀린은 실용적이며 안전하고, 또한 주요 IDE와 빌드 시스템을 완전히 지원한다.
코틀린에 대해서 오늘 처음 알아봤습니다.
아직은 뭐가 뭔지 잘 모르지만 더 공부해 보면 코틀린의 매력을 알 수 있을 것 같네요!!
저와 같이 코틀린을 공부하시는 분들 및 우아한 테크코스에 지원하신 분들에게 도움이 됐으면 합니다.
'Android' 카테고리의 다른 글
[ Kotiln Code conventions ] 서식 지정(Formatting) 2 (2) | 2023.10.30 |
---|---|
[ Kotiln Code conventions ] 서식 지정(Formatting) 1 (2) | 2023.10.30 |
[ Kotlin Code conventions ] 명명규칙(Naming rules) (2) | 2023.10.29 |
[ Kotlin Code conventions ] 소스코드 구성(Source code organization) (1) | 2023.10.22 |
Kotlin 함수와 변수 (1) | 2023.10.19 |