คำถามติดแท็ก porting

2
ข้อกำหนดสิทธิการใช้งานเมื่อทำการย้ายซอฟต์แวร์ฟรีเป็นภาษาอื่น
ฉันกำลังสำรวจความคิดในการโอนย้ายชุดซอฟต์แวร์ที่มีอยู่ไปยังภาษาอื่น มันเผยแพร่ภายใต้Apache License 2.0และเผยแพร่ฟรี แต่มีความแตกต่างใหญ่ระหว่างการใช้ไลบรารีกับการสร้างสำเนา แน่นอนฉันจะให้เครดิตเต็มและซื่อสัตย์เกี่ยวกับที่มาและแน่นอนฉันไม่ได้วางแผนที่จะทำเงินจากพอร์ตเพียงใช้ในโครงการอื่น ๆ ฉันได้อ่านใบอนุญาตของหลักสูตรซึ่งพูดว่า: การให้สิทธิ์ใช้งานลิขสิทธิ์ ภายใต้ข้อกำหนดและเงื่อนไขของใบอนุญาตนี้ผู้ให้การสนับสนุนแต่ละรายในที่นี้จะให้สิทธิ์แก่คุณทั่วโลกไม่ผูกขาดไม่มีค่าใช้จ่ายไม่มีค่าลิขสิทธิ์ลิขสิทธิ์ที่เพิกถอนไม่ได้ในการทำซ้ำจัดเตรียมงานดัดแปลงที่เผยแพร่ต่อสาธารณชน ใบอนุญาตช่วงและแจกจ่ายงานและงานดัดแปลงดังกล่าวในรูปของแหล่งที่มาหรือวัตถุ [ ... ] แจกจ่าย คุณสามารถทำซ้ำและแจกจ่ายสำเนาของงานหรืองานดัดแปลงในสื่อใด ๆ ที่มีหรือไม่มีการดัดแปลงและในรูปของแหล่งที่มาหรือวัตถุโดยมีเงื่อนไขว่าคุณปฏิบัติตามเงื่อนไขต่อไปนี้: คุณต้องให้สำเนาของสัญญาอนุญาตนี้แก่ผู้รับผลงานหรืองานดัดแปลง และ b. คุณต้องทำให้ไฟล์ที่ถูกแก้ไขใด ๆ มีการแจ้งเตือนที่เด่นชัดโดยระบุว่าคุณเปลี่ยนแปลงไฟล์; และ ค. คุณต้องเก็บไว้ในรูปแบบแหล่งที่มาของงานอนุพันธ์ใด ๆ ที่คุณแจกจ่ายลิขสิทธิ์สิทธิบัตรเครื่องหมายการค้าและคำบอกแหล่งที่มาจากรูปแบบแหล่งที่มาของงานไม่รวมถึงประกาศที่ไม่เกี่ยวข้องกับส่วนใด ๆ ของงานอนุพันธ์; และ d หากงานมีไฟล์ข้อความ "ประกาศ" เป็นส่วนหนึ่งของการเผยแพร่งานดัดแปลงใด ๆ ที่คุณแจกจ่ายจะต้องมีสำเนาของประกาศที่มีลักษณะที่สามารถอ่านได้ที่อยู่ในไฟล์ประกาศดังกล่าว [... ] คุณอาจเพิ่มคำแถลงลิขสิทธิ์ของคุณเองในการแก้ไขของคุณและอาจให้ข้อกำหนดและเงื่อนไขสิทธิ์ใช้งานเพิ่มเติมหรือแตกต่างกันสำหรับการใช้การทำซ้ำหรือการแจกจ่ายการดัดแปลงของคุณหรือสำหรับงานดัดแปลงใด ๆ มิฉะนั้นงานจะเป็นไปตามเงื่อนไขที่ระบุไว้ในใบอนุญาตนี้ ซึ่งฟังดูเหมือนพอร์ต (ในฐานะ "งานดัดแปลง") ที่ได้รับอนุญาตทั้งหมดโดยมีหรือไม่ได้รับอนุญาตจากผู้เขียนหากฉันเก็บสำเนาใบอนุญาตอย่างขยันขันแข็งประกาศเกี่ยวกับลิขสิทธิ์ที่มีอยู่ ฯลฯ แต่นั่นไม่ได้หมายความว่าฉันเข้าใจความหมายทั้งหมดของมัน ตัวอย่างเช่นพอร์ตจำเป็นต้องแชร์ใบอนุญาตเดียวกันกับต้นฉบับหรือไม่ …

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

