Korean Scala Hub

기술 글

Scala와 프로그래밍을 공부하고 사용하며 쌓은 지식과 경험을 공유합니다.

AI는 살아 있는가 — 인간의 사고는 정말 특별한가

ChatGPT와 대화를 하다 보면 가끔 이상한 느낌이 든다. 질문을 이해하고, 앞에서 나눈 이야기를 이어가고, 반론을 제시하기도 한다. 내가 설명을 제대로 이해하지 못하면 다른 방식으로 설명하고, 어떤 때는 내가 미처 생각하지 못했던 관점을 제시한다. 물론 이것이 어떻게 만들어지는지는 대략 알고 있다. 현재의 대규모 언어 모델은 방대한 텍스트를 학습하면서 언어 속에 존재하는 통계적 관계를 익히고, 주어진 문맥에서 다음에 어떤 토큰이 등장하는 것…

조회 63 · 도움 0 · 비추천 0 · 댓글 0
작성자: 코딩!제이크
카테고리: AI Tools & Tips
발행: 2026-08-18 수정 2026-08-18

Scala 3 Capture Checking이 ZIO와 Cats Effect를 대체할 수 있을까?

Scala 3의 capture checking을 살펴보다 보면 자연스럽게 기존 effect library가 떠오른다. Scala에서는 이미 ZIO와 Cats Effect를 통해 side effect와 resource를 상당히 정교하게 다룰 수 있다. ZIO는 ZIO[R, E, A]라는 타입을 통해 computation이 어떤 environment를 필요로 하고 어떻게 실패하며 어떤 값을 반환하는지를 표현한다. Cats Effect는 IO와 Re…

조회 57 · 도움 0 · 비추천 0 · 댓글 0
작성자: 코딩!제이크
카테고리: Scala Language
발행: 2026-08-17 수정 2026-08-17

Scala 3 Capture Checking과 Tracked Capabilities

