구글이 2019년부터 코틀린을 안드로이드에서 우선으로 지정하고 난 뒤 많은 app뿐만 아니라 자바환경의 웹에서도 코틀린으로 많이 대체하고 있다. 내가 읽은 다른 책과 다른 점은 우선 단순 자바와의 비교 또는 예제를 위주로 작성된 책이 아니었다. 코틀린은 함수형 프로그래밍에서 비롯된 많은 기법에 친화적으로 설계되어 자바에서 갈증이 있었던 부분을 많이 해소시켜주고 기존 자바소스와 혼합해 사용해도 문제없을 정도로 통합이 잘되어 있다는 점이다.

 전체적으로 650여 페이지로 구성된 얇지 않은 책이다. 아에 코틀린을 모른다면 조금 난이도가 있을 것 같다. 소개글부터 지은이의 자바의 대한 고민과 코틀린에 대한 생각을 엿볼수 있어, 어떻게 이 책을 구성하려 했는지 느낄 수 있다. 1장부터 바로 코틀린의 역사 뭐 이렇게 시작하지 않고, 어떻게 프로그램을 더 안전하게 만들지에 대해 작성하였다. 함수형 프로그래밍을 구현하는 데 필수적인 문법적 요소도 잘 설명하고, 함수형 라이브러리를 구현하는 과정을 샘플 코드로 단계적으로 설명하였다.

 

 또한 참조 안전성을 확보하기 위한 불변성 개념, 스택 안전한 꼬리호출을 설명하기 위한 재귀와 공재귀 개념, 반복 계산을 방지하여 연산 성능을 높이는 메모화, 분기를 함수 내부로 위임하여 오류를 방지하고 재사용성과 투명성을 확보하는 선택적 데이터 구조의 개념, 파이프라이닝을 통해 연산의 연쇄를 더욱 효율적이고 효과적으로 만드는 지연 계산의 개념 등 함수형 구현의 근간을 이루는 핵심 개념들을 설명과 그림, 코드, 연습문제 구성 등으로 되어있다. 연습문제도 힌트와 해법으로 잘 구성되어 있으니, 한번쯤은 더 고민해보면 좋을 것같다.

 실습 소스의 경우 https://github.com/gilbutITbook/080208 에 올라와있는데, 추천하는 환경인 intelliJ에서 매끄럽게 실습하면서 배울 수 있다.

 

 역자 오현석님은 “Kotlin in Action” 및 함수형 프로그래밍에 대한 책을 다수 번역하여 두개의 경험을 잘 잡을 수 있는 좋은 책 소개를 해주었다. 단순 코틀린의 겉핥기가 아닌 함수형 프로그램의 안전성 측면 뿐만 아니라 추사항화로 모듈화, 안전성을 달성하는 특성을 알고 싶다면 차분하게 읽고, 예제를 수행해보면 좋을 것 같다.  

 

# 구매처

https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=235710864

 

코틀린을 다루는 기술

이해하기 쉽고 유지 보수하기 편하며 안전한 프로그램을 코틀린으로 작성하는 법을 가르쳐준다. 함수형 프로그래밍에서 영감을 얻은 다양한 기법을 소개하고 프로그래밍할 때 발생하는 일반적

www.aladin.co.kr

http://book.interpark.com/product/BookDisplay.do?_method=detail&sc.shopNo=0000400000&sc.prdNo=332078551&pis1=book&pis2=product

 

싸니까 믿으니까 인터파크도서

생년월일 - 출생지 - 출간도서 0종 판매수 0권 KAIST에서 전산학 학사와 석사 학위(프로그래밍 언어 연구실)를 취득했다. 삼성 메디슨, 비트앤펄스 등에서 UI 개발자와 개발 팀장을 지냈고, 현재 호�

book.interpark.com

http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9791165210960&orderClick=LEa&Kc=

 

코틀린을 다루는 기술 - 교보문고

코틀린은 자바와 부드럽게 연동되는 우아한 JVM 언어로, 구글은 2019년부터 안드로이드에서 최우선 언어로 코틀린을 채택했다. 이 책은 이해하기 쉽고 유지 보수하기 편하며 안전한 프로그램을 ��

www.kyobobook.co.kr

http://www.yes24.com/Product/Goods/89564200?Acode=101

 

코틀린을 다루는 기술

