2009-02-20 30 views
14

Đối với những người trong số các bạn, những người đang sử dụng f #, bạn đang mã hóa các lĩnh vực chức năng nào? Ngôn ngữ thực sự phù hợp với điều gì và nó làm gì với sức mạnh và dễ dàng hơn nhiều so với nói C#?Bạn đang sử dụng mã f # nào?

Trả lời

0

Địa điểm có nhiều phép tính toán học.

5

Deep Fried Bytes #24 podcast được bảo hiểm này:

  • xử lý thuật toán (bao gồm cả tính toán)
  • tạo DSL
  • xử lý đồng thời (dữ liệu không thay đổi, nhắn tin xếp hàng, quy trình công việc không đồng bộ)

Và tất nhiên , đối với nhiều hệ thống F # có thể hình thành một lõi xử lý, nhưng có vẻ như với tôi rằng nó sẽ thường xuyên hơn không được bao bọc (giao diện, người dùng hoặc otherwi se) với C#/VB để cung cấp một giao diện thông thường.

3
  1. công trình khoa học (Toán học và tính toán thống kê, hình dung, tối ưu hóa, ..)
  2. lập trình song song (F # hỗ trợ quy trình công việc không đồng bộ, Erlang phong cách đồng thời, FX Parallel, ...)
  3. ngôn ngữ lập trình hướng (ví dụ. DSL)
  4. dữ liệu phân tích chuyên sâu
  5. ...
5

Phân tích với FParsec (một cổng-trong-tinh thần của Parsec Haskell)

3

Tôi hiện khám phá những ứng dụng của F # trong

  • SOA
  • thực hiện song song
  • dữ liệu chuyên sâu
  • Quy trình chạy dài
+0

Làm thế nào tiện lợi hơn C#? – Cerebrus

+0

Học F # giúp tôi hiểu các tính năng mới được tìm thấy trong C#, nó cũng cho phép tôi khám phá những cách mới để xem xét các vấn đề và các giải pháp mới có thể. –

5

Tôi hiện đang sử dụng F # để phát triển trò chơi video độc lập tiếp theo của mình. Cho đến nay tôi nhận thấy rằng cách tiếp cận OO bình thường của tôi khác với cách tôi phát triển trong C#.

Một số điều tốt tôi đã nhận thấy là tôi đang sử dụng các hàm nhỏ hơn trung bình, tức là số lượng dòng trên mỗi hàm đang giảm. Giờ đây tôi cũng tự nhiên hơn khi phạm vi một hàm thành viên riêng tư tĩnh nằm bên trong một thành viên khác thay vì phải tiếp xúc với mọi thứ trong đối tượng. Viết một thuật toán va chạm thực sự dễ dàng. Đó là một chút sớm cho tôi để nói rằng các thuật toán bằng văn bản trong F # là dễ dàng hơn nhưng tôi đã nghiêng theo cách đó.

Không phải mọi thứ đều là hoa hồng kể từ khi tôi bắt đầu sử dụng F #. Tôi vẫn đang tìm kiếm tài liệu trực tuyến còn thiếu. Chuyên gia F # đã được một số trợ giúp nhưng vì nó lướt qua OO nó khiến tôi mất rất nhiều lần. Nó trở nên căng thẳng khi tác giả chọn không đi sâu vào OO khi nó là hình thức phát triển phổ biến nhất. Tôi không muốn đổ OO. Tôi đang tìm cách tích hợp chức năng vào nó.

Lợi thế lớn nhất mà tôi đã thấy cho đến nay chính là mã của tôi. Tôi biết nó có vẻ buồn cười nhưng mỗi khi tôi nhận được mã của tôi để biên dịch, nó đã làm việc như mong đợi. Tôi hy vọng đây vẫn là trường hợp khi tôi phá vỡ mười nghìn dòng mã vạch.

+1

Tôi cũng thấy F # thiếu tài liệu nói chung. –

+2

Trong khi hoàn thành, tôi đã tìm thấy http://en.wikibooks.org/wiki/F_Sharp_Programming để trở thành tài liệu tham khảo nhanh. –

+1

OOP là phổ biến! = OOP là tốt nhất. Chức năng của F # vượt quá sức mạnh của nó. Tôi ước rằng họ sẽ chỉ để lại OOP ra khỏi nó, bởi vì miễn là nó có người sẽ đi trên nó. : | – Rayne

1

Tôi đang xem xét sử dụng F # để xử lý HTML vì cú pháp khớp mẫu phù hợp với miền lỗi (Prolog có lẽ tốt hơn, nhưng vẫn).

1

1) Mô phỏng (Ants và sợi nấm)

Thật dễ dàng để tận dụng quy trình công việc async để làm cho mô phỏng ồ ạt song song.

2) Unit Tests cho C# API

F # làm cho các bài kiểm tra ngắn, ngọt ngào và rất dễ đọc. Ngoài ra, FsStory là khá tốt đẹp.

3) phân tích dữ liệu và Visualization

Nó có thư viện trực quan tuyệt vời và nó rất nhanh để thử những điều khác nhau trên mạng. Tôi cũng yêu VSLab và hy vọng nó sẽ sớm được phát hành.

4) nhanh chóng phát triển XNA

Một khi bạn có một khuôn khổ nhỏ được thành lập để giữ đối tượng orientedness của XNA tại vịnh, F # phát triển nhanh hơn nhiều và cũng dễ dàng hơn nhiều để thử nghiệm.

