มีโฆษณาชวนเชื่อมากมายรอบ ๆ Haskell อย่างไรก็ตามมันยากที่จะรับข้อมูลเกี่ยวกับวิธีการใช้งานในแอปพลิเคชันในโลกแห่งความเป็นจริง โครงการ / ประเพณีที่ได้รับความนิยมมากที่สุดของ Haskell คืออะไรและทำไมมันถึงเก่งในการแก้ปัญหาเหล่านี้
มีโฆษณาชวนเชื่อมากมายรอบ ๆ Haskell อย่างไรก็ตามมันยากที่จะรับข้อมูลเกี่ยวกับวิธีการใช้งานในแอปพลิเคชันในโลกแห่งความเป็นจริง โครงการ / ประเพณีที่ได้รับความนิยมมากที่สุดของ Haskell คืออะไรและทำไมมันถึงเก่งในการแก้ปัญหาเหล่านี้
คำตอบ:
การใช้งานทั่วไปสำหรับภาษานี้มีอะไรบ้าง
การพัฒนาแอพพลิเคชั่นอย่างรวดเร็ว
หากคุณต้องการรู้ว่า "ทำไมต้อง Haskell" คุณต้องพิจารณาถึงข้อดีของภาษาโปรแกรมที่ใช้งานได้ (มาจากhttps://c2.com/cgi/wiki?AdvantagesOfFunctionalProgramming )
โปรแกรมฟังก์ชั่นมีแนวโน้มที่จะสั้นกว่าโปรแกรม ImperativeLanguage บ่อยครั้งสิ่งนี้นำไปสู่การเพิ่มผลผลิตของโปรแกรมเมอร์
FP กระตุ้นการสร้างต้นแบบอย่างรวดเร็ว ดังนั้นฉันคิดว่ามันเป็นกระบวนทัศน์การออกแบบซอฟต์แวร์ที่ดีที่สุดสำหรับ ExtremeProgrammers ... แต่ฉันรู้อะไรบ้าง
FP เป็นมอดุลาร์ในมิติของการทำงานโดยที่ ObjectOrientedProgramming นั้นเป็นโมดุลในมิติของส่วนประกอบต่าง ๆ
ความสามารถในการมีเค้กของคุณและกินมัน ลองนึกภาพคุณมีข้อความที่ซับซ้อนในการประมวลผลระบบ OO ทุกองค์ประกอบอาจทำการเปลี่ยนแปลงสถานะโดยขึ้นอยู่กับข้อความจากนั้นส่งต่อข้อความไปยังวัตถุบางอย่างที่มีการเชื่อมโยง มันจะไม่เจ๋งเกินกว่าที่จะย้อนกลับทุกการเปลี่ยนแปลงได้อย่างง่ายดายหากวัตถุบางอย่างที่ลึกลงไปในลำดับชั้นการโทรตัดสินใจว่าข้อความมีข้อบกพร่องหรือไม่? วิธีการเกี่ยวกับการมีประวัติของรัฐที่แตกต่างกันอย่างไร
งานทำความสะอาดหลายอย่างที่ทำเพื่อคุณ: การแยกโครงสร้างข้อมูล (PatternMatching), การจัดเก็บการเชื่อมตัวแปร (LexicalScope พร้อมการปิด), การพิมพ์ที่รัดกุม (TypeInference), GarbageCollection, การจัดสรรพื้นที่เก็บข้อมูล, ไม่ว่าจะใช้แบบกล่อง ) การเป็นตัวแทน ...
มัลติเธรดที่ปลอดภัย! โครงสร้างข้อมูลที่ไม่เปลี่ยนรูปไม่อยู่ภายใต้เงื่อนไขการแข่งขันของข้อมูลและดังนั้นจึงไม่จำเป็นต้องได้รับการปกป้องจากการล็อค หากคุณจัดสรรวัตถุใหม่อยู่เสมอแทนที่จะจัดการกับวัตถุที่มีอยู่แบบทำลายล้างการล็อกสามารถซ่อนอยู่ในระบบการจัดสรรและ GarbageCollection
นอกเหนือจาก Haskell นี้มีข้อดีของตัวเองเช่น:
1 / 0
เป็นรายการแรกของรายการและจะยังคงทำงานได้หากคุณใช้รายการที่สองเท่านั้นคุณสามารถตรวจสอบลิงค์ต่อไปนี้:
x = 5;
รับประกันว่าหลังจากที่มันรันมีค่าx
5
operator =
จะเรียกว่า และจะรับประกันว่าจะเกิดอะไรขึ้นหากคุณไม่ได้กำหนดoperator =
ฉันคิดว่าคนในโพสต์นี้หายไปจากจุดที่สำคัญที่สุดสำหรับทุกคนที่ไม่เคยใช้ภาษาโปรแกรมที่ใช้งานได้: ขยายความคิดของคุณ หากคุณยังใหม่กับการเขียนโปรแกรมการใช้งาน Haskell จะทำให้คุณคิดในแบบที่คุณไม่เคยคิดมาก่อน ดังนั้นการเขียนโปรแกรมของคุณในด้านอื่น ๆ และภาษาอื่น ๆ จะดีขึ้น เท่าไหร่ ยากที่จะหาจำนวน
มีหนึ่งคำตอบที่ดีสำหรับสิ่งที่ภาษาวัตถุประสงค์ทั่วไปเช่น Haskell ดีสำหรับ: การเขียนโปรแกรมโดยทั่วไป
สำหรับสิ่งที่ใช้ในทางปฏิบัติฉันมีสามวิธีในการสร้างสิ่งนั้น:
บ่งชี้ว่ามันเป็นสิ่งที่ดีสำหรับกราฟิกระบบเครือข่ายการเขียนโปรแกรมระบบโครงสร้างข้อมูลฐานข้อมูลการพัฒนาการประมวลผลข้อความ ...
และในที่สุดความเห็นของฉันเกี่ยวกับสิ่งที่แข็งแกร่งจริงๆที่:
ฉันหวังว่ามันจะช่วยให้คุณเข้าใจว่าคำถามของคุณกว้างแค่ไหนหากตอบด้วยความเฉพาะเจาะจง
ตัวอย่างหนึ่งของการทำงานของ Haskell คือxmonad "ตัวจัดการหน้าต่างที่มีลูกเล่นในรหัสน้อยกว่า 1200 บรรทัด"
จากHaskell Wiki :
Haskell มีการใช้งานที่หลากหลายในเชิงพาณิชย์ตั้งแต่การบินและอวกาศไปจนถึงการป้องกันทางการเงินไปจนถึง บริษัท ที่เพิ่งเริ่มก่อตั้ง บริษัท ออกแบบฮาร์ดแวร์และผู้ผลิตเครื่องตัดหญ้า หน้านี้รวบรวมทรัพยากรเกี่ยวกับการใช้งานอุตสาหกรรมของ Haskell
ตามที่วิกิพีเดียภาษาHaskellถูกสร้างขึ้นจากความต้องการที่จะรวมภาษาการทำงานที่มีอยู่เป็นภาษาทั่วไปซึ่งสามารถใช้สำหรับการวิจัยในอนาคตในการออกแบบฟังก์ชั่นภาษา
เป็นที่ประจักษ์บนพื้นฐานของข้อมูลที่มีอยู่ว่ามันเกินวัตถุประสงค์ดั้งเดิมและใช้มากกว่าการวิจัย ตอนนี้ถือว่าเป็นภาษาการเขียนโปรแกรมเพื่อการทำงานทั่วไป
หากคุณยังถามตัวเองว่า "ทำไมฉันจึงควรใช้" อ่านคำว่าทำไมจึงควรใช้ ส่วนของ Haskell Wiki Introduction
Haskell เป็นภาษาโปรแกรมทั่วไป มันสามารถใช้สำหรับสิ่งที่คุณใช้ภาษาอื่นที่จะทำ คุณไม่ได้ถูก จำกัด ด้วยอะไรนอกจากจินตนาการของคุณเอง มันเหมาะกับอะไร? ทุกอย่างสวยมาก มีงานไม่กี่งานที่ภาษาทำงานไม่เก่ง
และใช่ฉันคือ Rayne จาก Dreamincode :)
ฉันอยากจะพูดถึงว่าในกรณีที่คุณไม่ได้อ่านหน้าวิกิพีเดียการเขียนโปรแกรมการทำงานเป็นกระบวนทัศน์เช่นการเขียนโปรแกรมเชิงวัตถุเป็นกระบวนทัศน์ ในกรณีที่คุณไม่รู้ Haskell ยังสามารถใช้งานได้ในแง่ที่ใช้งานได้ มันทำงานได้ค่อนข้างดีที่
เพียงเพราะภาษาไม่ใช่ภาษา Object Oriented ไม่ได้หมายความว่าภาษาจะถูก จำกัด โดยอะไร Haskell เป็นภาษาการเขียนโปรแกรมที่ใช้งานทั่วไปและเป็นวัตถุประสงค์ทั่วไปเช่นเดียวกับ Java
ฉันมีเท่ห์หนึ่ง Facebook สร้างเครื่องมืออัตโนมัติสำหรับการเขียนโค้ด PHP ใหม่ พวกเขาแยกแหล่งที่มาเป็นต้นไม้ไวยากรณ์นามธรรมทำการเปลี่ยนแปลงบางอย่าง:
if ($f == false) -> if (false == $f)
ฉันไม่รู้ว่าทำไม แต่ดูเหมือนว่าจะเป็นสไตล์เฉพาะของพวกเขาแล้วพวกเขาก็พิมพ์สวย
https://github.com/facebook/lex-pass
เราใช้ Haskell เพื่อสร้างภาษาเฉพาะโดเมนขนาดเล็ก การประมวลผลข้อมูลจำนวนมาก การพัฒนาเว็บ เว็บสไปเดอร์ โปรแกรมทดสอบ การเขียนสคริปต์การบริหารระบบ สคริปต์เบื้องหลังซึ่งสื่อสารกับบุคคลอื่น สคริปต์การตรวจสอบ (เรามี DSL ที่ใช้งานร่วมกันได้ดีกับ munin ทำให้ง่ายต่อการเขียนรหัสตรวจสอบที่ถูกต้องสำหรับแอปพลิเคชันของคุณ)
ของจริงทุกอย่าง มันเป็นเพียงภาษาวัตถุประสงค์ทั่วไปในชีวิตประจำวันด้วยคุณสมบัติที่ทรงพลังและมีประโยชน์บางอย่างหากคุณมีความโน้มเอียงทางคณิตศาสตร์
false
ทางด้านซ้าย แต่ฉันไม่เห็นจุดที่ใช้เครื่องมือในการทำโดยอัตโนมัติ: หากคุณมี==
ผู้ให้บริการอยู่แล้วคุณก็รู้อยู่แล้วว่าคุณไม่มีข้อผิดพลาดซึ่งเป็นส่วนหนึ่งของ lex-pass มีไว้เพื่อจับและถ้าคุณมี=
แทนไม่มีวิธีที่แน่นอนที่จะบอกหรือไม่ว่ามันเป็นเช่นนั้นโดยเจตนา
จากHaskell :
Haskell เป็นภาษาการเขียนโปรแกรมที่ใช้งานได้มาตรฐานมีวัตถุประสงค์ทั่วไปโดยมีความหมายที่ไม่เข้มงวดและการพิมพ์แบบคงที่ มันตั้งชื่อตามนักตรรกวิทยา Haskell แกง
โดยทั่วไป Haskell สามารถใช้เพื่อสร้างอะไรก็ได้ที่คุณมักจะสร้างโดยใช้ภาษาที่ใช้งานทั่วไปอื่น ๆ (เช่น C #, Java, C, C ++ เป็นต้น)
ตัวอย่างเช่นสำหรับการพัฒนาเว็บแอปพลิเคชัน HTML5 แบบเรียลไทม์ ดูElmคอมไพเลอร์ซึ่งมีการใช้งานใน Haskell และไวยากรณ์ที่ยืมมาจาก Haskell มาก
นี่เป็นแหล่งข้อมูลที่ดีเกี่ยวกับ Haskell และการใช้งาน: