แนะนำการตั้งโปรแกรมการทำงานในสภาพแวดล้อมการพัฒนาของคุณ [ปิด]


15

นี่เป็นเรื่องยาว แต่ฉันจะพยายามสรุปให้ดีที่สุดเท่าที่จะทำได้ เราเป็นร้าน NET ที่เขียนซอฟต์แวร์สำหรับกองทุนประเภทต่างๆ ตัวอย่างเช่นเราเขียนซอฟต์แวร์การจัดการการเรียกร้องสุขภาพซอฟต์แวร์การจัดการบำนาญซอฟต์แวร์ 401 (k) และสิ่งอื่น ๆ ทางการเงิน

ตอนนี้เรากำลังเข้าสู่อาณาจักรใหม่: อนุพันธ์และประเภทการวิเคราะห์เชิงปริมาณซึ่งดูเหมือนน่าตื่นเต้นมาก นี่คือสิ่งที่จะลงมาในอีก 8-12 เดือนข้างหน้า

ตอนนี้ฉันได้เรียนรู้การเขียนโปรแกรมฟังก์ชั่นด้วยตัวเองแล้วส่วนใหญ่เป็นเพียงผิวเผินที่ใช้ภาษาต่าง ๆ ผ่านหนังสือเล่มนี้แต่ไม่เคยขุดลึกเข้าไปในนั้น ตอนนี้เนื่องจากเราเป็น. NET shop ฉันคิดว่า F # อาจเป็นทางเลือกที่ดีเพราะเราอาจใช้ประโยชน์จากไลบรารี NET. บางส่วนและความรู้ที่มีอยู่อาจเป็นไปได้

คำถามของฉันคือจะเริ่มที่ไหน ฉันมีช่วงเวลาที่ยากลำบากอย่างมากที่จะคิดออกว่าฉันควรจะไปกับ Haskell, Erlang, Scala, F # ฯลฯ พวกเขาทั้งหมดดูน่าสนใจและมีความสามารถและค่อนข้างตรงไปตรงมานี่อาจเป็นโอกาสดีที่จะแยกตัวออกจาก Microsoft

มีใครมีสถานการณ์ที่คล้ายกัน? ถ้าเป็นเช่นนั้นประสบการณ์ของคุณคืออะไรที่ทำให้การทำงานเป็นไปอย่างรวดเร็วและคุณเลือกอะไรและทำไม? ฉันรู้ว่านี่เป็นคำถามที่ยิ่งใหญ่ แต่ฉันไม่รู้จักนักพัฒนาที่ใช้วิธีการทำงานในตอนนี้ดังนั้นฉันไม่มีที่อื่นที่จะหันไปนอกเหนือจาก Googling อย่างไม่หยุดหย่อนและค้นหา Flame Wars ในภาษาที่ใช้งานได้ดีที่สุด


การอ่านที่แนะนำ: จะเริ่มต้นที่ใด
gnat

คำตอบ:


14

ต้นแบบต้นแบบต้นแบบ! ใช้ฟังก์ชั่นทางธุรกิจเพียงเล็กน้อยที่คุณคิดว่าจำเป็นต้องมีการเขียนโปรแกรมใช้งานได้และลองใช้ภาษาต่างๆและดูว่าพวกเขาจะให้ประโยชน์และความสามารถในการทำงานร่วมกันที่คุณต้องการจริงๆ


คำแนะนำที่ดีและฉันจะใส่ใจมันในความเป็นจริงฉันกำลังติดตั้ง Erlang ทันทีเพื่อให้มันไป
Nodey The Node Guy

10

คำถามแรกที่คุณต้องตอบอย่างแท้จริงคือเหตุผลที่คุณกำลังพิจารณาใช้ภาษาที่ใช้งานได้ หากคุณไม่สามารถปรับเหตุผลทางธุรกิจสำหรับสวิตช์คุณไม่ควรทำ กล่าวอีกนัยหนึ่งคือต้องการแนะนำกรอบงานภาษาหรือเทคโนโลยีใหม่อื่น ๆ ในสภาพแวดล้อมการทำงานของคุณเพียงเพราะคุณต้องการเรียนรู้หรือเพราะดูเหมือนว่าสิ่งที่ "เจ๋ง" ต่อไปนั้นเป็นความผิดพลาดอย่างแน่นอน ดังนั้นคุณต้องถามความจริงกับตัวเองก่อนว่าแรงจูงใจคืออะไร