Tóm lại, tôi thấy F # là tuyệt vời ở bất kỳ nơi nào có tốc độ phát triển hoặc bất biến vượt trội về tính chính xác của API. Nếu có một lá cờ pragma hoặc trình biên dịch để tắt suy luận kiểu cho các chức năng công cộng và định nghĩa kiểu, tôi có lẽ cũng sẽ được đẩy để sử dụng nó cho các API của tôi.

2

F # thực hiện khá nhiều mọi thứ C#, chỉ dễ dàng hơn. Đó là các tính năng nâng cao có nghĩa là bạn sẽ viết ít mã hơn nhiều. Cú pháp OO chi tiết hơn cú pháp F # khác, nhưng nó vẫn tốt hơn việc sử dụng C#.

Chúng tôi đang sử dụng nó cho các dịch vụ web, các trang web ASP.NET MVC, daemon,

Câu hỏi đặt ra là, nơi không sử dụng nó. Ngay bây giờ mà có vẻ là chủ yếu là nơi công cụ hỗ trợ là thiếu. Vì vậy, ví dụ, với ASP.NET, mã nội tuyến trang ASPX là C#, nhưng các bộ điều khiển và mọi thứ khác nằm trong F #.

Một vài nơi mà F # không mượt mà như tôi nghĩ là sẽ được giải quyết trong các bản phát hành sắp tới.

2

Dưới đây là một số cách sử dụng thực tế tốt về F # và Lập trình hàm từ Trauma Pony được đưa ra làm câu trả lời cho similar question của tôi.

  • động lực học chất Computational
  • chế biến
  • Vật lý
  • Ray tracing
  • Data mining
  • hình ảnh y tế
  • phần mềm kỹ thuật kiểm soát
  • tín hiệu kỹ thuật số xử lý
  • Bioinformatics

Thực tế, hãy xem trang này để biết thêm nhiều ví dụ về nơi mà GPGPU đã được sử dụng.

1

Tôi đang sử dụng trích dẫn, biên dịch biểu thức LINQ, dsls, luồng công việc không đồng bộ và cấu trúc fp điển hình cho ứng dụng khách tại thời điểm này. Rất nhiều interop với C#.

3

Tập lệnh xử lý dữ liệu nhỏ (ish). Hãy suy nghĩ phân tích các tệp nhật ký dài và cố gắng phát hiện hành vi "lạ". Các mẫu hoạt động và xử lý luồng làm cho các chương trình đẹp (và nhanh). Tôi đã từng viết những thứ này trong C# nhưng chúng đã bị loại bỏ - sử dụng F # Tôi thực sự thấy mình sử dụng lại các kịch bản trước đó và mở rộng chúng.

Thử nghiệm sử dụng FsCheck (OK, tôi đoán điều đó là gian lận khi tôi tự mình chuyển ...), nhưng nó vô cùng hữu ích (tôi thực sự ngạc nhiên về điều này;)) không chỉ để thử nghiệm các chương trình F #, nhưng Các thư viện .NET nói chung. Vì FsCheck là một DSL thử nghiệm, tôi đoán tôi nên tham gia vào bandwagon DSL là tốt.

Tôi đã muốn sử dụng F # với WPF hoặc XNA cho các độ tuổi bây giờ, nhưng chưa nhận được vòng vào nó. Trái ngược với một số tôi đã tìm thấy rằng một khi bạn nhận được hang của cú pháp xây dựng lớp ngầm của F #, lập trình OO sử dụng F # cũng thú vị, nếu không nhiều hơn bằng cách sử dụng C# hoặc VB.

Đúng là nếu bạn viết thư viện trong F #, trừ khi bạn rất cẩn thận, nó chỉ có thể tương thích với nhau theo lý thuyết. Các thư viện F # tương thích thực sự cần phải rất cẩn thận về cấu trúc F # để sử dụng, hoặc viết một trình bao bọc C#/VB.

Kurt

1

Tôi đang sử dụng F # để phát triển động cơ cho trò chơi chiến thuật theo lượt tôi đang chơi với thiết kế. Tôi đã thấy rằng sự pha trộn của F # về lập trình hàm và OO đã cho phép tôi thao tác dữ liệu trong trò chơi một cách chính xác theo những cách quá phức tạp trong một C# bắt buộc để làm. Cũng khá tự nhiên khi tách các hành động thay đổi trạng thái khỏi các nếp gấp và như vậy xác định trạng thái của trạng thái sẽ thay đổi như thế nào, điều này chắc chắn giúp giữ cho mã đơn giản và được tổ chức hơn.

Cái bẫy lớn nhất mà tôi có thể rơi vào dự án là sử dụng chú thích kiểu của bộ dữ liệu cho một vài kiểu dữ liệu được sử dụng khá mạnh trong một trong các lớp. Sử dụng tuples làm cho mã khá ngắn gọn, nhưng tôi không chắc rằng việc sử dụng chú thích kiểu trong chữ ký của các hàm sử dụng chúng là đủ để duy trì mã có thể đọc được trong một số trường hợp.

0

Tôi đang sử dụng F # để nhận (TCP), phân tích cú pháp và lưu trữ thông báo giao thức nhị phân từ thiết bị công nghiệp. Hiện tại, tôi đang thử nghiệm quy trình công việc không đồng bộ.

Dự án tiếp theo là trực quan hóa và phân tích dữ liệu nhận được.

1

Phân tích và chuyển đổi chương trình.

Các vấn đề liên quan