Hướng dẫn của người bắt đầu cho những người bắt đầu OCaml

Diem Do

 

Bạn muốn học OCaml. Bạn bắt đầu từ đâu? Bạn làm gì?

 

Tôi là người mới bắt đầu với OCaml hàng chục lần- tôi tìm hiểu sau đó từ bỏ và rồi lại tìm hiểu lạii rất nhiều lần tôi không nhớ rõ bao nhiêu lần.

 

Đó là khoảng thời gian tôi bị mắc kẹt và tôi nghĩ đó là bởi vì cộng đồng đã cơ bản thay đổi.

 

Đây là những việc mà tôi đã làm.

 

Có những cuốn sách gì hữu ích?

 

Đọc Real World OCaml (thông tục là : RWO) và chấp nhận không có sản phẩm thay thế. Nó có thể là một cuốn sách ngôn ngữ máy tính tốt nhất mà tôi từng đọc trong cuộc đời tôi.

 

Thêm vào đó, tôi khuyên là không nên đọc những cuốn sách khác, vì chúng có xu hướng không đúng bằng tiếng Pháp.

 

(Sửa chữa: một lời bình luận chỉ ra rằng từ cuốn sách “OCaml from the Very Beginning” không thu hút và là định hướng cho người mới bắt đầu nhiều hơn. Tôi không bao giờ đọc nó, nhưng ROn Minksy cho rằng có nhiều điều tốt đẹp về nó. Vì thế ta có thêm một thông tin để lựa chọn.  )

 

Sau đây là một số điều thú vị về RWO.

 

* Có tính thuyết phục và được viết rất hay.

 

Có đầy đủ những thông tin hữu ích về HTML trên trực tuyến. Điều này có nghĩa là (1) bạn không phải mua sách và (2) bạn có thể sao chép và dán những đoạn mã một cách trực tiếp.

 

* Cung cấp bằng chứng hoạt động rõ ràng cho mỗi tính năng ngôn ngữ quan trọng.

 

Thông qua những gì tôi làm, tôi nghĩ rằng những tác giả cung cấp đủ kiến thức về các tính năng làm việc đầy đủ mà bạn có thể  để an tâm sử dụng nó cho một hệ thống sản xuất.

 

Theo như một nguồn tin khả quan, họ đang có một mô hình kết hợp. Nó tạo ra mô hình những tách đường kết hợp xuống tới một thiết bị trạng thái giới hạn. Vì thế, nếu có hai mô hình chồng chéo lên nhau, hãy kiểm tra chúng giống như việc lướt qua một loạt các báo cáo được lồng ghép một cách khéo léo, hơn là việc kiểm tra một mẫu và luôn bắt đầu hoàn toàn một lần nữa cho mô hình kế tiếp. Việc cung cấp những kiến thức này đến mọi người là vô cùng hữu ích, đặc biệt đối với những người như tôi, những ai cần các loại kiến thức này khi viết code cho sản phẩm của mình.

 

Điều này trái ngược với nhiều cuốn sách hướng dẫn bạn thông qua các khái niệm trừu tượng cốt lõi. (ví dụ “ở đây là một vòng lặp”) và thư viện cốt lõi (ví dụ “gọi điều này để lấy một List<T>”) và không mang đến ngữ cảnh khác cho bạn.

 

* Toàn bộ một section trong thời gian chạy. Toàn bộ một section!

 

“Thời gian chạy”(runtime) mà theo tôi định nghĩa là bất cứ thứ gì mà đang chạy khi chương trình của bạn đang thực thi. Bao gồm những thứ giống như GC, sự quản lý đồng thời, v.v.

 

Đó là một thương lượng lớn bởi vì, nếu bạn không tiếp cận tốt tới kiến thức về cách mà thời gian chạy của ngôn ngữ sản phẩm làm việc, bạn đang gặp một rủi ro lớn. Tuy nhiên, hầu như không có sách ngôn ngữ thực sự gồm nhiều kiến thức  về runtime!

 

Section này cung cấp nhiều kiến thức nếu như  bạn cần gặp rủi ro thì việc này có thể kiểm soát được. Nó thì tốt, tôi hoàn toàn thay đổi thái độ của tôi về OCaml. Trước đó, tôi không bao giờ xem xét việc sử dụng OCaml  trong sản xuất trước đó, trong khi bây giờ, tôi cảm thấy tôi đủ để hiểu rằng rủi ro nhỏ đó bạn nên tin tưởng để vượt qua.

 

Hãy xem xét điều này với cuốn sách khác, đó là niềm vinh hạnh đối với tôi, tìm hiểu bạn như một Haskell. Cũng giống như việc giải trí, và giúp tôi vượt qua những điều quan trọng (như monads), nhưng nó hầu như không cung cấp toàn bộ về cách mà ngôn ngữ chạy như thế nào. Đó là một sai lầm nghiêm trọng! Về cơ bản nó loại bỏ Haskell như một món đồ chơi tôi dùng trong thời gian rảnh rỗi của tôi.

 

