ใช้งานจริงของการเขียนโปรแกรมฟังก์ชั่น? [ปิด]


9

ฉันกำลังพยายามทำความคุ้นเคยกับภาษาต่าง ๆ เพื่อทำความเข้าใจกับสิ่งที่แต่ละคนเก่งมาก จนถึงตอนนี้ฉันได้ขลุกเป็น C - ภาษาขั้นตอน, C ++ และ java - ภาษาที่พิมพ์แบบคงที่ Object Oriented language และ groovy - เป็นภาษา Object Oriented ที่พิมพ์แบบไดนามิก

ภาษาโปรแกรมทุกภาษาอาจเริ่มตอบสนองความต้องการ และฉันคิดว่าทุกภาษาดีมากอย่างน้อยหนึ่งอย่างเพราะมันกลายเป็นมาตรฐานในพื้นที่หรือสาขาที่เฉพาะเจาะจง เช่น C, C ++ กลายเป็นมาตรฐานในด้านต่างๆเช่นเบราว์เซอร์หรือการพัฒนาเกม Python ในโลก Linux สำหรับความสามารถในการเขียนสคริปต์อย่างง่าย Java ในโลกธุรกิจ ฯลฯ

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


5
"และฉันคิดว่าทุกภาษานั้นดีอย่างน้อยที่สุดสิ่งหนึ่งเพราะมันกลายเป็นมาตรฐานในพื้นที่หรือสาขาเฉพาะ" นั่นไม่จริง มันเป็นข้อสันนิษฐานที่อันตรายที่จะคิดว่าภาษานั้น "พิเศษ" อย่างใด บางภาษามี niches แต่โดยทั่วไปไม่เป็นความจริง
S.Lott

6
"ฉันไม่ได้อย่างไรและจะเริ่มที่ไหน" อะไรทำให้คุณไม่สามารถเริ่มบทเรียนได้ คุณช่วยอธิบายได้ไหมว่าเพราะเหตุใดบทเรียนสำหรับภาษาเหล่านี้จึงไม่มีประโยชน์หรือมีประโยชน์?
S.Lott

"C ++ & java" มีน้อยมากที่จะทำซึ่งกันและกัน
DeadMG

ฉันขอพูดในสิ่งที่คุณสนใจจริง ๆ ที่จะเรียนรู้ Clojure หรือ Lisp นอกเหนือจากเหตุผลที่พวกเขาทำตามกระบวนทัศน์การเขียนโปรแกรมฟังก์ชั่น?
Maxood

3
เมื่อคุณพูดว่า "เรียลไทม์" คุณหมายถึง "โลกแห่งความจริง" โดยบังเอิญหรือไม่? ดูเหมือนจะสมเหตุสมผลมากกว่าในบริบทของคำถามนี้
sepp2k

คำตอบ:


13

คุณบอกว่าการเขียนโปรแกรมฟังก์ชั่นในโลกแห่งความเป็นจริงผมคิดว่า Erlang

Erlang เป็นภาษาการเขียนโปรแกรมที่ใช้ในการสร้างระบบซอฟท์เรียลไทม์ที่ปรับขนาดได้อย่างหนาแน่นพร้อมความต้องการด้านความพร้อมใช้งานสูง การใช้งานบางอย่างอยู่ในโทรคมนาคม, ธนาคาร, อีคอมเมิร์ซ, โทรศัพท์คอมพิวเตอร์และการส่งข้อความทันที

http://www.erlang.org/


3
+1 Korrecto! นอกจากนี้ฉันอยากจะเพิ่มว่าสำหรับผู้เริ่มต้นในดินแดนที่ใช้งานได้ภาษาการทำงานที่ "บริสุทธิ์ที่สุด" รอบ ๆ จะเป็น Haskell :)
yati sagade

5

มีชุดบรรยายที่ยอดเยี่ยมเกี่ยวกับ Functional Programming โดย Stanford University คุณสามารถตรวจสอบได้จาก YouTube

