Tôi đã viết một ứng dụng để cân bằng lịch trình sản xuất điện quốc gia cho một danh mục các nhà máy điện đến một vị trí giao dịch cho một công ty năng lượng. Các thành phần máy khách và máy chủ ở trong C # nhưng công cụ tính toán được viết bằng F #.
Việc sử dụng F # để giải quyết sự phức tạp ở trung tâm của ứng dụng này thể hiện rõ ràng một điểm ngọt ngào cho ngôn ngữ trong phần mềm doanh nghiệp, cụ thể là phân tích phức tạp về mặt thuật toán của các tập dữ liệu lớn. Kinh nghiệm của tôi là một điều rất tích cực. Đặc biệt:
Đơn vị đo Công nghiệp tôi làm việc nằm rải rác với các đơn vị. Các phương trình tôi thực hiện (thường có tính chất hình học) xử lý các đơn vị thời gian, sức mạnh và năng lượng. Có hệ thống loại xác minh tính chính xác của các đơn vị đầu vào và đầu ra của các chức năng là một trình tiết kiệm thời gian rất lớn, cả về kiểm tra và đọc / hiểu mã. Nó xóa bỏ cả một lớp lỗi mà các hệ thống trước đây dễ mắc phải.
Lập trình khám phá Làm việc với các tệp tập lệnh và REPL (F # Interactive) cho phép tôi khám phá không gian giải pháp hiệu quả hơn trước khi cam kết thực hiện so với vòng lặp chỉnh sửa / biên dịch / chạy / kiểm tra truyền thống. Đó là một cách rất tự nhiên để một lập trình viên xây dựng sự hiểu biết của họ về vấn đề và những căng thẳng trong thiết kế khi chơi.
Kiểm thử đơn vị Mã được viết bằng các hàm hiệu ứng không phụ và cấu trúc dữ liệu bất biến là một niềm vui để kiểm tra. Không có tương tác phụ thuộc thời gian phức tạp để làm hỏng mọi thứ hoặc tập hợp lớn các phụ thuộc sẽ bị chế giễu.
Tương tác Tôi đã xác định giao diện cho công cụ tính toán trong C # và thực hiện tính toán trong F #. Công cụ tính toán sau đó có thể được đưa vào bất kỳ mô-đun C # nào cần sử dụng nó mà không có bất kỳ mối lo ngại nào về khả năng tương tác. Liền mạch. Các lập trình viên C # không bao giờ cần biết.
Giảm mã Phần lớn dữ liệu được đưa vào công cụ tính toán ở dạng vectơ và ma trận. Các hàm bậc cao hơn ăn những thứ này cho bữa sáng với sự ồn ào tối thiểu, mã tối thiểu. Xinh đẹp.
Thiếu lỗi Lập trình chức năng có thể cảm thấy kỳ lạ. Tôi có thể đang làm việc trên một thuật toán, cố gắng hết sức để có được mã để vượt qua trình kiểm tra loại nhưng một khi trình kiểm tra loại được thỏa mãn thì nó hoạt động. Nó gần như nhị phân, hoặc nó sẽ không biên dịch hoặc chính xác. Lỗi trường hợp kỳ lạ được giảm thiểu, đệ quy và các hàm bậc cao hơn loại bỏ rất nhiều mã giữ sách giới thiệu lỗi trường hợp cạnh.
Tính song song Độ tinh khiết chức năng của việc thực hiện kết quả làm cho nó chín muồi để khai thác tính song song vốn có trong xử lý các vectơ dữ liệu. Có lẽ đây là nơi tôi sẽ đi tiếp theo khi .NET 4 ra mắt.