การเลือกภาษาโปรแกรมที่ใช้งานได้ [ปิด]


48

ฉันได้อ่านหลายหัวข้อเกี่ยวกับภาษาการเขียนโปรแกรมการทำงานเมื่อเร็ว ๆ นี้ (เกือบในปีที่ผ่านมาในความเป็นจริง) ฉันต้องการเลือกและเรียนรู้อย่างละเอียดถี่ถ้วน

ภาคการศึกษาสุดท้าย [หลักสูตร] ฉันได้รับการแนะนำให้รู้จักกับโครงการ ฉันชอบมัน. ชอบความเรียบง่ายที่สุดของไวยากรณ์หลักการhomoiconicityมาโคร ( ถูกสุขลักษณะและไม่ถูกสุขลักษณะ) n-arity ของขั้นตอน ฯลฯ

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

ความคิดบางอย่างเกี่ยวกับภาษาการทำงานอื่น ๆ ที่ฉันได้พิจารณา:

  • Clojure: มันฟังดูยอดเยี่ยมเพราะมันสามารถเข้าถึงโลกของ Java ได้มันมุ่งเน้นไปที่ความสามารถในการขยายและการทำงานพร้อมกัน แต่โลกของ Java ไม่ได้อยู่ตรงนี้หรือ ฉันรู้แล้วว่า Java ค่อนข้างดี แต่ควรเพิ่มพลังงานมากขึ้นหรือไม่ขึ้นอยู่กับ JVM
  • Haskell: ดูเหมือนภาษาที่นิยมมาก แต่จากสิ่งที่ฉันได้อ่านมันเป็นภาษาวิชาการอีกด้วย
  • เสียงกระเพื่อม: มันได้รับรอบตั้งแต่ตลอดกาล ดูเหมือนจะมีสิ่งที่ฉันชอบมากที่สุดจาก Scheme มันมีชุมชนใหญ่ สำหรับสิ่งที่ฉัน [คิดว่าฉัน] น่าจะเป็นภาษาโปรแกรมที่ใช้กันอย่างแพร่หลายในอุตสาหกรรม (?)
  • F #: ไม่ได้พิจารณาจริงๆ ฉันไม่ใช่แฟนตัวยงของ MS ฉันไม่มีเงินที่จะจ่ายเงินค่าซอฟแวร์ของพวกเขา (ฉันสามารถให้พวกเขาเป็นอิสระจากพันธมิตรมหาวิทยาลัย แต่ฉันมีแนวโน้มที่จะไปกับการแก้ปัญหาชุมชนขับเคลื่อน) แม้ว่า ... ฉันคิดว่ามันจะเป็นตัวเลือกที่ดีที่สุดในอาชีพ

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


5
สิ่งที่คุณเลือกเขียนรหัสจำนวนมากที่คุณใช้สำหรับบางสิ่งในนั้น

8
ไม่ได้คิดเรื่องสกาล่าใช่ไหม
ykombinator

@ykombinator: ฉันเคยได้ยินมาแล้ว แต่ฉันยังไม่ได้ค้นหาเพิ่มเติม ฉันไม่รู้ว่ามันจะมีอะไรที่จะนำเสนอเหนือสิ่งที่ฉันระบุไว้หรืออาจจะนำมารวมกันของตัวเลือกที่น่าสนใจจากแต่ละคน ... ไม่รู้ ฟังดูเป็นภาษาที่ค่อนข้างต่ำ แต่ดูเหมือนว่าจะได้รับความนิยม
Joanis

1
ฉันไม่รู้ว่าคุณได้ยินมาว่าโลกของ Java นั้น "ล้ำยุค" - ขณะนี้กำลังอยู่ในยุคฟื้นฟูศิลปวิทยาครั้งใหญ่ขอบคุณมากก) OpenJDK กลายเป็นมาตรฐานการใช้งานข) ภาษา JVM ใหม่เช่น Scala และ Clojure และ c) ความจริงที่ว่าโครงการข้อมูลขนาดใหญ่ / คลาวด์กำลังเพิ่มขึ้นเลือก JVM เป็นแพลตฟอร์มเป้าหมายและ d) Android ตั้งแต่ต้นปี 2012 อาจเป็นแพลตฟอร์มเดียวที่น่าตื่นเต้นที่สุดที่จะอยู่ใน .....
mikera

1
@mikera: เห็นด้วย นี่เป็นเวลาเกินหนึ่งปีหลังจากที่ออราเคิลซื้อกิจการซันไมโครซิสเต็มส์และมีทุกอย่างที่กังวลและคาดเดาเกี่ยวกับอนาคตของ Java ที่ถูกโจมตีโดย บริษัท ที่มีอำนาจควบคุมมากกว่า ... JVM ดูเหมือนจะปลอดภัยในเวลานี้โชคดี!
Joanis

