문제

저는 평균 파이썬 기술을 가진 경험이 풍부한 C ++ 프로그래머입니다. 내가 처음에 Python을 공부 한 이유는 다음과 같습니다.

  • 프로그래밍에 대한 다른 관점을 얻으려면 (정적 대 동적, 해석 된 대 컴파일 등)
  • 내가 작업 할 수있는 폭 넓은 프로젝트를 늘리려면 (Python은 웹 개발을 수행하거나, 심비안 전화를 개발하거나, 빠른 시스템 관리 스크립트를 작성할 수 있습니다)
  • 내 C ++ 기술을 보완합니다.

나는 파이썬이 훌륭하다고 생각하고 위의 목표를 달성했다고 생각합니다. 소규모 프로젝트, 스크립트 및 웹 개발에 계속 사용할 것입니다.

그래도 중간 규모의 큰 프로젝트에 사용할 수 있다고 의심합니다. 동적 타이핑이 편리하지만 방해가되는 특정 클래스의 버그가 가능합니다. 단위 테스트 및 라인은이 문제를 완화시킬 수 있지만 정적 타이핑은 완전히 제거됩니다.

일부 프로그래밍 언어를 살펴본 후 Scala는 좋은 후보처럼 보인다고 생각합니다. 유형의 추론을 좋아하고 JVM에서 실행되므로 JVM을 사용할 수있는 곳마다 사용할 수 있습니다. 기능 프로그래밍을 사용할 때도 더 배울 수 있습니다.

그러나 ... 나는 또한 의심의 여지가있다. 그리고 이것은 스택 오버플로 커뮤니티가 도움을 줄 수 있기를 바랍니다.

  • 이식성 : Linux와 Windows는 적어도 희망합니다. 휴대 전화는 어떻습니까?
  • C ++ 호환성 : C ++ 코드를 스칼라와 혼합 할 수 있습니까? (JNI?)
  • 프로그래밍 패러다임 : 현재 기능 프로그래밍 (FP)으로 전환하는 데 익숙하지 않습니다. 처음에는 FP와 함께 객체 지향 및 절차를 사용한 다음 배운대로 비율을 변경할 수 있습니까?
  • 도구 체인 성숙도 : IDES 및 Debugger에 대한 경험은 무엇입니까? 나는 지금 Eclipse를 사용하고 있고 괜찮아 보인다.
  • 학습 속도 : 내 경험을 고려할 때, 스칼라로 실행 가능한 수준에 도달 할 수 있다고 얼마나 빨리 생각하십니까?
  • 배포 : Scala 프로그램을 정확히 어떻게 배포합니까? 항아리인가요, 실행 파일인가요?

마지막으로, 스칼라 단점 중 일부는 무엇이라고 생각하십니까?

도움이 되었습니까?

해결책

  • 이식성 : Linux와 Windows는 적어도 희망합니다. 휴대 전화는 어떻습니까?

예. 안드로이드의 스칼라에 대한 움직임이 상당히 많습니다. J2ME에 관해서는, 나는 그 점에서 무언가를 보았지만 많지는 않았습니다. 소스 코드 저장소에서 J2ME와 관련된 일부 코드가 있습니다. 나는 그것이 얼마나 실용적인지 잘 모르겠지만, 그것에 대한 수요가 많지 않은 것으로 보입니다.

또한 원하는 대상 플랫폼에 대한 Scala-Lang에 수영장이 있었으며 J2ME는 그 중 하나였으며 토템 극에서 매우 낮았습니다.

  • C ++ 호환성 : C ++ 코드를 스칼라와 혼합 할 수 있습니까? (JNI?)

뿐만 아니라 C ++를 Java와 혼합 할 수 있습니다. 경험이 없다면 Java 리소스를 읽을 수 있습니다. 변경 사항이없는 Scala (Scala Syntax)에는 적용 할 수 있으므로 Java 리소스를 읽을 수 있습니다.

  • 프로그래밍 패러다임 : 현재 FP로 전환하는 데 익숙하지 않습니다. 처음에는 FP와 함께 OO와 절차를 사용한 다음 배운대로 비율을 변경할 수 있습니까?

분명하게 예입니다. Scala는 기능적 스타일로 프로그래밍 할 필요가 없도록하는 방법을 벗어납니다. 이것은 사실상 기능적인 사람들의 스칼라에 대한 주요 비판입니다. 어떤 사람들은 프로그래머가 기능적 스타일로 쓰도록 강요하지 않는 한 언어 기능을 고려하지 않습니다.

어쨌든, 당신은 당신의 길을 바로 할 수 있습니다. 그러나 내 베팅은 기능적 습관이 기능적이라는 것을 깨닫지 않고도 기능적인 습관을 선택한다는 것입니다.

