제작을위한 하스켈 언어 확장 학습의 필요성


10

하스켈 핵심 언어는 정말 간단합니다. OO 배경에서 비롯된 주요 어려움은 순수한 기능적 패러다임에 적응하는 것입니다.

"기본"Haskell을 배우는 동안 나는 언어 확장을 CS 사람들을위한 장난감으로 또는 from future import ???파이썬에서 와 같이 언어의 미래 버전을위한 실험으로 항상 고려해 왔습니다 .

그러나 Yesod와 같은 웹 프레임 워크를 살펴보기 시작했을 때 많은 소스 파일에 3 ~ 4 개의 확장자가 필요하다는 것을 알았습니다. 일부는 매우 단순 해 보입니다 (StringOverload). 다른 사람들은 정말 위협적입니다 (GADT, Type Famillies, Template Haskell). 그들의 문서는 연구 논문과 연결되는데, 이는 새로운 도서관을 "그냥"배우기를 기대하는 누군가에게 무섭다.

Haskell에서 생산성을 높이려면 GHC 언어 확장을 배워야합니까? 프로덕션 애플리케이션을 위해 Haskell 개발자를 고용 한 경우 그러한 지식을 요청 하시겠습니까?


답변:


7

Haskell에서 생산성을 높이려면 GHC 언어 확장을 배워야합니까?

예. 그리고 그것은 모든 언어 / 도구에 해당됩니다. 핵심 / 기본 지식을 통해 온라인 컨테스트 문제를 해결할 수 있으며 소규모 대학 프로젝트 일 수 있지만 실제 응용 프로그램은 아닙니다.

프로덕션 애플리케이션을 위해 haskell 개발자를 고용하는 경우 그러한 지식을 요청 하시겠습니까?

이 지식을 공유 할 수있는 사람이 있습니까? 그렇다면, 그 사람은 새로운 직원을 키울 수 있습니다. 그렇지 않은 경우 먼저 지식을 가진 사람을 확보해야합니다. 그리고 이것은 새로운 기술에도 적용됩니다.

코스 밖에서도 Haskell에 대한 깊은 지식을 가진 사람들을 고용 할 수 있습니다. 그러나 Haskell은 비교적 새로운 산업에 종사하고 있으며 그 주변에서 수행 된 상업 프로젝트가 거의 없다는 점을 고려하면 그러한 사람을 찾는 것이 어려울 것입니다. Haskell에서 전문가 팀을 구성하는 효과적인 방법은 Haskell에서 기본적이고 기꺼이 일할 의사가있는 사람들을 고용 한 다음 교육하는 것입니다.


나는 항의하려고했지만 Real World Haskell이 많은 언어 확장을 가르치는 것을 보았습니다. 답변 주셔서 감사합니다.
Simon Bergot

2
"그리고 그것은 모든 언어 / 도구에 해당됩니다"-그것은 완전히 거짓입니다. 예를 들어 Java, C #, C ++와 같은 언어를 사용하십시오. 실제 애플리케이션 코드에서 일반적으로 사용되는 언어 확장이 없습니다. "온라인 컨테스트 문제 해결 방법"보다 사소한 것을 작성해야 할 때마다 언어 확장을 사용해야하는 경우 언어 사양에 매우 잘못된 것이 있습니다.
Malcolm

@Malcolm 왜 "온라인 컨테스트 문제 해결 방법"보다 사소한 것을 작성해야 할 때마다 언어 확장을 사용해야하는 경우 언어 사양에 문제가있는 것 같습니다. 사실입니까? 확장을 부정적인 것으로 만드는 확장의 특징은 무엇입니까? ghc와 제공된 확장을 사용합니다. 기존 프로젝트에 확장을 추가하면 다른 라이브러리를 추가하는 것만 큼 부담이됩니다.
Davorak

2
@Davorak 단일 언어 대신 서로 다른 확장 조합이 존재하기 때문에 특정 컴파일러에서 코드가 컴파일되는지 여부에 대해서는 아무것도 모릅니다. 확장은 코드를 이식 할 수 없게 만듭니다. 또한 이것은 모든 사람이 사용하는 단일 기능 대신 엄청난 양의 추가 기능이 있기 때문에 언어를 배우는 데 어려움을 겪고 있으며, 알아야 할 기능과 존재하는 기능에 대한 단서가 없습니다 연구원들이 재미있어서
Malcolm

2
@Davorak 그것은 내가 말하는 문제입니다. 모두가 GHC를 사용합니다. 이것이 여전히 활발하게 유지되는 유일한 컴파일러이기 때문입니다. 다른 컴파일러는 유지할 수 없으므로 아무도 사용할 수 없으며 투자 할 이유가 거의 없습니다. 라이브러리의 경우 : 문제점에 대한 라이브러리를 선택하고 해당 라이브러리로만 작업하십시오. XML을 읽어야하는 경우 하나의 XML 읽기 라이브러리 만 있으면됩니다. 그러나 확장 기능을 사용하면 언제 필요한지 명확하지 않습니다. 라이브러리에도 문제가 있지만. Java에는 배열과 컬렉션 만 있고 Haskell에는 많은 배열 라이브러리가 있다고 가정 해보십시오.
Malcolm
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.