หากคุณรู้สึกว่าคุณต้องการภาษาที่ใช้งานได้เพื่อแก้ปัญหาเฉพาะและสมมติว่าภาษาหน้าที่หลักส่วนใหญ่จะตอบสนองความต้องการของคุณฉันจะไปกับภาษาที่โตแล้วที่สุดและเป็นชุมชนผู้ใช้ที่ใหญ่ที่สุด Erlang เป็นตัวเลือกที่ดีและตรงตามข้อกำหนดทั้งสองนี้อย่างไรก็ตามในสภาพแวดล้อม ms / .NET ล้วนๆฉันสามารถเข้าใจการใช้ F #


2
@ennukiller - ฉันสามารถเห็นได้อย่างแน่นอนว่าการเขียนโปรแกรมฟังก์ชั่นจะเป็นทางเลือกที่ดีสำหรับเราและฉันจะไม่โกหก - ฉันก็ชอบที่จะใช้มันเพื่อกระตุ้นทางปัญญาอย่างแท้จริง เราจะทำการคำนวณจำนวนมากและฉันต้องการใช้ประโยชน์จากมัลติคอร์ นอกจากนี้จำเป็นที่ทุกฟังก์ชั่นทางคณิตศาสตร์ได้รับการพิสูจน์แล้วว่าถูกต้องฉันเข้าใจว่าอาจใช้งานได้ง่ายขึ้น
Nodey The Node Guy

2
หากคุณจำเป็นต้องพิสูจน์ความบริสุทธิ์โปรแกรมการทำงานที่ดีที่สุดคือ คำแนะนำบางส่วนที่นี่มีไว้สำหรับ Add-on ที่ใช้งานได้กับภาษาที่จำเป็น - อาจคุ้นเคยมากกว่า แต่จะไม่ให้รหัสที่ถูกต้องแก่คุณ ในการปรากฏตัวของผลข้างเคียงคุณไม่สามารถใช้ความจริงที่ว่า x = x ('referential transparent') และคุณต้องพิสูจน์ว่า x ในภายหลังในรหัสยังคงมีค่าเหมือนเดิม ยกตัวอย่างเช่นในบางภาษามันอาจเกิดขึ้นได้ซึ่งx:=3; y:=10; x:=add(x,x);ผลลัพธ์xนั้นไม่ใช่ 6 และyที่ไม่ใช่ 10 เพื่อพิสูจน์ว่าการทำงานของคุณถูกต้องในบริบทนี้นั้นไม่สามารถทำได้
AndrewC

9

ฉันเห็นด้วยอย่างยิ่งกับ F # สำหรับร้านค้าที่มี. codebase อยู่เดิมมากเท่าที่ฉันจะเห็นด้วยอย่างยิ่งกับ Scala สำหรับร้านค้าที่มี codebase Java ที่มีอยู่

ฟังก์ชั่นการเขียนโปรแกรมเป็นเครื่องมือที่เหมือนกัน ใช้งานได้ดีและผสานรวมกับวิธีที่คุณพัฒนาโค้ดอยู่แล้วมันสามารถทำให้คุณมีประสิทธิผลมากขึ้นโดยทำให้ง่ายขึ้นในการให้เหตุผลว่าโค้ดของคุณทำอะไรอยู่ การสลับภาษานั้นอยู่ไกลจากฟรีอย่างไรก็ตามทางออกที่ดีที่สุดของคุณคือทางออกที่ช่วยให้คุณใช้รหัสที่มีอยู่ให้มากที่สุดเท่าที่จะเป็นไปได้ในการเปลี่ยน วิธีที่แน่นอนที่สุดที่จะล้มเหลวในการแนะนำภาษาใหม่ให้กับสภาพแวดล้อมของคุณคือการบอกเพื่อนร่วมงานของคุณว่าพวกเขาต้องเขียนทุกสิ่งที่พวกเขาได้รับจนถึงตอนนี้เพื่อที่จะเห็นประโยชน์ของการเปลี่ยนแปลงที่ ณ จุดนี้ คุณยังคงพยายามขายต่อ


7

ฉันอยากจะแนะนำให้เริ่มโปรแกรมการทำงานโดยไม่ต้องเรียนรู้ภาษาใหม่ทันที มันทำให้ยากขึ้นหากคุณพยายามที่จะเรียนรู้กระบวนทัศน์ใหม่เมื่อคุณพยายามที่จะจับกับไวยากรณ์ของภาษาใหม่

