Scala

원문: Effective Scala - Collections Scala는 매우 범용적이고 풍부하며 강력하면서 조합 가능한 컬렉션 라이브러리를 제공합니다. 컬렉션은 고수준의 기능을 제공하면서 수많은 연산을 노출합니다. 많은 컬렉션 조작 및 변환 작업이 간결하고 가독성 있게 표현될 수 있지만, 이러한 기능을 부주의하게 적용하면 그 반대의 결과를 초래할 수 있습니다. 모든 Scala 프로그래머는 컬렉션 디자인 문서를 읽어보아야 합니다. 이 문서는 Scala collection library에 대한 동기와 통찰을 제공합니다. 항상 당신의 요구사항과 부합하는 가장 단순한 컬렉션을 사용하세요. Hierarchy (계층 구조)Scala의 컬렉션 라이브러리는 매우 거대합니다. 이 복잡한 계층 구조를 간단히 표현하자면 ..
원문: Effective Scala - Types and Generics 타입 시스템의 주요 목적은 프로그래밍 오류를 감지하는 것입니다. 타입 시스템은 특정한 코드 불변성을 컴파일러가 검증할 수 있도록 제한된 형태의 정적 검증을 제공합니다. 물론 타입 시스템은 다른 이점도 있지만, 오류 검사가 그 존재 이유입니다. 우리는 이러한 목표를 반영하여 타입 시스템을 사용해야 하지만, 독자를 염두에 두고 신중하게 사용해야 합니다. 타입을 적절히 사용하면 명확성이 향상될 수 있지만, 지나치게 기교를 부리면 오히려 코드가 모호해질 수 있습니다.스칼라의 강력한 타입 시스템은 학문적 탐구와 실험의 원천이 되는 경우가 많습니다(예: 스칼라에서의 타입 레벨 프로그래밍). 이러한 기술들은 학문적으로 흥미로운 주제이지만, 실제..
원문: Effective Scala - Formatting Code formatting의 구체적인 사항들은 실용적이기만 하다면 크게 문제가 되지 않습니다. 본질적으로 스타일은 좋거나 나쁜 것이 아니며, 거의 모든 사람들이 각자의 선호에 따라 좋고 나쁨을 다르게 느낍니다. 하지만 어플리케이션을 일관적으로 동일한 포맷으로 작성하게 되면 가독성이 향상됩니다. 특정 스타일에 이미 익숙한 독자는 새로운 규칙이나 언어 문법의 복잡한 부분을 다시 이해할 필요가 없습니다. 스칼라에서는 이러한 일관성이 특히 중요한데, 그 이유는 스칼라 문법이 굉장히 높은 수준의 중첩(중복)을 가지기 때문입니다. 하나 예를 들자면 메소드의 호출이 있습니다. 메소드는 "."으로 호출할 수 있고, 공백으로 호출할 수도 있고, 매개변수가 없거..
원문: Effective Scala - Introduction 스칼라는 트위터에서 사용되는 주요 애플리케이션 프로그래밍 언어 중 하나입니다. 우리의 많은 인프라가 스칼라로 작성되었으며, 이 언어를 활용하기 위해 여러 대규모 라이브러리들(유틸성 라이브러리를 모은 util, 타입간의 상호 변환을 도와주는 bijection 등)을 운영하고 있습니다. 스칼라는 매우 효과적이지만, 동시에 큰 언어이기도 하여서, 우리는 이를 사용할 때는 세심한 주의가 필요하다는 것을 배울 수 있었습니다. 스칼라의 함정은 무엇일까요? 어떤 기능을 받아들이고, 어떤 기능을 피해야 할까요? "순수 함수형 스타일"을 언제 사용하고, 언제 피해야 할까요? 다르게 표현하자면, 어떻게 하면 이 언어를 효과적으로 사용할 수 있을까요? 이 가이드..
Effective Scala는 twitter에서 제작한 글로, 다른 언어의 Effective 시리즈와는 다르게 web에 게시되어서 배포됩니다.해당 글은 Marius Eriksen(트위터)가 적은 글로, 링크는 twitter github에서 제공해주고, 지속적으로 업데이트 된다고 합니다.twitter에서 scala를 사용하면서 느꼈던 점들이나 알아야 하는 점들을 적어둔 글로 한번쯤은 읽어볼만한 글입니다.한글로 번역한 글이 보이지 않아서 원문과 함께 나름대로 정리하면서 번역하려 합니다.번역에 대한 글이나 어떤 형식이든 코멘트는 환영합니다. (이미지는 chatgpt를 통해 제작되었습니다)
· Scala/언어
Scala는 국내에서는 도서나 영상 관련 자료들이 매우매우 빈약해서 제대로 공부하려면 영문 책 / 영문 사이트 / 영문 동영상들을 뒤져봐야 합니다.동영상이나 책은 제대로 배우려면 돈을 내고 사야해서 처음 도전한다면 그나마 영어 사이트를 추천합니다.제일 좋은 방법은 스칼라의 창시자 마틴 오더스키 교수님이 직접 쓰신 Programming in scala를 읽는 것인데 페이지만 920쪽을 넘어가서 처음에는 알려주는 사이트에서 간단하게 학습하기를 추천합니다. Scala schoolTwitter에서 Scala를 알려주기 위해 만든 사이트로 scala의 기초를 알려주며 난이도도 매우 낮은 사이트입니다. (링크)영문으로 챕터를 확인하면 제대로 나오는데 한글로 하면 따로 css 없이 화면이 나오지만 크게 문제되지는 않..
· Scala/언어
implicit class는 마치 대상 타입을 확장하는 것과 같은 기능을 컴파일러 적으로 지원해주어 사용자가 더욱 효율적으로 코드를 짤 수 있게 도와줍니다.다만 이 기능은 대상 클래스를 감싸는 implicit class를 생성하는 문장을 암시적으로 끼워넣기 때문에 매 번 implicit class를 생성하는 부가 비용이 추가됩니다.이러한 부가 비용은 단순히 한 두 번 호출하는 정도로는 크게 상관이 없지만, 이를 자주 사용하는 상황에서는 어플리케이션에 조금씩이지만 누적되는 부담을 줍니다.이러한 부가 비용을 없애는 방법으로 implicit class를 value class로 바꾸는 방법이 존재합니다. value class설명하는 기준은 scala 2 기준입니다. scala 3를 사용중인 입장이라면 opaqu..
· Scala/언어
프로그래밍을 하다보면 수많은 함수를 만들게 되는데, 가끔식 객체나 값 자체에 만들어 둔 함수를 추가해서 항상 사용하고 싶을 때가 있습니다.예전에 만들어진 C나 C++과 같은 프로그래밍 언어에서는 지원하지 않지만 비교적 최근에 만들어진 Kotlin이나 C# 등의 최신 언어들은 이를 확장 함수라는 이름으로 제공해줍니다.Scala도 역시 유사하게 implicit class 라는 이름으로 이 기능을 제공해줍니다. implicit classScala는 2.10 이전에도 implicit 함수라는 이름으로 이러한 기능을 제공해주었습니다.이를 이용해 자체적인 라이브러리를 구현하고 외/내부 DSL을 지원해 줄 수 있어 편리하였지만 이를 한 군데 뭉쳐놓을 만한 곳이 존재하지 않아 상당히 귀찮기도 했습니다.이러한 변환을 더..
sleeptoy
'Scala' 카테고리의 글 목록 (3 Page)