스칼라는 최고의 시간을 보낼 준비가 되셨습니까? [닫은]


22

스칼라 ( "hello world"를 좋아하고 응용 프로그램을 고안 한 응용 프로그램)를 사용하여 몇 가지 사소한 작업을 수행 했으므로 이제는 궁금합니다. 개발을 지원하는 도구의 성숙도와 일반적인 적용 가능성에 대한 부분입니다. 툴셋이 준비 되었습니까? Scala는 엔터프라이즈 / 비즈니스 응용 프로그램에 사용하기에 적합합니까? 사소한 프로젝트에서 "당신"을 사용 하시겠습니까?

내 (아마도 근거가없는) 우려 중 일부는 다음과 같습니다.

  • IDE와 툴셋은 우리가 .net 및 Java 응용 프로그램을 개발 해야하는 것만 큼 풍부합니까 (Scala의 이클립스는 Java의 이클립스에 비해 제한적으로 보입니다)?
  • 빌드 / CI / 테스트 도구 세트가 Scala를 효과적으로 처리 할 수 ​​있습니까?
  • 간결한 코드를 언어로 작성 (권장) 할 수 있는 방법은 무엇입니까?
  • 스칼라 경험이있는 개발자를 찾을 수 있습니까?
  • 언어에 대한 "소개"이상의 온라인 참조 및 도서를 통해 도움을받을 수있는 중요한 자료가 있습니까?

결론은-생태계가 현재 사용하기에 충분히 성숙 했습니까, 아니면 어떻게 진화 하는지를 기다리는 것이 더 낫습니까?

편집 : "사소하지 않은"은 다년간, 다중 출시, 10-20 명의 개발자 프로젝트라고 가정 해 봅시다.


7
물어봐야한다면 ... :)
Scott Whitlock

사소한 것과 기업 사이에는 많은 공간이 있습니다. 얼마나 큰 프로젝트에 관심이 있는지 잘 모르겠습니다.
Eric Wilson

@FarmBoy의 요점은 업데이트되었습니다.
jayraynet

@Scott Witlock : 예, 아마도 맞을 것입니다 =)
jayraynet

Scala는 Pythonic가 아니지만 Clojure입니다. 충분했다.
직업

답변:


22

스칼라가 가디언과 트위터에서 야생에서 사용 된 것은 사실이지만 한 가지 근본적인 문제가 있습니다.

Java의 인기는 대부분 읽고 유지 관리하기 쉽다는 사실에서 비롯됩니다. 스칼라는 다양한 스타일로 쓰여질 수 있기 때문에 문제가 있습니다. OO 스타일과 기능적 스타일은 여기서 명백한 분리이지만 Scala의 3 레벨에 대해 이야기 할 때 더 복잡해집니다 .

팀과 잠재적 인 신입 사원이 모두 같은 스타일을 따를 수 있는지, 그리고 스타일이 효과적 일 수있는 개발자를 실제로 고용 할 수있을 정도로 단순해야합니다 (모든 사람이 상위 2 %를 고용 할 수있는 것은 아님) .

툴링 지원도 아직 그다지 좋지는 않지만이 간격이 상당히 빨리 닫힐 것으로 예상합니다. TypeSafe 크라우드 에서 전체 스칼라 스택을 지원할 수도 있습니다 . 스칼라는 틈새 시장을 개척 할 것이라고 생각하지만 레벨이 실제로 언어 / 컴파일러 / 무엇으로 구현 될 때까지 초기 1-2 년간의 흥분된 생산성으로 인해 팀에서 유지 관리 문제가 발생하는 것을 볼 수 있습니다.

자세한 내용은 이 관련 답변 을 참조하십시오.


이 문제가 다른 다중 패러다임 언어에서 발생합니까 아니면 스칼라에 더 구체적입니까?
DPM

2
추가 된 언어 기능 중 일부는 다른 언어 기능과 완벽하게 통합되지 않았기 때문에 "Kitchen Sink"평판의 이유 중 하나 인 Scala에 대해보다 구체적입니다.
Martijn Verburg

12

스칼라는 현재 트위터와 Gaurdian에서 사용하고 있기 때문에 사소한 응용 프로그램에 확실히 준비되어 있습니다.

스칼라 프로그래머는 매우 동기 부여가 될 것이며, 아마도 아주 좋을 것입니다. 새로운 언어를 선택하는 것은 재능을 끌어들이는 좋은 방법입니다.