ฉันแนะนำให้คุณดูใน Scheme มากกว่า LISP Schemeเป็น Lisp เวอร์ชันดัดแปลงที่มีการปรับปรุงเพิ่มเติม โครงการส่วนใหญ่จะใช้สำหรับการศึกษาและการฝึกอบรม มันเป็นภาษาที่ยอดเยี่ยมถ้าคุณชอบทำวิจัยในวิทยาการคอมพิวเตอร์เชิงทฤษฎี

การใช้งาน :

Google App Inventor สำหรับ Android ใช้ Scheme โดยที่ Kawa ใช้ในการรวบรวมรหัส Scheme ลงไปเป็นรหัสไบต์สำหรับ Java Virtual Machine ที่ทำงานบนอุปกรณ์ Android Elk Scheme ถูกใช้โดย Synopsys เป็นภาษาสคริปต์สำหรับเครื่องมือ CAD (TCAD) ของเทคโนโลยี

FYI: การใช้ Scheme


สงสัยว่าคำถามนี้อาจช่วยคุณได้อย่างไร: programmers.stackexchange.com/questions/25056/…
Maxood

1
และยังมีหนังสือ LISP (ฟรี! และออนไลน์!): gigamonkeys.com/bookมันครอบคลุมโครงการ "ภาคปฏิบัติ" เช่นตัวแยกแท็ก ID3 การเขียนโปรแกรมเว็บและการกรองสแปม
FrustratedWithFormsDesigner

5

Bryan O'Sullivan ผู้ก่อตั้ง mailrank.com (ซึ่งซื้อโดย Facebook) ได้สร้างฝั่งเซิร์ฟเวอร์ทั้งหมดของซอฟต์แวร์นี้ใน Haskell เขานำเสนอเกี่ยวกับเรื่องนี้ที่ Strange Loop 2011 มีวิดีโอและสไลด์ออนไลน์

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


4

ฉันรู้จากเพื่อนในด้านการเงินว่า บริษัท การค้าเชิงปริมาณ Jane Street ใช้ OCaml เพื่อใช้กลยุทธ์การซื้อขาย พวกเขามีหน้าที่พูดคุยเกี่ยวกับสาเหตุพร้อมกับลิงก์เพื่อพูดคุยเกี่ยวกับเรื่องนั้น


2

นี่คือรายการเรื่องราวความสำเร็จ Common LISP:

http://wiki.alu.org/Industry%20Application

http://www.franz.com/success/

http://www.lispworks.com/success-stories/index.html

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

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


1

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


0

คุณอาจต้องการที่จะมีลักษณะที่ฮูม

จากหน้าภาษาการเขียนโปรแกรม Hume :

ฮูม (Unified Meta-Environment Unified-order) เป็นภาษาที่มีการพิมพ์สูงและใช้งานได้เป็นอย่างดีพร้อมชุดเครื่องมือแบบบูรณาการสำหรับการพัฒนาการพิสูจน์และการประเมินระบบที่สำคัญต่อความปลอดภัยพร้อมกัน ฮูมมีเป้าหมายที่จะขยายขอบเขตของการออกแบบภาษาสำหรับระบบที่มีทรัพยากร จำกัด รวมถึงระบบฝังตัวแบบเรียลไทม์และระบบความปลอดภัยที่สำคัญโดยการแนะนำระดับใหม่ของสิ่งที่เป็นนามธรรมและการพิสูจน์

จากหน้าวิกิพีเดียฮูม :

ฮูมเป็นภาษาโปรแกรมเชิงหน้าที่พัฒนาขึ้นที่University of St AndrewsและHeriot-Watt Universityในสกอตแลนด์และได้รับการตั้งชื่อตามปราชญ์ David Hume ในศตวรรษที่ 18 มันกำหนดเป้าหมายระบบฝังตัวตามเวลาจริงโดยมีจุดมุ่งหมายเพื่อสร้างการออกแบบที่มีทั้งนามธรรมสูง แต่ยังคงสามารถแยกค่าใช้จ่ายในการดำเนินการเวลาและพื้นที่ได้อย่างแม่นยำดังนั้นจึงสามารถเขียนโปรแกรมที่จะดำเนินการภายใต้ข้อ จำกัด ด้านเวลาและพื้นที่

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

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