코틀린은 자바와 부드럽게 연동되는 우아한 JVM 언어로, 구글은 2019년부터 안드로이드에서 최우선 언어로 코틀린을 채택했다. 『코틀린을 다루는 기술』은 이해하기 쉽고 유지 보수하기 편하며

www.yes24.com

 

fun main(args: Array<String>) {

	println(“Hello, world!”)

	println(“초보자를 위한 Kotlin 200제”)

}

 

가장 기본이 되는 Hello, world를 시작으로 ‘초보자를 위한 Kotlin 200제’ 책은 시작됩니다.

직업으로 Java 프로그래밍을 해왔는데, Oracle과  Google간의 java 소송 문제가 부각되면서,

Google에서 내놓은 Kotlin이 부상하고 있습니다.

 

Kotlin을 배워 볼까 했는데, 이 책이 눈에 띄었습니다.

저자는 전국 학교 급식식단표 를 보여주는 급식 앱이 있고, 블로그도 운영 중입니다.

개인적으로 기술서적은 번역서이든, 직접 작성한 책이던지 저자를 중요하게 생각하는 편입니다.

실제 Android 엔지니어로 개발하고 블로그에서 많은 정보를 유용하게 접하고 있어서 추천합니다.

 

우선 이 책은 단순하게 java 개발을 하던사람에게 뿐만아니라 처음 Kotlin을 접하는 사람에게도

볼 수 있게 입문,초급,중급,활용,실무로 5개의 파트로 나누어 설명 해주고 있습니다.

 

차분하게 페이지마다 표시되어있는 1~200 까지의 예제를 단순히 타이핑 뿐만아니라

의미를 생각해보면 배움에 도움이 될 것 같습니다. 소스마다 중요한 라인은 그림 또는 설명이 부연 설명이 되어 있습니다.

 

기초 문법도 배우고, 클래스의 관련 문법과 심화된 고급문법, 유용한 코틀린 표준 라이브러리에 대해 살펴보고, kotlin에서 자바코드로 접근하기를 배우면 기본기를 갖추게 되어갈거라 생각합니다. 목차를 접근성이 좋게 구성한 것 같은 느낌입니다.

 

전반적으로 만족스러운 책입니다. 다만, 환경설정이 IntelliJ 설치를 전제로 하고 있어서 개정판이 나오게 되면 Android Studio를 활용한 설정도 알려주면 좋을 것 같습니다. 그리고 좀 더 응용을 해볼 수 있는 simple 한 project가 예제로도 있었으면 좋겠습니다.

 

출처: 초보자를 위한 코틀린(Kotlin) 200제 / 엄민석 지음 | 정보문화사 | 2018년 05월 20일 출간

else는 if가 있어야 쓸 수 있는 키워드. if의 조건이 false이면 else가 수행

package com.practice020

fun main(args: Array<String>): Unit
{
	val a = 10
	val b = 5

	if (a < b)
		println("if")
	else
		println("else")			// 출력

	if (a > b)
		println("a가 크다.")		// 출력
	else
		println("b는 a 이상이다.")
}

출처: 초보자를 위한 코틀린(Kotlin) 200제 / 엄민석 지음 | 정보문화사 | 2018년 05월 20일 출간

조건에 따라 실행되는 코드를 제어하고 싶을때 if 문 사용하는 

if(Boolean 타입표현식)
{
	if문에 포함시킬 문장들
}
package com.practice019

fun main(args: Array<String>): Unit
{
	var a = 15
	val b = 11

	if (a > b)
	{
		println("if 안으로 들어옴")	//출력: if 안으로 들어옴
		a -= b
	}

	println(a)	// 출력 : 4
}

 

블록Block: if() 다음에 오는 중괄호로 둘러싼 부분

조건Condition: if문 소괄호 안에 들어가는 Boolean 타입의 표현식

※ if문에 속한 문장이 하나일때는 중괄호를 생략할 수 있다.

출처: 초보자를 위한 코틀린(Kotlin) 200제 / 엄민석 지음 | 정보문화사 | 2018년 05월 20일 출간

  • &&  : and, a&&b 모두가 true 면 결과값은 true, 둘중 하나라도 false면 false
  • ||  : 둘 중 하나라도 True 이면 True, 둘다 false 면 false
  • !  : !a  a가 true이면 결과는 false, a가 false 이면 결과는 true
package com.practice018

