CODING/강의노트-부스트코스-코틀린

[부스트코스] 📱코틀린 1-1 코틀린 너는 누구니?

codingTrip 2021. 1. 11. 20:09

안녕하세요? codingTrip입니다.

오리엔테이션 잘 보고 오셨나요?

그럼 오늘은 "코틀린 프로그래밍  1/2(함수편)"

1단원 코틀린의 기본을 익혀요!

1장. 코틀린이란 무엇일까?

1-1 코틀린 너는 누구니?

 

www.boostcourse.org/mo132/lecture/59964/

 

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

부스트코스 무료 강의

www.boostcourse.org

시작하겠습니다!

 

📢 이 글은 참고자료와 같이 보시는 것을 추천드립니다.

1-1 코틀린 너는 누구니.pdf
0.28MB

💻 컴퓨터 언어

먼저, 컴퓨터 언어에 대해 알아보겠습니다.

▷ 어셈블리 언어

기계가 알아들을 수 있는 0과 1을 각각 대입해서 만들어진 최하위 언어입니다.

그렇기 때문에 사람이 이해하기 어려운 언어입니다. ㅠㅠ

 

 절차지향형 언어

대표적은 언어는 C언어입니다.

인간 친화적이면서도 하드웨어를 다루는 데 상당히 유용합니다.

 

 객체지향형 언어
대표적인 언어는 자바입니다.

이 언어는 대형 소프트웨어 만드는데 적합합니다. 

 

 컴퓨터 언어의 트렌드
복합적인 언어를 만드는 것이 요즘의 추세입니다.
애플의 경우 Objective-C에서 Swift로 바뀌었고, 
안드로이드Java에서 Kotlin으로 바뀌었습니다.

 

자, 이제 본격적으로 Kotlin에 대해 알아볼까요?

📱 Kotlin 탄생 배경

 목표

풀스택 웹 개발, Android와 iOS앱, 그리고 임베디드, IoT등 모든 개발을 다양한 플랫폼에서 개발할 수 있도록 하는 것

코틀린을 만든 최초의 목적은 안드로이드에서 기존에 쓰고 있던 자바라는 언어를 대체하기 위해 만들어졌습니다.

하지만 원래 이 Kotlin은 다양한 플랫폼에서도 개발할 수 있도록 만들어졌다고 하네요.

 

 특징 

- IDE(Integrated Development Environment, 통합 개발 환경)로 유명한 JetBrains에서 개발하고 보급했습니다.
- 오픈성을 가지고 있어, 누구나 가져다 쓸 수 있습니다. 
- 코드가 간결하고, 다재 다능하고, 호환성이 높습니다.

- 안드로이드 공식언어입니다. 

변수는 Nullable(널 값 사용 가능)과 NotNull로 나뉘는데, 변수 선언시 '?'을 붙여 Nullable로 만들 수 있다.

- NullableNull(데이터 값이 존재하지 않음)이 가능한지 아닌지를 결정할 수 있다는 뜻입니다. 
기존의 다른 언어는 변수가 Null인 경우가 발생할 수 있는데요. 
이럴 때 Null인 변수를 접근하려고 하면 예외가 발생해서 
프로그램이 중단됩니다. 그러면 안되겠죠? 코틀린은 이런 상황을 최대한 막아줍니다
 

📚 다양한 플랫폼

 사용가능한 플랫폼 

Kotlin/JVM

안드로이드 자체는 기본적으로 중간계층 위에 JVM이 돌고 있습니다.

Kotlin은 JVM(자바 가상머신) 상에서 동작하는 것을 목표로 하기 때문에
안드로이드에서도 동작할 수 있는 것입니다.

 

Kotlin/JS

자바스크립트(JavaScript, JS)에 의해 브라우저에서 동작하는 앱을 만들 수 있습니다.
Kotlin/JS 굉장히 인기있는 언어 중에 하나라고 하네요.
다양한 프레임워크 가지고 있고, 브라우저에서 놀게끔 할 수 있답니다. 


Kotlin/Native

특정 기기에 맞춰진 코드를 만들어 냅니다. 
ex) CPU arm, x86계열 등

특정 하드웨어 아키텍처가 다르지만 
이걸 사용하면 LLVM 특정 중간코드가 어디서 실행하든 가능하도록 
네이티브 컴파일을 지원합니다.
=>즉, 윈도우, ios, 안드로이드 어디서든 여러분의 코드를 동작시킬 수 있답니다.

 

