วิศวกรรมซอฟต์แวร์

ถาม - ตอบสำหรับมืออาชีพนักวิชาการและนักเรียนที่ทำงานในวงจรการพัฒนาระบบ

5
วิธีการเลือกระหว่างบอกไม่ถามและแยกคำสั่ง?
หลักการบอกว่าอย่าถามว่า: คุณควรพยายามบอกสิ่งที่คุณต้องการให้พวกเขาทำ อย่าถามพวกเขาเกี่ยวกับสถานะของพวกเขาตัดสินใจแล้วบอกพวกเขาว่าจะทำอย่างไร ปัญหาคือในฐานะผู้โทรคุณไม่ควรทำการตัดสินใจตามสถานะของวัตถุที่เรียกว่าทำให้คุณเปลี่ยนสถานะของวัตถุ ตรรกะที่คุณใช้อยู่อาจเป็นความรับผิดชอบของวัตถุที่เรียกว่าไม่ใช่ของคุณ สำหรับคุณในการตัดสินใจนอกวัตถุที่ละเมิดการห่อหุ้ม ตัวอย่างง่ายๆของ "Tell, Don't Ask"คือ Widget w = ...; if (w.getParent() != null) { Panel parent = w.getParent(); parent.remove(w); } และเวอร์ชัน Tell คือ ... Widget w = ...; w.removeFromParent(); แต่ถ้าฉันต้องรู้ผลลัพธ์จากวิธี removeFromParent ปฏิกิริยาแรกของฉันคือเพียงแค่เปลี่ยน removeFromParent เพื่อส่งกลับค่าบูลีนเพื่อระบุว่าพาเรนต์ถูกลบหรือไม่ แต่ฉันเจอรูปแบบการแยกคำสั่งซึ่งบอกว่าไม่ต้องทำ มันระบุว่าทุกวิธีควรเป็นคำสั่งที่ทำการดำเนินการหรือแบบสอบถามที่ส่งคืนข้อมูลไปยังผู้โทร แต่ไม่ใช่ทั้งสองอย่าง กล่าวอีกนัยหนึ่งการถามคำถามไม่ควรเปลี่ยนคำตอบ อย่างเป็นทางการมากขึ้นวิธีการที่ควรส่งกลับค่าเฉพาะในกรณีที่พวกเขามีความโปร่งใส referential และจึงไม่มีผลข้างเคียง สองคนนี้ขัดแย้งกันจริงๆและฉันจะเลือกระหว่างคนทั้งสองได้อย่างไร ฉันจะไปกับ Pragmatic Programmer …
25 java  coding 

7
เราควรใช้ python 2.6 หรือ 2.7 หรือ 3.x หรือไม่? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัพเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน6 ปีที่ผ่านมา หลามเวอร์ชันที่ฉันใช้อยู่คือ 2.6และมี 2.7 และ 3.x ฉันมักจะใช้ python สำหรับโปรแกรม / ตัวอย่างเล็ก ๆ น้อย ๆ ฉันรู้ว่ามีความแตกต่างที่สำคัญระหว่าง 2.x และ 3.x ฉันอยากรู้จริงๆว่าถ้าฉันจะสร้างโครงการที่ใหญ่กว่าด้วย python ฉันควรใช้ python เวอร์ชันใด ฉันควรอัพเกรดเป็น 2.7 หรือไปที่ 3.x หรืออยู่ที่ 2.6? การตัดสินใจควรขึ้นอยู่กับข้อกำหนดเหล่านี้: จำนวนผู้ใช้ในอินเทอร์เน็ตในฐานะชุมชน ผู้ใช้จำนวนมากหมายถึงแพ็คเกจโอเพ่นซอร์สที่มากขึ้นและช่วยพวกเขา ฟังก์ชั่น การสนับสนุนจากทีมพัฒนาอย่างเป็นทางการ ความเข้ากันได้สำหรับโมดูล / แพ็คเกจที่มีอยู่ ขอบคุณ!
25 python 