คำตอบ:


35

เนื่องจากคุณต้องการ  ภาษาที่ใช้งานได้จริง :

ข้อความแสดงแทน

ขอให้สังเกตว่า Haskell และ Lisp ใช้งานมากกว่าคนอื่น ๆ ในอุตสาหกรรมแม้ว่าจะมีความสนใจใน Clojure และ F #

แต่ดูสิ่งที่เกิดขึ้นเมื่อเราเพิ่ม Scheme ลงในมิกซ์:

ข้อความแสดงแทน

อืมตอนนี้ดูเหมือนภาษาวิชาการไม่ได้ใช่ไหม?

ที่จริงแล้วกราฟด้านบนอาจเป็นเรื่องโกหก คำว่า "รูปแบบ" สามารถปรากฏในความช่วยเหลือที่ต้องการโฆษณาในบริบทอื่น ๆ นอกเหนือจากภาษาการเขียนโปรแกรม :)

ดังนั้นนี่คือกราฟอื่นที่น่าจะเป็นตัวแทนมากกว่า (เล็กน้อย):

ข้อความแสดงแทน

หากคุณต้องการสำรวจภาษาถิ่นของ Scheme ลองดูที่Racket


ว้าวโพสต์ดี แร็กเก็ตเป็นสิ่งที่ฉันใช้ ... PLT-Scheme เป็นชื่อเมื่อฉันเริ่มเรียนรู้ เส้นสีแดงนั่นในกราฟิกสุดท้ายทำให้ฉันเดือดร้อน ไม่เคยคิดว่าโครงการจะสามารถใช้ประโยชน์ได้มากขนาดนั้น และ Clojure ดูเหมือนว่าจะถูกถอดออก อืม ...
Joanis

วิสัย Joanis: เอากราฟสองแผ่นสุดท้ายพร้อมเม็ดเกลือหนึ่งเม็ด; รูปลักษณ์ของบันไดและความผันผวนของกราฟสุดท้ายชี้ให้เห็นว่ามีจุดข้อมูลไม่มากนักในกราฟแม้ว่ามันจะบ่งบอกว่ามีคนคิดว่าภาษานั้นมีค่าควรแก่การจ่าย
Robert Harvey

@ Robert Harvey สิ่งที่เปลี่ยนไปจากที่สองเป็นกราฟที่สาม?
systemovich

@Geoffrey: ดูคำอธิบายภาพ; ฉันเพิ่มคำว่า "นักพัฒนา" ลงในคำค้นหา
Robert Harvey

โปรดทราบว่า Haskell และ Lisp เป็นคำพ้องความหมายและข้อมูลของจริงไม่ได้พูดถึงส่วนที่เหลือของโลก ITJobsWatch แสดงรายการ 79 งาน Scala, 55 F #, 47 Haskell, 30 Lisp และ 7 Clojure
Jon Harrop

17

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

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


ฉันคิดว่าคุณถูกต้องเกี่ยวกับการเลือกภาษาที่ใช้งานได้บริสุทธิ์ก่อน ฉันสนใจที่จะเห็นการเรียงลำดับของภาษาที่ใช้งานได้อย่างบริสุทธิ์
Joanis

วิสัย Joanis: จากภาษาที่แสดงในคำถามของคุณฉันจะบอกว่า Haskell นั้นบริสุทธิ์ที่สุดแล้วตามด้วย Clojure, F # และ Lisp
Larry Coleman

15

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

แต่ถ้าคุณสามารถ "รับ" โครงการได้ดีพอที่จะเขียนแม้กระทั่งแอปพลิเคชันเว็บโดยเฉลี่ยนั่นจะเป็นจุดขายที่ดีใน บริษัท ซอฟต์แวร์ที่ร้ายแรงที่สุด

หากคุณสัมภาษณ์ที่ร้าน "ร้องไห้สะอึกสะอื้น" และนักพัฒนาคิดว่าคุณแปลกเพราะความสามารถของคุณที่ Scheme หรือ Haskell หรือ F # คุณอาจไม่ต้องการทำงานที่นั่น ในกรณีส่วนใหญ่นักพัฒนาที่มีความเชี่ยวชาญจะได้รับตัวเลือกของกิ๊กดังนั้นอย่าเหงื่อออก "การปฏิบัติจริง" นอกเสียจากว่าตัวเลือกเดียวที่คุณสามารถจินตนาการได้ในอนาคตคือองค์กร ทำงานด้วยความสามารถมีความยืดหยุ่นและหมดปัญหา

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

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

