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

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

2
คุณจะทดสอบหน่วย \ ใช้วิธี TDD สำหรับโครงการ ETL และการรายงานได้อย่างไร
โครงการ ETL เป็นโครงการที่สร้างขึ้นโดยใช้เครื่องมือ ETL (ดึงข้อมูล - แปลง - โหลด) เช่น SSIS, PowerCenter เป็นต้น โดยทั่วไปจะเกี่ยวข้องกับการอ่านข้อมูลจากแหล่งภายนอกโหลดไปยังฐานข้อมูลการแสดงการแปลงและโหลดไปยังฐานข้อมูลสุดท้าย ตัวอย่างง่ายๆคือการใช้ SSIS เพื่ออ่านไฟล์ excel ที่เตรียมไว้โดยครูผู้สอนโดยใช้ SSIS และโหลดลงในฐานข้อมูล จากนั้นเขียนกระบวนงานที่เก็บไว้หรือแพ็คเกจ SSIS เพิ่มเติมเพื่อคำนวณคะแนนของนักเรียนแต่ละคนและโหลดข้อมูลนั้นลงใน data mart \ warehouse จากนั้นคุณสร้างกระบวนงานที่เก็บไว้ด้านบนของตลาดเพื่อสร้างผลลัพธ์ที่ใช้โดยเครื่องมือการรายงาน (SSRS \ Excel \ etc) เพื่อสร้างการแสดงภาพประกอบเพลง ฉันพยายามที่จะเข้าใจวิธีการใช้ TDD และการทดสอบหน่วยที่เหมาะสมในสถานการณ์นี้ การทดสอบสำหรับ ETL นั้นส่วนใหญ่เกี่ยวกับการทำให้มั่นใจว่าข้อมูลที่โหลดในตาราง staging ตรงกันคือเซ็ตย่อยที่ถูกต้องของข้อมูลจากแหล่งที่มา ดังนั้นการนำการทดสอบไปใช้จะนำไปสู่การใช้ ETL รุ่นมินิ ผลลัพธ์ของรายงาน SP ขึ้นอยู่กับข้อมูลในตารางด้วยตนเองดังนั้นจึงไม่มีชุดข้อมูลเอาต์พุตที่เสถียรโดยไม่ต้องมีฝันร้ายในการบำรุงรักษาแม้ว่าคุณจะสร้างฐานข้อมูลที่มีข้อมูลการทดสอบแบบสครับ ตัวอย่าง: …
12 unit-testing  sql  tdd 

1
การย้ายแอปพลิเคชัน Grails ไปยัง Scala Play / Spray
เรามีเว็บแอปพลิเคชัน Grails ขนาดปานกลางโดยใช้ GORM / Hibernate บน PostgreSQL และ GSPs ที่ให้บริการ HTML และยังมี REST API สองสามตัว เรากำลังสร้างมาตรฐานให้กับ Scala และต้องการโยกย้ายแอปพลิเคชันนี้ไปยัง Play หรือ Spray ด้วย Slick เพื่อเข้าถึงฐานข้อมูลที่มีอยู่ ปัจจุบันว่องไวใช้สำหรับการรับรองความถูกต้อง / การอนุญาตและผู้ใช้ / บทบาท / ฯลฯ การจัดการ อะไรคือแนวทางที่เราสามารถทำได้เพื่อทำขั้นตอนการย้ายถิ่นฐานอย่างเป็นขั้นเป็นตอนหลีกเลี่ยงการย้ายถิ่นฐานครั้งใหญ่? ทั้งสองภาษาเป็น JVM มีวิธีใดที่จะหลีกเลี่ยงไม่ให้มันเหมือนแอปพลิเคชันเว็บแยกต่างหากที่ทำงานบนพอร์ตที่แยกกันที่ความยาวแขน

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

