คำถามติดแท็ก functional-programming

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

1
การจับคู่รูปแบบใน Clojure vs Scala
อะไรคือความแตกต่างที่สำคัญระหว่างการจับคู่รูปแบบในสองภาษานี้ ฉันไม่ได้อ้างถึงไวยากรณ์ แต่ความสามารถรายละเอียดการใช้งานขอบเขตการใช้งานและความจำเป็น แอปพลิเคชัน Scala (เช่น. ยกและเล่น) พูดอย่างภาคภูมิใจเกี่ยวกับรูปแบบภาษาที่ตรงกับความกล้าหาญ ในทางกลับกัน Clojure มีห้องสมุด core.match และสร้างขึ้นในการทำลายซึ่งดูเหมือนว่ามีประสิทธิภาพ * หมายเหตุ: เหตุผลที่ฉันได้รับแรงบันดาลใจในการถามคำถามนี้เป็นเพราะการโพสต์บล็อกที่ฉันเห็นซึ่งโปรแกรมเมอร์ในการทดลองสร้างล่ามเสียงกระเพื่อมโดยใช้ทั้ง Scala และ Clojure เขาบอกว่าการแข่งขัน Clojure แตกหลังจากช่วงระยะเวลาหนึ่ง แต่ไม่สามารถอธิบายได้ว่าทำไม แต่ฉันอยากรู้จริงๆ คุณสามารถค้นหาโพสต์นี้ได้ที่นี่: http://www.janvsmachine.net/2013/09/writing-simple-lisp-interpreter-in-clojure.html

2
การเขียนโปรแกรมการทำงานและอัลกอริทึม stateful
ฉันเรียนรู้การเขียนโปรแกรมการทำงานที่มีHaskell ในขณะเดียวกันฉันกำลังศึกษาทฤษฎีออโตมาตาและในขณะที่ทั้งสองดูเหมือนจะเข้ากันได้ดีฉันจึงเขียนห้องสมุดเล็ก ๆ เพื่อเล่นกับออโตมาตะ นี่คือปัญหาที่ทำให้ฉันถามคำถาม ในขณะที่ศึกษาวิธีประเมินความสามารถในการเข้าถึงของรัฐฉันได้รับแนวคิดว่าอัลกอริทึมแบบเรียกซ้ำง่าย ๆ จะไม่มีประสิทธิภาพมากนักเนื่องจากบางเส้นทางอาจแบ่งปันบางสถานะและฉันอาจจบการประเมินมากกว่าหนึ่งครั้ง ตัวอย่างเช่นที่นี่การประเมินความสามารถในการเข้าถึงของgจากaฉันต้องแยกfทั้งสองขณะตรวจสอบเส้นทางผ่านdและc : ดังนั้นความคิดของฉันก็คืออัลกอริทึมทำงานแบบขนานบนหลาย ๆ พา ธ และอัปเดตบันทึกที่แชร์ของรัฐที่ถูกแยกอาจจะดี แต่นั่นก็มากเกินไปสำหรับฉัน ฉันเคยเห็นว่าในกรณีการเรียกซ้ำง่าย ๆ บางครั้งเราสามารถผ่านสถานะเป็นอาร์กิวเมนต์และนั่นคือสิ่งที่ฉันต้องทำที่นี่เพราะฉันส่งต่อรายชื่อของรัฐที่ฉันได้ผ่านเพื่อหลีกเลี่ยงการวนซ้ำ แต่มีวิธีที่จะส่งผ่านรายการนั้นย้อนกลับเช่นกลับใน tuple พร้อมกับผลบูลีนของcanReachฟังก์ชั่นของฉันได้อย่างไร (แม้ว่าจะรู้สึกว่าถูกบังคับเล็กน้อย) นอกจากความถูกต้องของตัวอย่างคดีของฉันแล้วยังมีเทคนิคอื่นใดอีกบ้างที่สามารถใช้แก้ปัญหาแบบนี้ได้อีก? ฉันรู้สึกเหมือนเหล่านี้จะต้องมากพอที่พบว่ามีจะต้องมีการแก้ปัญหาเช่นสิ่งที่เกิดขึ้นด้วยหรือfold*map จนถึงตอนนี้การอ่านlearnyouahaskell.comฉันยังไม่พบอะไรเลย แต่ลองคิดดูว่าฉันยังไม่ได้แตะพระเลย ( ถ้าสนใจฉันโพสต์รหัสของฉันในcodereview )