fun main(args: Array<String>): Unit
{
	val a = 15
	val b = 17

	var bool: Boolean = (a - b < a + b) && (a == 15)
	// (15-17 < 15+17)&&(15==15)
	// (-2<32) && true
	// true && true
	println(bool)	// 결과: true

	bool = !((a + b) > (a * 3) || (b - a) > 0)
	// !((15+17)>(15*3)||(17-15)>0)
	// !(32>45||2>0)
	// !(false||true)
	println(bool)	// 결과: false
}	

출력:

true
false

 

 

출처: 초보자를 위한 코틀린(Kotlin) 200제 / 엄민석 지음 | 정보문화사 | 2018년 05월 20일 출간 

비교연산자 Comparison Operator: 두 개의 피연산자를 비교하는 연산자

package com.practice017

// 비교 연산자Comparison Operator
fun main(args: Array<String>): Unit
{
	var isRight: Boolean = (10 + 70) > (3 * 25)
	println(isRight)	// 출력: true

	isRight = false
	println(isRight)	// 출력: false

	isRight = 30 == (10 + 20)
	println(isRight)	// 출력: true

	isRight = 0.00001f == 0.005f * 0.002f
	println(isRight)	// 출력: false

	isRight = 3.0 * 5 + 2.7 <= 16
	println(isRight)	// 출력: false
}

출처: 초보자를 위한 코틀린(Kotlin) 200제 / 엄민석 지음 | 정보문화사 | 2018년 05월 20일 출간

비교연산자의 결과 타입은 Boolean 이며, true(참) 과 false(거짓) 이 있다

https://kotlinlang.org/docs/reference/operator-overloading.html#comparison

 

Operator overloading - Kotlin Programming Language

 

kotlinlang.org

/** Prints the given [message] and the line separator to the standard output stream. */
@kotlin.internal.InlineOnly
public actual inline fun println(message: Any?) {
    System.out.println(message)
}

출처: 초보자를 위한 코틀린(Kotlin) 200제 / 엄민석 지음 | 정보문화사 | 2018년 05월 20일 출간

package com.practice016

fun main(args: Array<String>): Unit
{
	val num: Int
	num = 15

	println(
			num + 7 * 3
	)	// 한문장이다, 출력: 36
}

 

출력

36

print 문(출력), println 문( 출력, 개행)는 괄호() 인식하여 내부 값을 출력 한다.

/** Prints the given [message] and the line separator to the standard output stream. */
@kotlin.internal.InlineOnly
public actual inline fun println(message: Any?) {
    System.out.println(message)
}

출처: 초보자를 위한 코틀린(Kotlin) 200제 / 엄민석 지음 | 정보문화사 | 2018년 05월 20일 출간

배정연산자 Assignment Operator: 변수에 값을 저장할 때 사용하는 연산자

package com.practice015

// 배정연산자 Assginment Operator: 변수에 값을 저장할때 사용하는 연산자
fun main(args: Array<String>): Unit
{
	val a: Int
	var b: Int

	a = 10 + 5
	b = 10

	b += a // b에 a의 값을 누적
	println(b)	// 출력: 25

	b %= 3 // b를 3으로 나눈 나머지를 b에 저장
	println(b)	// 출력 : 1
}

 

출력

25
1

 

참고 :  https://kotlinlang.org/docs/reference/grammar.html#precedence

 

Grammar

 

kotlinlang.org

출처: 초보자를 위한 코틀린(Kotlin) 200제 / 엄민석 지음 | 정보문화사 | 2018년 05월 20일 출간

package com.practice014
// 주석

fun main(args: Array<String>): Unit
{
	// Apple을 화면에 출력한다.
	println(/* 이 부분은 컴파일러가 통째로 무시한다. */"Apple"/* 이
	부
	분
	도
	*/)
}

 

주석Comment:  소스코드가 자연어가 아니기때문에 설명하기 위한 문법

// 이렇게도 /* 주석내용  */ 또는 이렇게도 사용 가능

출력:

Apple

 

출처: 초보자를 위한 코틀린(Kotlin) 200제 / 엄민석 지음 | 정보문화사 | 2018년 05월 20일 출간

package com.practice013
// 타입 별명 Type Alias

typealias Number = Int	// 이미 존재하는 타입에 별명을 붙일 수 있다.

fun main(args: Array<String>)
{
	val a: Number = 10	// Number 타입은 실제 Int 타입이지
	println(a)
}

typealias 키워드: 이미 존재하는 타입에 별명을 붙일 수 있다. 타입이름이 너무 길 때 줄이는 용도로 쓰면 좋다

출력

10

+ Recent posts