ข้อผิดพลาดในโลกแห่งความเป็นจริงในการแนะนำ F # เข้ากับ codebase ขนาดใหญ่และทีมวิศวกร [ปิด]


37

ฉันเป็น CTO ของ บริษัท ซอฟต์แวร์ที่มี codebase ขนาดใหญ่ (ทั้งหมด C #) และทีมวิศวกรขนาดใหญ่ ฉันสามารถดูได้ว่าส่วนต่าง ๆ ของรหัสจะง่ายกว่าในการเขียนใน F # ทำให้เกิดเวลาในการพัฒนาที่เร็วขึ้นข้อผิดพลาดที่น้อยลงการใช้งานแบบขนานที่ง่ายขึ้น ฯลฯ โดยทั่วไปแล้วการเพิ่มผลิตผลโดยรวมสำหรับทีมของฉัน อย่างไรก็ตามฉันยังสามารถเห็นข้อผิดพลาดในการทำงานหลายประการของการแนะนำ F # ได้แก่ :

1) ทุกคนต้องเรียนรู้ F # และมันไม่สำคัญเหมือนการเปลี่ยนจากพูด Java เป็น C # สมาชิกในทีมที่ไม่ได้เรียนรู้ F # จะไม่สามารถทำงานในส่วน F # ของ codebase

2) กลุ่มของโปรแกรมเมอร์ F # ที่จ้างได้ ณ ขณะนี้ (ธ.ค. 2010) ไม่มีอยู่จริง ค้นหาฐานข้อมูลวิศวกรซอฟต์แวร์ที่ดำเนินการต่อเพื่อหา "F #" วิธีที่มีน้อยกว่า 1% ของการสมัครงานมีคำหลัก

3) การสนับสนุนชุมชน ณ ขณะนี้ (ธ.ค. 2010) มีน้อยกว่านี้ คุณสามารถ google เกือบทุกปัญหาใน C # และค้นหาคนที่จัดการกับมันแล้วไม่ใช่กับ F # การสนับสนุนเครื่องมือของบุคคลที่สาม (NUnit, Resharper ฯลฯ ) ก็เป็นแบบร่างเช่นกัน

ฉันรู้ว่านี่เป็นเรื่องเล็กน้อยที่ Catch-22 คือถ้าคนอย่างฉันไม่ได้ใช้ F # จากนั้นชุมชนและเครื่องมือจะไม่เป็นจริงเป็นต้น แต่ฉันมี บริษัท ที่ต้องทำงานและฉันสามารถทันสมัยได้ ไม่ตกเลือด

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


7
"กลุ่มของโปรแกรมเมอร์ F # ที่จ้างได้ [... ] ไม่มีอยู่จริง" - เกือบไม่มีอยู่จริง อย่างไรก็ตามหากคุณพบโปรแกรมเมอร์ที่มีหรือเต็มใจที่จะเชี่ยวชาญใน F # พวกเขามีแนวโน้มที่จะค่อนข้างพิเศษ
ทิมโรบินสัน

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

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

คำตอบ:


28

ค้นหาเรซูเม่สำหรับภาษาอื่น ๆ เช่น Scheme, Lisp หรือ Haskell ผู้คนจำนวนมากเรียนรู้สิ่งเหล่านี้ในโรงเรียนและนำพวกเขาไปทำงานต่อ ฉันแน่ใจว่าพวกเขาหลายคนไม่สนใจที่จะเรียนรู้ F # ฉันมี Scheme ในประวัติย่อของฉันแม้ว่าฉันจะไม่เคยใช้มันหลังเลิกเรียนและงานที่เกี่ยวข้องกับ F # ก็อาจได้รับความสนใจเช่นกัน


13

ข้อผิดพลาดอื่น ๆ ที่ฉันไม่ได้พิจารณา?

ในทางปฏิบัติข้อผิดพลาดหลักที่ฉันเห็นคนทำคือพยายามบังคับให้ใช้ F # สำหรับปัญหาที่เป็นเครื่องมือที่ผิดสำหรับงาน