Kotlin/Native에서의 타깃 

iOS, MacOS, Android, Windows, Linux, WebAssembly가 있습니다.

arm :  프로세스 아키텍처는 주로 모바일 환경에 맞추어서 저전력으로 도는 프로세스입니다.
little endian : 비트를 위에서 읽을지 아래에서 읽을지에 따라서 little endian과 big endian으로 구분할 수 있습니다.
WebAssembly는 특정 엔진상에서도 동작가능합니다.

 

👍 코틀린의 장점

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

정적언어는 컴파일러가 여러분의 타입을 미리 검사해서 오류를 잡아줍니다. 
다른 스크립트 언어는 컴파일 단계가 없어서 인터프리터 코드를 읽을 때마다 실행단계에서 검사해야 합니다.

널 포인터로 인한 프로그램의 중단을 예방할 수 있습니다.

기존 언어는 Null을 처리할 수 있는 Nullable 특정 타입을 정의하지 않고, 
모든 타입에 Null이 발생할 수 있는 가능성이 있었습니다. 
따라서, 만약 어떤 특정 변수가 비어있어서 Null인 경우에는

NPE(Null Pointer Exception)이 발생해 갑자기 프로그램 중단이 되기도 했습니다.

 

코틀린은 
NullableNotnull(널이 아닌 것)을 구분할 수 있습니다.
Notnull(널이 아닌 것)은 반드시 값이 들어가야 합니다.

Nullable은 변수 선언시 '?'를 붙여 만들 수 있습니다.

 

예를 들어,
int? : Nullable(널이 가능한 타입)
int : Notnull(널 불가능)

이렇게 표현하면 된답니다.

자바와 완벽하게 상호운영이 가능합니다. 

기존에 자바로 만들었던 프로젝트가 있다면, 
전부 코틀린으로 바꿔야하는 게 아니라 
일부만 조금씩 코틀린으로 바꿔서 계속 운영할 수 있습니다. 


자바의 특징은 특정 아키텍처에 독립적으로 돌게끔  
가상머신을 사용해서 도는 코드인데, 
이것을 코틀린도 똑같이 해줘서 상호운용이 가능하다는 것입니다.

 

처음 코틀린 배우시는 분은 자바 말고 코틀린으로 공부하셔도 괜찮지만,
그래도 자바를 아직도 사용하는 기업이 있으므로 어느 정도 알아두면 좋다고 하시네요.  

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

자바는 객체지향언어인데,
코틀린은 이와 더불어 함수형프로그램이라는 새로운 패러다임과 같이 사용할 수 있습니다.

 세미콜론을 생략할 수 있습니다

선생님께서 아주 좋은 특징이라고 하셨어요. ㅋㅋㅋ

한 번이라도 코딩을 해보신 분들을 아실 거에요. ;(세미콜론)을 매번 치는 불편함이 없다는 것이 얼마나 편한 것인지 ㅠㅠ

 

 

여러분 잘 따라오셨나요?

저는 선생님께서 코틀린을 본격적으로 설명하시기 전에

컴퓨터 언어에 대해 말씀해주셔서 틀이 잡히는 것 같아 좋았어요.

 

또한, 코틀린에 대해 좋은 점을 알려주시니까

코틀린을 이제 처음 배우지만 그 매력에 푹 빠지게 되었어요.

코틀린의 좋은 점 Nullable로 인한

NullpointException 해결!!!!!!

자바 등의 언어로 팀프로젝트 해보신 분들은 제 맘 아실거에요 ㅠㅠ

정말 무슨 오류가 나서 보면 태반이 이 오류입니다 ㅠㅠㅠㅠㅠ

뭐...뭐지? 왜.. 안돼지?.. 뭘 잘못했지?? 저를 카오스로 만드는 그 오류에요.

근데 이것을 해결했다니요!!!! 코틀린 ㅠㅠ 진짜 짱이네요.

 

한 강의마다 그 길이가 길지 않다는 점도 좋았어요.

너무 길면 집중이 잘 안될 수 있잖아요?

 

강의 중간에 아기 소리가 나는데 흐뭇해하면서 들었답니다.

여러분도 강의에 집중해서 들어보시면서 발견하실 수 있을거에요. ㅎㅅㅎ

 

그럼 여러분 다음 시간에 또 만나요!