아마도 당신은 그것을 볼 수 있습니다 매트릭스 매트릭스 수업 작성에 관한 내 블로그에서 시리즈. 표준 OO 코드처럼 보이지만 실제로는 매우 기능적입니다.

  • 도구 체인 성숙도 : IDES 및 Debugger에 대한 경험은 무엇입니까? 나는 지금 Eclipse를 사용하고 있고 괜찮아 보인다.

Idea (Intellij), NetBeans 및 Eclipse는 모두 Scala를 잘 지원합니다. Netbeans는 늦게까지 일식보다 더 안정적이지만 Ideas가 최고 인 것 같습니다. 반면에, Eclipse에 대한 지원은 향후 6 개월 정도 결과를 생산 해야하는 매우 유망한 경로를 취하고 있습니다. 단지 부딪 치는 경로입니다. :-)

이러한 환경에 대한 스칼라 툴링의 흥미로운 징후는 개발의 Eclipse 플러그인이 AOP를 사용하여 전체 IDE와 더 완벽하게 병합하고 NetBeans 플러그인이 Scala에서 완전히 다시 작성되고 있으며, Scala Power Pack이 있다는 사실입니다. 무엇보다도 Java 코드를 Scala 코드로 변환합니다.

EMACS 사람들은 스칼라를위한 광범위한 도구를 가지고 있으며, 많은 소규모 편집자들도 그것을 지원합니다. 예를 들어 소규모 프로그램과 스크립트에 대한 Jedit의 지원에 매우 편안합니다.

좋은 Maven 지원도 있습니다. 실제로 설치하는 표준 방법입니다. 승강기 Maven을 설치 한 다음 리프트 아키 타입을 구축하는 것입니다. 그것은 적절한 스칼라 버전을 끌어 낼 것입니다. 있습니다 scala:cc 재 컴파일을 트리거 할 대상.

재 컴파일에 대해 말하면, Maven, 특히 Ant는 재충전해야 할 사항을 식별하는 데 좋은 역할을합니다. 그 문제로부터 튀어 나왔다 SBT Scala로 작성된 (Simple Build Tool)는 Scala Compiler 플러그인을 사용하여 해당 문제를 해결합니다. SBT는 Maven/Ivy 리포지토리뿐만 아니라 Maven과 동일한 프로젝트 레이아웃을 사용하지만 Maven/Ivy 구성 파일도 지원하여 XML 대신 Scala 코드로 프로젝트 구성이 수행됩니다.

  • 학습 속도 : 내 경험을 고려할 때, 스칼라로 실행 가능한 수준에 도달 할 수 있다고 얼마나 빨리 생각하십니까?

매우 빠릅니다. 순수한 OO 언어로서 Scala는 이미 C ++에 존재하지만 Java는 다른 방식으로 작동하지만 다른 방식으로 작동하는 몇 가지 멋진 기능을 소개합니다. 그런 점에서, 그러한 기능이 무엇인지 깨닫고 C ++ 재료와 관련이 있으면 이미 무엇을 해야할지 알고 있기 때문에 Java 프로그래머보다 훨씬 앞서 있습니다.

  • 배포 : Scala 프로그램을 정확히 어떻게 배포합니까? 항아리인가요, 실행 파일인가요?

Java와 같은 것. 스칼라 컴파일러가 클래스 파일을 생성하기 때문에 항아리, 전쟁 또는 기타 Java 대상을 배포 할 수 있습니다. 실제로 Java의 JAR을 사용하여 클래스 파일에서 Scala의 JAR 파일을 생성하고 Lift Support Building War 파일을위한 Maven 대상을 생성합니다.

그러나 스크립트 파일에 대한 대안이 있습니다. "Scala"를 호출하여 쉘 스크립트의 Perl과 유사하게 Scala 소스 코드를 직접 실행할 수 있습니다. Windows에서도 수행 할 수 있습니다. 그러나 컴파일 데몬을 사용하여 실행 속도를 높이기 위해 실행 시간을 사용하더라도, 스크립팅 환경에서 스칼라를 효과적으로 사용하면 시작 시간이 느리게 진행됩니다. 네일 건.

Scala의 단점은 내 대답 (및 다른 사람)을 살펴보십시오. 이것 오버플로 질문을 스택.

다른 팁

Scala는 특히 Java World에서 온 경우 투자 할 가치가있는 진화하는 언어입니다. 스칼라는 널리 덮여 있습니다 아르 티마. 이것 좀 봐 기사 Bill Venners에서 그리고 또한 읽습니다 트위터와 스케일ㅏ.

