발전소 포트폴리오의 국가 발전 일정과 에너지 회사의 거래 위치 간의 균형을 맞추기위한 신청서를 작성했습니다. 클라이언트 및 서버 구성 요소는 C #에 있지만 계산 엔진은 F #에 작성되었습니다.
이 응용 프로그램의 핵심 인 복잡성을 해결하기 위해 F #을 사용하면 엔터프라이즈 소프트웨어 내에서 언어에 대한 유용한 지점, 즉 대규모 데이터 세트의 알고리즘 적으로 복잡한 분석이 명확하게 나타납니다. 내 경험은 매우 긍정적이었습니다. 특히:
측정 단위 내가 일하는 산업은 단위로 가득 차 있습니다. 내가 구현 한 방정식 (종종 기하학적 특성)은 시간, 전력 및 에너지 단위를 처리했습니다. 타입 시스템이 함수의 입력 및 출력 단위의 정확성을 검증하도록하는 것은 코드 테스트 및 읽기 / 이해 측면에서 엄청난 시간 절약입니다. 이전 시스템에서 발생하기 쉬운 전체 클래스의 오류를 제거합니다.
탐색 프로그래밍 스크립트 파일 및 REPL (F # Interactive)을 사용하면 기존의 편집 / 컴파일 / 실행 / 테스트 루프보다 구현을 커밋하기 전에 솔루션 공간을보다 효과적으로 탐색 할 수있었습니다. 프로그래머가 문제와 디자인 장력에 대한 이해를 쌓는 것은 매우 자연스러운 방법입니다.
비 효과적인 기능과 불변의 데이터 구조를 사용하여 작성된 코드 테스트 는 테스트의 즐거움입니다. 복잡한 시간 의존적 상호 작용이 없어서 조롱해야 할 많은 의존성이나 문제를 해결할 수 있습니다.
상호 운용성 C #에서 계산 엔진에 대한 인터페이스를 정의하고 F #에서 계산을 구현했습니다. 그런 다음 상호 운용성에 대해 전혀 염려하지 않고 계산 엔진을 사용해야하는 모든 C # 모듈에 계산 엔진을 삽입 할 수 있습니다. 원활한. C # 프로그래머는 알 필요가 없습니다.
코드 축소 계산 엔진에 공급 된 대부분의 데이터는 벡터와 행렬의 형태였습니다. 고차 함수는 최소한의 소란, 최소한의 코드로 아침 식사를 위해 이것을 먹습니다. 아름다운.
버그 부족 기능 프로그래밍이 이상하게 느껴질 수 있습니다. 알고리즘을 작업하면서 코드가 형식 검사기를 통과하도록 열심히 노력하고 있지만 유형 검사기가 만족하면 작동합니다. 거의 바이너리이거나 컴파일되지 않거나 올바른 것입니다. 이상한 대소 문자 오류가 최소화되고 재귀 및 고차 함수로 인해 대소 문자 오류가 발생하는 많은 장부 코드가 제거됩니다.
병렬 처리 결과 구현의 기능적 순도는 데이터 벡터 처리에서 고유 한 병렬 처리를 활용하기에 적합합니다. .NET 4가 나오기 때문에 다음에 갈 곳입니다.