หรือใครสนใจที่จะโต้แย้งข้อผิดพลาดที่ฉันได้กล่าวถึง?

เห็นได้ชัดว่าพวกเขาเป็นข้อกังวลที่ถูกต้องในระดับหนึ่ง แต่ฉันจะถามถึงระดับใด

ตัวอย่างเช่นคุณบอกว่าทุกคนจะต้องเรียนรู้ F # เพื่อทำงานกับรหัส F # แม้ว่าจะเป็นจริง แต่นี่ไม่ใช่เรื่องใหญ่ในทางปฏิบัติ การเรียนรู้ F # ไม่สำคัญไปกว่าการเรียนรู้ WPF, Silverlight หรือ TPL ฉันกำลังสอนนักพัฒนาประมาณ 30 คนวิธีใช้ F # สำหรับลูกค้าในลอนดอนในขณะนี้และประมาณโหลกำลังทำงานเต็มเวลาในรหัส F # หลังจากเพียงไม่กี่สัปดาห์และพวกเขาเพิ่งส่งผลิตภัณฑ์แรกของพวกเขา (ตรงเวลาและในงบประมาณ! ) เขียนเกือบทั้งหมดใน F # หลังจากนั้นเพียงไม่กี่เดือน ในความเป็นจริงพวกเขามีปัญหาทางเทคนิคกับ Silverlight มากกว่า F # และพวกเขาพบว่าการสนับสนุนด้านเทคนิคสำหรับ Silverlight นั้นแย่กว่า F # มาก

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

ข้อกังวลประการที่สามและครั้งสุดท้ายของคุณเกี่ยวกับการสนับสนุนจากชุมชนน้อยลง Googling สำหรับโซลูชัน C # เทียบกับการสนับสนุนเครื่องมือของ F และบุคคลที่สาม อีกครั้งฉันไม่พบสิ่งเหล่านี้เป็นปัญหาในทางปฏิบัติ ฉันส่งอีเมล fsbugs พร้อมความคิดเห็นเกี่ยวกับหน่วยวัดใน F # และได้รับการตอบกลับภายใน 24 ชั่วโมงจากนักวิจัยผู้คิดค้นขึ้นมาพร้อมคำอธิบายโดยละเอียดว่าทำไมการตีความของฉันจึงผิดและมันทำงานอย่างไร ฉันไม่เคยได้รับจาก Anders Hejlsberg ;-) ฉันหาวิธีแก้ปัญหา Google อยู่ตลอดเวลาและพบพวกมันที่เขียนด้วยภาษา C #, VB หรือแม้แต่ IronPython แต่ใน 3 ปีที่ใช้ F # อุตสาหกรรมสามารถเรียกคืนได้เพียงตัวอย่างเดียวเท่านั้นที่การแปลโซลูชันเป็น F # นั้นไม่สำคัญ ในความเป็นจริงฉันเพิ่งแปลง dataizerizer ตัวอย่าง C # จาก MSDN เป็น F # และสั้นลง 5 เท่า สุดท้ายคุณพูดถึงการสนับสนุน F # ในเครื่องมือเช่น NUnit เมื่อเรา ' เคยใช้ NUnit จาก F # โดยไม่มีปัญหามาระยะหนึ่งแล้ว นี่คือเครื่องมือ. NET ไม่ใช่เครื่องมือ C #

กรณีศึกษา : ลูกค้าปัจจุบันของฉันไม่เพียง แต่ใช้ NUnit สำหรับการทดสอบหน่วย แต่พวกเขาสร้างTickSpecใน F # ด้านบนของ NUnit เพื่อเป็นทางเลือกที่เหนือกว่าทางเทคนิคของ SpecFlow สำหรับ BDD ผู้เขียนได้ชี้ให้ฉันเห็นว่า TickSpec เป็นขนาดเล็ก ๆ ของ SpecFlow และมีคุณสมบัติเพิ่มเติม นอกจากนี้นักพัฒนาหลายคนที่ทำงานที่ไม่มีประสบการณ์ F # มาก่อน (และฉันเชื่อว่าไม่มีประสบการณ์การเขียนโปรแกรมฟังก์ชั่นก่อนหน้า) ได้หยิบมันขึ้นมาและเริ่มใช้ในโครงการที่ไม่เกี่ยวข้องโดยไม่มีปัญหาอย่างแน่นอนเพราะ F # + TickSpec ปัญหาที่เกิดขึ้น