4
ข้อกำหนดของวลีเกี่ยวกับการเข้ารหัสชื่อไฟล์
ฉันอยู่ในขั้นตอนการเขียนข้อกำหนดเฉพาะและฉันมีปัญหาในการใช้ถ้อยคำเป็นส่วนหนึ่งของข้อกำหนด สถานการณ์จำลอง: เราดาวน์โหลดไฟล์จากเว็บไซต์และไฟล์ที่ดาวน์โหลดต้องแนบกับรายการในเครื่องมือ CM ที่เรามี ไฟล์ที่ดาวน์โหลดมีชื่อซึ่งสามารถเป็น ASCII, ISO-8859-1, ญี่ปุ่นและอื่น ๆ ในถ้อยคำด้านล่าง "non-ASCII" ครอบคลุมทุกสถานการณ์หรือไม่? ชื่อไฟล์ที่ดาวน์โหลดอาจมีอักขระที่ไม่ใช่ ASCII และการประมวลผลจะไม่ทำให้แอปพลิเคชันเสียหาย

2
ทำไม 'zip' ถึงไม่สนใจหางที่ห้อยอยู่ของคอลเลกชัน?
C # , Scala, Haskell, Lisp และPythonมีzipพฤติกรรมเหมือนกัน: หากคอลเล็กชันหนึ่งยาวกว่าหางจะถูกละเว้นอย่างเงียบ ๆ อาจเป็นข้อยกเว้นได้เช่นกัน แต่ฉันไม่เคยได้ยินภาษาใด ๆ ที่ใช้วิธีการนี้ ปริศนานี้ฉัน ไม่มีใครรู้เหตุผลว่าทำไมzipถูกออกแบบมาอย่างนั้น? ฉันเดาภาษาใหม่เพราะมันเป็นภาษาอื่นทำแบบนี้ แต่อะไรคือเหตุผลหลัก ฉันกำลังถามคำถามข้อเท็จจริงเชิงประวัติศาสตร์ที่นี่ไม่ใช่ว่ามีคนชอบหรือถ้าเป็นแนวทางที่ดีหรือไม่ดี อัปเดต : ถ้าฉันถูกถามว่าจะทำอย่างไรฉันจะพูดว่า - โยนข้อยกเว้นคล้าย ๆ กับการจัดทำดัชนีอาเรย์ (แม้ว่าภาษา "โบราณ" ทุกชนิดมีเวทมนตร์ทุกชนิดวิธีจัดการกับดัชนีขอบเขต UB ขยายอาร์เรย์ ฯลฯ )

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

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

1
เข้าสู่ระบบไฟล์หรือตารางฐานข้อมูล?
ฉันกำลังพัฒนาเว็บแอปพลิเคชันที่ใช้ MS SQL สำหรับข้อมูลต่าง ๆ : รวมถึงผู้ใช้บัญชีผู้ใช้ใบอนุญาตผู้ใช้ราคาใบอนุญาตใบแจ้งหนี้ ฉันต้องการบันทึกการใช้งานแบบเรียลไทม์ของระบบของผู้ใช้และใช้สำหรับการเรียกเก็บเงินรายเดือน: เช่นบันทึกเมื่อใดก็ตามที่ผู้ใช้ได้รับหน้า / URL ที่เฉพาะเจาะจงและผู้ใช้ที่เรียกเก็บเงินเมื่อสิ้นเดือนตามจำนวนหน้าที่ดึงข้อมูล ฉันควรเขียนบันทึกเหตุการณ์เหล่านี้ลงในตารางในฐานข้อมูล MS SQL ของฉันหรือไม่ ฉันควรเขียนเหตุการณ์บันทึกเหล่านี้ลงในไฟล์บันทึกแบบต่อท้ายที่ไม่ใช่ SQL เท่านั้นหรือไม่ ฉันควรเขียนบันทึกเหตุการณ์เหล่านี้ลงในไฟล์บันทึกที่แตกต่างกันสำหรับผู้ใช้แต่ละคนหรือไม่ นี่ไม่ใช่เว็บไซต์ที่มีปริมาณมากโดยเฉพาะตัวอย่างเช่นมีผู้ใช้สูงสุด 10,000 คนต่อการทำกิจกรรมเฉลี่ย 5 เหตุการณ์ต่อวัน => 50,000 กิจกรรม / วัน = 30 กิจกรรม / นาที = 18,000,000 กิจกรรม / ปี ฉันถามเพราะดูเหมือนว่าตัวเลือกจะทำงานได้และฉันไม่เห็นว่ามีข้อได้เปรียบที่ชัดเจน ข้อมูลที่เกี่ยวข้องกับเหตุการณ์ที่เรียกเก็บเงินได้นั้นง่ายมากเช่น: ID ผู้ใช้ (ความสัมพันธ์กับ foreign key ไปยังตารางผู้ใช้ใน SQL) วันและเวลา …

