기능적 프로그래밍 언어를 선택해야합니까? 클래스로 삶을 가꾸어주는 것을 선호하는 인터페이스와

최근에 코드를 작성하는 방법에 대해 더 많은 관심을 기울였습니다. 디자인 패턴에 대한 몇 권의 책을 읽은 후 (그리고 그 패턴을 과도하게 구현 한 것이 확실합니다) 어떤 생각이 바뀌 었는지 캡슐화하는 방향으로 생각을 크게 바꿨습니다. 나는 술어, 행동 및 다른 대리자 작업을 통해 구식 클래스로 삶을 가꾸어주는 것을 선호하는 인터페이스와 메소드 지향 코드가 적다는 것을 알았습니다. 나는 그것이 종종 변화하는 행동이라고 생각하는 경향이 있으므로, 그것들을 캡슐화합니다. 항상 그런 것은 아니지만 종종 단일 메서드에 대한 인터페이스를 분류 한 다음 클라이언트 코드가 새 클래스를 작성하도록하는 대신 작업에 대리자를 사용하는 것을 선호합니다.

그래서 나는 그것을 때리는 것 같아요. 대신 함수형 프로그래밍을해야합니까?
편집 : 함수형 프로그래밍에 대한 오해가있을 수 있습니다.

현재 선택한 언어는 C #이며 C ++ 배경에서 왔습니다. 저는 게임 개발자로 일하고 있지만 현재 실직 상태입니다.

건축에 대한 열정이 있습니다. 내 미덕은 깨끗하고 유연하며 재사용 가능하며 유지 관리 가능한 코드입니다. 이런 식으로 독살을했는지, 아니면 더 나을 것인지 모르겠습니다. 리팩토링 열이 있습니까? 아니면 계속 진행해야합니까? 나는 이것이 “직업에 올바른 도구를 사용하는 에 관한 질문 일 수 있음을 이해 하지만, 당신의 생각을 듣고 싶습니다.

기능적 언어를 선택해야합니까? 내 두려움 요인 중 하나는 Visual Studio의 편안함을 떠나는 것입니다.



답변

새로운 것을 배우는 것은 재미 있어야합니다. 그리고 새로운 프로그래밍 방법을 배우면 더 나은 프로그래머가 될 것입니다. Haskell 또는 Erlang 중 하나를 확인하십시오. 둘 다 작동하지만 매우 다릅니다. Haskell을 선택하면 YouTube 나 팟 캐스트에서 “Simon Payton Jones”의 몇 가지 대화를 찾으십시오. 그 사람은 훌륭한 연사입니다.


답변

이런 * * * *. 은 총알이 없습니다. 내려오다. 긴장을 풀고 심호흡하십시오.

도구 상자에 도구가 있다고해서 도구를 사용해야한다는 의미는 아닙니다. 작업에 집중하십시오. 즉, 작동하는 프로그램을 작성하고 코드 냄새가 나면 리팩터링하십시오. 미래의 하루가 바뀔 수 있기 때문에 모든 세부 사항을 캡슐화하고 추상화하지 마십시오. IMO KISS & YAGNI를 직접 시작하고 실제로 변경 될 때 변화하는 요구 사항에 대응하는 것이 훨씬 좋습니다 .

나는 여기서 기능적인 언어가 당신의 필요에 더 잘 맞는지 아닌지 말할 수 없다고 생각합니다. 당신이 무엇을하고 있는지 말하지 않았기 때문입니다.


답변

F #을 선택할 수 있습니다 . .NET 기능 언어이므로 Visual Studio를 사용하고 많은 .NET 지식을 재사용 할 수 있습니다. 물론 어셈블리는 C # 어셈블리와 완벽하게 통합되므로 한 프로젝트에서 C #, C ++ / CLI 및 F #을 쉽게 결합 할 수 있습니다. F # 지원은 VS Pro 이상과 함께 제공되지만 기본적으로 활성화되어 있는지 확실하지 않습니다.


답변

IMO, 기능적 언어를 사용해 볼 가치가 있습니다. 출시 된 제품에서 직접 사용하지 않더라도 학습하는 것은 프로그래밍에 대해 다소 다른 견해 / 조망을 제공하는 데 도움이 될 것입니다. C #에서 “실제”코딩을 모두 계속 수행하더라도 C #으로 작성하는 코드를 개선하는 데 도움이 될 가능성은 매우 높습니다.

다른 사람들이 언급했듯이 Visual Studio에 익숙한 사람에게는 F #이 기본적으로 Ocaml / Caml / ML 파생 상품입니다. IMO는 사람들에게 기능적 프로그래밍을 소개하는 데있어 Microsoft에서 좋은 선택이었습니다.이 기능은 본격적인 기능 언어이지만 일부 언어만큼 외국어 구문이 거의 없습니다 (예 : Lisp 기반 언어의 경우) 실제 장점이 있지만 초보자는 거의 항상 읽기가 어렵습니다.


답변

그렇습니다.

Haskell과 같은 순수한 언어를 선택하면 새로운 언어뿐만 아니라 새로운 사고 방식을 배울 수 있습니다. 이것은 나중에 pro / ural 작업에서도 도움이 될 수 있습니다.

반면에 F #은 순수하지 않으므로 함수형 프로그래밍에서 중요한 것을 쉽게 놓칠 수 있습니다. 말하자면, 여기서 변수를 변경하는 절차 적 프로그램을 계속 작성하고 F # 구문으로 부작용을 수행 할 수 있습니다.


답변

이미 c #을 사용하고 있다면 확장 메소드, 람다 및 일반 Func / Action 유형의 조합으로 새로운 언어가 필요하지 않습니다. 전체 애플리케이션을 변경할 필요없이 가장 적합한 알고리즘.