물론 스칼라 프로그래머는 종종 전문 스칼라 경험이 없으며 사용하는 관용구가 다양 할 수 있습니다. 일부는 Haskell과 같은 순도를 위해 노력하는 반면, 다른 일부는이를 폐쇄로 Java로 볼 수 있습니다. 따라서 일관된 코딩 표준과 규칙을 개발하는 데 다소 시간이 걸릴 수 있습니다.

IntelliJ Idea가 Eclipse에 대한 투자 가치가 있지만 많은 Java 도구가 잘 작동합니다.

전반적으로 프로젝트를 제어 할 수 있다면 좋은 선택이 될 수 있습니다. 이 회사가 대형 보험 회사의 일부인 경우 '모든 프로젝트는 Maven에서 빌드하고 WebSphere에 배포해야합니다.'와 같은 아키텍처 지침이있는 경우 문제가 발생할 수 있습니다. (이 특정 규칙이 문제가 될 것이라고 생각할 이유는 없지만 그러한 규칙의 확산으로 인해 어느 시점에서 당신을 여행 할 수 있습니다.)


트위터는 스칼라로 무엇을 하는가?
Anto


10
나는 트위터의 엔지니어링 결정을 성숙과 견고 함의 증거로 믿지 않을 것입니다.
red-dirt

6

제 생각에는 "기존의"언어 (자바와 같이)와 함께 제공되는 많은 생태계가 자신의 서투른 부분을 보완하기위한 것입니다.

문제는 주어진 언어 (Scala)에 대해 몇 개의 도구가 있는지가 아니라 해당 언어에 대한 기존 도구가 참조 언어 (Java)에 대한 기존 도구보다 나은지 여부입니다. 평범한 도구 100 개가 제공되지 않기 때문에 좋은 도구 하나가 제공 할 수 있습니다. 그리고 잊지 말아야 할 것은 언어 자체가 그러한 도구의 일부라는 것입니다.

언어의 선언 성

  • Java로 버그를 생성하는 버그의 양과 심각도에 반비례합니다. 따라서 Java는 버그를 생성하는 데 매우 뛰어나므로 피하고 추적하기위한 많은 도구가 필요합니다.
  • 생산성에 비례하기 때문에 Java가 매우 장황하고 많은 코드 생성기와 유사한 도구가 필요합니다.

예를 들어, 정적 타이핑은 의미가 없다고 주장한 루비 녀석의 끔찍한 블로그 게시물을 한 번 읽었습니다. 테스트는 유형 안전을 다루기 때문입니다. 이것은 아직 표현형 정적 타입 시스템을 다루지 않은 사람에게서 나왔습니다. 언어 의미론에서 모든 유형 관계를 나타낼 수 있고 할 일이 많지 않다고 가정하면 (그리고 대부분의 현대 언어는 유형 유추를 지원하기 때문에 그렇지 않습니다), 나는이 모든 것을 무료로 얻습니다.

한 가지 생각을 조금 더 진전 시키려면 : 단위 테스트는 단위가 지정된대로 작동하는지, 또는이를 바꾸려면 단위 테스트가 실행 가능한 사양인지 확인합니다. 그러나 선언적 프로그래밍을 통해 장치 자체는 실행 가능한 사양입니다. 다시, 당신은 무료로 무언가를 얻습니다.

내가 말하려는 것은 언어 기능이 당신을 위해 할 수있는 일을 과소 평가해서는 안된다는 것입니다. 그리고 현장에서 실제로 시도하지 않으면 결코 이해할 수 없습니다.

원래의 질문으로 돌아가려면 : 기존의 Scala 도구가 Java보다 낫습니까? 말하기 어렵다. 당신이하고 싶은 일에 달려 있습니다. 우리 모두 언어가 훨씬 더 낫다는 데 동의한다고 생각합니다. 이제 문제는 비즈니스 영역에서 얼마나 좋은 생태계를 찾을 수 있는지입니다.
웹의 경우 Lift는 정말 확실한 옵션입니다. 데스크톱 또는 모바일에 대해 몰라


5

"사소하지 않은"은 다년간, 다중 릴리스, 10-20 명의 개발자 프로젝트라고 가정 해 봅시다.

그것은 많은 위험입니다. 보상은 그만한 가치가 있어야합니다. 엔터프라이즈 비즈니스 앱 및 중대형 프로젝트의 세계에서는 일반적으로 위험 감수가 제한됩니다. 또는 이미 다루기에 충분한 위험이 있습니다 ... 예측 가능성이 더 중요합니다.

입양이 그렇게 될지 의심 스럽다.