FWIW ฉันให้การสมัครสมาชิกเว็บไซต์ฟรีแก่F # .NET Journalของเราซึ่งลงเอยได้ดีกับ devs ที่เรียนรู้จำนวนมาก F #

HTH!


3
การยืนยันอย่างถ่องแท้: ภาษาที่คุณสามารถเรียนรู้ได้อย่างรวดเร็วนั้นไม่คุ้มกับการเพิ่มส่วนประสมการพัฒนาธุรกิจ จุดใน F # คือการเขียนรหัสการทำงานและคนส่วนใหญ่จะไม่ได้เรียนรู้การเขียนโปรแกรมการทำงานที่รวดเร็ว
David Thornley

8
ตัวอย่างตัวนับ flat-out: LINQ การเขียนโค้ดฟังก์ชันไม่ใช่จุดของ F # โดยนิยามของ "functional" อย่างใดอย่างหนึ่ง ในบริบทของ C # devs ที่มีอยู่พวกเขาควรจะอยู่ที่นั่นครึ่งทางSystem.Funcแล้ว
Jon Harrop

1
ถ้า F # ไม่ได้เกี่ยวกับการเขียนโปรแกรมการทำงานเป็นหลักแล้วมันเกี่ยวกับอะไรจริงๆ? คุณจะรู้ได้อย่างไรเมื่อ F # เหมาะสมกว่าพูด C #
Robert Harvey

5
@Robert: F # นำเสนอคุณสมบัติที่หลากหลายที่สามารถทำให้มีประสิทธิภาพมากกว่า C # ประเภทและการจับคู่รูปแบบแตกต่างกันมีประสิทธิภาพอย่างมากสำหรับการสร้างและจัดการต้นไม้ซึ่งปรากฏในทุกอย่างตั้งแต่คอมไพเลอร์ไปจนถึงคอมพิวเตอร์กราฟิก การอนุมานประเภททำให้ง่ายต่อการเขียนโค้ดทั่วไปอย่างหนักซึ่งเหมาะสำหรับอัลกอริทึมหนาแน่น เซสชันแบบโต้ตอบเหมาะสำหรับโค้ดที่ใช้แล้วทิ้งเช่นชุดข้อมูลการนวดจากรูปแบบหนึ่งไปอีกรูปแบบหนึ่งหรือแม้กระทั่งทำการวิเคราะห์ที่ซับซ้อน คุณสมบัติเหล่านี้เกี่ยวข้องกับการเขียนโปรแกรมการทำงานเท่านั้นและทั้งหมดทำงานได้ดีในรหัสที่จำเป็น
Jon Harrop

8

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

หากคุณมีวิศวกรของคุณทำงานกับแอพพลิเคชั่น 3 ชั้นแบบดั้งเดิมคุณอาจไม่ยืนยันว่าพวกเขาจำเป็นต้องมีความรู้เชิงลึกเกี่ยวกับ SQL, HTML, Javascript, CSS และอื่น ๆ โดยปกติคุณจะมีผู้เชี่ยวชาญบางคนทำงานอยู่ ในส่วนต่าง ๆ ของแอปพลิเคชัน ดังนั้นฉันไม่คิดว่าการเพิ่มภาษาใหม่สำหรับส่วนหนึ่งของใบสมัครของคุณควรใหญ่เกินไปสำหรับอุปสรรค์ นอกจากนี้คุณสามารถใช้มาตรฐานการเข้ารหัสและแนวปฏิบัติอื่น ๆ เพื่อพยายามทำให้แน่ใจว่ารหัส F # ของคุณสามารถอ่านได้แม้โดยวิศวกรที่ไม่มีพื้นหลัง F # ที่ลึก