1
รักษา API กับการใช้สำนวนในพอร์ต
ฉันกำลังทำงานบนพอร์ตจาก Python ถึง Rust และพบกับโค้ดบางอย่างที่ไม่สามารถแสดงออกได้อย่างเป็นธรรมชาติใน Rust ตามที่ทำได้ใน Python กรณีนี้มีการใช้พารามิเตอร์เริ่มต้น: class Foo: def __init__(self, a="Hello"): self._a = a ในสนิมคุณอาจใช้สิ่งนี้โดยใช้เครื่องมือสร้าง: struct FooBuilder { a: &'static str, } struct Foo { _a: &'static str } impl FooBuilder { fn new() -> FooBuilder { FooBuilder { a: "Hello", } } fn change_a(self, new_a: &'static …

5
มีกรอบการทดสอบหน่วยผู้ไม่เชื่อเรื่องพระเจ้าหรือไม่? [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับ Software Engineering Stack Exchange ปิดให้บริการใน5 ปีที่ผ่านมา ฉันสงสัยในการเขียนรหัสการทำงานใหม่อยู่เสมอ - การย้ายรหัสจะไม่มีข้อยกเว้น อย่างไรก็ตามด้วยการถือกำเนิดของ TDD และการทดสอบอัตโนมัติมันมีความเหมาะสมมากกว่าในการเขียนและสร้างรหัสใหม่ ไม่มีใครรู้ว่ามีเครื่องมือ TDD ที่สามารถใช้ในการย้ายรหัสเก่าได้หรือไม่? เป็นการดีที่คุณสามารถทำต่อไปนี้: เขียนการทดสอบหน่วยผู้ไม่เชื่อเรื่องภาษาสำหรับรหัสเก่าที่ผ่าน (หรือล้มเหลวหากคุณพบข้อบกพร่อง!) เรียกใช้การทดสอบหน่วยในฐานรหัสอื่น ๆ ของคุณที่ล้มเหลว เขียนรหัสในภาษาใหม่ของคุณที่ผ่านการทดสอบโดยไม่ต้องดูรหัสเก่า อีกทางเลือกหนึ่งคือการแยกขั้นตอนที่ 1 เป็น "การทดสอบหน่วยการเขียนในภาษา 1" และ "การทดสอบหน่วยพอร์ตเป็นภาษา 2" ซึ่งเพิ่มความพยายามอย่างมากและจำเป็นต้องพิสูจน์ว่าฐานรหัสเก่ากำลังจะหยุดหลังจากนั้น พอร์ต (นั่นคือคุณจะไม่ได้รับประโยชน์จากการรวมอย่างต่อเนื่องในฐานรหัสนี้) แก้ไข: มันคุ้มที่จะสังเกตคำถามนี้ใน StackOverflow

1
เป็นไปได้หรือไม่ที่จะสร้างพอร์ตจากแอปพลิเคชัน C ++ ไปยัง Java ผ่าน LLVM
มันทำงานได้อย่างไรกับพอร์ตแอปพลิเคชัน C ++ ไปยัง Java bytecode โดยใช้ LLVM (ฉันเดา LLJVM) สิ่งที่เป็นอยู่ในปัจจุบันคือเรามีกระบวนการเขียนใน C ++ แต่ไคลเอนต์ใหม่ได้รับคำสั่งให้สามารถรันโปรแกรมในรูปแบบที่หลากหลายโดยใช้ Java Virtual Machine ที่ไม่มีรหัสพื้นเมือง (ไม่มี JNI) แนวคิดคือสามารถนำ jar ที่สร้างขึ้นมาและคัดลอกไปยังระบบอื่น (Linux, Win, 32 bits - 64 bits) และควรใช้งานได้ มองไปรอบ ๆ ดูเหมือนว่ามันเป็นไปได้ที่จะรวบรวมรหัส C ++ กับ LLVM IR และจากนั้นรหัสไปยัง java bytecode ไม่จำเป็นต้องใช้รหัสที่สร้างขึ้นเพื่อให้สามารถอ่านได้ ฉันมีการทดสอบเล็กน้อยกับสิ่งที่คล้ายกันโดยใช้ emscripten นี้ใช้รหัส C ++ และรวบรวมไปยัง JavaScript …
9 java  c++  porting 

3
เมื่อใดจะเป็นเวลาที่ดีที่สุดในการเริ่มย้ายรหัสของโครงการของตัวเอง [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว หากฉันมีโครงการการเขียนโปรแกรมส่วนบุคคลที่ฉันวางแผนที่จะพอร์ตในภาษาอื่นเพื่อให้สามารถทำงานในสภาพแวดล้อมอื่น ๆ มันจะเหมาะกว่าที่จะเริ่มการย้ายรหัสโดยเร็วที่สุดและทำงานกับสองเวอร์ชันพร้อมกันหรือไม่ หรือว่าจะทำให้การผลิตของฉันช้าลงมากและฉันควรจะรอจนกว่าฉันจะทำส่วนประกอบสำคัญของโปรแกรมเสร็จหรือไม่
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.