Câu hỏi về việc sử dụng từ 'porting' trong lập trình


11

Tôi hiện đang trong quá trình sửa đổi mã C ++ được viết cho hệ thống UNIX để nó hoạt động bằng cách biên dịch từ Visual Studio. Tôi đã phải thay đổi một số tên hàm tích hợp và tôi phải thay đổi cách xác định mảng động.

Câu hỏi của tôi là, tôi có thể nói rằng tôi đang 'chuyển' mã này từ UNIX sang Windows / Visual Studio hay là 'porting' chỉ được sử dụng khi thay đổi từ ngôn ngữ lập trình này sang ngôn ngữ lập trình khác (chuyển từ C ++ sang Java)?


1
Nhiều năm trước, tôi đã phải chuyển đổi phần mềm OS / 2 16 bit để chạy trên HĐH 32 bit. Trong dự án, mọi người gọi hoạt động này là "chuyển đến 32 bit". Vì vậy, nó thậm chí không có nghĩa là phải chuyển sang một hệ điều hành khác hoặc thậm chí phần cứng khác, chỉ là một môi trường khác.
Gort Robot

Câu trả lời:


15

Theo Wikipedia và kinh nghiệm cá nhân của riêng tôi, thuật ngữ "porting" dùng để chỉ phần mềm hoạt động cho một nền tảng mà nó không được dự định ban đầu. Quá trình này đôi khi đòi hỏi một sự thay đổi trong ngôn ngữ, nhưng không phải lúc nào cũng vậy.

Thuật ngữ này thường không được áp dụng cho quá trình điều chỉnh phần mềm để chạy với ít bộ nhớ hơn trên cùng CPU và hệ điều hành, cũng không được áp dụng cho việc viết lại mã nguồn bằng ngôn ngữ khác (tức là chuyển đổi ngôn ngữ hoặc dịch thuật).

Khi mọi người nói rằng các chương trình Java là "di động" hơn, điều đó có nghĩa là phải mất ít công việc bổ sung hơn để làm cho chúng tương thích với nhiều loại máy và hệ điều hành khác nhau.


7
Từ những gì tôi đã thấy, khi mọi người nói rằng các chương trình Java dễ mang theo hơn, điều đó có nghĩa là họ thiếu kinh nghiệm trong việc chuyển các chương trình Java và chỉ đơn giản dựa vào các mức bán hàng của Sun / Oracle. Theo kinh nghiệm của tôi, chuyển Java thực sự khó hơn một chút so với mức trung bình (phần lớn là do mọi người được khuyến khích tin rằng tính di động là tự động / được bảo đảm và do đó không đáng để chú ý hoặc làm việc).
Jerry Coffin

2
@JerryCoffin: Tôi chưa có nhiều kinh nghiệm ở mặt trận đó. Các chương trình Java mà tôi đã làm việc là tất cả các ứng dụng web hoạt động tốt như nhau trên các hộp Linux, Windows và Mac. Nhưng tôi đã nghe những câu chuyện từ các công ty có quản lý đã thúc đẩy chuyển đổi Java cho họ bất chấp sự phản đối của các nhà phát triển rằng họ sẽ không đạt được tính di động theo cách đó.
StriplingWar Warrior

4
@Jerry - không chắc trải nghiệm của bạn nằm ở đâu nhưng hầu như mọi chương trình Java mà tôi đã chuyển đều không quan trọng đối với cổng (điều này bao gồm cả GUI và ứng dụng phía máy chủ qua Mac / Win / Linux / Solaris). Sun và Oracle chính xác đến mức các ứng dụng Java dễ dàng chuyển hơn bất kỳ thứ gì khác - hầu hết thậm chí không cần biên dịch lại (điều này rất cần thiết ngay cả đối với C / C ++ di động được viết tốt, có lẽ là tốt thứ 2 về tính di động). Các vấn đề phổ biến nhất mà tôi thấy là khi các nhà phát triển đã mã hóa những thứ dành riêng cho nền tảng như "/" làm dấu tách thư mục, nhưng chúng khá dễ sửa ....
mikera

@Jerry Tôi đã lập trình trò chơi J2ME trong 5 năm. Khi tôi kết thúc, chúng tôi đã thực hiện 80 phiên bản của một trò chơi - mọi nền tảng đều có hiệu suất khác nhau, lỗi v.v ... Giải pháp? Họ đã không tạo ra các tiêu chuẩn cho các nền tảng, họ đã tạo ra thử nghiệm độc lập cho các ứng dụng J2ME. Không bao giờ lặp lại.
Sulthan

2

Người ta có thể chuyển phần mềm giữa các hệ điều hành. Người ta có thể chuyển phần mềm giữa các kiến ​​trúc bộ xử lý. Người ta có thể cần thực hiện một số hoạt động mà tôi thường liên kết với "porting" khi xử lý các thay đổi nền tảng chính (chuyển đổi PPC -> x86 của Apple hoặc Windows XP -> Windows Vista / 7/8). Tôi sẽ không coi việc chuyển đổi ngôn ngữ lập trình thành "porting". Giống như hoàn toàn viết lại.

Tôi đã chuyển phần mềm từ Linux sang Windows và ngược lại. Tôi đã chuyển phần mềm từ SPARC sang x86 (Tôi chỉ thích xử lý các vấn đề về endian) Và từ 32 bit đến 64 bit. Ngày nay tôi đang lập trình bằng Java ... Tôi không chắc từ "porting" có nhiều ý nghĩa trong Javaland hay không, có lẽ giữa các phiên bản JVM chính ....


0

Porting đang ngày càng trở nên phổ biến hơn trong phát triển trò chơi, vì các nhà xuất bản muốn bao quát càng nhiều nền tảng càng tốt (PC, Xbox, Playstation, v.v.). Như đã đề cập, porting có nghĩa là chuyển đổi chương trình gốc để nó hoạt động trong một hệ thống hoàn toàn khác. Nói chung các nhà sản xuất trò chơi chuyển đổi các trò chơi console sang PC.


Ngày càng có nhiều nhà phát triển đang dựa vào các công cụ phát triển đa nền tảng như Unity để họ không phải chuyển. Phát triển một cơ sở mã chạy trên nhiều nền tảng ngay từ đầu không giống như "porting", ngụ ý một cái gì đó được thiết kế và chạy trên một nền tảng, sau đó được sửa đổi để chạy trên nền tảng khác.
Gort Robot

Nghe có vẻ thú vị! Nó ảnh hưởng đến hiệu suất và khả năng mở rộng như thế nào? Một mối quan tâm rất có thể là thực tế là các máy chơi game vẫn chậm hơn khá nhiều so với hầu hết các PC cao cấp hơn - làm thế nào để Unity tiếp cận điều này mà không ảnh hưởng đến chất lượng tối đa trên các hệ thống nhanh hơn?
Juha Untinen
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.