1
@kvb ความคิดเห็นของฉันค่อนข้างปิดหัวข้อ แต่เพียงต้องการแบ่งปันในขณะที่โดยปกติแล้วในทางปฏิบัติหลาย บริษัท ไม่มีตำแหน่งพิเศษตามที่คุณอธิบายและต้องการเช่นเดียวกับในตัวอย่างของคุณผู้พัฒนารายเดียวมีความเข้าใจลึกซึ้ง มีความรู้เกี่ยวกับ SQL, HTML, Javascript, CSS และอื่น ๆ ที่เพียงพอและอาจมีการวิเคราะห์ทางธุรกิจเช่นกัน ฉันทำงานเป็นการส่วนตัวภายใต้ทั้งสองสถานการณ์ ( ไม่ได้พิจารณาจากขนาดของ บริษัท ) และแต่ละข้อมีข้อดีและข้อเสียและอาจเหมาะสมมากกว่าหรือน้อยกว่าสำหรับแต่ละโครงการ แต่ความเชี่ยวชาญเป็นสิ่งที่หรูหรา
Stephen Swensen

7

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

หลุมพรางเดียวที่ฉันมีประสบการณ์ส่วนตัวคือ:

  1. ความยากลำบากเมื่อทำการดีบั๊ก การติดตามการไหลของการดำเนินการของโปรแกรมตามนิพจน์ในดีบักเกอร์ที่ออกแบบมาสำหรับภาษาที่ใช้คำสั่งอาจเป็นเรื่องยุ่งยาก

  2. ทำลาย intellisense การเติมข้อความอัตโนมัติหยุดทำงานอย่างถูกต้องเมื่อคุณต้องการ Microsoft จะต้องทำงานในการทำให้ parser พื้นหลังมีความทนทานต่อความผิดพลาดมากขึ้น

  3. ไวยากรณ์ที่มีความสำคัญต่อการเยื้องทำให้การคัดลอกหรือวางโค้ดฟอร์แมตทำได้ยาก

  4. ขาดการปรับโครงสร้างใหม่

  5. ส่วนขยาย VS ที่สะดวกสบายที่มีอยู่บางส่วนสำหรับ F # (การพับโค้ด, การระบายสีลึก) นั้นช้าไปหน่อยทำให้ประสบการณ์การพิมพ์น่าผิดหวังเล็กน้อย

ในความคิดของฉันไม่มีปัญหาใด ๆ เหล่านี้เป็น stoppers โชว์และฉันสามารถอยู่กับพวกเขาได้ในขณะนี้ เครื่องมือสามารถปรับปรุงและแก้ไขได้ง่ายกว่าภาษา

ความกลัวของคุณที่การว่าจ้างโปรแกรมเมอร์ใหม่ที่มีความสามารถในการเขียนใน F # นั้นเป็นเรื่องยากเป็นเรื่องธรรมดา แต่ในความคิดของฉันนั้นไม่ยุติธรรม หากคุณต้องเขียนแนวทางการเข้ารหัสคุณจะแนะนำหรือห้ามคุณสมบัติต่อไปนี้ใน C # yield return:, LINQ ไปยังวัตถุ, lambdas, กำลังจะมาถึงasync?

หากคุณเชื่อว่าคุณสมบัติเหล่านี้ช่วยในการเขียนโค้ดได้ดีขึ้นก็ไม่มีเหตุผลใดที่จะละเว้นจาก F # ภาษารองรับคุณสมบัติเหล่านี้ในลักษณะที่ราบรื่นและคิดอย่างดีซึ่ง C # ไม่สามารถทำได้เนื่องจากมรดกของมัน

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


5

ฉันได้ไตร่ตรองสถานการณ์ที่แน่นอนนี้แล้ว