13
มันคุ้มค่าหรือไม่ที่จะเรียนรู้ภาษาทดลอง? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการ4 ปีที่แล้ว ฉันเป็นโปรแกรมเมอร์หนุ่มผู้ปรารถนาจะทำงานในภาคสนามในฐานะโปรแกรมเมอร์ ฉันรู้ Java, VB.NET และ C # ฉันต้องการเรียนรู้ภาษาใหม่ (ในขณะที่ฉันเขียนโปรแกรมฉันรู้ว่ามันมีประโยชน์ที่จะขยายสิ่งที่ฉันรู้ - เพื่อเรียนรู้ภาษาที่ทำให้คุณคิดแตกต่าง) ฉันดูออนไลน์เพื่อดูว่าภาษาใดที่ใช้กันทั่วไป ทุกคนรู้จัก C และ C ++ (แม้แต่พวกมักเกิ้ลที่รู้เรื่องคอมพิวเตอร์โดยทั่วไปน้อยมาก) ดังนั้นฉันคิดว่าบางทีฉันควรจะผลักดันให้ C C และ C ++ นั้นดี แต่มันเก่า สิ่งต่าง ๆ เช่น Haskell และ Forth (ฯลฯ ฯลฯ ) เก่าและสูญเสียความนิยม ฉันกลัวการเรียนรู้ C (หรือแม้แต่ C ++) ด้วยเหตุผลเดียวกันนี้ Java …