1
ฟังก์ชั่นการโต้ตอบ / การเขียนโปรแกรมเชิงสัมพันธ์ - มีความแตกต่างหรือไม่?
ฉันใช้Reactive Cocoa (โดย GitHub) ซึ่งเป็นAPI การเขียนโปรแกรมเชิงโต้ตอบสำหรับใช้กับห้องสมุด Cocoa มาระยะหนึ่งแล้ว แต่เพิ่งอ่าน"Out of the Tar Pit"กระดาษที่นำเสนอแนวคิดเบื้องหลัง และฉันก็สับสนเล็กน้อย บทความนำเสนอ (ตามที่ฉันเข้าใจ) การเขียนโปรแกรมเชิงสัมพันธ์เชิงหน้าที่ซึ่งความสัมพันธ์ระหว่างข้อมูลถูกสร้างขึ้นด้วยเงื่อนไขที่ควรมีการบังคับใช้โดยระบบ FRP เพื่อลดจำนวนตรรกะและสถานะ 'อุบัติเหตุ' ที่จำเป็น คำถามของฉันคือแนวคิดทั้งสองนี้คือ FR (eactive) P และ FR (elational) P โดยพื้นฐานแล้วเป็นสิ่งเดียวกัน (โดยที่ก่อนหน้านี้เพิ่งจะนำไปใช้หลัง) หรือมีความแตกต่างที่สำคัญระหว่างทั้งสองหรือไม่ น่าเสียดายที่ในขณะนี้ความรู้เกี่ยวกับพื้นที่ของฉันไม่ดีพอสำหรับฉันที่จะแยกแยะพวกเขาให้มากพอ หากมีความแตกต่างดูเหมือนว่าจะเป็นสิ่งที่ต้องทำด้วยชื่อแนะนำเพื่อตอบสนองต่อการเปลี่ยนแปลงของข้อมูล แน่นอนว่า Reactive Cocoa (และ Rx ใน C #) มีแนวคิดในการสร้างสัญญาณที่ถูกกระตุ้นจากการเปลี่ยนแปลงข้อมูลและสามารถใช้ในการปรับเปลี่ยนค่าอย่างต่อเนื่องตลอดเวลา นี่คือความแตกต่าง? ถ้าไม่เป็นอะไร (โปรดแก้ตัวการติดแท็กที่ไม่ดีฉันไม่สามารถหาแท็กที่เกี่ยวข้องและยังไม่สามารถสร้างได้ - โปรดอัปเดตแท็กเป็นสิ่งที่เหมาะสมกว่าถ้าคุณสามารถทำได้)

2
ฟังก์ชั่นการเขียนโปรแกรมปฏิกิริยา - เฟย์แสดงออกได้เพียงพอหรือไม่?
ดังนั้นฉันจึงทำไคลเอนต์ javascript / html ที่เกี่ยวข้องอย่างเป็นธรรมด้วยการโทร ajax จำนวนมากและการโทรกลับ -mem ฉันสนุกสนานกับความคิดที่จะใช้ Fay เพื่อจุดประสงค์นี้ ฉันรู้เรื่อง Elm แล้ว พยายามและชอบองค์ประกอบ FRP ตอนนี้ฉันต้องการทราบว่าโครงสร้างที่คล้ายกันเป็นไปได้ใน Fay หรือไม่ มีตัวอย่างที่เป็นรูปธรรมของ FRP ในเรื่องนี้บ้างไหม ณ จุดนี้? เทคโนโลยีบางอย่างที่เกี่ยวข้อง: Arrowlets , arrowised FRP ใน javascript FlapJaxอีกทางเลือกหนึ่งของจาวาสคริปต์ Bacon.js , FRP ใน javascript ทางออกหนึ่งที่เป็นไปได้โดยใช้เบคอน ด้วยการสาธิต

10
วิธีเขียนโปรแกรม Java ที่มีประโยชน์โดยไม่ใช้ตัวแปรที่ไม่แน่นอน
ฉันอ่านบทความเกี่ยวกับการเขียนโปรแกรมการทำงานที่ผู้เขียนระบุ (take 25 (squares-of (integers))) ขอให้สังเกตว่ามันไม่มีตัวแปร แน่นอนมันมีอะไรมากกว่าสามฟังก์ชั่นและหนึ่งคงที่ ลองเขียนกำลังสองของจำนวนเต็มใน Java โดยไม่ต้องใช้ตัวแปร โอ้มีวิธีที่จะทำ แต่แน่นอนมันไม่เป็นธรรมชาติและมันจะไม่อ่านอย่างที่โปรแกรมของฉันข้างต้น เป็นไปได้ไหมที่จะบรรลุสิ่งนี้ใน Java? สมมติว่าคุณจำเป็นต้องพิมพ์สแควร์ของจำนวนเต็ม 15 ตัวแรกคุณสามารถเขียน a for หรือ while loop โดยไม่ใช้ตัวแปรได้หรือไม่? แจ้งให้ทราบล่วงหน้า mod คำถามนี้ไม่ใช่การแข่งขันกอล์ฟรหัส เรากำลังมองหาคำตอบที่อธิบายแนวคิดที่เกี่ยวข้อง (นึกคิดโดยไม่ต้องทำซ้ำคำตอบก่อนหน้า) และไม่เพียง แต่สำหรับรหัสอื่น

1
เหตุผลในการลบประเภทฟังก์ชั่นใน Java 8
ฉันพยายามเข้าใจว่าเพราะเหตุใด JDK 8 Lambda Expert Group (EG) จึงตัดสินใจไม่รวมฟังก์ชันประเภทใหม่ลงในภาษาการเขียนโปรแกรม Java ไปกว่ารายการทางผมพบว่าหัวข้อที่มีการอภิปรายเกี่ยวกับการกำจัดของประเภทฟังก์ชั่น ข้อความหลายข้อคลุมเครือสำหรับฉันอาจเป็นเพราะการขาดบริบทและในบางกรณีเนื่องจากความรู้ที่ จำกัด ของฉันเกี่ยวกับการใช้งานระบบพิมพ์ อย่างไรก็ตามมีคำถามสองสามข้อที่ฉันเชื่อว่าฉันสามารถกำหนดได้อย่างปลอดภัยในไซต์นี้เพื่อช่วยให้ฉันเข้าใจได้ดีขึ้นว่าพวกเขาหมายถึงอะไร ฉันรู้ว่าฉันสามารถถามคำถามในรายการส่งเมลได้ แต่เธรดเก่าและการตัดสินใจทั้งหมดได้ทำไปแล้วดังนั้นโอกาสที่ฉันจะถูกเพิกเฉยเหนือสิ่งอื่นใดที่เห็นว่าคนเหล่านี้มีแผนล่าช้าอยู่แล้ว ในคำตอบของเขาที่ให้การสนับสนุนการลบประเภทฟังก์ชั่นและรับรองการใช้งาน SAM ประเภท Brian Goetz พูดว่า: ไม่มีการดัดแปลง มีเธรดที่ยาวเกี่ยวกับประโยชน์ของการปรับประเภทของฟังก์ชัน ประเภทฟังก์ชั่นจะ hobbled ฉันไม่พบกระทู้ที่เขาพูดถึง ตอนนี้ฉันสามารถเข้าใจได้ว่าการแนะนำฟังก์ชั่นโครงสร้างอาจหมายถึงภาวะแทรกซ้อนบางอย่างในระบบจาวาส่วนใหญ่ที่ระบุสิ่งที่ฉันไม่เข้าใจคือประเภท SAM parametrized แตกต่างกันในแง่ของการทำให้ใหม่ พวกเขาทั้งคู่ต่างก็ประสบปัญหาการทำให้เหมือนกันหรือไม่? ใครบ้างเข้าใจว่าประเภทฟังก์ชั่นแตกต่างจากประเภท SAM parametrized ในแง่ของการทำให้ใหม่? ในความคิดเห็นอื่น Goetz พูดว่า: มีสองวิธีพื้นฐานในการพิมพ์: ชื่อและโครงสร้าง ตัวตนของชื่อจะขึ้นอยู่กับชื่อของมัน ตัวตนของโครงสร้างประเภทนั้นขึ้นอยู่กับสิ่งที่มันประกอบไปด้วย (เช่น "tuple of int, int" หรือ "ฟังก์ชั่นจาก …

2
FP สำหรับการจำลองและการสร้างแบบจำลอง
ฉันกำลังจะเริ่มโครงการจำลองสถานการณ์ / การสร้างแบบจำลอง ฉันรู้อยู่แล้วว่า OOP ใช้สำหรับโครงการประเภทนี้ อย่างไรก็ตามการเรียน Haskell ทำให้ฉันพิจารณาใช้กระบวนทัศน์ของ FP สำหรับการสร้างแบบจำลองระบบของส่วนประกอบ ให้ฉันทำอย่างละเอียด: สมมติว่าฉันมีองค์ประกอบประเภท A ซึ่งมีลักษณะเป็นชุดข้อมูล (พารามิเตอร์เช่นอุณหภูมิหรือความดัน PDE และเงื่อนไขขอบเขต ฯลฯ ) และส่วนประกอบประเภท B ซึ่งมีชุดข้อมูลแตกต่างกัน (แตกต่างกัน หรือพารามิเตอร์เดียวกัน PDE และเงื่อนไขขอบเขตที่แตกต่างกัน) สมมติว่าฟังก์ชั่น / วิธีการที่จะนำไปใช้กับแต่ละองค์ประกอบเหมือนกัน (ตัวอย่างวิธี Galerkin) สถานะที่ไม่แน่นอนของวัตถุจะถูกใช้สำหรับพารามิเตอร์ที่ไม่คงที่ ถ้าฉันจะใช้วิธีการของ OOP ฉันจะสร้างวัตถุสองชนิดที่จะห่อหุ้มข้อมูลของแต่ละประเภทวิธีการในการแก้ไข PDE (การสืบทอดจะใช้ที่นี่เพื่อนำโค้ดกลับมาใช้ใหม่) และวิธีแก้ปัญหากับ PDE ในทางตรงกันข้ามถ้าฉันจะใช้วิธีการ FP แต่ละองค์ประกอบจะถูกแบ่งออกเป็นส่วนข้อมูลและฟังก์ชั่นที่จะดำเนินการกับข้อมูลเพื่อให้ได้โซลูชั่นสำหรับ PDE พารามิเตอร์ที่ไม่คงที่จะถูกส่งผ่านเป็นฟังก์ชั่นของอย่างอื่น (เวลาเช่น) หรือแสดงโดยความไม่แน่นอนบางอย่าง (การเลียนแบบความไม่แน่นอน ฯลฯ ) …

5
ฟังก์ชั่นการเขียนโปรแกรมมีอะไรบ้างในการนำ Game of Life ของ Conway [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ฉันเพิ่งนำมาใช้เพื่อความสนุกสนานGame of Life ของ Conwayใน Javascript (จริงๆแล้วกาแฟเป็นสิ่งเดียวกัน) เนื่องจากจาวาสคริปต์สามารถใช้เป็นภาษาที่ใช้งานได้ฉันจึงพยายามอยู่จนสุดช่วงความถี่ ฉันไม่พอใจกับผลลัพธ์ของฉัน ฉันเป็นโปรแกรมเมอร์ OO ที่ค่อนข้างดีและวิธีการแก้ปัญหาของฉันถูกตีเหมือนกันอายุเท่าเดิม คำถามยาว ๆ สั้น ๆ : รูปแบบการทำงาน (pseudocode) ของการทำคืออะไร? นี่คือ Pseudocode สำหรับความพยายามของฉัน: class Node update: (board) -> get number_of_alive_neighbors from board get this_is_alive from board if this_is_alive and number_of_alive_neighbors < 2 then …

3
วิธีการพัฒนาโปรแกรมการทำงานระดับสูงขึ้น [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน4 ปีที่แล้ว ก่อนอื่นฉันต้องขออภัยถ้านี่ไม่ใช่สถานที่ที่เหมาะสมสำหรับคำถามนี้ แต่ฉันคิดว่า th.CS ไม่ใช่สถานที่ที่เหมาะสมแน่นอนไม่มี StackOverflow ฉันชอบการเขียนโปรแกรมที่ใช้งานได้จริงและฉันคิดว่าฉันเป็นคนระดับกลางใน F # และเข้าใจแนวคิดพื้นฐานของ Haskell ค่อนข้างดี - และใช่ฉันคิดว่าฉันรู้ / ล้มเหมือนที่ฉันรู้ว่า Monad คืออะไร ตอนนี้ฉันต้องการที่จะยกระดับไปสู่ระดับถัดไปและต้องการที่จะเข้าใจสิ่งที่การพูดคุยเกี่ยวกับหน้าที่และสิ่งที่เป็นทั้งหมดเกี่ยวกับ ฉันแค่ไม่รู้ว่าจะเริ่มจากตรงไหน อ่านอะไรเกี่ยวกับแลมบ์ดาแคลคูลัส? ทฤษฎีหมวดหมู่? ทั้งฉันรู้เพียงเล็กน้อยและฉันไม่คิดว่านี่เป็นวิธีที่ถูกต้อง / รวดเร็วที่สุดในการรับรู้ บางทีคุณอาจให้คำแนะนำบางอย่างกับฉัน ป.ล. : ฉันไม่กลัวคณิตศาสตร์และฉันไม่หงุดหงิดกับการออกกำลังกายอย่างง่ายดาย แต่ฉันจะใส่ล่วงหน้า intros / ข้อความที่คุณสามารถใส่รหัสลงเพราะวิธีนี้คุณจะได้รับผลตอบรับทันที

5
การเขียนโปรแกรมฟังก์ชั่นแตกต่างกันไปหรือเป็นจริงที่ยากขึ้นจริงหรือ
การเขียนโปรแกรมฟังก์ชั่นแตกต่างกันไปหรือเป็นจริงที่ยากขึ้นจริงหรือ บอกคนที่ไม่เคยเรียนรู้การเขียนโปรแกรมมาก่อนและสอนการเขียนโปรแกรมที่ใช้งานได้ เทียบกับคนที่ไม่เคยเรียนรู้การเขียนโปรแกรมมาก่อนและสอนการเขียนโปรแกรมที่จำเป็น ซึ่งเขาจะหายากขึ้น? หรือเหมือนกัน คำถามของฉัน: พูดว่าปัญหาตอนนี้คือการป้อนข้อมูลอูฐกรณี เช่นนั้นqwe_asd_zxc_rty_fgh_vbnจะกลายเป็นqweAsdZxcRtyFghVbn วิธีการขั้นตอนคือ: แยกมันตาม _ วนรอบอาร์เรย์ที่กระโดดข้ามรายการแรก สำหรับแต่ละรายการเราใช้อักษรตัวแรกเป็นตัวพิมพ์ใหญ่ เข้าร่วมผลลัพธ์ด้วยกัน วิธีการทำงานคือ: หากไม่พบ_ผลตอบแทนinput ตัดinputพร้อมแรก_(เช่นที่เราได้รับqweและasd_zxc_rty_gfh_cvb) ใช้อักษรตัวแรกของheadและตกลงด้วยตัวพิมพ์ใหญ่ที่มีf(tail) ตกลงถ้าคุณมีพื้นหลังการใช้งานและมีประสบการณ์มากมายในการเขียนโปรแกรมเชิงกระบวนงานฉันอยากถามว่า: คุณจะต้องใช้เวลามากขึ้นในการคิดหาวิธีการหรือไม่หรือจะใช้เวลานานกว่านี้ หากคุณมีพื้นฐานของขั้นตอนการทำงานแต่มีประสบการณ์หลายปีในการใช้งานฟังก์ชั่นการเขียนโปรแกรมฉันอยากจะถามคำถามเดียวกันนี้: คุณจะต้องใช้เวลานานกว่านี้ในการหาวิธีการดำเนินการหรือจะใช้เวลานานกว่า วิธี?

4
ฟังก์ชั่นการเขียนโปรแกรม - Immutability
ฉันพยายามที่จะเข้าใจการจัดการกับข้อมูลที่ไม่เปลี่ยนรูปแบบใน FP (โดยเฉพาะใน F # แต่ FP อื่น ๆ ก็โอเคเช่นกัน) และทำลายนิสัยเดิมของการคิดแบบเต็มรัฐ (OOP) ส่วนหนึ่งของคำตอบที่เลือกสำหรับคำถามที่นี่ย้ำการค้นหาของฉันสำหรับการแก้ไขปัญหาที่แก้ไขโดยการเป็นตัวแทนใน OOP กับสิ่งที่ไม่เปลี่ยนรูปใน FP (ตัวอย่างเช่น: คิวกับ Producers & Consumer) ความคิดหรือลิงค์ยินดีต้อนรับ? ขอบคุณล่วงหน้า. แก้ไข : หากต้องการเพิ่มความกระจ่างของคำถามอีกเล็กน้อยโครงสร้างที่ไม่เปลี่ยนรูปแบบ (เช่นคิว) จะถูกแชร์กันในหลาย ๆ เธรดพร้อมกัน (เช่นผู้ผลิตและผู้บริโภค) ใน FP ได้อย่างไร

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

2
เราสามารถสร้างคอมพิวเตอร์ที่ใช้งานได้หรือไม่?
ในท้ายที่สุดแล้วโปรแกรมทั้งหมดของเรามีโครงสร้าง นั่นคือมันไม่สำคัญว่าเราจะสร้างมันให้บริสุทธิ์หรือใช้ประโยชน์ได้อย่างไร - พวกมันถูกแปลเป็นชุดประกอบเสมอดังนั้นสิ่งที่จริง ๆ แล้วสิ่งที่วิ่งอยู่หลังหมวกคือคำแนะนำรัฐและลูป พวกเราเลียนแบบ FP ในฐานะที่เป็นฮาร์ดแวร์ noob คำถามของฉันคือ: ทำไมเราไม่ใช้สถาปัตยกรรมคอมพิวเตอร์ที่คำนวณสิ่งต่าง ๆ ในรูปแบบที่ใช้งานได้จริง? ตัวอย่างเช่นคอมพิวเตอร์อาจประกอบด้วย "functional chips" ดั้งเดิมเช่น "concat", "map" และ "ลด" และโปรแกรมจะบอกคอมพิวเตอร์ว่าจะไหลของข้อมูลระหว่างชิปเหล่านั้นอย่างไรเพื่อคำนวณผลลัพธ์ที่ต้องการ เช่นในภาษาที่ต่อกัน สิ่งนี้ไม่สมเหตุสมผล แต่อาจแสดงสิ่งที่ฉันคิด

4
กระบวนทัศน์ที่ไม่ใช่ OOP สนับสนุนแนวคิดเช่นการห่อหุ้มหรือไม่?
หนึ่งในแนวคิดที่สำคัญในการเขียนโปรแกรมเชิงวัตถุคือ Encapsulation อย่างไรก็ตามเมื่อไม่นานมานี้โลกของซอฟต์แวร์ดูเหมือนจะเอียงไปทางกระบวนทัศน์อื่น ๆ เช่นการเขียนโปรแกรมการทำงาน มันทำให้ฉันคิดว่าสิ่งที่เกี่ยวกับการห่อหุ้มและหลักการ OOP อื่น ๆ ? พวกเขาผิดหรือเปล่า? มีการใช้ OOP ผิดหรือไม่ ตัวอย่างเช่น Alan Kay ถูกกล่าวถึงในการกล่าวคำปราศรัย OOPSLA'97: "ฉันคิดค้นคำว่า object-oriented และฉันสามารถบอกคุณได้ว่าฉันไม่มี C ++ ในใจ" Joe Armstrong - "วัตถุผูกฟังก์ชั่นและโครงสร้างข้อมูลร่วมกันในหน่วยแบ่งแยกฉันคิดว่านี่เป็นข้อผิดพลาดพื้นฐานเนื่องจากฟังก์ชั่นและโครงสร้างข้อมูลอยู่ในโลกที่แตกต่างกันโดยสิ้นเชิง"

2
(พื้นฐาน) แบบสอบถาม SQL มีความหมายเทียบเท่ากับฟังก์ชันคำสั่งซื้อที่สูงขึ้นหรือไม่
SQL นั้นเป็นโดเมนเฉพาะของ map + fold + filter หรือไม่ ดูเหมือนว่าฉันว่า SQL ต่อไปนี้: SELECT name FROM fruits WHERE calories < 100 เป็นเพียงน้ำตาล syntactic สำหรับแผนที่ + ตัวกรอง + การดำเนินการพับ: var fruits = [{id : 1, name: 'orange', calories : 100}, {id : 2, name : 'banana', calories : 150}, {id : 3, name: …

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