Toàn bộ một section trên công cụ để giải quyết những nhiệm vụ quan trọng. Bao gồm việc phân tích và lexing, sự sắp xếp tuần tự, những thư viện đồng thời, v.v

 

(Cũng có một section về ngôn ngữ, những tính năng, API cốt lõi, nhưng chưa được đề cập tới. )

 

Hãy từ bỏ những thư viện và công cụ chuẩn khủng khiếp. Cuốn sách tập trung xung quanh một toolchain cao hơn rất nhiều hầu như vậy bởi Jane Street Capital và OCaml Labs. Trước RWO, thư viện chuẩn và công cụ chuẩn (ví du những người quản lý gói) là một điểm trở ngại lớn cho việc học OCaml. bởi vì chúng  giống nhau kinh khủng. May mắn toolchain mới này vô cùng tuyệt vời, một tài liệu hay và được hỗ trợ tốt và các trung tâm RWO đúng là xung quanh sự thay thế này.

 

Những công cụ mà tôi nên dùng là gì?

 

OCaml là một loại hệ thống rất mạnh. Một sự kết nối của sự thật này, thêm vào đó sự thật là những loại này thường được suy ra (nó thường không được viết xuống một cách rõ ràng), làm cho OCalm trở thành một ngôn ngữ nơi mà trực giác của bạn về những gì nên là đúng sẽ thường xuyên được dừng lại và sau đó đập vào mặt bạn cho đến khi bạn lấy nó trúng.

 

Xin vui lòng.

 

Xin vui lòng thực hiện điều này dễ dàng bởi chính mình.

 

Việc đầu tư vào các công cụ mà sẽ rút ngắn khoảng cách giữa các văn bản và trình biên dịch nói về bạn nó hoàn toàn sai.

 

Theo các hướng dẫn cài đặt RWO đến cuối. Thực tế là:

 

Cài đặt utop (OCaml REPL). Bạn sẽ sử dụng điều này với nhiều kinh nghiệm và xác nhận trực giác của bạn trong việc chạy code.

 

Cài đặt OPAM (OCaml package manager). Điều này nên làm mà không nói. Đã từng khó rất khó và tức giận với việc chuyển đổi các phiên bản của OCaml hay cài đặt thư viện đơn giản. OPAM thực sự là một niềm vui để sử dụng so với những ngày đó, và thậm chí so với các ngôn ngữ khác.

 

Biên tập công cụ. Chỉ làm điều đó. Sử dụng chúng cho OCaml sai đó. Công cụ này tốt hơn nhiều so với việc sử dụng trình soạn thảo và không có công cụ khác.

 

Vì nó cần có thời gian và năng lượng để đầu tư vào công cụ, tôi sẽ cố gắng lôi kéo bạn bằng cách hiển thị cho bạn một số công cụ đó là  những công cụ bắt mắ tmà bạn có thể làm việc với chúng.

 

Các tập tin được biên dịch vào tiết kiệm, có nghĩa là những điều mà không biên dịch được đánh dấu màu vàng:

 

 

Khi bạn nhập, Merlin sẽ  xuất một danh sách gợi ý tự động hoàn chỉnh:

 


 

Merlin cũng có một phím nóng (trên emacs nó Cc <TAB>) sẽ đưa ra một danh sách các autocompletes đề nghị:

 


 

 

Một phím nóng (trên emacs nó C-c -C-t) có biểu hiện con trỏ hiện đang ở vị trí nào và cho bạn biết đó là loại gì ! (Nó bao gồm ở dưới cùng của màn hình.) Điều này là cực kỳ thuận tiện vì trình biên dịch sau đó không có một cơ hội để phàn nàn về các loại.

 


 

Nếu bạn nhấn kết hợp này cùng một phím trên một biểu thức là một loại, nó chỉ đơn giản mang lại cho định nghĩa kiểu!

 

 

 

Có rất nhiều điều bạn có thể làm ở đây. Đây cũng chỉ là một cách làm. Đây là một điều bắt buộc, nhưng thực sự, nó cũng có giá trị tiết kiệm thời gian.

 

Một số ví dụ hay về nguồn mà tôi có thể đọc là gì? 

 

Đúng là một câu hỏi hay! Điều quan trọng là để xem các lập trình viên thực sự có kỹ năng sử dụng OCaml một cách thực sự một cách thuần thục.

 

Hệ thống OCaml mở tốt nhất có lẽ là Jane Street Core và Jane Street lõi hạt nhân. Ví dụ, đây là việc thực hiện bản đồ của họ, mà là rất tốt. 

 