6
DVCS (git หรือ hg) ใดที่เหมาะสำหรับการเขียนโปรแกรมนักเรียน [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัพเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน5 ปีที่ผ่านมา บริบท: ฉันอยู่ในชั้นปีที่ 3 ของวิทยาลัย นักเรียนแบ่งออกเป็นกลุ่มละ 4 คนเกือบทุกคนจะทำงานภายใต้หน้าต่าง (ยกเว้นบางคนที่อยู่บน linux) เป็นส่วนหนึ่งของหลักสูตรของโรงเรียนเราจะเริ่มต้นทำงานในโครงการสำหรับลูกค้าจริง แต่ฉันและทีมอื่นกำลังสงสัยว่าวิธีใดที่ดีที่สุดสำหรับการแบ่งปันรหัสของเรากับแต่ละอื่น ๆ ฉันทำงานพาร์ทไทม์เป็นเวลา 3 ปีและมีประสบการณ์มากมายในการใช้ทั้งคอมไพล์และ Mercurial ในโปรเจคที่แตกต่างกันดังนั้นฉันจึงไม่มีปัญหาในการใช้ระบบใดระบบหนึ่งหรือระบบอื่น อย่างไรก็ตามเพื่อนร่วมทีมของฉันไม่เคยใช้ระบบควบคุมเวอร์ชันมาก่อน นอกจากนี้ยังมีทีมอื่นที่พยายามใช้ SVN แต่มีปัญหาใหญ่และอยากลองใช้อย่างอื่นดังนั้นพวกเขาจึงถามความคิดเห็นของฉัน ความคิดของฉัน: ฉันได้ยินมาว่า Mercurial + TortoiseHg มีการรวมที่ดีขึ้นภายใต้ windows แต่ฉันสงสัยว่าแนวคิดของหัวหน้าที่ไม่ระบุชื่ออาจทำให้พวกเขาสับสนแม้ว่าฉันจะอธิบาย ในทางกลับกันฉันพบว่ากิ่ง git นั้นง่ายกว่าสำหรับผู้เริ่มต้นที่จะเข้าใจ (แยกการทำงานที่ชัดเจนสำหรับโปรแกรมเมอร์แต่ละคน) แต่ไม่สามารถทำงานได้ดีในหน้าต่าง

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

4
มี "อนาล็อก FizzBuzz" ในการเลือกลูกค้าหรือไม่? [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา นี่สำหรับคนทำงานอิสระ ในชีวิตที่ผ่านมาในฐานะลูกจ้างเต็มเวลาฉันมีส่วนร่วมในการจ้างงานและสัมภาษณ์นักพัฒนาจำนวนมาก ฉันได้เรียนรู้ว่าการเห็นนักพัฒนาประสบปัญหามีค่ายิ่งกว่าการพูดคุยเกี่ยวกับประสบการณ์ ฯลฯ ตอนนี้ฉันทำงานเป็นนักแปลอิสระ / ที่ปรึกษา หนึ่งในสิ่งที่ดีกว่าคืออิสระในการเลือกสิ่งที่ฉันต้องการทำงาน แต่ตอนนี้ไม่กี่ปีที่ผ่านมาฉันได้เรียนรู้ (ยาก) ว่าลูกค้าบางรายไม่คุ้มค่าเงิน พวกเขาอาจไม่แน่นอนไม่มีเหตุผลเรียกร้องและยากที่จะทำงานด้วยวิธีที่ทำให้เสียศีลธรรมมาก ดังนั้นฉันจึงสงสัยว่า: มีวิธีที่ดีกว่าในการ "สัมภาษณ์" ลูกค้าหรือไม่ เห็นได้ชัดว่าวิธีการใด ๆ จะต้องมีความละเอียดอ่อนเนื่องจากลูกค้าอาจไม่คาดหวังว่าจะได้รับการทดสอบ แต่มีอะนาล็อกของ " FizzBuzz " ที่จะบอกฉันว่าฉันควรลงชื่อเข้าใช้หรือถอยห่างออกไปอย่างช้า ๆ หรือไม่?

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

5
มีการศึกษาหลักการสไตล์การเข้ารหัสอย่างเข้มงวดทางวิทยาศาสตร์หรือไม่? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัพเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการ4 ปีที่แล้ว หลักการสไตล์การเข้ารหัส - เช่นเดียวกับหลักการทางออกเดียว - เป็นสิ่งที่ดีจริงเหรอ? เสมอหรือบางครั้ง มันแตกต่างกันมากแค่ไหน? ไม่ว่าความคิดเห็นของคุณจะเป็นคำถามแบบอัตนัย หรือว่าพวกเขา? มีใครพยายามที่จะทำให้วัตถุประสงค์การศึกษาหลักการสไตล์การเข้ารหัสอย่างเข้มงวดทางวิทยาศาสตร์หรือไม่? ฉันไม่สามารถจินตนาการได้ว่าทุกคนจะทำการศึกษาแบบ double-blind ของความสามารถในการอ่านได้ แต่อาจเป็นไปได้ที่จะไม่รู้ตัว - ใช้นักเรียนที่ไม่รู้เกี่ยวกับหลักการที่ถูกศึกษาเป็นวิชาและผู้ที่ไม่ใช่โปรแกรมเมอร์

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

4
ในรหัสเทียมอะไร: = หมายถึงอะไร
ส่วนที่ชื่อว่าAlgorithmic Implementationมีรหัสต่อไปนี้: // Return RC low-pass filter output samples, given input samples, // time interval dt, and time constant RC function lowpass(real[0..n] x, real dt, real RC) var real[0..n] y var real α := dt / (RC + dt) y[0] := x[0] for i from 1 to n y[i] := …
25 algorithms 

8
Ruby on Rails ข้อเสียและ caveats [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา นี่ไม่ใช่การเปิดช่องทางสำหรับการทุบตี RoR - ซื่อสัตย์! ฉันเรียนรู้กรอบ Ruby และ Rails ดูเหมือนว่าพรีม่าจะดูเท่ห์และเป็นประสบการณ์ที่ยอดเยี่ยมเมื่อเทียบกับ PHP (อันที่จริงมันทำให้ฉันนึกถึงวันที่มีความสุขมากขึ้นด้วย C # และ. NET) อย่างไรก็ตามการเข้าสู่เรื่องนี้ฉันไม่มีประสบการณ์กับกรอบหรือภาษานี้และฉันอยากรู้อยากเห็นอะไรคือข้อเสียหรือสิ่งที่คุณต้องการให้คุณรู้เมื่อคุณเริ่มต้น (บางทีนี่อาจจะทำให้ชุมชนเป็น wiki?)

1
Redis vs Zookeeper
ดูเหมือนว่าโง่เมื่อเปรียบเทียบเซิร์ฟเวอร์ทั้งสองนี้เนื่องจากพวกเขามีความหมายที่แตกต่างกันมาก แต่ถ้าคุณคิดเกี่ยวกับมันพวกเขาสามารถทำสิ่งที่คล้ายกันมากมาย: เก็บข้อมูลการกำหนดค่าการล็อคแบบกระจายการเข้าคิว ฯลฯ ฉันมีตัวอย่างของRedisที่ฉันใช้กับสิ่งที่เกี่ยวข้องกับการผลิตบางอย่าง แต่ต้องการทำการซิงโครไนซ์อย่างง่ายระหว่างเซิร์ฟเวอร์ อะไรZookeeperให้ฉันที่ Redis จะไม่?

14
ฉันเป็นนักพัฒนาสัญญาและฉันคิดว่าฉันกำลังจะเมา [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัพเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน8 ปีที่ผ่านมา คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Software Engineering Stack Exchange อพยพ 8 ปีที่แล้ว ฉันทำสัญญาด้านการพัฒนา คุณสามารถพูดได้ว่าฉันเป็นนักพัฒนาสัญญาหรือไม่? การพิจารณาว่าฉันมีลูกค้าเพียงรายเดียวเท่านั้นที่ฉันจะบอกว่านั่นไม่ใช่ความจริง - เหมือนฉันทำงานด้านข้างและต้องการเงินเพิ่ม มันเริ่มต้นจากการเป็น "สร้างเว็บไซต์ของเราใหม่และเราจะจ่ายเงินให้คุณ $ 10k" โครงการประเภท เมื่อเสร็จสมบูรณ์ (เล็กน้อยเกินกำหนด แต่ไม่เกินงบประมาณ) บริษัท ว่าจ้างให้ฉันเป็นผู้รับเหมา "สนับสนุนระยะยาว" สัญญาจะดำเนินต่อไปตั้งแต่เดือนมีนาคมของปีนี้ซึ่งจะหมดอายุในวันที่ 31 ธันวาคมของปีนี้ - 10 เดือน การชำระเงินจะต้องจ่ายในวันที่ 30 ของทุกเดือนในจำนวนที่กำหนด ฉันได้ทำตามสัญญาจนครบทุกจุดแล้ว - ทำการบำรุงรักษาเซิร์ฟเวอร์เปลี่ยนแปลงแอพพลิเคชั่นและฐานข้อมูลทำการเปลี่ยนแปลงอย่างรวดเร็วและยิ่งไปกว่านั้น …
25 legal 

4
ในรูปแบบ MVC ควรจัดการตรวจสอบความถูกต้อง?
ฉันพยายามสร้างเว็บแอปพลิเคชันที่ฉันพัฒนาขึ้นเพื่อใช้รูปแบบ MVC แต่ฉันไม่แน่ใจว่าควรตรวจสอบความถูกต้องในรูปแบบหรือไม่ ตัวอย่างเช่นฉันกำลังตั้งค่าแบบจำลองของฉันแบบนี้: class AM_Products extends AM_Object { public function save( $new_data = array() ) { // Save code } } คำถามแรก:ดังนั้นฉันสงสัยว่าวิธีการบันทึกของฉันควรจะเรียกใช้ฟังก์ชันการตรวจสอบความถูกต้องใน $ new_data หรือสมมติว่าข้อมูลได้รับการตรวจสอบแล้ว? นอกจากนี้หากมีการตรวจสอบความถูกต้องฉันคิดว่ารหัสบางรุ่นเพื่อกำหนดประเภทข้อมูลจะมีลักษณะดังนี้: class AM_Products extends AM_Object { protected function init() // Called by __construct in AM_Object { // This would match up to the database …
25 architecture  mvc 

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

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