본문 바로가기

전체 카테고리22

8장. 고급 리스트 처리 2020. 8. 6.
7장. 오류와 예외 처리하기 7장의 내용을 요약한 글입니다. Option 타입의 문제점 6장에서 다루었던 Option 은 선택적 데이터를 나타내기 위한 데이터 타입으로, 데이터가 존재할 때는 Some 을 존재하지 않을 때는 None 을 반환하여 선택적 데이터를 표현한다. Option 타입은 예외가 발생해서 데이터가 존재하지 않는 경우에도 예외를 던지는 대신 None 을 반환하기 때문에 발생한 예외에 대한 정보가 모두 사라진다. 즉, '데이터가 없다'는 것은 분명히 표현할 수 있지만 데이터가 왜 없는지 그 이유를 표현하기에는 Option 타입이 적절하지 않다. 다음 프로그램의 실행 결과로 "No data" 가 출력 되었다면, 어떤 이유 때문에 데이터가 없는지 추측해보자. val email = getNameFromKeyboardInpu.. 2020. 7. 31.
6장. 선택적 데이터 처리하기 6장의 내용을 요약한 글입니다. 선택적 데이터 선택적 데이터란 데이터가 존재할 수도 있고 존재하지 않을 수도 있다는 뜻이다. 예를 들어, 리스트 원소 중에서 최댓값을 반환하는 함수가 있다고 하자. 리스트에 원소가 0 개일 때는 반환할 값이 존재하지 않는다. 이때, 오류는 발생하지 않았지만 "값이 존재하지 않음"을 표현할 방법이 필요하다. 가장 일반적인 방법으로 널 참조(null reference)를 사용하여 선택적 데이터를 표현한다. 데이터가 존재하는 경우에는 변수가 그 값을 가리키도록 하고, 데이터가 존재하지 않는 경우에는 널을 가리키도록 하는 것이다. 그러나, 널 참조를 사용하면 여러가지 문제점이 발생한다. 널 참조의 문제점과 선택적 데이터를 처리하기 위해 널 참조 대신에 사용할 수 있는 다른 대안들.. 2020. 7. 23.
4장. 재귀, 공재귀, 메모화 길벗 출판사의 4장의 내용을 요약한 글입니다. 재귀 함수로 의도를 명확히 표현하기 여러 알고리즘은 재귀 함수로 정의된다. 재귀를 사용하지 않고 알고리즘을 구현하려면 재귀 알고리즘을 비재귀 알고리즘으로 변환해야 하는데, 이 과정에서 알고리즘의 원래의 의도를 놓쳐버리는 실수를 범할 수 있다. 프로그램은 작성하는 것보다 읽는 경우가 더 많으므로 프로그램이 과업을 처리하는 '과정'보다는 어떤 일을 하는지 '의도'를 명확히 보여주는 코드를 작성하는 것이 중요하다. 코드는 단 한번 작성되지만, 여러 번 읽힌다 자바에서 재귀 함수를 사용하는 경우는 거의 없다. 그 이유는 자바 컴파일러가 재귀 함수 처리를 제대로 구현하지 못했기 때문이다. 코틀린의 경우 재귀 함수에 대해 더 나은 구현을 제공하기 때문에 재귀를 제대로 .. 2020. 7. 18.
3장. 함수로 프로그래밍하기 3장의 내용을 요약한 글입니다. 순수 함수와 순수 효과 분리하기 프로그램은 "함수"라고 불리는 하위 프로그램으로 구성된다. 하위 프로그램은 외부 상태에 의존하는 부분과 의존하지 않는 부분으로 분리할 수 있다. 안전한 프로그램을 작성하기 위해서는 외부와 상호작용하는 순수 효과와 외부와 아무런 상호작용이 없이 계산만을 담당하는 순수 함수를 따로 분리해 작성해야한다. 순수 함수 : 외부 상태에 따른 부수 효과(side effect) 없이 오로지 인자에 의해서만 반환 값이 결정된다. 순수 효과 : 계산이 포함되지 않으며 값을 반환하지 않는 오로지 외부 세계와의 상호작용만 담당한다. 순수 함수와 순수 효과를 분리하는 것에서 더 나아가서 더욱 안전한 프로그램을 작성하고 싶다면 순수 효과를 테스트하기 쉬운 형태로 바.. 2020. 7. 14.
1장. 프로그램을 더 안전하게 만들기 길벗 출판사의 1장의 내용을 요약한 글입니다. [지은이의 말] 코틀린(Kotlin) 1. JVM(Java Virtual Machine) 기반의 언어다. 코틀린은 JVM(Java Virtual Machine) 기반의 언어로 코틀린으로 작성한 소스코드 파일(.kt)을 컴파일하면 자바 클래스 파일(.class)이 생성되며, 자바와 동일하게 플랫폼 독립적이다. 즉, 거의 모든 플랫폼(JVM이 돌아가는 환경이라면 어디든)에서 실행이 가능하다. 2. Java 와의 호환성이 높다. 다른 JVM 기반의 언어들(스칼라, 그루비, 클로저 등)은 자바와 라이브러리 수준에서 통합된다. '라이브러리 수준에서 통합된다'라는 말은 스칼라 프로그램에서 자바로 작성된 라이브러리를 사용할 수 있고, 반대로 자바 프로그램에서 스칼라로 작.. 2020. 7. 4.
안드로이드 프로그래밍 Next Step - 5.1 액티비티 생명주기 액티비티 생명주기 1. 생명주기 메서드 호출 사이클 시작할 때 onCreate -> onStart -> onResume 회면 회전할 때 / 시스템에 의해 제거될 때 / Configuration(구성)이 변경될 때 onPause -> onSaveInstanceState -> onStop -> onDestroy -> onCreate -> onStart -> onRestoreInstanceState -> onResume 다른 액티비티가 위에 뜰 때 / 전원 키로 화면 OFF / 홈 키 누를 때 onPause -> onSaveInstanceState -> onStop 백 키로 액티비티 종료 onPause -> onStop -> onDestroy 백 키로 기존 액티비티에 돌아올 때 / 홈으로 갔다가 다시 돌아올 .. 2019. 3. 29.