Các nguồn cho Utop và bất cứ điều gì ra khỏi OCaml Labs là tốt, nhưng tiếc là, các dự án mã nguồn mở OCaml tốt là vẫn còn hơi khó để đi qua nói chung. Cuối cùng điều này có thể sẽ thay đổi.

 

Một số hướng dẫn hay là gì?

 

Các hướng dẫn chuẩn về OCaml hiện nay rất tuyệt vời. Các hướng dẫn này đã từng không tồn tại, chúng vô cùng tệ. Bây giờ chúng vô cùng tuyệt vời.

 

Bài tập giải quyết các vấn đề OCalm 99 thì rất hay. Có thể không là cách tốt nhất để học , phụ thuộc vào kiến thức của bạn, nhưng tôi được tìm thấy đó là cách hữu ích để học các thao tác phổ biến cho các cấu trúc dữ liệu chuẩn OCaml. Thực tế là, tôi đã tìm thấy cách viết một số thứ và sau đó nhìn vào các giải pháp, hiển thị cho tôi thấy nơi mà tôi đã đang không dùng thành ngữ OCaml. Điều đó vô cùng hữu ích.

 

Có cả hai bao gồm trang “học” OCaml chính thức. Đó là một nguồn vô cùng tốt để bắt đầu để học và sẽ được cập nhật liên tục trong tương lai.

 

Tài liệu hay ở đâu?

 

Một sự khởi đầu tốt là tài liệu của Core.Std. Điều này giải thích về những cấu trúc dữ liệu chuẩn của Jane Street Core, một nơi tốt để bắt đầu.

 

Để bắt đầu với nó, có thể cần thiết để xem xét thông qua các chương RWO trực tuyến có liên quan. (Chắc chắn đây là sự thật.)

 

Tôi có thể nói với ai?

 

Tôi có những người bạn mà tôi nói về họ. Tôi nghe IRC thì rất tốt, và tôi nghe các danh sách gởi thư đi. Theo cá nhân mình, tôi không sử dụng cái nào cả.

 

Bạn đề nghị những gì cho những người mới bắt đầu?

 

Con đường của mỗi người thay đổi, nhưng theo cá nhân, tôi đã gặp may mắn nhất với những điều sau.

 

Bắt đầu bằng cách thực thi những ứng dụng tương xứng với kinh nghiệm của mình. Tôi chọn một người giải quyết Boggle, một phân tích cú pháp dòng lệnh,một phân tích cú pháp regex, và một thiết bị đôi học các vấn đề. Tôi phụ thuộc vào việc chọn một số thứ sớm hơn hay khó khăn hơn.

 

Sử dụng trình soạn thảo để thường xuyên kiểm tra những loại thể hiện. Điều này làm giảm sự làm hỏng trình biên dịch. Sử dụng trình soạn thảo biên dịch khi bạn lưu lại tính năng để kiểm tra nếu mọi thứ biên dịch. Đó là cách nhanh chóng hơn để thực  hiện  tương tác với trình soạn thảo hơn là biên dịch bên ngoài trình soạn thảo của bạn.

 

Tôi tìm thấy nó vô cùng hữu ích để bắt đầu phác thảo ra những loại của tôi và giao diện của họ trước khi tôi viết bất kì mã nào. YMMV.

 

Thử tìm kiếm một bộ đôi trong OCalm đến tất cả những thứ mà bạn thích làm với ngôn ngữ khác. Ví dụ, sự nhận thức danh sách của Python là một trường hợp đặc biệt về các ràng buộc monatic. Thật ngọt ngào! Một khi bạn có thể tất cả những điều này đang giảm đi, bạn sẽ thoải mái hơn trong ngôn ngữ của bạn, bởi vì việc dịch ra những suy nghĩ của bạn thành những đoạn code giúp bạn có những điều vững chắc để có thể dựa vào.

 

Hãy lấy những bản xem xét code. Tôi có những người bạn người mà giúp bạn với những điều này. Nó vô cùng hữu ích cho việc hiểu những nơi mà bạn thực hiện những điều đó mà không có OCaml-kosher.

 

Việc đọc nhiều nguồn sẽ giúp bạn rất nhiều. Tôi tìm thấy lõi Jane Street đang rất hữu ích cho việc hiểu biết các thành ngữ của OCaml.

 

99 vấn đề, hãy để bạn thực thi một số thức, và sau đó xem những cách mang tính chất thành ngữ để thực hiện. Điều này có thể rất rất hữu ích.

 

Tổng kết.

 

Tôi đoán là tôi thật sự không có bất cứ điều gì để nói trong phần này, những điều khác hơn là nếu bạn có  bất kì lời bình luận nào về công việc hãy để lại lời nhắn.  Tôi sẽ vô cùng hạnh phúc để nghe về chúng.

 

 

Chia sẻ bài viết ngay

Nguồn bài viết : blog.space.io