2009-06-24 2 views
4

동적 언어가 증가하고 있으며 그 중 많은 수가 있습니다. 루비, 그루비, 자이 썬, 스칼라 (정적이지만 동적 언어의 룩앤필을 가짐) 등등. 내 배경은 Java SE 및 EE 프로그래밍에 있으며 내 지식을이 동적 언어 중 하나로 확장하여보다 나은 미래를 대비했다.동적 언어 - 어느 것을 선택해야합니까?

하지만 역동적 인 언어는 학습에 집중해야하며 그 이유는 무엇입니까? 다음 중 어느 것이 가까운 장래에 선호되는 언어가 될 것입니까?

+2

동적 또는 동적 유형 또는 둘 다?나는 대부분의 질문/답변을 관련된 섹션에서이 질문 바로 옆에 표시하는 것이 좋습니다.이 섹션은 왜 하나 또는 다른 언어를 선택해야하는지에 대한 통찰력을 제공하고 추가 포인터 등을 포함합니다. – jitter

+6

스칼라가 실제로는 아닙니다 동적 : 타입 추론을 통해 강력한 정적 유형 언어입니다. – mipadi

답변

16

루비 또는 파이썬 (그리고 스칼라는 더 작은 범위까지)을 배우면 Java 버전, 네이티브 버전 또는 .NET 버전 (IronRuby/IronPython)을 사용할 수 있습니다. 그루비는 훌륭하지만 JVM에 특이하다.

"미래를 대비하는 것이 더 낫다"는 것은 특정 시나리오를 상상하지 않는 한 까다로울 수 있습니다. 어떤 종류의 일을하고 싶니? 역동적 인 언어로 유용하게 구현할 수있는 프로젝트가 있습니까? 그들이 얼마나 다른지 감을 잡기 위해 그들 중 몇 명을 시도 할 정도로 작습니까? 당신은 루아,도 좋다 어도비 기반 디자이너 있다면 당신은 임베디드 프로그래머라면

1

의 JScript은 매우 유용하고, 게임 산업 루아에서의 확실히 동적 언어 ...

4

, 루아는 실질적으로 유일한 경량 솔루션이지만, 웹 개발과 일반 도구 스크립팅을 살펴보면 Python이 더 실용적 일 것입니다.

+0

루아의 주된 강점은 C (및/또는 C++)로 임베딩/확장하는 것입니다. 나는 자바와 JVM에 가장 익숙한 누군가에게 루아를 추천하지 않는다. –

+1

그래도 좋은 지적이지만 미래의 교정은 다양성에 관한 것이므로 Java 기반 언어 이상으로 자신의 기술 방식을 확장 할 수 있기 때문에 여전히 좋은 선택이 될 수 있습니다 –

1

많은 모듈을 가진 언어를 원한다면 (0120) . CPAN을 사용하면 휠을 다시 만들지 않고도 원하는 것을 언제든지 찾을 수 있습니다.

5