แน่นอนว่าภาษาที่ได้รับการพัฒนาขึ้นเป็นพิเศษเพื่อทำหน้าที่การเขียนโปรแกรมจะมีข้อได้เปรียบบางประการ (เช่นมีโครงสร้างเฉพาะเช่นความเข้าใจและการทำให้โครงสร้างข้อมูลไม่เปลี่ยนรูปโดยปริยาย) แต่โดยทั่วไปแล้วขั้นตอนที่ใหญ่ที่สุด สไตล์ C # ยอดเยี่ยมสำหรับการทำเช่นนั้น

โดยทั่วไปคุณเพียงแค่หยุดเปลี่ยนสถานะรหัสของคุณ ฉันทำสิ่งนี้โดยใช้ Java และมันง่ายยิ่งขึ้นกับ C # เพราะคุณมีลูกแกะ เมื่อคุณได้รับความนิยมและความรู้สึกในสิ่งที่ดีสำหรับมันมันจะง่ายมากที่จะรับภาษาที่ใช้งานได้ (ไม่ว่าจะเป็น F # ที่คุณเลือกหรือ Erlang) และมีประสิทธิผลอย่างมาก


1
+1: ฉันเห็นด้วยกับคุณ ฉันได้เริ่มเขียนโค๊ดในรูปแบบการใช้งานได้มากขึ้นใน Java และ C ++ (โดยใช้ตัวแปรสุดท้ายและ const เพิ่มเติมการเลิกใช้งานที่ซับซ้อนโดยใช้องค์ประกอบของฟังก์ชั่นและอื่น ๆ ) ฉันคิดว่าสิ่งนี้ได้ปรับปรุงสไตล์การเขียนโปรแกรมของฉันใน Java และ C ++ อย่างแน่นอน หลังจากที่ในขณะเมื่อเมื่อรู้สึกพร้อมที่จะไปต่อหนึ่งสามารถลองภาษาฟังก์ชั่น (Haskell, Ocaml, SML, Lisp, Scala, F #, ฯลฯ )
Giorgio

1

หากสิ่งที่คุณต้องการคือการเรียนรู้และเข้าใจการเขียนโปรแกรมที่ใช้งานได้เพียงติดตั้ง IronPython และมุ่งเน้นไปที่คุณสมบัติการทำงานใน Python ที่เลวร้ายที่สุดคุณจะได้เรียนรู้เครื่องมือที่สามารถรวมเข้ากับ C # เพื่อลดจำนวนบรรทัดของรหัสในแอปพลิเคชันและช่วยให้คุณสามารถส่งมอบผลิตภัณฑ์ที่ไร้ข้อบกพร่องมากขึ้นก่อนกำหนด

ดูการนำเสนอของ DaBeaz เกี่ยวกับเครื่องกำเนิดไฟฟ้าสำหรับตัวอย่างของวิธีการทำงานของ Python ในการทำให้สิ่งที่ซับซ้อนง่ายขึ้นhttp://www.dabeaz.com/generators/

นอกจากนั้นฉันคิดว่าคุณควรจะใช้เวลากับ Scala บ้าง มันทำงานบน. NET ในโหมดเบต้าดังนั้นคุณสามารถติดตั้งและใช้งานได้ในวันนี้เพื่อวัตถุประสงค์ในการเรียนรู้และในฤดูใบไม้ร่วงมันจะอยู่ในโหมดการเปิดตัวสำหรับ. NET ซึ่งหมายความว่าคุณสามารถเขียนโค้ดใน Scala ที่สามารถเคลื่อนย้ายข้าม JVM และ. NET และเนื่องจาก Scala ตั้งอยู่รอบ ๆ นักแสดงและการส่งข้อความจึงเป็นเรื่องง่ายมากที่จะสร้างแอปพลิเคชันที่ทำจากโปรแกรมแยกต่างหากหลายโปรแกรมที่รันบนเครื่องที่แยกกันหลายเครื่อง เมื่อคุณเพิ่มความสามารถในการพกพา. NET / JVM ให้กับมิกซ์นั้นมีแง่มุมอื่น ๆ คุณสามารถมีแอปพลิเคชั่นเดียวที่ใช้ประโยชน์จากทั้งห้องสมุด Java บุคคลที่สามและห้องสมุดบุคคลที่สาม. NET โดยไม่ต้องยุ่งกับการพัฒนาโปรโตคอลเพื่อให้พวกเขาสื่อสาร กระบวนการทั้งสองจะถูกเขียนใน Scala และจะใช้การส่งข้อความระยะไกล Scala (นักแสดงระยะไกล) เพื่อสื่อสาร ลองดู Akka ห้องสมุดที่ดูเหมือนว่าในที่สุดมันจะกลายเป็นส่วนหนึ่งของห้องสมุดมาตรฐานของ Scala ที่ตัดสินโดยสิ่งที่ Typesafe.com กำลังทำอยู่


+1: สำหรับการกล่าวถึงสกาล่าและความพร้อมในแพลตฟอร์มที่แตกต่างกัน คำถาม: Akka จะเข้ามาแทนที่การใช้งานของนักแสดงในปัจจุบันในสกาล่าหรือไม่? หรือทั้งสองจะอยู่เคียงข้างกัน?
จอร์โจ

ไม่แน่ใจว่า Akka จะมาแทนที่นักแสดงสกาล่าคนปัจจุบันได้ตลอดเวลาเร็ว ๆ นี้หรือไม่ แต่ผู้สร้าง Scala Martin Odersky ได้เข้าร่วมกับผู้สร้าง Akka Jonas Boner ใน บริษัท Typesafe พวกเขากำลังโปรโมต Scala กับ Akka อย่างหนักและตอนนี้ด้วย Play Framework ดังนั้นจึงเป็นไปได้ว่าการมุ่งเน้นการพัฒนาจะอยู่ที่ Akka หากคุณเป็นเพียงการเรียนรู้นักแสดงกับสกาล่ามันจะเป็นการดีที่สุดที่จะมุ่งเน้นที่อัคก้าก่อน
Michael Dillon

ขอบคุณมากสำหรับข้อมูล! ฉันดูนักแสดงในสกาลา แต่ตอนนี้ผิวเผินมากจนถึงตอนนี้
Giorgio

-1

แน่นอนว่าฉันเห็นด้วยกับแรงผลักดันหลักของคำตอบที่ยอมรับและเมื่อคุณโดยทั่วไปกำลังดำน้ำในสิ่งที่ใหญ่โตโดยให้ Erlang ลองฟังดูเหมือนว่าคุณน่าจะมีความเข้าใจที่ดีเกี่ยวกับวิธีการเรียนรู้และต้องการเขยิบขวา ทิศทางชัดเจนดังนั้นมันเป็นคำตอบที่ดีสำหรับคุณ ... แต่ฉันคิดว่าฉันจะเข้าหาคำถามที่แตกต่างกันเล็กน้อยเนื่องจากฉันเห็นว่าคำตอบนี้จะไม่ได้ช่วยฉันมากเลย ฉันมักจะเรียนรู้รหัส! ดังนั้นนี่คือความคิดของฉัน ...

(BTW ฉันมักจะไปในรายละเอียดเหมาะสำหรับพูดบทในหนังสือและฉันแน่ใจว่าฉันไม่สามารถยับยั้งสัญชาตญาณของฉันที่นี่อย่างสมบูรณ์แต่ฉันจะลองตะปูอื่น จะสรุปความคิดของฉันที่นี่และในกรณีที่มีคนต้องการรายละเอียดเพิ่มเติมเกี่ยวกับสิ่งใดหรือคิดว่าบางสิ่งที่ฉันบอกว่าทำให้เข้าใจผิดในรูปแบบนี้ฉันจะพยายามอย่างดีที่สุดที่จะจำเตือนการตอบสนอง ... )

เพื่อพยายามทำให้ตัวเองทำงานต่อไปนี่คือความเข้าใจของฉันเกี่ยวกับคำถามที่ถูกถามใน OP; ฉันจะอธิบายให้น้อยที่สุดเท่าที่จำเป็นเพื่ออธิบาย ....

ก่อนอื่นคำตอบด่วน:

ฉันอยู่ในสถานการณ์ที่คล้ายคลึงกันไหม อย่างน้อยก็คล้ายกัน ฉันอยู่ในตำแหน่งผู้นำในการทำโปรเจ็กต์ที่หลากหลายซึ่งเกี่ยวข้องกับ ... (CRM / Web / DB / Data Integration / ฯลฯ )

ทำไมฉันถึงข้ามไปใช้งานได้? "ฉันเห็นตัวอย่างของ LINQ และถึงแม้ว่าฉันจะใฝ่ฝันถึงการเรียงลำดับแบบบูรณาการพิมพ์แบบคงที่ภาษาแบบสอบถาม [เนื่องจากฉันใช้ภาษาที่พิมพ์แบบคงที่ (โดยหลักแล้วคือ C ++ และ C # ภายหลัง )] ตลอดอาชีพของฉัน ... แต่มันเป็นสภาพแวดล้อมที่ค่อนข้างเร็วฉันอยู่ในไฟและถึงแม้ว่าฉันมักจะจัดการเพื่อดูสิ่งที่มาในอดีตที่ผ่านมาฉันไม่เคยคิดว่ามันผ่านจริง ๆ ดังนั้นฉันไม่เคยคาดคิดว่ามันจะ สามารถ / อนุญาตการดำเนินการกับ Plain Old Objects (lol!) ได้อย่างง่ายดายเช่นกันเมื่อฉันเห็นมันฉันรู้ว่าฉันต้องมี ... ดังนั้นนั่นคือสาเหตุและจุดเริ่มต้นของวิธี: ฉันมุ่งเน้นการเรียนรู้ที่จะเข้าใจ LINQ .

สี่ความคิด ... เอ่อใช่แล้วไม่ถูกต้อง ... คิดล่วงหน้า

เมื่อฉันอ่านคำตอบของ Martijn Verburgการกล่าวถึงฟังก์ชั่นทางธุรกิจทำให้ฉันนึกได้ทันทีว่าจะเริ่มใช้งานโค้ดสำหรับสิ่งที่ฉันกำลังทำ ... ขึ้นอยู่กับว่าการทดลองขั้นต้นตื้น ๆ นั้นฉันอาจตอบแตกต่างกันไป จุ่มนิ้วเท้าขนาดใหญ่ของคุณในฉันไม่แน่ใจว่าฉันมีอะไรสำหรับการทำงานโดยตรง (หรือเร็ว ๆ นี้จะเป็นงาน) ที่จะทำให้ฉันตื่นเต้น / ความหลงใหลฉันคิดว่าคุณควรจะมีปัญหาแรก ๆ ที่คุณเริ่มรับมือ ...

ฉันมีเหตุผลเกือบทั้งหมดในภาษาแบบคงที่ + อุปมาอุปมัย OOP และรูปแบบ + สิ่งที่ฉันจบลงด้วยการพันรอบสมองของฉันโดยไม่ตั้งใจในขณะที่แก้ปัญหาที่เกิดขึ้นจริงของฉันในช่วงหลายปีที่ผ่านมา ... ชี้ว่าถ้าคุณเป็นเช่นนั้น คุณน่าจะมีสมองจำนวนมากที่ทุ่มเทให้กับสิ่งที่ไม่ได้ช่วยอะไรคุณได้มากนักกับ LINQ / FP

ฉันคิดว่ามันเหมือนกับการเขียนโปรแกรมแบบขั้นตอนบริสุทธิ์กับ OO: มีหลายสิ่งที่คุณจะต้องใช้ใน OOP แต่ผู้ที่มาที่ C ++ จาก C โดยไม่ต้องให้ความสำคัญกับgrok / ken / "รับ" OO ท้ายที่สุดก็แย่มากที่ C ++ ที่จริงผมได้สัมภาษณ์นรกของจำนวนมาก (15+) ยาวเวลาเฟิร์มและนักพัฒนาโปรแกรมควบคุมอุปกรณ์ที่จริงๆคิดว่าพวกเขารู้ว่า C ++ แต่ที่ในที่สุดมี / ตำราพื้นฐานชะมัดการทำความเข้าใจของ C ++ มีจริงไม่มีการทำความเข้าใจหรือ ประสบการณ์ใน OOP - เพราะพวกเขาไม่เคยทำ OOP จริง ๆ ... พวกเขาเขียนคลาส multi-purpose เดียวกับสมาชิกแบบคงที่และฟังก์ชันแบบสแตติกที่มีคลาสแบบ non-static / non-singleton จำนวนหนึ่งที่ถูกใช้เป็น structs

และ FP ก็มีแนวคิดคล้าย ๆ กัน (สำหรับคนที่ไม่ได้อยู่ในกรอบความคิด) และสิ่งอื่น ๆ ที่สอดคล้องกับมันและ (แม้ว่าฉันได้พบการผสมผสานเทคนิคหลายอย่างที่เหมาะสำหรับฉัน) ฉันเข้าใจมากขึ้นและ มากขึ้นเมื่อเวลาผ่านไปความคิดของฉันถูก จำกัด ก่อนที่จะได้รับความสามารถในการทำงานจริงลงในชุดเครื่องมือ ในอดีตที่ผ่านมาฉันสามารถนำสิ่งต่าง ๆ ไปใช้ในทางที่สร้างสรรค์มากขึ้นซึ่งบางทีโปรแกรมเมอร์ OO ส่วนใหญ่ แต่เมื่อฉันใช้แนวคิดที่ว่าวิธีการคิดของฉันมีมาก่อน ... มีปัญหามากมายที่สามารถแก้ไขได้ ในไม่กี่บรรทัดที่เคยชินกับการทำมากมายใน C ++ / C #

ทันใดนั้นคุณก็พบว่าตัวเอง ...

ในโพสต์ "ยาวเกินไป"

คุณอยู่ในเขาวงกตแห่งความคดเคี้ยว "ไม่ได้อ่าน" เหมือนกันทั้งหมด

คุณจะเห็นการประชุมทางไกลในอนาคตอันใกล้กำลังจะมาถึงอย่างรวดเร็ว
> สั้น
Uhhuh แน่ใจ โอเคเราจะพูดว่าโหมด "terse" คือ "เปิด"

คุณจะเห็นการประชุมทางไกลในอนาคตอันใกล้กำลังจะมาถึงอย่างรวดเร็ว
> สิ่งที่ควรจะหมายถึงอะไร
เพียงแค่พูดใน เช้านี้คุณไม่ต้องทำอะไรเหรอ?

คุณจะเห็นการประชุมทางไกลในอนาคตอันใกล้กำลังจะมาถึงอย่างรวดเร็ว 
> เฮ้นั่นมันน่ากลัวจริง ๆ ใช่ไหม
อะไร!? WHERE ?! [วิ่งออกไปกรีดร้อง]

> ขออภัยฉันไม่เข้าใจว่ามีอะไรที่ไหนที่ใช้ถ้อยคำใหม่?
[วิ่งต่อไปและส่งเสียงกรีดร้องไม่พูดเสียดสี]

ดังนั้น ... ฉันควรเรียนรู้อะไรที่รัก PSE สุดที่รัก PSE?

ฉันเริ่มด้วยตัวเองใน C # กับ LINQ มันอนุญาตให้ฉันแนะนำแนวคิดบางอย่างในเวลาเดียวกันและในขณะที่ฉันอ่านเกี่ยวกับ FP และแนวคิดของมันตลอดเวลาและ LINQ เพิ่มเติมและความสัมพันธ์ระหว่างทั้งสองมันทำให้ฉันมีหนทางข้างหน้าในขณะที่ยังทำงานสร้างสรรค์ ฉันเพิ่มบางสิ่งในเวลาการสืบค้นข้อมูลอย่างรวดเร็วกลายเป็นเครื่องมือที่มีประโยชน์สำหรับฉันโดยไม่ต้องเข้าใจอะไรเลย

ตอนนี้เมื่อมองย้อนกลับไปฉันหวังว่าฉันจะสามารถทำโครงการต่อไปของฉัน (จัดการเรื่องหนึ่งปีต่อมา) ก่อน; ฉันมีความคุ้นเคยในระดับปานกลางกับ F # (ซึ่งบังเอิญให้ฉันเริ่มต้นที่ดีในการเรียนรู้ML (metalanguage)และเป็นอนุพันธ์อื่น ๆ (เช่นOCamlเช่นกัน)

โดยทั่วไปฉันคิดว่าคำตอบที่ดีสำหรับ 'อะไร' ขึ้นอยู่กับการหาคู่ที่ดีของปัญหาการเขียนโปรแกรมบางอย่างที่คุณสนใจ แต่แน่นอนมันต้องจับคู่กับ FP เล็กน้อยที่คุณต้องการเรียนรู้ ... (และคุณสามารถล้าง / ทำซ้ำ / ฟองหลังจากเคาะบางสิ่งบางอย่างออกจากรายการ ... ) และแน่นอนคุณมักจะเรียนรู้เล็กน้อยมากกว่าสิ่งสำคัญที่คุณกำหนดไว้ให้ทำ ในตอนแรกฉันทำตามขั้นตอนทารก แต่แล้วฉันก็ลงเอยทำสิ่งที่ใหญ่กว่าและปล่อยให้สิ่งเล็ก ๆ เข้ามาในขณะที่ฉันทำสิ่งนั้น

ครั้งแรกสิ่งที่ลอยเรือของคุณ? โดยเฉพาะอย่างยิ่งในตอนแรกมันเป็นการดีที่สุดที่จะมีสิ่งที่สนุกและน่าตื่นเต้น (สำหรับคุณ) และนั่นจะทำให้คุณสนใจพอที่จะทำให้มันคุ้มค่า ดังนั้นฉันจึงมีปัญหาในการทำงานและเทคนิคต่าง ๆ ที่จัดการปัญหาเหล่านั้น ... LINQ และข้อมูลอินไลน์ทำการสอบถามฉันในตอนแรก การเรียกซ้ำเป็นอีกหนึ่งสำหรับฉันรวมถึงการเรียกซ้ำหางฉันขุด GodelEscherBach-ness ของมัน และฉันได้อ่านเกี่ยวกับการเรียกซ้ำหาง รอบคราวนี้สิ่งที่ฉันกำลังทำอยู่ถูกพักไว้และฉันก็จบลงด้วยการมีเวลามากดังนั้นฉันจึงสามารถเก็บมันไว้ได้นาน มันง่ายขึ้นด้วยการขัดจังหวะน้อยลง แต่เนื่องจากฉันเลือกสิ่งที่ฉันคิดว่ามันสนุกมันจึงไม่ใช่เรื่องยากเลยแม้แต่กับการหยุดชะงักของการทำงาน :)