นี่คือสิ่งที่ฉันวางแผนไว้สำหรับทีมของฉัน:

  • ผสม C # กับ F # ซึ่งสามารถทำได้โดยใช้ C # สำหรับส่วนใหญ่ของรหัสฐาน ในกรณีที่ต้องการการประมวลผลข้อมูลจำนวนมากให้เขียนฟังก์ชั่นที่เกี่ยวข้องใน F # และวางไว้ใน dll หรืออ้างอิง ตัวอย่างที่นี่

  • ค่อย ๆ พิจารณาปัจจัยที่มีอยู่ของรหัสฐานในแบบข้างต้น

  • ไม่ใช่รหัสทั้งหมดที่จะสามารถใช้งานได้

  • รับทีมงานของคุณจะเรียนรู้พื้นฐานของ Haskell, เสียงกระเพื่อมในช่วงวันหยุดสุดสัปดาห์

  • ให้พวกเขาเรียนรู้ F # โดยพยายามไขปริศนาของออยเลอร์โปรเจ็กต์ (ซึ่งช่วยฉันได้มากตอนที่ฉันเรียนรู้ F #) อีกครั้งสิ่งนี้ควรเป็นสิ่งที่พูดจบสิ้นสัปดาห์หรือในช่วงเวลาทำงานหากคุณต้องการให้มีวันหยุดสำหรับ "การฝึกอบรม"


15
คุณจะจ่ายนักพัฒนาให้ทำงานในช่วงสุดสัปดาห์นี้หรือไม่? พระเจ้ารู้ว่าฉันใช้เวลาหลายวันหยุดสุดสัปดาห์และตอนเย็นการเรียนรู้ F # แต่เป็นงานอดิเรก ในขณะที่มันเป็นความจริงที่ว่าเมื่อฉันถูกเคาะสำหรับโครงการ Grails ฉันสอนตัวเองกรอบบางส่วนในช่วงนอกเวลา แต่นั่นเป็นเพียงบุคลิกภาพของฉันและฉันสนุกกับมัน แต่ถ้าใครบอกให้ฉันทำในช่วงเวลาที่ฉันหยุด ไม่มีความสุข
Stephen Swensen

+1 แต่: Haskell และ Lisp เป็นที่สนใจของนักวิชาการอย่างแท้จริง ฉันไม่คิดว่ามันจะเพิ่มคุณค่าให้กับโปรแกรมเมอร์. NET เพื่อให้พวกเขาเรียนรู้ภาษาเหล่านั้น ฉันคิดว่า (ในฐานะผู้เขียนหนังสือ F # หลายเล่ม ;-) ว่าการอ่านหนังสือที่ดีจะมีประสิทธิผลมากกว่าการพยายามเขียนรหัส F # (เช่นปริศนาโครงการออยเลอร์ปริศนา) ใน vacuo ด้วยคำแนะนำพวกเขาสามารถเพิ่มความเร็วได้ในหนึ่งเดือน
Jon Harrop

4

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

2) ฉันไม่สามารถโต้เถียงกับเรื่องนี้ คุณจะต้องจ่ายสำหรับช่วงเวลาการเรียนรู้ 6 เดือนของภาษาใหม่ใด ๆ อย่างไรก็ตามเมื่อรู้แล้วว่า. net libraries กำจัดปีพิเศษที่จำเป็นในการเรียนรู้ห้องสมุดใหม่

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

ลิงกอริลลาหนึ่งพันปอนด์ที่นี่คือการจัดการความเสี่ยง "ฉันสามารถเป็นคนที่ทันสมัย ฉันจะยืนยันว่า F # ไม่ได้เลือดไหลออกมาขอบ เปิดตัวพร้อมกับ VS2010 และได้รับการสนับสนุนโดยตรงจาก Microsoft Bleeding edge คือ "เบต้า" และข้อจำกัดความรับผิดชอบจาก Microsoft ที่พูดถึงสิ่งที่ไม่รับผิดชอบต่อสิ่งใด


