본문 바로가기
대외활동/Naver Boostcourse

[부스트코스] 코틀린 프로그래밍 기본 1/2(함수편) - 코틀린 소개

by 드인 2021. 1. 11.

코틀린 프로그래밍 기본 1/2 (함수편)


0. 오리엔테이션

1. 코틀린의 기본의 기본을 읽혀요!

 - 코틀린이란 무엇일까?

 - 변수와 자료형, 연산자

2. 함수형 프로그래밍 이란?

 - 마법의 요술상자, 함수의 기본

 - 요술상자, 함수 가지고 놀기

3. 프로그램 흐름의 제어

 - 프로그램의 흐름을 제어해보자!

4. 코틀린의 표준함수 활용하기

 - 코틀린과 표준함수

5. 강좌 마무리 프로젝트


[ 코틀린이란 무엇일까? ]


1. 코틀린의 탄생 배경

▶ 안드로이드 계열에서도 자바에 한계가 있기 때문에 보다 간단하고 편리한 언어인 코틀린이 등장 

 

 목표 : 풀스택 웹, Android와 iOS앱, 임베디드 IoT 등 다양한 플랫폼에서 개발하도록 하는 것

 특징

- IDE(Android Studio의 모체)로 유명한 JeTBrains에서 개발 및 보급

 * IDE : 코딩, 디버그, 컴파일, 배포 등 프로그램 개발에 관련된 모든 작업을 하나의 프로그램 안에서 처리하는 환경을 제공하는 소프트웨어 (출처: ko.wikipedia.org/wiki/통합_개발_환경)

- 코드 간결, 다양한 기능, 높은 호환성

- 문장 끝에 세미콜론 옵션

- Android Studio에서 안드로이드 공식 언어로 추가

- 변수는 Nullable(널 값 사용 가능)과 NotNull로 나뉘는데, 변수 선언시 '?'를 붙여 Nullable로 가능

 

2. 다양한 플랫폼

 사용 가능한 플랫폼

1) Kotlin/JVM

 - 자바 가상 머신 상에서 동작하는 앱을 만들 수 있다.

2) Kotlin/JS

 - 자바스크립트에 의해 브라우저에서 동작하는 앱을 만들 수 있다.

3) Kotlin/Native

 - LLVM기반의 네이티브 컴파일을 지원해 여러 타깃의 앱을 만들 수 있다.

 

 Kotlin/Native에서의 타깃

1) iOS (arm32, arm64, emulator x86_64)

2) MacOS (x86_64)

3) Android (arm32, arm64)

4) Windows (mingw x86_64)

5) Linux (x86_64, arm32, MIPS, MIPS little endian)

6) WebAssembly (wasm32)

 

3. 코틀린의 장점

 자료형에 대한 오류를 미리 잡을 수 있는 정적 언어(Statically typed)

 - 정적 언어 : 컴파일러가 타입을 검증해준다.

 널 포인터로 인한 프로그램의 중단을 예방할 수 있다. (=NPE(Null Pointer Exception)에서 자유롭다)

 자바로 안드로이드할 때 널 포인트 오류로 골치 아팠는데 몹시 유용할 것 같습니다.

 데이터형 선언 시 널 가능한 형식과 불가능한 형식 지원

 자바와 완벽한 상호 운영 가능

 - 자바로 작성하다가 코틀린으로 작성 가능

 간결하고 효율적

 함수형 프로그래밍과 객체 지향 프로그래밍이 모두 가능

 세미콜론을 생략할 수 있다.

 

4. 자바 JDK 설치 하기

 코틀린을 JVM 상에서 실행 기존 자바와 상호작용 + 자바 라이브러리를 이용하기 위해

 

 Oracle JDK : 보안 업데이트를 지속적으로 받으려면 '구독' 방식으로 라이선스 구매 필요

 OpenJDK : 제한 없이 사용 가능. 보안 서비스 의무가 없기 때문에 유지보수 어려움

 

 Azul의 Julu : TCK 인증을 통과한 OpenJDK를 묶어서 배포하는 제 3의 벤더

 * TCK 인증 : 제작한 JVM을 배포하기 위해 OpenJDK 스펙을 구현한 JVM이 규격에 맞게 제대로 구현되었는지 검증하는 테스트 프로그램과 도구들로 구성된 테스트를 수행

 

JDK 배포판의 선택 : Red Hat, OpenJDK, AZUL, Java ...

 

 JDK 설치 과정

1) JDK 다운로드

www.azul.com/downloads/zulu-community/?package=jdk

 

Java Download | Java 8, Java 11, Java 13 - Linux, Windows & macOS

Download Java Builds of OpenJDK 8, 11, 13 & 15. Azul Zulu Builds of OpenJDK runs on Linux, Windows, macOS & Solaris on X86, Arm, SPARC & PPC

www.azul.com

JDK 다운 버전

- LTS : 보안 업데이트 오랫동안 지원받을 수 있음

설치 경로 기억

 

2) 경로 설정

- 내컴퓨터 →  속성 →  고급시스템 설정 →  환경변수 →  시스템 변수

- 새로 만들기 →  변수이름: JAVA_HOME, 변수 값: 기억한 설치 경로→  Path에서 설치 경로 추가 확인

- 윈도우 + R →  cmd →  java -version 입력 →  자바 설치버전 확인

 

3) IntelliJ IDEA 설치

https://www.jetbrains.com/idea/download

 

Download IntelliJ IDEA: The Capable & Ergonomic Java IDE by JetBrains

Download the latest version of IntelliJ IDEA for Windows, macOS or Linux.

www.jetbrains.com

IDEA 다운 버전

- 2021년 1월 11일 기준 최신 버전으로 다운 받았습니다.

 

IDEA 설치 화면
IDEA 환경 설정

- 강의와 버전이 달라서 강의에서 설정하는 속성은 왼쪽바에서 설정할 수 있습니다.

 

4) 코드 작성

작성한 코드와 코드 위치

 

실행 결과

 

5. 폰트 설정 및 실행 방법

File Setting font 검색

- D2Coding : github.com/naver/d2codingfont/releases

 

Releases · naver/d2codingfont

D2 Coding 글꼴. Contribute to naver/d2codingfont development by creating an account on GitHub.

github.com

폰트 설정
폰트 적용 후

 강사님이 추천해주신 D2Coding Font가 개인적으로 가독성이 좋은 것 같습니다. 다른 코드 프로그램에도 적용해야겠습니다.

 

▶ fun : function(함수)을 정의하는 키워드

 main() : 진입점 역할의 함수

{ ... } : 함수의 구현부

 

6. 디컴파일

 상단메뉴 Tools Kotlin  Show Kotlin ByteCode  Decompile

디컴파일 후 자바 코드

코틀린 코드가 훨씬 간결한 것을 확인할 수 있습니다.

 

6. 외부 인자를 정하는 main()

▶fun main(args: Array<String>) 을 활용한 새로운 코드

fun main(args: Array<String>) {
    println(args[0])
    println(args[1])
}

코드 이름 클릭 후 Edit Configuration
args 입력
실행 결과

- Ctrl + D : 줄 복사

 

문자열 내의 변수는 ${식}으로 표현

fun main(args: Array<String>) {
    println("args[0] = ${args[0]}") // 외부의 첫번째 인자
    println(args[1]) // 외부의 두번째 인자
    println(args[2]) // 외부의 세번째 인자
    println(args[3]) // 외부의 네번째 인자
}

실행 결과


감사합니다!