และถึงแม้ว่าฉันจะไม่ได้คิดอะไรมากมาย แต่ฉันก็สามารถบอกคุณเกี่ยวกับโปรแกรมปูได้ด้วยตนเอง แต่ฉันก็สามารถทำได้ดี

และ ... ด้วยสิ่งที่ฉันจะเรียนรู้มันที่รัก PSE ที่รัก PSE ที่รักด้วยอะไร?

สำหรับเรื่องนี้ฉันใช้อัลกอริธึมต่าง ๆ ที่ฉันเพิ่งเกิดขึ้นสนใจรวมถึงสิ่งต่าง ๆ ที่ฉันสงสัยว่าคุณสามารถทำได้ใน F # และเมื่อฉันหมดความคิดฉันจะจัดการกับสิ่งต่าง ๆ เช่นเบียร์ 99 ขวดและProject Euler ปัญหา ...

ฉันแน่ใจว่าคุณสามารถพบสิ่งต่าง ๆ มากมายที่คุณสนใจซึ่ง FP เกี่ยวข้อง มันนำเสนอทุกอย่างตั้งแต่การปรับปรุงไปจนถึง OOP ที่ช่วยให้คุณพูดสั้นลงเรื่อย ๆ เพื่อบิดวิธีที่คุณคิดก่อนหน้านี้ให้กลายเป็นรูปร่างที่คุณจำไม่ได้และมีแนวโน้มที่จะไม่มีแบบจำลองทางจิต ก่อน.