2
การจัดเก็บองค์ประกอบ 5,000 รายการในฝั่งไคลเอ็นต์ในเว็บแอปพลิเคชัน [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ฉันเพิ่งได้รับการสัมภาษณ์ทางโทรศัพท์สำหรับนักพัฒนา ASP.Net หลังจากสิ่งเบื้องต้นเบื้องต้นผู้สัมภาษณ์ถามคำถามทางเทคนิคแรก: "คุณจะจัดเก็บองค์ประกอบ 5000 รายการในฝั่งไคลเอ็นต์สำหรับผู้ใช้แต่ละรายในเว็บแอปพลิเคชันได้อย่างไร" คำตอบของฉันเริ่มต้นด้วย ขนาดเฉลี่ยของแต่ละองค์ประกอบคืออะไร? เราจำเป็นต้องจัดเก็บข้อมูลจำนวนมากนี้ในฝั่งไคลเอ็นต์หรือไม่? เราไม่สามารถเก็บที่ในฐานข้อมูลและการเชื่อมโยงนี้เพื่อเซสชันของผู้ใช้ / รหัสลูกค้าอย่างใด คำตอบของเขาคือ "ไม่คุณบอกฉันว่าคุณจะเก็บไว้ในฝั่งไคลเอ็นต์อย่างไรโดยพิจารณาว่าแต่ละองค์ประกอบเป็นเร็กคอร์ดที่มีประมาณ 8 ฟิลด์รวมถึง int / string แถวตารางปกติ" ฉันพูดว่า "อาจเก็บไว้ในเซสชัน แต่เนื่องจากเซสชันถูกเก็บรักษาไว้ที่ฝั่งเซิร์ฟเวอร์สำหรับผู้ใช้แต่ละรายอาจมีราคาแพงหรือตัวเลือกอื่นคือเก็บข้อมูลจำนวนมากในคุกกี้" ฉันยังบอกด้วยว่าฉันไม่ ตรวจสอบว่าข้อมูลจำนวนมากสามารถเก็บไว้ในคุกกี้ได้หรือไม่ ฉันพูดถึงตัวเลือกที่เก็บ HTML5 อยู่ที่นั่น แต่ฉันไม่ได้ทำงานด้วย เพราะมันอยู่บนพื้นฐานของข้อมูล SQLite ก็สามารถเก็บข้อมูลมากที่ในทางทฤษฎี นั่นคือสิ่งที่ผู้สัมภาษณ์พูดอย่างเหน็บแนมดังนั้นคุณมีประสบการณ์ 3 ปีในการพัฒนาเว็บและยุติการสัมภาษณ์ ฉันสงสัยว่าฉันทำอะไรผิด หรือมีบางสิ่งพื้นฐานจริง ๆ ที่ฉันขาดไปเกี่ยวกับการจัดเก็บข้อมูลทางฝั่งไคลเอ็นต์

5
อาร์เรย์ที่ไม่ต่อเนื่องกันมีประสิทธิภาพหรือไม่
ใน C # เมื่อผู้ใช้สร้างList<byte>และเพิ่มไบต์มันมีโอกาสที่จะหมดพื้นที่และจำเป็นต้องจัดสรรพื้นที่เพิ่มเติม มันจัดสรรสองเท่า (หรือตัวคูณอื่น ๆ ) ขนาดของอาร์เรย์ก่อนหน้าคัดลอกไบต์ไปและทิ้งการอ้างอิงไปยังอาร์เรย์เก่า ฉันรู้ว่ารายการเติบโตแบบทวีคูณเพราะการจัดสรรแต่ละครั้งมีราคาแพงและนี่เป็นการ จำกัด การO(log n)จัดสรรโดยที่การเพิ่ม10รายการพิเศษทุกครั้งจะส่งผลให้เกิดการO(n)จัดสรร อย่างไรก็ตามสำหรับอาเรย์ขนาดใหญ่อาจมีพื้นที่ว่างจำนวนมากบางทีเกือบครึ่งอาเรย์ เพื่อลดหน่วยความจำฉันเขียนคลาสที่คล้ายกันNonContiguousArrayListซึ่งใช้List<byte>เป็นแบ็คอัพสโตร์หากมีน้อยกว่า 4MB ในรายการจากนั้นก็จะจัดสรรอาร์เรย์ไบต์ 4MB เพิ่มเติมตามNonContiguousArrayListขนาดที่เพิ่มขึ้น ต่างจากList<byte>อาร์เรย์เหล่านี้ที่ไม่ต่อเนื่องกันดังนั้นจึงไม่มีการคัดลอกข้อมูลรอบ ๆ เพียงแค่จัดสรร 4M เพิ่มเติม เมื่อรายการถูกค้นหาดัชนีจะถูกหารด้วย 4M เพื่อรับดัชนีของอาร์เรย์ที่มีรายการจากนั้นโมดูโล 4M เพื่อรับดัชนีภายในอาร์เรย์ คุณช่วยชี้ปัญหาเกี่ยวกับวิธีนี้ได้ไหม? นี่คือรายการของฉัน: อาร์เรย์ที่ไม่ต่อเนื่องกันไม่มีตำแหน่งแคชซึ่งส่งผลให้ประสิทธิภาพไม่ดี อย่างไรก็ตามขนาดบล็อก 4M ดูเหมือนว่าจะมีพื้นที่เพียงพอสำหรับการแคชที่ดี การเข้าถึงไอเท็มนั้นไม่ง่ายอย่างนั้นมีระดับทางอ้อมเพิ่มขึ้น สิ่งนี้จะได้รับการปรับให้เหมาะสมหรือไม่ มันจะทำให้เกิดปัญหาแคชหรือไม่ เนื่องจากมีการเติบโตเป็นเส้นตรงหลังจากขีด จำกัด ของการตี 4M คุณจึงสามารถจัดสรรได้มากกว่าปกติ (เช่นการจัดสรรสูงสุด 250 หน่วยสำหรับหน่วยความจำ 1GB) ไม่มีหน่วยความจำเพิ่มเติมถูกคัดลอกหลังจาก 4M แต่ฉันไม่แน่ใจว่าการจัดสรรเพิ่มเติมมีราคาแพงกว่าการคัดลอกหน่วยความจำขนาดใหญ่
12 c# 

2
ฉันจะจัดการกับความล้มเหลวของคนตัดไม้ได้อย่างไร
ในหลายแอปพลิเคชันของ บริษัท เราใช้ตัวบันทึกที่กำหนดเอง มันค่อนข้างแข็งแกร่งแม้ว่าเราอาจแทนที่ด้วยอะไรบางอย่างเช่น NLog ในอนาคต หนึ่งในหน้าที่ของคนตัดไม้คือการบันทึกข้อยกเว้นที่พบในแอปพลิเคชัน สิ่งหนึ่งที่ฉันกังวลอยู่เสมอคือการจัดการข้อยกเว้นภายในตัวบันทึกช่วยให้เกิดความล้มเหลวเงียบ นั่นคือถ้าบันทึกไม่ได้ถูกเขียนสำหรับข้อยกเว้นที่กำหนด (เนื่องจากข้อผิดพลาดในตัวบันทึก) ฉันจะจัดการกับมันอย่างไรและ (อย่างใด) บันทึกข้อยกเว้นในตัวบันทึกเอง ? สมมติว่าฟังก์ชัน WriteLog ส่งข้อยกเว้น ฉันควรลองเรียกใช้ฟังก์ชันบางครั้งหรือจนกว่าจะมีข้อผิดพลาดเกิดขึ้น? ฉันควรลองเขียนข้อยกเว้นที่โยนด้วยตัวบันทึก (ซึ่งน่าจะส่งผลให้เกิดข้อยกเว้นลงไปหมด ... ) ฉันโชคดีที่ไม่พบสถานการณ์นี้ยกเว้นตอนที่เราใช้งานตัวบันทึกที่กำหนดเองเป็นครั้งแรก ในทางกลับกันฉันไม่มีทางรู้ได้เลยว่าคนตัดไม้ล้มเหลวในการบันทึกข้อยกเว้นแอปพลิเคชัน (เนื่องจากข้อยกเว้นของตัวเอง) ฉันได้ลองค้นหาทางออนไลน์และในเว็บไซต์ SE บางแห่ง แต่มันก็ยังไม่เกิดผลดีนักเนื่องจากการโพสต์ทั้งหมดมีข้อผิดพลาดในตัวบันทึก (แต่ไม่ใช่ข้อยกเว้นที่เป็นไปได้และวิธีการบันทึก) หรือข้อยกเว้นภายนอกตัวบันทึก

4
ตัวอย่างก่อนหน้านี้สำหรับเหตุผลที่ Prolog ได้รับความนิยมน้อยกว่า SQL ในการเขียนโปรแกรมเชิงซ้อน [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา มันดูเหมือนว่าจะเขียนบอกเล่า SQLเป็นที่นิยมมากในการเขียนโปรแกรมจำเป็น อย่างไรก็ตามมันก็ดูเหมือนว่าการเขียนDeclarative Prologสามารถบันทึกความซับซ้อนมากมาย แต่นี่ไม่ใช่เรื่องธรรมดา มีแบบอย่างในอดีตสำหรับการตั้งค่าที่ชัดเจนของ SQL มากกว่า Prolog นี้หรือไม่? หากเหตุผลคือขาดการสนับสนุนดั้งเดิมโดยภาษาที่จำเป็นแล้วเป็นไปได้ไหมที่จะตอบว่าทำไมผู้สร้างภาษาไม่พบว่ามีประโยชน์ในการสนับสนุนโดยกำเนิดPrologตั้งแต่แรก? เพื่อให้ตัวอย่างเฉพาะ: ตัวอย่างที่ 1 การ ประเมินแอปพลิเคชันสินเชื่ออาจเป็นโค้ดเพียงไม่กี่บรรทัดPrologเช่นSELECT/JOINข้อความค้นหาที่เป็นโค้ดเพียงไม่กี่บรรทัดSQLแต่ดูเหมือนว่าข้อดีจะไม่ชัดเจนเท่าที่SQLควร ตัวอย่างที่ 2 นี่คือปัญหาตัวอย่างอื่นและวิธีแก้ไขใน Prolog โปรแกรมตรรกะข้อ จำกัด ต่อไปนี้แสดงชุดข้อมูลที่ง่ายของประวัติของ john ในฐานะครู: teaches(john, hardware, T) :- 1990 ≤ T, T < 1999. teaches(john, software, T) :- 1999 ≤ T, T …

1
ทำส่วนขยาย C เด่นใด ๆ รวมถึงประเภทจำนวนเต็มซึ่งพฤติกรรมไม่ขึ้นอยู่กับขนาดของเครื่องคำ
คุณลักษณะที่น่าสนใจของ C เมื่อเทียบกับภาษาอื่น ๆ คือประเภทข้อมูลจำนวนมากนั้นขึ้นอยู่กับขนาดของคำของสถาปัตยกรรมเป้าหมายแทนที่จะถูกระบุในเงื่อนไขแบบสัมบูรณ์ แม้ว่าสิ่งนี้จะช่วยให้ภาษาสามารถใช้ในการเขียนโค้ดบนเครื่องที่อาจมีปัญหากับบางประเภท แต่ก็เป็นการยากที่จะออกแบบรหัสซึ่งจะทำงานอย่างต่อเนื่องในสถาปัตยกรรมที่แตกต่างกัน พิจารณารหัส: uint16_t ffff16 = 0xFFFF; int64_t who_knows = ffff16 * ffff16; ในสถาปัตยกรรมที่intมี 16 บิต (ยังคงเป็นจริงของไมโครคอนโทรลเลอร์ขนาดเล็กจำนวนมาก) รหัสนี้จะกำหนดค่า 1 โดยใช้พฤติกรรมที่กำหนดไว้อย่างดี บนเครื่องที่intมี 64 บิตก็จะกำหนดค่า 4294836225 อีกครั้งโดยใช้พฤติกรรมที่กำหนดไว้อย่างดี บนเครื่องที่intมี 32 บิตก็น่าจะกำหนดค่า -131071 (ฉันไม่ทราบว่าจะเป็นพฤติกรรมการใช้งานที่กำหนดหรือไม่ได้กำหนด) แม้ว่าโค้ดจะไม่ใช้สิ่งใดนอกจากสิ่งที่ควรจะเป็นในนาม "ประเภทขนาดคงที่" มาตรฐานจะกำหนดให้คอมไพเลอร์สองแบบที่ใช้กันในวันนี้จะให้ผลลัพธ์ที่แตกต่างกันสองแบบและคอมไพเลอร์ยอดนิยมจำนวนมากในปัจจุบัน ตัวอย่างนี้เป็นการประดิษฐ์ที่ฉันไม่คาดหวังในรหัสโลกแห่งความจริงเพื่อกำหนดผลิตภัณฑ์ของค่า 16 บิตสองค่าโดยตรงกับค่า 64- บิต แต่มันถูกเลือกเป็นตัวอย่างสั้น ๆ เพื่อแสดงจำนวนเต็มสามวิธี การส่งเสริมการขายอาจโต้ตอบกับประเภทที่ไม่ได้ลงชื่อขนาดคงที่ มีสถานการณ์ในโลกจริงบางอย่างที่จำเป็นสำหรับการคำนวณทางคณิตศาสตร์ในประเภทที่ไม่ได้ลงนามตามกฎของเลขคณิตเลขจำนวนเต็มทางคณิตศาสตร์อื่น ๆ ที่จำเป็นที่จะต้องดำเนินการตามกฎของเลขคณิตแบบแยกส่วนและบางอย่างที่มันไม่จริง …

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

5
เหตุใดโปรแกรมการทำงานจึงมีความสัมพันธ์ระหว่างความสำเร็จในการรวบรวมและความถูกต้อง
ฉันมีแนวโน้มที่จะเขียนโปรแกรมการทำงานเป็นเวลา 4 ปีแล้วตั้งแต่ฉันเริ่มทำงานกับ LINQ เป็นครั้งแรก เมื่อเร็ว ๆ นี้ฉันเขียนโค้ด C # ที่ใช้งานได้จริงและฉันสังเกตเห็นสิ่งแรกที่ฉันได้อ่านเกี่ยวกับโปรแกรมที่ใช้งานได้ซึ่งเมื่อพวกเขารวบรวมพวกเขามักจะถูกต้อง ฉันพยายามใส่นิ้วว่าทำไมกรณีนี้ แต่ฉันยังไม่ประสบความสำเร็จ สิ่งหนึ่งที่เดาได้คือในการใช้หลักการ OO คุณมี "abstraction layer" ที่ไม่ได้อยู่ในโปรแกรมการทำงานและ layer abstraction นี้ทำให้สัญญาระหว่างวัตถุถูกต้องในขณะที่การนำไปใช้นั้นไม่ถูกต้อง มีใครคิดเกี่ยวกับเรื่องนี้และเกิดขึ้นด้วยเหตุผลนามธรรมพื้นฐานสำหรับความสัมพันธ์ระหว่างความสำเร็จในการรวบรวมและความถูกต้องของโปรแกรมในการเขียนโปรแกรมการทำงาน?

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