POC, 중요하지 않은 구성 요소, 테스트 또는 문제가 대안보다 스칼라에서 훨씬 더 잘 해결되는 것으로 보이는 부분과 같이 위험이 포함 된 부분에서 작업하는 소수의 사람들로 시작하는 것이 더 가능성이 높습니다. actor 예) ... 그런 다음 도구가 성숙해지면서 커뮤니티가 커지고 회사에서 노하우가 커지면 확장 할 수 있습니다.


5

스칼라는 자바 런타임을 활용함으로써 확실히 준비된 시간이다. 스칼라 응용 프로그램을 배포 할 수 있으면 바이트 코드가 생성 된 후에는 항상 해당 특정 버전의 Java 런타임에서 작동해야합니다. Scala 기반 라이브러리는 익숙한 다른 Java 타사 라이브러리와 같이 작동합니다.

IDE, 빌드 도구 및 기타 모든 측면에서 Scala는 Java와 동일한 수준의 확산을 갖지 않습니다. 따라서 많은 스칼라 기반 프레임 워크 또는 스칼라 기반 도구가 없습니다. 그것은 스칼라의 인기가 증가하는 것보다 Java의 인기가 더 많은 것으로 말하고 있습니다. Scala에는 Scala IDE 및 sbt, 빌드 도구 등의 기능 도구가 있습니다. 그러나 다른 순수 Java 도우미 도구만큼 정교하지는 않습니다.


4

@huynhjl 및 @FarmBoy의 체리 따기 포인트 :

  • 충분한 수의 숙련 된 스칼라 프로그래머를 찾는 것이 어려울 수 있습니다.

  • 스칼라의 "모범 사례"교리가 여전히 발전하고 있습니다 (*).

  • 스타일 가이드, 컨벤션 등은 여전히 ​​발전하고 있습니다 (*).

  • 도구 지원은 여전히 ​​발전하고 있습니다 (*).

이것들을 함께 모아서, 당신이 (자기 자신에게) 물어 보는 더 좋은 질문은 당신의 조직이 "사소한"프로젝트에서 스칼라를 사용할 준비가 되었습니까? "여전히 진화하는"많은 것들로 큰 프로젝트를 수행 할 수있는 사람들이 있습니까? 반대로 작은 프로젝트를 먼저하는 것이 더 좋을까요?

(* 사실, 대부분의 언어는 여전히 이러한 측면 중 하나 이상이 진화하고있다. 여기에 문제가있다 속도 변화 / 플럭스 ... 그리고 팀이 대처 할 수 있는지 여부.)


1
스칼라 개발자의 '충분히 많은 수'는 Java 개발자의 '충분히 많은 수'보다 훨씬 작습니다.
케빈 클라인


0

나는 프로그램 enterprise과 의 차이점을 이해하지 못했습니다 non enterprise.

나는 집에서와 같은 직장에서 같은 프로그램을 사용합니다. 여가 시간에 평범한 프로그램을 사용하지 않겠습니다. 왜해야합니까?

비전문가 프로그램이란 무엇입니까? 호환성 문제로 인해 사용자가 더 잘 알지 못했거나 새로운 것을 배우기를 거부했기 때문에 잘못된 응용 프로그램이 사용되는 것을 보았습니다.

그러나 그것은 구식 소프트웨어와 목표, 개발자가 생각한 언어의 문제가 아니라 프로그램이 작성된 문제라는 문제입니다. 프로그램이 작성된 언어로 생각하기 시작하면 이미 끝난 것입니다. 실패.

Enterprise응용 프로그램은 의미있는 용어이므로 진지한 토론에 유용하지 않습니다.

그리고 어떤 고객이 어떤 언어로 일을했는지 ​​알고 있습니까? 때때로 그들은 걱정하지만 때로는 신경 쓰지 않습니다.

언어의 성숙도와 관련된 질문이있을 수 있지만 모든 종류의 기업 및 모든 응용 프로그램에 대한 질문에 대답 할 수는 없습니다.


1
엔터프라이즈 는 마케팅 용어 이상의 의미 를 지니고 있습니다. 기본적 으로이 도구를 구입하는 회사는 최소한 우리가있는 한 계속 될 것이며이를 뒷받침 할 리소스가 있습니다 . 위의 회사를 대신하여 오픈 소스 조직 을 대체 할 수 있습니다 .... 결국, 한 사람이 주로 사용하는 언어를 선택하는 것과 소규모 팀, 거대한 오픈 소스 기반, Fortune 100 기술을 비교하는 것에는 큰 차이가 있습니다. 회사.
red-dirt
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.