ฉันได้เขียนบางส่วนใน Scheme, F #, Emacs Lisp และ Common Lisp และอ่าน Haskell เป็นเวลาอย่างน้อยอย่างน้อยก็เป็นครั้งคราวในช่วงไม่กี่ปีที่ผ่านมา ฉันไม่สามารถพูดได้ว่าฉันเป็นผู้เชี่ยวชาญในเรื่องใดเรื่องหนึ่ง แต่การทัศนศึกษาในภาษาเหล่านั้นทำให้ฉันได้รับประโยชน์ในภาษาอื่น ๆ ทั้งหมดที่ฉันทำงานด้วยความเป็นมืออาชีพ (C #, Java, Ruby และบางครั้ง Boo, Perl และ Python) ความอยากรู้อยากเห็นจะสร้างอาชีพที่ยืนยาวและยั่งยืนให้คุณมากกว่าสิ่งอื่นใด


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

10

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

ฉันทำโครงการในวิทยาลัย อาจฟังดูไม่สำคัญ แต่ความจริงทั้งหมดเป็นสิ่งที่ทำให้เสียสมาธิ / น่ารำคาญ ยากที่จะย้อนกลับไปที่หลังจากใช้ภาษาเช่น Python

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

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=effc5bc4-c3df-4172-ad1c-bc62935861c5&displaylang=en


ความจริงที่ว่า F # และ Clojure นั้นไม่ได้มีบทบาทสำคัญในความโปรดปรานของพวกเขา บางที F # อาจจะเป็นจุดเริ่มต้นของฉันในครอบครัวสุทธิสักวันหนึ่ง ...
Joanis

1
@Moanis คุณระบุว่าค่าใช้จ่ายเทียบกับ F # แต่เมื่อ Erik ชี้คุณจะได้รับฟรีโดยสมบูรณ์
Benjol

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

1
วิสัย Joanis: ไม่ F # เป็นโอเพ่นซอร์สและคุณสามารถลองวิ่งบนโมโนบนแพลตฟอร์มอื่น ๆ
Jon Harrop

บางทีเวลามีการเปลี่ยนแปลงตั้งแต่ปี 2010 แต่ในขณะที่คนที่เริ่มเรียนรู้ haskell ในช่วงสองสามเดือนที่ผ่านมาฉันไม่คิดว่าการทำ IO ใน haskell นั้นเป็นเรื่องยาก สำหรับสิ่งพื้นฐานคุณเพียงแค่ต้องเรียนรู้ไวยากรณ์การทำใหม่เพื่อให้ได้ความเข้าใจพื้นฐานที่แท้จริงใช้เวลาไม่กี่สัปดาห์ แต่ฉันไม่เห็นว่าฟัซซี่เกี่ยวกับพระ ฉันไม่คิดว่าพวกเขาเรียนรู้ได้ยากกว่าชั้นเรียนอินสแตนซ์สมาชิกคงที่และแจ๊สอื่น ๆ ที่เกี่ยวข้องกับรัฐใน OOP
ร่า

9

ฉันประเมินภาษาฟังก์ชั่นหลัก ๆ ทั้งหมดหนึ่งปีหรือสองปีที่ผ่านมาจากมุมมองของการต้องการภาษาการเขียนโปรแกรมการใช้งานทั่วไปที่ใช้งานได้จริง

ฉันลงเอยเลือกClojureซึ่งภายหลังได้พิสูจน์แล้วว่าเป็นตัวเลือกที่ยอดเยี่ยม