Scala의 타입 시스템은 프로그램에서 값이 어떤 형태를 가지는지를 상당히 정교하게 표현할 수 있다. 어떤 함수가 String을 받아 Int를 반환하는지, 어떤 타입의 값을 사용할 수 있는지, 어떤 구현이 필요한지를 컴파일 단계에서 확인할 수 있다. 그런데 함수가 무엇을 반환하는지뿐 아니라 그 함수가 실행될 때 무엇에 접근할 수 있는지도 타입으로 표현할 수 있을까. 예를 들어 다음과 같은 함수가 있다고 하자. def readConfig(fs: …

조회 59 · 도움 0 · 비추천 0 · 댓글 0
작성자: 코딩!제이크
카테고리: Scala Language
발행: 2026-08-17 수정 2026-08-17

AI Agent를 어떻게 안전하게 만들 것인가 — Martin Odersky의 Tracked Capabilities for Safer Agents 해설

AI agent는 일반적인 LLM보다 보안 문제가 훨씬 복잡하다. LLM이 잘못된 답을 생성하면 문제가 생길 수 있지만, 결과가 텍스트에 머무르는 한 실제 시스템에 미치는 영향은 제한적이다. Agent는 다르다. 파일을 읽고 수정하고, 데이터베이스에 접근하고, 외부 API를 호출하고, 프로그램을 실행한다. 최근에는 agent가 tool을 하나씩 호출하는 대신 작은 프로그램을 직접 작성해서 여러 tool과 control flow를 조합하는 방식도…

조회 63 · 도움 0 · 비추천 0 · 댓글 0
작성자: 코딩!제이크
카테고리: AI Tools & Tips
발행: 2026-08-17 수정 2026-08-17

AI가 코드를 작성하는 시대, Scala는 경쟁력이 있을까?

AI가 코드를 작성하는 비중이 빠르게 늘고 있다. 아직은 사람이 설계하고 AI가 구현을 보조하는 경우가 많지만, 코드의 상당 부분을 AI가 작성하는 방향으로 가고 있다는 것은 분명해 보인다. 그렇다면 프로그래밍 언어를 선택하는 기준도 달라질까? Scala는 강한 타입 시스템과 함수형 프로그래밍, 높은 표현력을 가진 언어다. 사람이 코드를 작성할 때는 이런 특성이 장점인 동시에 Scala를 어렵게 만드는 이유이기도 했다. 하지만 AI가 코드를 작…

조회 87 · 도움 0 · 비추천 0 · 댓글 0
작성자: 코딩!제이크
카테고리: AI Tools & Tips
발행: 2026-08-11 수정 2026-08-11

AI가 코딩하는 시대, 좋은 프로그래밍 언어의 기준

재밌는 생각이 들었다. 요즘 가장 많이 사용하는 프로그래밍 언어 중 하나는 파이썬이다. 문법이 간결하고 읽기 쉬우며, 사람이 생각한 내용을 빠르게 코드로 옮기기 좋다. 그래서 데이터 분석, 인공지능, 자동화, 교육 등 다양한 분야에서 널리 사용된다. 그런데 AI로 바이브 코딩을 하는 시대에도 파이썬이 가장 좋은 언어일까? 지금까지 프로그래밍 언어는 주로 사람이 얼마나 쉽게 배우고, 읽고, 작성할 수 있는지를 기준으로 발전해 왔다. 하지만 코드의…

조회 116 · 도움 0 · 비추천 0 · 댓글 0
작성자: 코딩!제이크
카테고리: AI Tools & Tips
발행: 2026-07-25 수정 2026-08-02

cross-cutting concerns를 해결하기 위한 Aspect-oriented programming

안녕하세요. 코딩!제이크입니다. 오늘은 Cross-cutting concerns(횡단 관심사)와 이를 해결하기 위한 Aspect-oriented programming에 대해서 알아보겠습니다. cross-cutting concerns 소프트웨어 개발에서 여러 모듈이나 계층에 공통적으로 영향을 미치지만, 핵심 비즈니스 로직과는 직접적인 관련이 없는 기능들을 의미합니다. 이러한 기능들은 코드 전반에 걸쳐 “가로지르며 (cross-cutting) 나타…

조회 920 · 도움 0 · 비추천 0 · 댓글 0
작성자: 코딩!제이크
카테고리: Scala Language
발행: 2025-07-11 수정 2025-07-11

스칼라 개발 환경에 대해서 소개할께요

오늘은 스칼라 언어를 사용하는 다양한 개발 환경에 대해 소개해 보려고 합니다. REPL (Read - Eval - Print Loop) 스칼라를 설치하면 터미널에서 사용할 수 있는 인터랙티브한 실행환경이에요. 대화형 셸이죠. 파이썬에서도 자주 사용하는 기능이라 많은 분들이 익숙하실 거에요. 간단한 계산, 함수 테스트, 코드 실험 등 다양한 용도로 활용됩니다. 이 툴도 계속 개선이 되면서 기능도 다양해지고 사용하기에 많이 편해진것 같아요. 저는 …

조회 957 · 도움 0 · 비추천 0 · 댓글 0
작성자: 코딩!제이크
카테고리: Scala Language
발행: 2025-06-01 수정 2025-06-01

Scala 3 Given 세번째 - ad hoc polymorphism (애드혹 다형성)을 위한 타입클래스

스칼라 Given 세 번째 이야기 입니다. 오늘은 좀 더 깊이 있는 주제를 다루려고 합니다. 바로 다형성에 대한 내용입니다. 일반적으로 프로그래밍 언어에서 다형성(polymorphism)은 크게 세 가지 범주로 나눌 수 있습니다. 파라메트릭 다형성 (Parametric Polymorphism) 함수나 자료구조가 구체적인 타입에 의존하지 않고, 타입 파라미터를 통해 다양한 타입에 대해 동일한 로직으로 적용할 수 있게 하는 다형성으로 제네릭(gen…

조회 1124 · 도움 0 · 비추천 0 · 댓글 0
작성자: 코딩!제이크
카테고리: Scala Language
발행: 2024-12-22 수정 2024-12-24

Scala 3 Given 두번째 - 컨텍스트 파라미터와 Given을 활용한 스칼라의 다형성 구현

이 글은 Programming in Scala Fifth Edition의 Given에 대해 Study 한 내용을 좀 더 자세히 풀어서 설명한 글입니다. 시작합니다. 컨텍스트 파라미터(Context Parameter)는 앞에 명시적으로 작성된 파라미터 목록에 대한 타입 관련 정보를 제공하는 목적으로 많이 사용됩니다. 스칼라에서 함수를 작성할 때 ad hoc polymorphism (특정 타입에 대한 다형성)을 얻기 위해 꼭 필요한 방법입니다. 작…

조회 1227 · 도움 0 · 비추천 0 · 댓글 0
작성자: 코딩!제이크
카테고리: Scala Language
발행: 2024-10-21 수정 2024-12-21

Scala3 Given 첫번째 - 기본 사용법

함수의 동작은 이벤트가 일어나는 조건 또는 환경 (Context)에 따른 데이타와 알고리즘에 의존하며, 함수에 정보와 동작을 전달하는 다양한 방법 중 함수형 프로그래밍에서 전통적으로 사용하는 방식은 파라미터로 모든 것을 전달하는 것입니다. Functional behavior depends on -. Contextual data : System properties, Security permissions, Authenticated user, Dat…

조회 1298 · 도움 0 · 비추천 0 · 댓글 0
작성자: 코딩!제이크
카테고리: Scala Language
발행: 2024-10-19 수정 2024-12-22

Scala 언어에서 case class에 final을 왜 붙히는 걸까?

Scala의 case class는 굉장히 유용하고 직관적인 기능을 제공하는데, 패턴 매칭을 지원하고 자동으로 생성자, toString, equals, hashCode 메서드를 생성해 주기 때문에, Scala 프로그래머들이 즐겨 사용하는 클래스 유형 중 하나입니다. 하지만 case class를 사용할 때, 클래스 앞에 final을 붙여야 하는지 고민하는 경우가 있습니다. 이 글에서는 final 키워드를 왜, 언제 사용해야 하는지, 그리고 실제로 …

조회 1089 · 도움 0 · 비추천 0 · 댓글 0
작성자: 코딩!제이크
카테고리: Scala Language
발행: 2024-10-01 수정 2024-10-01

스칼라 타입시스템에대해 공부해야 할 것들

안녕하세요. 코딩!제이크입니다. 드디어 스칼라 타입 시스템에 대해서 이야기를 하게 되었습니다. 스칼라의 타입 시스템은 개발자가 더 안전하고 효율적인 코드를 작성할 수 있도록 돕는 중요한 도구입니다. 특히, 강력한 정적 타입 검사와 타입 추론을 통해 컴파일 시점에서 많은 오류들을 잡아주고 간결한 코드 작성을 가능하게 합니다. 이 글에서는 스칼라 타입 시스템에 대한 아웃라인을 먼저 정리해서 우리가 어떤 것들을 공부해야 하는지 알아 보겠습니다. 1.…

조회 1171 · 도움 0 · 비추천 0 · 댓글 0
작성자: 코딩!제이크
카테고리: Scala Language
발행: 2024-08-16 수정 2024-08-16

야마하 THR10을 데비안 리눅스에 USB로 연결해서 사용하는 방법 - ALSA, PulseAudio 설정

안녕하세요. 코딩!제이크입니다. 얼마 전에 당근에서 THR10을 좋은 가격에 구입했는데 뒤에 USB B 2.0 포트가 있어서 확인해 보니 PC에 USB로 연결하면 스피커로도 사용할 수 있고, 오디오 인터페이스로도 사용할 수 있어서 기타 연주를 PC에 직접 녹음 할 수 있다고 합니다. 바로 쿠팡에서 USB B to A 케이블을 구입해서 PC에 연결했는데 USB 연결한 것 만으로 소리가 바로 나오지는 않았습니다. PC OS가 데비안 리눅스 Bull…

조회 1452 · 도움 0 · 비추천 0 · 댓글 0
작성자: 코딩!제이크
카테고리: Linux
발행: 2024-08-04 수정 2024-08-04

스칼라의 동시성 프로그래밍 - 비동기 방식을 지원하는 Monad의 대표적인 함수 Future와 flatMap, for comprehension의 활용

Monad의 대표적인 함수인 Future와 flatMap, for comprehension 사용 방법에 대해서 알아보겠습니다. Future는 스칼라에서 제공하는 동시성 프로그래밍을 위한 객체로 비동기 방식을 통해 동시성 처리 방식을 제공하고 있습니다. 동시성 프로그래밍과 동기화(Synchronous) 방식, 비동기(Asynchronous) 방식에 대해서는 글 하나에 모두 담을 수 없는 주제이기 때문에 추후에 다른 글에서 심도 있게 다루기로 하고…

조회 1417 · 도움 2 · 비추천 0 · 댓글 0
작성자: 달빛제이크
카테고리: Scala Language
발행: 2024-07-28 수정 2024-10-28

스칼라 함수형 프로그래밍 러닝커브의 주역!! 모나드와 주요 연산자를 소개합니다.

안녕하세요. 달빛제이크입니다. 오늘은 스칼라 함수형 프로그래밍의 러닝 커브를 매우 가파르게 만들어 스칼라가 어렵다는 인식을 널리 퍼뜨린 바로 그 주인공 모나드에 대해 소개하겠습니다. 프로그래밍 언어를 Skill로서 사용하는 것은 경험이 쌓이면서 익숙해지지만, 그 언어가 도입한 개념에 대해 아는 것은 수학적 이해가 필요한 만큼 많이 어렵습니다. 그럼에도 불구하고 모나드에 대해 이해하려는 노력은 모나드가 순수 함수형 프로그래밍의 핵심적인 개념이기 …

조회 1294 · 도움 1 · 비추천 0 · 댓글 0
작성자: 달빛제이크
카테고리: Scala Language
발행: 2024-07-07 수정 2024-07-19

함수형 프로그래밍에서 이터레이터와 함수형 변환 - foreach, map, for 표현식의 이해와 활용

안녕하세요. 달빛제이크입니다. 함수형 프로그래밍에서 이터레이터와 함수형 변환을 foreach, map, for 표현식을 사용해서 구현해 보겠습니다. 지난 글 스칼라에서 지원하는 고차 함수에서 foreach에 대한 사용법을 설명 드렸었는데, 이번에는 map, for 표현식과 함께 다양한 예제를 다루어보려고 합니다. 1. 이터레이팅을 위한 foreach foreach는 IterableOnceOps 트레이트에 선언되어 있는 메소드 중에 하나로, 모든…

조회 759 · 도움 0 · 비추천 0 · 댓글 0
작성자: 달빛제이크
카테고리: Scala Language
발행: 2024-06-30 수정 2024-06-30

스칼라의 By-value parameter(값에 의한 파라미터), By-name parameter (이름에 의한 파라미터)의 개념과 활용 예시

안녕하세요. 달빛제이크입니다. 이번 글에서는 스칼라 언어에서 지원하는 파라미터의 종류에 대해 살펴보겠습니다. 스칼라에서 지원하는 파라미터의 종류에는 크게 두 가지가 있습니다. 하나는 우리가 항상 예제에서 봤던 By-value parameter, 값에 의한 파라미터이고, 다른 하나는 By-name parameter, 이름에 의한 파라미터입니다. 두 파라미터의 차이점에 대해서 알아보고 이름에 의한 파라미터의 개념과 활용 방법에 대해 이야기하겠습니다…

조회 514 · 도움 0 · 비추천 0 · 댓글 0
작성자: 달빛제이크
카테고리: Scala Language
발행: 2024-06-29 수정 2024-06-29

스칼라 함수형 프로그래밍 - 커링(Currying)이 불러온 착각. 언어가 기본 지원하는 제어 구조 처럼 보이는 제어 추상화

안녕하세요. 달빛제이크입니다. 스칼라 코드를 보면 분명 함수이고 소괄호 '()' parentheses로 묶여 전달되어야 할 인수 부분에 중괄호 '{}' curly braces와 함께 긴 코드가 적혀있는 모습을 많이 볼 수 있습니다. 어떤 형태는 소괄호에 묶여 일부 인수가 전달되고, 그 뒤를 따라 중괄호에 마찬가지로 긴 코드가 작성되어 있습니다. 처음 스칼라로 코딩을 할 때 도대체 이런 형태가 어떻게 가능한지, 스칼라에서는 이렇게도 작성할 수 있…

조회 505 · 도움 0 · 비추천 0 · 댓글 0
작성자: 달빛제이크
카테고리: Scala Language
발행: 2024-06-28 수정 2024-06-29

불러오는 중