Tôi chắc chắn đồng ý với lực đẩy chính của câu trả lời được chấp nhận và cho rằng về cơ bản bạn đang lao vào mọi thứ bằng cách cho Erlang thử, có vẻ như bạn có thể hiểu khá rõ về cách bạn học và chỉ cần một chút nũng nịu hướng đi, rõ ràng đó là một câu trả lời tốt cho bạn ... Nhưng, tôi nghĩ rằng tôi sẽ tiếp cận câu hỏi hơi khác một chút, vì tôi thấy rằng câu trả lời này sẽ không giúp tôi nhiều; Tôi luôn code để học! Vì vậy, đây là suy nghĩ của tôi ...
(BTW, tôi có xu hướng tiếp tục chi tiết phù hợp hơn, giả sử, các chương trong một cuốn sách và tôi chắc chắn rằng tôi không thể kiềm chế hoàn toàn bản năng của mình ở đây, nhưng tôi sẽ thử một chiến thuật khác; sẽ chỉ tóm tắt những suy nghĩ của tôi ở đây, và trong trường hợp ai đó muốn biết thêm chi tiết về bất cứ điều gì, hoặc nghĩ rằng đôi khi tôi nói là sai lệch trong định dạng này, tôi sẽ cố hết sức để nhớ thông qua lời nhắc phản hồi ...)
Để cố gắng giữ bản thân làm nhiệm vụ, đây là sự hiểu biết của tôi về các câu hỏi lực đẩy được hỏi trong OP; Tôi sẽ giữ bên lề ở mức tối thiểu khi cần thiết để giải thích ....
Đầu tiên là câu trả lời nhanh:
tôi đã ở trong một tình huống tương tự? Nó ít nhất là tương tự; Tôi đã ở vị trí lãnh đạo thực hiện nhiều dự án khác nhau mà dù sao cũng có liên quan ... (CRM / Web / DB / Tích hợp dữ liệu / v.v.)
Làm thế nào / tại sao tôi lại chuyển sang chức năng? " Tôi thấy một số ví dụ về LINQ và mặc dù tôi đã mơ về một loại ngôn ngữ truy vấn được tích hợp, gõ tĩnh [vì tôi chủ yếu sử dụng các ngôn ngữ được nhập tĩnh (chủ yếu là C ++ và sau đó là C # )] trong suốt sự nghiệp của tôi ... Nhưng, đó là một môi trường cháy nổ khá nhanh, và mặc dù tôi thường xoay sở để xem những gì sẽ xảy ra trong quá khứ, tôi chưa bao giờ thực sự nghĩ về nó vì vậy tôi không bao giờ thấy trước điều đó có thể / sẽ cho phép các hoạt động trên Plain Old Object (lol!) dễ dàng như vậy, khi tôi thấy nó tôi biết rằng tôi phải có nó ... vì vậy, đó là lý do và khởi đầu của cách: Tôi tập trung vào việc học cách hiểu LINQ .
Bốn ý nghĩ ... errr, không, điều đó không đúng ...
Khi tôi đọc câu trả lời của Martijn Verburg , việc đề cập đến chức năng kinh doanh khiến tôi suy nghĩ ngay lập tức bắt đầu triển khai mã cho bất cứ điều gì tôi đang làm ... Tùy thuộc vào mức độ thử nghiệm ban đầu mà tôi có thể trả lời khác nhau, nhưng giả sử đó chỉ là nhúng ngón chân cái của bạn vào, tôi không chắc rằng tôi có bất cứ điều gì trực tiếp cho công việc (hoặc sắp trở thành công việc) sẽ mang lại cho tôi sự phấn khích / đam mê Tôi nghĩ bạn có thể nên có trong vài vấn đề đầu tiên bạn bắt đầu giải quyết ...
Tôi đã hoàn toàn có cơ sở trong các ngôn ngữ được gõ tĩnh + các ẩn dụ và mô hình OOP + bất cứ điều gì tôi đã vô tình quấn lấy não của mình trong khi giải quyết các vấn đề thực tế của tôi trong nhiều năm qua ... Điểm là, nếu bạn hoàn toàn giống như tôi, bạn có thể có rất nhiều bộ não dành riêng cho những thứ sẽ không giúp bạn nhiều với LINQ / FP.
Tôi nghĩ nó giống như lập trình thủ tục thuần túy so với lập trình OO: có rất nhiều công cụ thủ tục mà bạn sẽ sử dụng trong OOP, nhưng những người đến C ++ từ C mà không ưu tiên Grok / ken / "get" OO cuối cùng là rất rất xấu ở C ++. Tôi thực sự đã phỏng vấn rất nhiều (15+) nhà phát triển phần mềm và trình điều khiển thiết bị lâu năm, những người thực sự nghĩ rằng họ biết C ++, nhưng, hầu hết , có hiểu biết cơ bản / sách giáo khoa về C ++, nhưng thực tế không hiểu gì về có kinh nghiệm về OOP vì họ chưa bao giờ thực sự làm OOP ... Họ đã viết các lớp đa mục đích đơn lẻ với các thành viên tĩnh và các hàm tĩnh với một số lượng các lớp không tĩnh / không đơn lẻ được sử dụng làm cấu trúc.
Và FP có một số khái niệm tương tự (đối với những người không nêu lên mô hình) và những thứ khác đi cùng với nó, và (mặc dù tôi đã tìm thấy sự lai tạo của rất nhiều kỹ thuật là lý tưởng đối với tôi) Tôi hiểu nhiều hơn và nhiều hơn khi thời gian trôi qua chính xác mức độ suy nghĩ của tôi trước khi có được các khả năng chức năng thực sự vào bộ công cụ của tôi; Tôi đã cố gắng thực hiện nhiều thứ trong quá khứ theo cách sáng tạo hơn một chút mà có lẽ hầu hết các lập trình viên OO, nhưng khi tôi sử dụng các khái niệm làm suy nghĩ của tôi bị cản trở như thế nào ... Có rất nhiều vấn đề có thể được giải quyết trong một vài dòng đã sử dụng rất nhiều mâu thuẫn để làm trong C ++ / C #.
đột nhiên bạn thấy mình ...
Trong một bài viết "quá dài"
Bạn đang ở trong một mê cung của "không đọc", tất cả đều giống nhau.
Bạn thấy một teleconference trong tương lai gần, nhanh chóng tiếp cận.
> ngắn gọn
Uhhuh. Chắc chắn rồi. Được rồi, chúng ta sẽ nói chế độ "terse" là "bật".
Bạn thấy một teleconference trong tương lai gần, nhanh chóng tiếp cận.
> điều đó có nghĩa là gì?
Chỉ cần nói. Bạn không phải làm gì sáng nay sao?
Bạn thấy một teleconference trong tương lai gần, nhanh chóng tiếp cận.
> này, đó có phải là một mối đe dọa đằng sau bạn?
Gì!? Ở ĐÂU?! [chạy đi la hét]
> Xin lỗi, tôi không hiểu WHERE, cụm từ nào?
[tiếp tục chạy và la hét, mỉa mai không chú ý]
Vậy ... tôi nên học gì, PSE thân mến, PSE thân yêu?
Cá nhân tôi bắt đầu trong C # với LINQ. Nó cho phép tôi giới thiệu một vài khái niệm cùng một lúc, và trong khi tôi liên tục đọc về FP và các khái niệm của nó, và nhiều LINQ hơn, và mối quan hệ giữa hai điều này, nó đã cho tôi một bước tiến trong khi vẫn làm việc hiệu quả. Tôi đã thêm vào một vài điều tại một thời điểm, các truy vấn dữ liệu nhanh chóng trở thành một công cụ hữu ích với tôi mà không cần phải hiểu một tấn.
Bây giờ, nhìn lại nó, tôi ước mình có thể thực hiện dự án tiếp theo của mình (đã giải quyết khoảng một năm sau) trước; Tôi đã làm quen với F # một cách vừa phải (điều này, tình cờ, đã cho tôi một khởi đầu tuyệt vời khi học ML (ngôn ngữ kim loại) và đó là các dẫn xuất khác (ví dụ, OCaml .)
Về cơ bản, tôi nghĩ rằng một câu trả lời hợp lý cho 'cái gì' phụ thuộc vào việc tìm ra một cặp vấn đề lập trình tốt mà bạn quan tâm, nhưng tất nhiên nó phải ghép với một chút FP mà bạn muốn tìm hiểu ... (và bạn có thể rửa / lặp lại / muộn hơn sau khi loại bỏ một cái gì đó ra khỏi danh sách ...) Và, tất nhiên, bạn luôn luôn học được nhiều hơn một chút so với điều chính bạn đặt ra để làm; Lúc đầu, tôi đã thực hiện một số bước nhỏ, nhưng sau đó tôi đã làm những việc lớn hơn và để những thứ nhỏ hơn rơi vào vị trí trong khi tôi làm những việc đó.
Đầu tiên, những gì nổi thuyền của bạn? Đặc biệt là lúc đầu, tốt nhất là có một cái gì đó vui vẻ và thú vị (với bạn) và điều đó sẽ giữ cho sự quan tâm của bạn đủ để làm cho nó đáng giá cho bạn. Vì vậy, IOW có vấn đề để giải quyết và các kỹ thuật giải quyết các vấn đề đó ... LINQ và truy vấn dữ liệu nội tuyến cho tôi lúc đầu. Đệ quy là một cái khác đối với tôi, bao gồm đệ quy đuôi, tôi đào GodelEscherBach-ness của nó; và tôi đã đọc về đệ quy đuôi. Trong khoảng thời gian này, những thứ tôi đang làm đã bị trì hoãn và cuối cùng tôi đã có một khối lượng lớn thời gian, vì vậy tôi đã có thể giữ nó trong một thời gian dài. Nó dễ dàng hơn với ít gián đoạn hơn, nhưng vì tôi đã chọn những thứ mà tôi nghĩ là vui vẻ, nó không quá khó ngay cả khi bị gián đoạn công việc. :)
Và mặc dù tôi không nghĩ ra bất cứ điều gì hay ho, tôi có thể nói với bạn về chương trình Cua tự nhận thức, tôi đã xoay sở để có được nó khá tốt.
Và ... Với những gì tôi sẽ học nó, PSE thân yêu, PSE thân yêu, với cái gì?
Đối với điều này, tôi đã sử dụng nhiều thuật toán mà tôi tình cờ quan tâm dù sao, cộng với nhiều điều tôi tự hỏi liệu bạn có thể làm trong F # không, và khi tôi hết ý tưởng, tôi sẽ giải quyết những thứ như 99 chai bia và Project Euler vấn đề ...
Tôi chắc rằng bạn có thể tìm thấy rất nhiều điều mà bạn quan tâm mà FP có liên quan; nó cung cấp mọi thứ từ cải tiến cho OOP giúp bạn nêu rõ mọi thứ một cách ngắn gọn hơn tất cả các cách để vặn vẹo theo cách bạn nghĩ về nó trước đây thành một hình dạng mà bạn không nhận ra và thậm chí không có mô hình tinh thần để thể hiện trước.
Nhưng ... Có một lỗ hổng trong mô hình của tôi, PSE thân yêu ...
Và đây là lý do tại sao điều quan trọng là, đặc biệt là lúc ban đầu, nhưng thực sự trong suốt thời gian bạn học (và không phải lúc nào bạn cũng học được?) Ít nhất bạn phải dành một chút thời gian giữa các vấn đề để đọc những thứ không liên quan nhưng vẫn còn FP và thời gian để đọc mã nguồn được viết bởi các chuyên gia, tốt nhất là giải quyết các vấn đề tương tự hoặc tương tự; cũng như lời giải thích của họ về mọi thứ ...
Và trong suốt thời gian đó, bạn phải căng thẳng để hiểu tất cả, không phải từ quan điểm cũ mà từ chính bản thân mình ... Đến một lúc nào đó, tôi đã nhấp chuột, và ... điều tôi có thể liên hệ tốt nhất với nó đến ngày càng trở nên thông thạo tiếng Hà Lan; tại một số thời điểm, tôi đã xoay sở đủ để suy nghĩ (tôi đã làm điều đó thông qua việc nhập vai, đó là điều cơ bản mà tôi đã mô tả ở đây; đắm mình vào FP thay vì cố gắng học nó chỉ qua "cuốn sách larnin '" ...
Và, cuối cùng tôi đã làm; Tôi đã xoay sở để nội tâm hóa mọi thứ và vặn vẹo bộ não của mình cho đến khi bắt đầu xuất hiện FP / LINQ mà không cần tôi phải nỗ lực để chuyển nó trở lại thành OOP. (Vâng, tôi đã làm điều đó; tôi phải có một cái gì đó để treo váy của tôi lên. Mũ. Sao cũng được.)
Suy nghĩ cuối cùng ...
Ôi trời ơi, dường như bạn đang mất khả năng nghĩ về chữ ký thông minh của mình
phần tiêu đề. Xấu hổ làm sao.
Các teleconference vẫn đang nhanh chóng tiếp cận. Nó xuất hiện lớn hơn nhiều bây giờ.
> vâng, vâng, tốt .. ngắn gọn và tất cả. Tôi thấy bạn đã xoay sở để mất đi mối thù đó.
cuộc gọi gần gũi, rằng ... tốt, vâng, tôi đang ... ... KHÔNG CÓ NÓ!
AAAAAAAHHHHHH !! [chạy đi la hét, một lần nữa]
Các teleconference vẫn đang nhanh chóng tiếp cận.
Nó bằng cách nào đó giống với Ngài Lancyjohn Cleezewiz.
Nó gần như là trên bạn.
> này, nhanh chóng quay lại! Tôi có một thử nghiệm để thử với bạn! (và một po-ta-to)
Bạn có thể tìm thấy rất nhiều thông tin trực tuyến về FP, một cách tự nhiên. Điều chính là để hiểu các khái niệm cơ bản, và sau đó học cách áp dụng chúng. Chẳng hạn, tìm hiểu về tính bất biến và tại sao nó quan trọng / hữu ích cho FP. Tôi đặc biệt khuyên bạn nên học một lý thuyết nhỏ để đi cùng với mọi thứ, như làm thế nào mà FP thuần túy có thể dễ dàng hơn nhiều để chứng minh chính thức. Đây là một động lực đằng sau tổ tiên của F #, ML. YMMV tất nhiên bạn có thể là một người chán nản đến rơi nước mắt trong trường hợp đó, rất nhiều ví dụ, rất nhiều thử nghiệm và lỗi để xem chính xác lý do tại sao các kỹ thuật được sử dụng là những gì họ sẽ giúp bạn có 'Aha!' khoảnh khắc bóng đèn.
Vì vậy, bây giờ tôi sẽ để nó ở đó. Hy vọng điều này là một số sử dụng cho một ai đó. Tôi muốn có thêm một chút vào những điều cụ thể để học nhưng hiện tại tôi đã hết thời gian. Tôi hy vọng sẽ tìm thấy một chút thời gian để sớm quay lại với nó mặc dù nó có vẻ là một tuần dài đối với tôi, vì vậy có lẽ sẽ ít nhất là vào cuối tuần.
<3 "Giới thiệu GRUEBOL, một điểm dừng; chỉ cho đến khi SnozzML kết thúc. Sẽ sớm thôi; tôi có một ủy ban lớn giúp tôi lần này." --Grace Hopperwit Egghead, Những từ cuối cùng nổi tiếng , XX97 GUE <3