본문 바로가기

개발언어37

코틀린 익히기 14 - 코루틴 Coroutine 보통 한 프로세스 안에서 여러 개의 일을 동시에 진행시키기 위해서는 멀티스레드를 사용합니다. 자바 쉽게 배우기 20 - 스레드에서도 스레드에 대해 다룬 적이 있죠.❓ 프로세스란 무엇인가요?- 일반적으로 실행 중인 프로그램을 의미하고, 작업(Job) 혹은 태스크(Task)라고 불리기도 합니다.❓ 멀티스레드란 무엇인가요?- 멀티스레드는 한 프로세스 안에서 여러 개의 일이 동시에 진행되는 것을 의미합니다. 코틀린으로 이러한 동시성 프로그래밍을 구현할 때는 스레드뿐만 아니라 코틀린에서 기본적으로 제공하는 코루틴을 활용할 수 있습니다.코루틴은 멀티 스레드가 가지는 단점(디버깅, 예측의 어려움, 코드 복잡도 높음)을 극복할 수 있기에 자주 사용되는 방식입니다. 동기와 비동기동기 : 작업을 순서대로 진행함비동기 : .. 2024. 1. 14.
자바, 코틀린, 파이썬 개발언어 한눈에 비교하기 Java, Kotlin, Python 언어를 한눈에 비교할 수 있도록 표로 정리해 보았습니다. JAVA KOTLIN PYTHON 클래스명 PascalCase PascalCase PascalCase 변수, 함수명 camelCase camelCase snake_case 주석 //, /* */ //, /* */ # 주요 문법 문장 끝에 ; {} {} 띄어쓰기 중요 : 와 띄어쓰기로 {} 대체 pass 로 추후에 구현할 부분 대체 가능 규칙 클래스 밖에서 변수와 함수를 선언할 수 없습니다. 클래스 밖에서 변수와 함수를 선언할 수 있습니다. 클래스 밖에서 변수와 함수를 선언할 수 있습니다. 기본형 byte char int long float double boolean (true, false) 참조형 기본형을 제외.. 2023. 11. 28.
코틀린 익히기 13 - 입출력 자바 쉽게 배우기 22 - 입출력 스트림스트림 스트림은 물줄기를 의미합니다. 입출력 스트림 또한 입출력을 위한 흐름을 의미합니다. 데이터는 출발지에서 목적지로 향합니다. 이 향하는 길을 이어주는 것이 입출력 스트림입니다.devdharu.tistory.com자바의 입출력 스트림에서 설명한 바이트 기반 스트림, 문자 기반 스트림, 보조 스트림 모두 사용할 수 있습니다.  입출력출력하기println() // 출력 후 개행print() // 출력 입력받기var str1: String? = readLine() // 문자열로 입력받기, null 허용 Ovar str2: String = readln() // 문자열로 입력받기, null 허용 Xvar str3: String? = readlnOrNull() // 문자열.. 2023. 10. 9.
코틀린 익히기 12 - 표준함수 표준함수표준 라이브러리에 포함되어 있는 함수를 표준함수라고 합니다. 코틀린의 표준함수는 람다식과 고차함수를 이용해 선언되어 있습니다. 표준함수를 사용하면 코드를 더 간결하고 쉽게 바꿀 수 있습니다. 어떤 함수들이 선언되어 있고, 어떻게 사용할 수 있는지 공부해 봅시다. 스코프 함수 Scope Function스코프 함수는 Kotlin 표준 라이브러리에서 제공하는 표준 함수입니다.코드 블록을 실행하는 것이 유일한 목적이며, 성능 최적화를 위해 모두 inline으로 선언되어 있습니다. 스코프 함수에는 let, also, apply, run, with가 있습니다.  let() In : 함수를 호출하는 객체 Out : 결괏값public inline fun T.let(block: (T) -> R): R { ret.. 2023. 10. 6.
코틀린 익히기 11 - 컬렉션 프레임워크 컬렉션 프레임워크컬렉션 프레임워크는 배열처럼 다수의 데이터를 한 묶음으로 보관, 처리할 수 있는 구조를 의미합니다. 배열보다 많은 기능을 가지고 있어 자주 사용됩니다.jdk1.2에 등장했으며 자바는 컬렉션 프레임워크를 위한 다양한 인터페이스와 클래스들을 제공하고 있습니다. 인터페이스와 클래스들은 java.util 패키지에 포함되어 있으며 핵심 인터페이스는 List, Set, Map입니다. 사용하려면 해당 클래스를 import 해주어야 합니다.컬렉션 프레임워크의 큰 틀은 모두 인터페이스로 설계되어 있고 이를 구현한 클래스들을 인스턴스화해 사용합니다. 각 인터페이스와 클래스들의 주요 메서드 위주로 알아봅시다.  컬렉션 인터페이스의 구조도인터페이스특징List /MutableList순서가 있는 데이터의 집합으로.. 2023. 10. 4.
코틀린 익히기 10 - 배열 배열 Array배열자바의 배열은 같은 타입의 여러 데이터를 하나로 묶어 보관하는 구조였습니다. 하지만, 코틀린의 배열은 여러 가지 타입의 데이터를 묶을 수 있습니다. 데이터들은 Index라는 번호를 통해 구분됩니다.   배열 생성배열을 생성하는 여러 가지 방법이 있습니다. 배열은 한 번 생성되고 나면 그 길이를 수정할 수 없습니다. arrayOf(), arrayOfNulls() arrayOf()를 사용하면 배열을 직접 입력해 생성할 수 있습니다. arrayOfNulls()를 사용하면 null로 구성된 배열을 만들 수 있습니다.val|var 배열이름 = arrayOf(배열)val|var 배열이름 = arrayOfNulls(사이즈) val numbers = arrayOf(1, 2, 3, 4)// [1, 2,.. 2023. 10. 1.
코틀린 익히기 9 - 변성 Variance 코틀린 익히기 8 - 제네릭제네릭 제네릭은 jdk 1.5부터 도입되었습니다. 타입을 미리 지정하지 않고 컴파일할 때 체크할 수 있도록 하는 기능입니다. 미리 타입을 지정해 두면 타입을 형변환하거나 체크해야 하는 번거로devdharu.tistory.com지난 글 제네릭에 이어서 변성에 대해 살펴보겠습니다. 지난 글에서 설명드린 것처럼 제네릭의 다형성은 제한을 갖습니다. 대입된 타입이 상속관계라 할지라도 다형성이 성립되지 않았죠. 변성을 사용하면 이러한 제한을 해제할 수 있습니다.  변성은 어려운 개념입니다. 아직 이해하기 어렵다면 건너뛰셔도 좋습니다!  변성 Variance변성이란 형식 매개변수가 클래스 계층에 영향을 주는 것을 말합니다.어떻게 영향을 미치는지에 따라 공변성, 반공변성, 무변성으로 분류됩니.. 2023. 9. 30.
코틀린 익히기 8 - 제네릭 제네릭제네릭은 jdk 1.5부터 도입되었습니다. 타입을 미리 지정하지 않고 컴파일할 때 체크할 수 있도록 하는 기능입니다. 미리 타입을 지정해 두면 타입을 형변환하거나 체크해야 하는 번거로움이 있습니다. 제네릭을 사용하면 이와 같은 부담에서 벗어날 수 있습니다. 제네릭은 클래스와 메서드에 선언할 수 있습니다. 어떻게 선언하고 사용하는지 살펴봅시다. 제네릭에서 사용하는 형식 매개변수 관례E요소K키N숫자T형식V값 1. 제네릭 클래스제네릭 클래스는 형식 매개변수를 사용하는 클래스입니다.일반 클래스 Genericclass Generic (var property: Any?) { // 주 생성자 var variabe: Any? = null // 프로퍼티 constructor(property.. 2023. 9. 28.
코틀린 익히기 7 - 다양한 클래스와 인터페이스 코틀린의 다양한 클래스 - 추상 클래스, 데이터 클래스, 내부 클래스, 열거형 클래스, 실드 클래스추상 클래스 abstract class : 추상 프로퍼티, 추상 메서드, 일반 프로퍼티, 일반 메서드 abstract class 클래스명 ( /* 주생성자 */ ) { ... abstract (val|var) 프로퍼티명 : 자료형 abstract fun play()}추상 프로퍼티나 메서드가 하나라도 있다면 추상 클래스로 선언해야 합니다.추상 프로퍼티와 메서드는 선언만 합니다. 프로퍼티의 경우 초기화 하지 않고, 메서드의 경우 본문을 구현하지 않습니다. 추상 클래스와 추상 클래스의 프로퍼티, 메서드는 상속을 위해 open 키워드를 사용할 필요가 없습니다. 데이터 클래스 data classda.. 2023. 9. 27.
코틀린 익히기 6 - 프로퍼티와 object 프로퍼티지난 글에서 공부했던 프로퍼티에 대해 더 자세히 알아봅시다. 프로퍼티는 객체의 구성요소로서 객체가 가지는 데이터들을 뜻합니다.코틀린의 프로퍼티는 자동으로 게터와 세터가 생성되어 인스턴스.프로퍼티 로 객체에 접근하거나 값을 변경하는 것이 가능합니다.만약, 게터와 세터를 직접 지정하고 싶다면 다음과 같은 방법을 사용합니다.value : 외부로부터 받아온 값field : 프로퍼티를 참조하는 변수var 프로퍼티명: 프로퍼티타입 = 매개변수로 받아온 프로퍼티 get() = field set(value) { field = value } 지연 초기화 lateinit, lazy코틀린 익히기 2 - 자료형, 연산자에서 짧게 다뤘던 지연초기화를 기억하시나요? 생성과 동시에 초기화하기 어려운 경우 lateinit과.. 2023. 9. 25.
코틀릭 익히기 5 - 클래스와 객체 자바 쉽게 배우기 6 - 클래스와 객체의 도입부를 자바 > 코틀린으로 고쳐서 인용하겠습니다.이번글에서는 클래스와 객체에 대해 알아봅시다. 그전에 왜 코틀린에서는 클래스와 객체를 사용하는 지부터 살펴봅시다. 코틀린은 객체지향 프로그래밍 언어입니다. 객체가 무엇일까요? 넓은 의미에서 객체는 이 세상에 존재하는 모든 것들을 의미합니다. 형상이 있는 것과 없는 것 모두 객체가 될 수 있습니다.  컴퓨터에게 실제 세계를 이해시키기 위해서는 현실의 사물을 컴퓨터가 이해할 수 있는 방식으로 해석해 주는 과정이 필요합니다. 우리는 그 과정에서 객체를 사용하게 되죠.  철수라는 객체를 만들어 봅시다. 철수 객체에는 나이, 성별, 직업, 하는 행동 (블로그 포스팅, 개발, 유튜브 시청) 등의 정보가 포함되어 있습니다. 물.. 2023. 9. 21.
코틀린 익히기 4 - 함수형 프로그래밍 함수형 프로그래밍함수형 프로그래밍은 함수형 기능들을 사용해 변수의 사용을 최소화한 프로그래밍입니다. 코틀린은 함수형 프로그래밍이 가능한 언어로, 함수를 사용해 간략하고 우아한 프로그래밍을 할 수 있습니다.함수형 프로그래밍에서는 순수함수, 람다식, 고차함수를 다룹니다. 일단 코틀린에서 사용하는 함수의 문법부터 함수형 프로그래밍을 구현하는 방법까지 차근차근 알아가 보도록 합시다.함수 문법fun 함수명 ( 매개변수: 매개변수 타입, ... ): 반환타입 {    ...} fun sum(a: Int, b: Int): Int { var sum = a + b return sum} 함수 코드 생략// {} 안의 코드가 한 줄일 경우 중괄호와 return문 생략 가능fun sum(a: Int, b: Int): Int .. 2023. 9. 20.