나는 스칼라를 살펴볼 것이다. 왜 ? 당신이 당신의 현재의 Java 기술

  • 지금
  • 그것이 기능있다 (예를 들어, IntelliJ에 스칼라 프로젝트를 처리합니다) 공구/IDE 지원을 많이 가지고을 활용할 수 있도록

    1. 은은 JVM 언어이다 그것의 측면. 기능적인 언어 순간에 견인을 많이 받고있는 것으로 보인다, 나는 그것이 미래

    내 학습의 가치 패러다임 생각 (전적으로 주관적인)보기 스칼라가 많은 관심을 받고있는 것으로 보인다입니다 Groovy는 1 년이나 2 년 전에 얻었습니다. 나는 여기서 논쟁하기 위해 노력하지 않거나 더 나은 언어로 만들 것을 제안하지만, 새로운 JVM 언어 인 것 같습니다. .

    제쳐두고 some dynamic attributes의 언어는 Microsoft의 F#입니다. 나는 현재 이것을보고있다. (그리고 위의 1과 2에 대한 나의 충고를 무시한다!). 닷넷을 기반으로하는 객체를 가진 함수형 언어이며, 현재 많은 주목을 받고 있습니다.

  • +0

    F #은 확실히 흥미 롭습니다.하지만 역동적 인 것은 아닙니다 * 언어. –

    +0

    이것이 제가 제쳐 놓고 가져온 이유입니다. 흥미롭게도 http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/faq.aspx#IsItDynamic이 충돌합니다. 그것이 역동적이든 아니든간에. 저는 F #에서 전화를 한 방향으로 또는 다른 방향으로 만들기에 충분한 경험이 없습니다. –

    +0

    나는 좀 더 명백하게 '옆으로'수정했다. 그러나 –

    10

    스칼라는 동적 언어가 아닙니다. 타입 유추가 그 타입이 없다는 것을 의미하지는 않습니다. 그러나 OOP와 함수 프로그래밍이 잘 조화 된 아주 좋은 언어입니다. 유일한 문제는 길을 따라 마주 치게되는 몇 가지 문제입니다.

    이미 경험이 풍부한 Java 프로그래머이므로 스킬 셋에 잘 맞을 것입니다. 자, Ruby 나 Python 둘 다 역동적으로 가고 싶다면 멋진 언어입니다. 두 언어에 대한 수요가 있습니다.

    +0

    그것은 REPL 콘솔을 가지고있다. - 이것은 특정 관점에서 "동적"이며 암시 적 변환이다. 그래서 동적 "외모" –

    +0

    하스켈도 REPL을 가지고 있습니다. – Rayne

    8

    개인적으로 Clojure를 권하고 싶습니다. Clojure는 내가 본 것보다 더 빨리 인기를 얻는 멋진 새 언어입니다. Clojure는 JVM에 구현 된 강력하고 간단하며 빠른 Lisp입니다. 스칼라와 마찬가지로 물론 모든 자바 라이브러리에 액세스 할 수 있습니다. 이미 책을 썼고 1.0 버전으로 성숙되었고 3 가지 IDE 플러그인이 모두 개발되어 사용 가능했습니다.

    +2

    자바 액세스는 래핑이나 지저분한 변환을 필요로하지 않습니다. –

    +1

    위의 모든 내용이 사실 일 수 있지만 현실적으로 Clojure는 Ruby, Python, Groovy 등의 입양/인기에있어서 오랜 길을 간직하고 있다고 생각합니다. –

    +0

    @Don, 놀라운 속도로 인기를 얻고 있습니다. 지금 보지 마라. 그러나 틀릴 수도있다. – Rayne

    3

    저는 Python을 권하고 싶습니다. 거대한 공동체를 보유하고 있으며 성숙한 구현을하고 있습니다 (몇 가지 유망하지는 않지만 성숙한 것뿐입니다). Perl은 새로운 언어에 비해 많은 견인력을 잃어버린 것처럼 보였습니다. 아마도 "비 직관력"때문이었을 것입니다.

    프로젝트를 완료했거나 파이썬에서 2 개를했다면 다른 것으로 이동하여 좀 더 넓은 시야를 확보하십시오. 두 가지 다른 동적 언어로 몇 가지 중요하지 않은 작업을 수행 한 경우 다른 언어와 동등한 문제는 발생하지 않습니다.

    +0

    많은 Perlers가 Perl의 종류이기 때문에 Ruby로 옮겨 가고 있다고 생각합니다. ++ –

    +0

    예, 그럴 수 있습니다. – JesperE

    +0

    반면에 이미 알고있는 것과 같은 다른 언어를 배우는 것은 전혀 다른 것을 배우는 것보다 가치가 떨어집니다. – Makis

    4

    Groovy는 광범위한 자바 배경에서 비교적 쉽게 뛰어 넘는 것으로 나타났습니다. Java의보다 편리한 버전입니다. 이 기능은 기존 Java 코드와도 잘 통합됩니다.

    0

    Groovy (및 Grails)에 +1을 투표 할 것입니다. Java 스타일 또는 Groovy로 입력 할 수 있습니다 (둘 다 혼합 할 수도 있고 걱정할 필요가 없습니다). 또한 Java 라이브러리를 사용할 수 있습니다.

    1

    당신의 배경을 염두에두면, 의미론이 당신이 알고있는 것과 비슷한 언어를 추천합니다. 따라서 Scala, Fan, Groovy와 같은 언어는 좋은 출발점이 될 것입니다. 기능적 언어를 사용하는 기본적인 의미를 이해하고 (Ruby와 같은 언어로 시작하는 것) Ruby와 같은 언어로 이동할 수 있습니다. 이런 식으로 당신을위한 턴 어라운드 시간은 줄어들뿐만 아니라 당신이 다국어 프로그래머가되는쪽으로 나아갈 수 있다는 사실도 감소합니다.

    +0

    스칼라, 팬 또는 그루비 중 어떤 것을 추천 하시겠습니까? 그 이유는 무엇입니까? –

    +0

    동적 언어의 강력 함과 단순함을 경험하고 싶다면 groovy를 추천합니다. 당신이 자바 배경에서 오는 경우 꽤 간단하게 취득 할 수 있습니다. 조용한 많은 좋은 책과 문서는 분명히 큰 플러스입니다. – user121803

    -1

    일반적으로 동적 유형 지정 언어를 사용하지 마십시오. 컴파일 타임 검사의 손실과 강력한 정적 유형 지정의 자체 문서화 특성으로 인해 유형 정보를 소스 코드에 넣어야 할 필요가 있습니다. 코드를 작성할 때 추가로 입력해야하는 작업이 너무 많으면 유형 유추 (Scala, Haskell) 언어가 관심의 대상이 될 수 있습니다.

    정보를 입력하면 코드가 훨씬 더 읽기 쉬워지고 가독성이 코딩의 # 1 기준이되어야합니다. 사람이 코드를 읽을 때 비용이 많이 들고, 독자가 명확하고 정확하게 이해하지 못하는 것은 나쁜 것입니다. OO 언어에서는 항상 새로운 유형을 만들기 때문에 더 악화됩니다. 단지 익숙해 져가는 독자는 허풍을 느낄 것입니다. 왜냐하면 그들은 지나가고 변형되는 유형을 모르기 때문입니다. 예를 들어, Groovy에서 다음은 유효합니다. def accountHistoryReport(in, out) 그 내용을 읽고, 무엇이 inout인지 전혀 모르겠습니다. 마치 20 가지의 다른보고 방법을보고 완전히 똑바로 갈 수 있습니다. homicidal.

    실제로 정적이 아닌 입력이 필요하다고 생각하면 Clojure와 같은 언어가 좋은 대안입니다. Lisp과 같은 언어는 작은 추상화 집합과 각 추상화에 대한 엄청난 양의 능력을 토대로 구축됩니다. 그래서 Clojure에서, 객체의 속성을 가진 맵 (해쉬)을 생성 할 것입니다. 조금 축소 주의자이지만, 이름없는 클래스를 구현하기 위해 전체 코드 기반을 살펴 보지 않아도됩니다.

    내 경험에 비추어 볼 때 동적 언어로 된 스크립트와 정적으로 입력 된 컴파일 된 언어로 된 스크립트를 작성합니다.

    관련 문제