หากมีคนรู้จักแพลตฟอร์ม C # และ. Net อยู่แล้วการเรียนรู้ F # มักจะมีค่าใช้จ่ายน้อยกว่าหนึ่งเดือน (ตามประสบการณ์จากเพื่อนร่วมงานสองคนของฉัน)

4

ในทางปฏิบัติแล้วการสนับสนุน IntelliSense ค่อนข้างขาด - จนถึงจุดที่การเพิ่มประสิทธิภาพการผลิตของการอนุมานประเภทนั้นน้อยกว่าการเติมข้อความอัตโนมัติที่ซับซ้อนน้อยกว่าที่มีอยู่ใน C #

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

OOP ยังขาดวิธีที่น่าแปลกใจใน F #; ตัวอย่างเช่นไม่มีการสนับสนุนประเภท / คลาสที่ซ้อนกัน คุณต้องระวังเมื่อคุณย้ายรหัสเพราะมีบางสิ่งที่คุณสามารถทำได้ใน C # ที่คุณไม่สามารถทำได้ใน F # เศร้า

สุดท้าย แต่ไม่ท้ายสุดทั้งขนาดและคุณภาพของชุมชน F # นั้นน่าผิดหวัง ข้อมูล F # จำนวนมากที่ปรากฎบนเว็บนั้นมีทั้งแบบเก่าหรือไม่ดีมาก - ไม่ใช้คำว่าประสิทธิภาพต่ำหรือไม่ถูกต้อง จากนั้นมีคนเรียกเก็บเงินจำนวนมากสำหรับจดหมายข่าวซึ่งส่วนใหญ่เป็นเพียงการย่อยข้อมูลที่มีอยู่

ฉันเองใช้ C # สำหรับโครงการทำงานและ F # สำหรับสิ่งของของฉันเอง เท่าที่ฉันรัก F # โชคไม่ดีที่ยากที่จะคาดเดาว่าอะไรจะเกิดขึ้นเมื่อใด


1
หาก£ 39 เป็น "เงินจำนวนมาก" สำหรับการฝึกอบรมนักพัฒนาการเรียนรู้ F # นั้นเป็นสิ่งที่คุณกังวลน้อยที่สุด IMHO
Jon Harrop

เอ่อโอ้ผู้ชายคนนั้นเอง คุณผู้ชายทุกที่ใช่มั้ย ในความเป็นจริงแล้วเงินจำนวนมหาศาล£ 39 สำหรับประเภทของข้อมูลที่ในวันนี้และอายุมักทำในบล็อกหรือเอกสารทางเทคนิค
Rei Miyasaka

2
ข้อมูลที่เกี่ยวข้องทั้งหมดฉันไม่แน่ใจว่าทำไมคนอื่นถึงลงคะแนนโพสต์ของคุณ เท่าที่ฉันชอบ F # คำถามเกี่ยวกับด้านลบและโพสต์ที่ชี้สิ่งเหล่านี้ไม่ควรลงคะแนนโดย F # -lovers
Joh

1

ปัญหาหลักคือการบำรุงรักษาอยู่เสมอ

ฉันชอบที่จะเขียนโค้ดใน Scheme แต่ผู้ดูแลคนต่อไปอาจต้องการตามล่าฉันและทรมานฉัน


เกิดอะไรขึ้นถ้าผู้ดูแลคนต่อไปยังรู้โครงการ ฉันได้อ่าน comp.lang.lisp ว่าเครือข่ายโปรแกรมเมอร์ Lisp เพื่อจุดประสงค์ในการจัดหาทดแทนให้นายจ้างหากจำเป็น
Larry Coleman

0

ฉันจะบอกว่าสิ่งแรกที่คุณต้องทำคือถามสมาชิกในทีมว่าพวกเขารู้สึกอย่างไรเกี่ยวกับการแนะนำ F # หากพวกเขาชอบความคิดทุกอย่างจะราบรื่นกว่าหากพวกเขาไม่ทำ

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