귀하의 질문에 대해 :

  • Java는 JVM이있는 곳마다 실행할 수 있습니다. 그러나 휴대 전화에는 운이 좋지 않습니다. 사용 가능한 서브 세트가 아닌 전체 JRE가 필요합니다.
  • 이것은 JNI에서 가능합니다. Java에서 무언가가 가능하다면 Scala에서는 가능합니다. Scala는 Java 클래스에 전화 할 수 있습니다.
  • 기능적 프로그래밍은 스칼라의 강력한 지점입니다. 배워야합니다. 그러나 당신은 또한 그것을 최대한 활용하지 않고 그것을 사용하기 시작할 수 있으며, 당신의 길을 가고 있습니다.
  • 일식 플러그인이 있습니다. 최선은 아니지만 일을 할 것입니다. 자세한 내용은 여기.
  • 당신이 경험이 있다면, 나는 정말로 빨리 말할 것입니다. 시작할 책을 찾는 것이 좋습니다.
  • 이것 좀 봐 자주하는 질문 배포를위한 입력.

프로그래밍 패러다임 : 현재 FP로 전환하는 데 익숙하지 않습니다. 처음에는 FP와 함께 OO와 절차를 사용한 다음 배운대로 비율을 변경할 수 있습니까?

Scala는 필수 프로그래밍에 대한 완전한 지원을 제공하며 FP 요소가없는 프로그램 작성 프로그램은 산들 바람입니다 (그러나 FP는 유용하고 어쨌든 학습 할 가치가 있습니다).

학습 속도 : 내 경험을 고려할 때, 스칼라로 실행 가능한 수준에 도달 할 수 있다고 얼마나 빨리 생각하십니까?

빠르게. Scala에는 C ++, Java 환경에서 나오는 사람들에게 익숙하지 않은 여러 가지 흥미로운 기능이 있습니다. 어떤 사람들은 당신이 그것을 알기 전에 스칼라에서 배울 것이 많다는 사실을 주장합니다. 문제 언어로; 나는 동의하지 않는다. 그 기능의 존재는 다음과 같습니다 이점 언어의. 더 많은 기능을 제공할수록. 결국, 당신은 상점에서 판매되는 모든 것을 살 필요가없는 것처럼 한 번에 모두 사용할 필요가 없습니다.

학습 속도 : 내 경험을 고려할 때, 스칼라로 실행 가능한 수준에 도달 할 수 있다고 얼마나 빨리 생각하십니까?

나는 또한 C ++ 배경에서 나온 것입니다. 한 가지 눈에 띄는 것은 비슷한 작업을 위해 C ++에 비해 코드가 훨씬 적기 때문에 같은 기간 동안 더 많은 일을 할 수 있으므로 학습이 신속해질 것입니다. 이것은 내가 루비와 함께 경험 한 것과 같은 현상이었습니다.

사실 - 내가 당신이라면 - 나는 언어 대신에 프로그래밍 패러다임을 연구 할 것입니다. 물론 패러다임을 연구하기 위해 예시적인 언어를 연구해야합니다. 다른 패러다임의 단점과 이점을 알면 다른 측면에서 문제를보고 더 나은 프로그래머가 될 수 있습니다 (이미 알고있는 언어로도).

이미 알려진 패러다임의 언어를 선택하는 것은 필요한 경우 상대적으로 쉬운 작업입니다. Scala는 FP (적어도 언급)이고 C ++/Python은 OOP이므로 좋은 언어입니다.

Scala 자신의 제작자 가이 과정에 등록해야합니다.

https://www.coursera.org/course/progfun

James Strachan (생산성 Java 오픈 소스 개발자, 루프에없는 사람들을위한) 여기, 그리고 왜 그가 Java (플랫폼이 아닌 Langauge)의 진보라고 생각하는 이유.

Scala는 많은 견인력을 얻는 것처럼 보입니다. 나는 그것이 팬의 플래시라고 생각하지 않으며 현재 배울 수있는 언어 목록에 있습니다 (부분적으로는 기능적 측면).

스칼라의 학습 가능성에 관한 일화적인 증거가 있습니다.

우리 회사에서는 U.Waterloo에서 여러 인턴을 얻었습니다. 그들은 스칼라로 쓰라고 들었다. 전에는 본 적이 없습니다.

그들은 스칼라를 집어 들고 놀랍도록 빠르게 들어 올렸습니다. 이제 그들은 스칼라 코드를 생성하고 있습니다. 완벽하지는 않지만 완벽하지는 않습니다.

따라서 관리자가 스칼라를 알지 못한다는 사실은 입양을 결정할 때 최선의 주장이 아닐 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top