แต่ ... มีรูอยู่ในแบบจำลองของฉันที่รัก PSE หนึ่งรู ...

และนี่คือเหตุผลว่าทำไมจึงเป็นสิ่งสำคัญที่โดยเฉพาะอย่างยิ่งในตอนเริ่มต้น แต่จริงๆแล้วการเรียนรู้ตลอดเวลาของคุณ (และมันไม่เป็นความจริงเสมอเมื่อคุณเรียนรู้อะไรบางอย่าง) อย่างน้อยคุณจะใช้เวลาสักครู่ระหว่างปัญหา ยัง FP และเวลาในการอ่านซอร์สโค้ดที่เขียนโดยผู้เชี่ยวชาญโดยเฉพาะอย่างยิ่งการแก้ปัญหาเดียวกันหรือคล้ายกัน; เช่นเดียวกับคำอธิบายของสิ่งต่าง ๆ ...

และในขณะที่คุณต้องฝึกสมองให้เข้าใจทั้งหมดไม่ใช่จากมุมมองเก่า ๆ แต่จากภายใน FP ตัวเอง ... ในบางจุดสำหรับฉันมันคลิกและ ... สิ่งที่ฉันสามารถเชื่อมโยงได้ดีที่สุด จะกลายเป็นภาษาดัตช์มากขึ้นหรือน้อยลง -; ในบางจุดฉันพยายามทำให้ตัวเองมีความคิด (ฉันทำผ่านการแช่ซึ่งโดยทั่วไปแล้วฉันได้อธิบายไว้ที่นี่; การดื่มด่ำกับตัวเองใน FP แทนที่จะพยายามเรียนรู้ผ่าน "book larnin" "...

และในที่สุดฉันก็ทำ; ฉันจัดการเพื่อทำให้ทุกอย่างเข้าที่และบิดสมองของฉันไปเรื่อย ๆ จนเริ่มโผล่ขึ้นมา FP / LINQ โดยที่ฉันไม่ต้องใช้ความพยายามในการแปลมันกลับไปเป็น OOP (ใช่ฉันทำอย่างนั้นฉันต้องมีอะไรบางอย่างเพื่อแขวนกระโปรงของฉันหมวกอะไรก็ได้)

ความคิดสุดท้าย...

ฉันดูเหมือนว่าคุณจะสูญเสียความสามารถในการคิดลายเซ็นที่ฉลาดของคุณ
ชื่อส่วน ช่างเป็นความอัปยศ

การประชุมทางไกลกำลังใกล้เข้ามาอย่างรวดเร็ว ตอนนี้ดูเหมือนจะใหญ่ขึ้นมาก
> ใช่แล้วก็ดี .. สั้นและทั้งหมด ฉันเห็นคุณจัดการเพื่อสูญเสีย grue ที่
 ปิดการโทรที่ ... เอาละใช่ฉันเป็น ter ... โอ้ไม่กลับมาแล้ว!
AAAAAAAHHHHHH !! [วิ่งออกไปกรีดร้องอีกครั้ง]

การประชุมทางไกลกำลังใกล้เข้ามาอย่างรวดเร็ว
มันคล้ายกับ Sir Lancyjohn Cleezewiz
มันเกือบจะเป็นคุณ
> เฮ้รีบกลับมาแล้ว! ฉันมีการทดลองที่จะลองกับคุณ! (และ po-ta-to)

คุณสามารถค้นหาข้อมูลมากมายเกี่ยวกับ FP ได้ตามปกติ สิ่งสำคัญคือการเข้าใจแนวคิดพื้นฐานแล้วเรียนรู้ที่จะใช้พวกเขา ตัวอย่างเช่นเรียนรู้เกี่ยวกับความไม่สามารถเปลี่ยนแปลงได้และทำไมมันมีความสำคัญ / มีประโยชน์สำหรับ FP ฉันขอแนะนำให้เรียนรู้ทฤษฎีเล็ก ๆ น้อย ๆ เพื่อให้สอดคล้องกับทุกสิ่งเช่นวิธีที่ FP บริสุทธิ์สามารถตอบสนองต่อการพิสูจน์อย่างเป็นทางการได้มากขึ้น นี่คือแรงผลักดันที่อยู่เบื้องหลังต้นกำเนิดของ F # ML แน่นอนว่า YMMV คุณอาจเป็นคนที่เบื่อหน่ายในกรณีนี้ตัวอย่างมากมายการลองผิดลองถูกมากมายเพื่อดูว่าทำไมเทคนิคที่ใช้เป็นสิ่งที่พวกเขาจะช่วยให้คุณมี 'Aha!' หลอดไฟ

ดังนั้นฉันจะทิ้งมันไว้ตอนนี้ หวังว่านี้เป็นประโยชน์กับใครบางคน ฉันต้องการเรียนรู้สิ่งต่าง ๆ เพิ่มขึ้นเล็กน้อย แต่ฉันก็เสียเวลาไปชั่วขณะ ฉันหวังว่าจะหาเวลาที่จะกลับไปที่เร็ว ๆ นี้แม้ว่ามันจะเป็นสัปดาห์ที่ยาวนานสำหรับฉันดังนั้นอาจจะเป็นอย่างน้อยในช่วงสุดสัปดาห์

<3 "ขอแนะนำ GRUEBOL Stopgap จนกระทั่ง SnozzML เสร็จแล้วมันควรจะเร็ว ๆ นี้ฉันมีคณะกรรมการขนาดใหญ่ช่วยฉันในครั้งนี้" - Grace Hopperwit Egghead, คำพูดสุดท้าย , XX97 GUE <3


"ที่รักดังนั้น" คืออะไร?
ริ้น

เป็นที่รักล้นสแต็ค; ควรตรงกับจังหวะของเพลง 'There A Hole in Bucket' xD
shelleybutterfly

เมื่อโพสต์ภายนอกดังนั้นสิ่งนี้ดูเหมือนจะทำให้คะแนนของคุณเข้าใจยากขึ้น - พิจารณาแก้ไขไอดีสำหรับบัญชีนั้น
gnat

derp! ใช่แล้วเสร็จแล้ว tyvm :)
shelleybutterfly

หากใครมีคำแนะนำสำหรับวิธีการปรับปรุงคำตอบของฉันฉันจะขอบคุณมัน .. มันเป็นเรื่องตลกหรือไม่? หรือคำแนะนำที่ไม่ดี? มันขึ้นอยู่กับประสบการณ์ของฉันดังนั้นฉันยินดีที่จะเปลี่ยนแปลงหากฉันสามารถทำให้มีประโยชน์มากขึ้น ขอบคุณ;)
shelleybutterfly
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.