낙심을 ​​느끼는 스칼라 학습 [폐쇄]


9

Java 배경에서 왔으며 Scala를 배우려고합니다. 내가 압도당하는 순간, 스칼라로 배우는 것이 훨씬 더 많은 것 같습니다.

어디서부터 시작해야하는지에 대한 조언이 있는지, 그리고 언어에 능숙하다고 느끼는 데 얼마나 걸 렸는지 궁금합니다.

for 루프 이해와 같은 작은 것들조차도 정말 강력 해 보이지만 기억해야 할 또 다른 구문입니다!


스칼라는 대부분의 경우 복잡한 언어이므로 낙담하지 마십시오! 일화 적으로 나는 유능한 Haskell 프로그래머이고 Scala가 훨씬 더 복잡하다고 생각했습니다. 스칼라의 경우 컴파일러와 계단 책을 제안하지만 각각 자신에게
Daniel Gratzer

격려해 주셔서 감사합니다! 계단 책은 무엇입니까?
jcm


몇 년 전에 Java 관점에서 Scala를 사용해 보았지만 실제로 얻지 못했습니다. 최근에 저는 코스 라 .org에서 스칼라의 함수형 프로그래밍에 관한 과정을 시작했습니다. 내 Java 배경이 방해가되지 않는 방식이 크게 다릅니다. 대신 나는 불변의 데이터 구조에서 알고리즘에 대한 추론, 이론 설정, 유형 이론 및 실제 작업에서 연습 할 수없는 다른 모든 재미있는 것들을 생각하는 것을 배우고 있습니다. 걱정하지 마십시오. 현실 세계에는 여전히 스칼라의 실용성이 있습니다.
BobDalgleish

2
스칼라는 새로운 생태계입니다 (핵심 언어 자체는 그리 크지 않습니다-대부분 도서관과 개념입니다). 사물의 얕은 쪽을 잠시 동안 붙잡고 한 번에 하나의 개념을 선택하면 사물이 실제로 모이기 시작합니다. 기이하게 요리 된 특수 구문처럼 보이는 것은 일반적으로 전체 언어에 걸쳐 추상화 될 수있는보다 일반적인 범주로 분류됩니다. 그러나 그 것들이 무엇인지 알아 내려면 분명히 놀고 읽고해야합니다.
KChaloux

답변:


11

나는 네가있는 곳에 있었고 거의 몇 번 포기했다. 전문가 스칼라 개발자는 아니지만, 이제는 언어를 제대로 파악하고 있다고 생각합니다. 확실히 Java와의 관계를 완전히 독살 할만큼 충분합니다.

내가 한 첫 번째 일은 몇 주 동안 놀면서 다양한 블로그와 언어에 대한 소개를 읽었습니다. 그것은 실수였으며, 유용한 많은 것을 배우지 못했거나 적어도 이해하지 못했습니다.

두 번째는 기술적으로 간단하지만 스칼라 구문의 특정 측면을 스스로 탐구 해야하는 문제를 해결하는 데 시간을 소비하는 것이 었습니다.

이것은 밤새 전문가로 변하지 않았지만 더 이상 불가능하다고 느끼지 않는 언어에 익숙해졌습니다.

그 자신감에 힘 입어 마틴 오더 스키 (Martin Odersky) 가 Scala에서 프로그래밍을 시작하고 며칠마다 전체 장을 읽으려고 노력했습니다. 이 책은 잘 쓰여지고 포괄적 인 책이며 이미 훌륭한 프로그래밍 배경을 가지고 있다면 너무 어려워서는 안됩니다. 첫 번째 읽기를 너무 고통스럽게 할 필요가 없습니다. 선택 사항으로 표시된 부분을 건너 뛰고 개념을 이해해야하지만 세부 사항에 얽매이지 마십시오 (특히 컬렉션에 대한 장은 과도하고 너무 많을 수 있다고 생각합니다 탈지). 개념이 존재하고 작동 방식에 대한 포괄적 인 설명을 읽을 수있는 곳을 아는 것은 엄청난 도움이됩니다.

이 책을 읽는 것에 대한 대안은 Coursera 수업에 참여하는 것입니다.이 과정은 훨씬 덜 포괄적이지만 대부분의 중요한 사항을 다루고 관리 가능한 논리 단위로 분류됩니다. 다른 한편으로, 수업이 완료되면 수업에 액세스 할 수 있는지 여부를 알 수 없으며, 누군가 (마틴 오르 데 스키만큼 똑똑하고 지식이있는 사람)의 말을 듣는 동안 참여도가 훨씬 낮았습니다. 책을 읽을 때.

스칼라의 또 다른 문제는 이름별로 매개 변수를 섭취해야하는 어휘의 양입니다. 이해력? 폐쇄? 당신이 이것에 압도 감을 느낀다면, 나는 스칼라 용어집 과 타겟 스택 오버플로 검색 의 좋은 조합이 많은 도움 이되었다는 것을 발견했습니다 (Daniel Sobral과 Travis Brown의 답변을 찾아보십시오). 사실, 나는 용어집으로 Anki 데크 를 만들기 위해 갔으며 그것이 큰 도움이되었다고 생각합니다.

마지막으로 이것은 코드, 코드, 코드 일 것입니다. 사소한 일이더라도 작업 할 수있는 보조 프로젝트를 찾으십시오. 내가 한 것은 내가 관심이있는 저자가 새 책을 발표 할 때마다 트윗을 보내는 매우 간단한 Amazon 크롤러를 작성하는 것이 었습니다. 아마 예상보다 오래 걸렸지 만, 언어에 사랑에 빠졌을 때입니다.

그렇게한다면, 더 이상의 도움이 필요하지 않을 것입니다. 일단 언어를 이해하게되면, 기본 개념에 대해 더 깊이 파고 드는 것이 좋습니다. OOP에 익숙하고, 함수형 프로그래밍에 대해 읽어보십시오. 마음이 아프다고 확신 할 수 있습니다. 스칼라의 함수형 프로그래밍은 조만간 공개 될 것이지만, 초기 액세스 버전은 이미 우수합니다. 또 다른 대답은 Java Developers를위한 Functional Programming을 제안합니다 . 이것은 익숙하지 않지만 훌륭하다고 믿습니다 (O'Reilly 책이 최소한 감추는 가치가 없을 때)?

나는 이것이 오래 걸리지 않고 명백해지지 않기를 바랍니다. 솔직히 당신에게 최선을 기원합니다. 스칼라는 결점이 있지만, 훌륭한 언어이며, 당신이 존재하지 않았던 방향으로 당신의 두뇌를 끌어들일 것입니다. 그리고 나는 당신의 "학습 Haskell, 낙심 한 느낌"을 1 년 안에 찾을 것입니다 :)


3

스칼라는 Java와는 매우 다른 사고 방식이므로 낙심하지 마십시오! 아마도 기능적인 사고 방식에 들어갈 수 있도록 Java 개발자를위한 Functional Programming으로 시작했을 것입니다 .

근처에 Java 및 / 또는 Scala 사용자 그룹이 있습니까? 동료와 함께 새로운 언어를 배우는 것이 항상 더 쉽습니다.

행운을 빕니다.


또한 관심 분야에 관한 Scala Frameworks 또는 Toolkit을 살펴 보는 것이 좋습니다. 내 경험상 당신이 작업하는 것을 좋아하는 프로젝트는 일을 더 쉽게 만듭니다. 예를 들어 동시 또는 분산 응용 프로그램이 웹 개발 또는 Akka에있을 때 Lift 또는 Play Framework를 확인하십시오.
juwi February
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.