การพูดอย่างกว้างขวางถึงเหตุผลสำคัญคือ:

  • ระบบนิเวศของห้องสมุด - เพื่อให้ภาษามีประโยชน์คุณต้องเข้าถึงห้องสมุดที่ดี การใช้ JVM หมายความว่าคุณสามารถเข้าถึงไลบรารีโอเพ่นซอร์สที่ใหญ่ที่สุดและระบบนิเวศของเครื่องมือได้อย่างง่ายดายดังนั้นการใช้ภาษา JVM จึงเป็นเรื่องที่ไม่ต้องมองข้าม สกาล่ายังได้คะแนนสูงที่นี่

  • Macro-metaprogramming - แง่มุมของ Lisp นี้ดึงดูดความสนใจของฉันเสมอโดยเฉพาะอย่างยิ่งเมื่อฉันคาดว่าจะมีการสร้างรหัสค่อนข้างน้อย ฉันซาบซึ้งอย่างมากกับข้อโต้แย้งที่เกิดขึ้นในบทความสั้น ๆ ของพอลเกรแฮม "การตีค่าเฉลี่ย " Lisps ต่างๆทำคะแนนได้ที่นี่

  • ประสิทธิภาพคือ "ดีพอ" - Clojure รวบรวมและรับประโยชน์จากเครื่องมือเพิ่มประสิทธิภาพ JVM JIT และ GC ที่ยอดเยี่ยมเสมอ เช่นเคยมีค่าใช้จ่ายบางอย่างในการใช้ภาษาที่ใช้งานได้ แต่ด้วย Clojure เป็นที่ชัดเจนว่าคุณสามารถใกล้เคียงกับความเร็วของ Java ด้วยความพยายามเล็กน้อย (Clojure รองรับการใช้ภาษาจาวาแบบดั้งเดิม การประมาณของฉันคือ Clojure ช้ากว่าที่คุณจะทำได้ 2-5x ด้วยโค้ด Java หรือ C ++ ซึ่งสอดคล้องกับสิ่งที่คุณเห็นในเกณฑ์มาตรฐานที่มีข้อบกพร่องและเมื่อเวลาผ่านไปฉันคาดว่าช่องว่างจะแคบลงอีก นอกจากนี้ยังง่ายพอที่จะเขียนโค้ดที่ไวต่อประสิทธิภาพโดยเฉพาะในจาวาบริสุทธิ์และเรียกมันจาก Clojure

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

  • การออกแบบภาษา - Clojure เป็น IMO การออกแบบภาษาที่ใช้ความคิดอย่างดี ตัวอย่างคือการมีเวกเตอร์ [] และแผนที่ {} ตัวอักษรนอกเหนือจากวงเล็บเสียงกระเพื่อมปกติการใช้โครงสร้างข้อมูลถาวรไม่เปลี่ยนรูปการสนับสนุนความเกียจคร้านตลอดภาษาผ่านลำดับนามธรรมและให้โปรแกรมเมอร์ที่มีคุณสมบัติหลากหลายมุมฉากเพื่อแก้ปัญหาที่แตกต่างกัน . ดูศิลปะของนามธรรมและง่ายทำง่าย

  • ชุมชน - เป็นส่วนตัวเสมอ แต่ฉันชอบสิ่งที่ฉันเห็นในชุมชน Clojure ทัศนคติมีประโยชน์มากสร้างสรรค์และใช้งานได้จริง มีการเน้นที่ "ทำให้เสร็จ" ซึ่งอาจสะท้อนให้เห็นถึงความจริงที่ว่าผู้คนจำนวนมากของ Clojure (รวมถึง Rich Hickey เอง) มาจากพื้นหลังของการสร้างระบบองค์กรที่ซับซ้อน ความจริงที่ว่าชุมชน Clojure มีการเชื่อมโยงที่แข็งแกร่งในชุมชน Java เช่นกันเป็นสิ่งสำคัญในการโน้มน้าวใจฉันว่า Clojure จะไม่เสี่ยงต่อการติดอยู่ใน "ช่อง"

หากฉันต้องตั้งชื่อข้อเสียเล็ก ๆ น้อย ๆ ของ Clojure เหล่านี้จะเป็น:

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

  • ความทันสมัย - Clojure กำลังพัฒนาอย่างรวดเร็วและมีนวัตกรรมมากมายเกิดขึ้น - ข้อเสียคือมีการทดลองจำนวนมากห้องสมุดและเครื่องมือบางอย่างยังคงไม่สมบูรณ์และมีการเปลี่ยนแปลงครั้งสำคัญระหว่าง Clojure รุ่นใหญ่ที่คุณ ต้องคอยจับตาดู

โดยรวมแล้วฉันไม่คิดว่าคุณจะผิดพลาดกับ Clojure หากคุณต้องการภาษาหน้าที่ทันสมัยที่ยอดเยี่ยมและเป็นประโยชน์!


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

6

ดูเหมือนว่าคุณจะทำการบ้านดังนั้นคุณอาจรู้อยู่แล้ว แต่ Scheme เป็นภาษาของ Lisp เหมือนกับ Common LISP หากคุณชอบหลายสิ่งเกี่ยวกับ Scheme แต่ไม่ชอบธรรมชาติด้านวิชาการลอง Common Lisp ตามดัชนี TIOBEเป็นภาษาที่ได้รับความนิยมมากที่สุดลำดับที่ 13 เทียบกับตำแหน่งที่ 26

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


ขอบคุณสำหรับลิงค์ TIOBE นั่นเป็นข้อมูลอ้างอิงที่น่าสนใจ ฉันเดาว่าคุณเลือก Haskell สำหรับความบริสุทธิ์ในแง่ของการเขียนโปรแกรมฟังก์ชั่น?
Joanis

1
@ M.Jananis: ค่อนข้างมาก แต่ฉันคิดว่าจะหยิบ Lisp ขึ้นมาในภายหลัง ดูprogrammers.stackexchange.com/questions/18838/…
Zeke

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