Luận án tiến sĩ: Tự động sinh mã chương trình cho tính toán khoa học - Zhe Fu
Luận án tiến sĩ về sinh tự động chương trình cho tính toán khoa học. Phát triển phương pháp tái sử dụng mã trong Fortran thông qua lập trình chung.
Năm xuất bản
Số trang
162
Thời gian đọc
25 phút
Lượt xem
1
Lượt tải
0
Phí lưu trữ
50 Point
Tổng quan nhanh
- Chủ đề:
- 1. Tự Động Sinh Mã Cho Tính Toán Khoa Học
- Số trang:
- 162 trang
- Trường:
- Oregon State University
- Chuyên ngành:
- Computer Science
- Tác giả:
- Zhe Fu
- Năm:
- 2006
Tóm tắt nội dung luận án
I. Tự Động Sinh Mã Cho Tính Toán Khoa Học
Tự động sinh mã chương trình (automatic program generation) giải quyết vấn đề tái sử dụng code trong tính toán khoa học (scientific computing). Fortran là ngôn ngữ phổ biến trong nhiều lĩnh vực khoa học. Tuy nhiên, Fortran thiếu hỗ trợ lập trình generic (generic programming). Vấn đề này tạo ra thách thức lớn cho việc phát triển phần mềm toán học (mathematical software). Giải pháp nằm ở kỹ thuật sinh mã tự động. Hai phương pháp chính được phát triển. Phương pháp đầu tiên tạo trình sinh mã cho đặc tả dựa trên phương trình. Phương pháp thứ hai mở rộng Fortran với khả năng lập trình generic. Cả hai đều nhắm đến hiệu suất cao (high-performance computing). Ứng dụng thực tế bao gồm mô hình hóa đại dương nghịch đảo. Hệ thống này chuyển đổi đặc tả generic thành mã Fortran hiệu quả. Một hệ thống kiểu (type system) phát hiện lỗi ngay trong đặc tả. Parametric Fortran cho phép tham số hóa các cấu trúc Fortran tùy ý. Công nghệ này hỗ trợ định nghĩa hàm generic và loại bỏ code trùng lặp.
1.1. Vấn Đề Tái Sử Dụng Code
Vấn đề tái sử dụng code là thách thức phổ biến trong kỹ thuật phần mềm khoa học. Fortran không cung cấp cơ chế generic programming hiệu quả. Các nhà khoa học thường viết lại code tương tự nhiều lần. Điều này gây lãng phí thời gian và tăng nguy cơ lỗi. Computational science đòi hỏi độ chính xác cao. Mỗi phiên bản code cần bảo trì riêng. Thiếu tính generic làm giảm năng suất phát triển. Numerical methods phức tạp khó tái sử dụng.
1.2. Giải Pháp Sinh Mã Tự Động
Program synthesis cung cấp giải pháp cho vấn đề tái sử dụng. Kỹ thuật này tự động tạo code từ đặc tả cấp cao. Domain-specific languages (DSL) đơn giản hóa việc mô tả thuật toán. Trình biên dịch chuyển đổi DSL thành Fortran tối ưu. Symbolic computation hỗ trợ xử lý biểu thức toán học. Automatic programming giảm công việc thủ công. Code generation đảm bảo tính nhất quán.
1.3. Lợi Ích Của Phương Pháp
Sinh mã tự động tăng năng suất đáng kể. Các nhà khoa học tập trung vào logic thuật toán thay vì chi tiết cài đặt. Hệ thống kiểu phát hiện lỗi sớm trong quá trình phát triển. Code được sinh ra có hiệu suất cao tương đương code viết tay. Khả năng bảo trì được cải thiện nhờ đặc tả rõ ràng. Mathematical software trở nên linh hoạt và mở rộng dễ dàng.
II. Forge Ngôn Ngữ Chuyên Biệt Cho Mô Hình Hóa
Forge là domain-specific language được thiết kế cho mô hình hóa đại dương nghịch đảo (inverse ocean modeling). Ngôn ngữ này cho phép đặc tả generic trong nhiều khía cạnh. Các chiều của mảng (array dimensions) có thể tham số hóa. Danh sách tham số linh hoạt theo ngữ cảnh. Các subroutine được gọi có thể thay đổi. Forge cung cấp cú pháp dựa trên phương trình toán học. Đặc tả gần với ký hiệu toán học truyền thống. Trình biên dịch Forge chuyển đổi đặc tả thành mã Fortran. Quá trình này hoàn toàn tự động. Code được sinh ra tối ưu cho hiệu suất. Hệ thống kiểu của Forge phát hiện lỗi trong đặc tả. Kiểm tra kiểu diễn ra trước khi sinh mã. Điều này đảm bảo tính đúng đắn của chương trình. Forge đã được áp dụng thành công trong các công cụ IOM thực tế. Markovian time convolution là ví dụ điển hình. Bell-shaped space convolution cũng được biểu diễn hiệu quả.
2.1. Kiến Trúc Forge
Forge bao gồm ba thành phần chính: ngôn ngữ đặc tả, trình biên dịch và hệ thống kiểu. Ngôn ngữ đặc tả sử dụng ký hiệu toán học tự nhiên. Symbolic computation xử lý các biểu thức phức tạp. Trình biên dịch thực hiện nhiều giai đoạn tối ưu hóa. Code generation tạo ra Fortran code hiệu quả. Hệ thống kiểu đảm bảo an toàn về kiểu dữ liệu.
2.2. Đặc Tả Công Cụ IOM
Markovian time convolution được biểu diễn ngắn gọn trong Forge. Đặc tả bao gồm interfaces và dependent indices. Interfaces định nghĩa giao diện với model. Dependent indices xử lý quan hệ phụ thuộc giữa các chiều. Bell-shaped space convolution yêu cầu xử lý không gian phức tạp. Forge hỗ trợ đầy đủ các phép toán cần thiết. Numerical methods được mã hóa một cách trực quan.
2.3. Hệ Thống Kiểu Forge
Hệ thống kiểu kiểm tra tính nhất quán của đặc tả. Typing rules đảm bảo các phép toán hợp lệ. Kiểm tra chiều mảng ngăn chặn lỗi runtime. Type system phát hiện lỗi trước khi biên dịch. Điều này tiết kiệm thời gian debug đáng kể. Program synthesis an toàn hơn nhờ kiểm tra kiểu nghiêm ngặt.
III. Parametric Fortran Mở Rộng Lập Trình Generic
Parametric Fortran mở rộng Fortran với khả năng lập trình generic đầy đủ. Ngôn ngữ này cho phép tham số hóa các cấu trúc Fortran tùy ý. Template chương trình được định nghĩa với tham số linh hoạt. Các tham số có thể là giá trị, kiểu dữ liệu hoặc code. Quá trình translation chuyển template thành chương trình Fortran cụ thể. Giá trị tham số hướng dẫn quá trình sinh mã. Parametric Fortran đặc biệt hữu ích trong scientific computing. Ứng dụng bao gồm định nghĩa hàm generic cho mảng đa chiều. Array addition hoạt động với số chiều tùy ý. Generic array slicing linh hoạt với các pattern khác nhau. Loại bỏ code trùng lặp giảm kích thước chương trình. Automatic differentiation được thực hiện hiệu quả. Hệ thống IOM generic được cài đặt thành công bằng Parametric Fortran. High-performance computing được duy trì nhờ tối ưu hóa thông minh. Code được sinh ra có chất lượng tương đương code viết tay.
3.1. Cơ Chế Tham Số Hóa
Parametric Fortran cho phép tham số hóa nhiều cấp độ. Số chiều mảng có thể là tham số. Kích thước cụ thể của mảng cũng tham số hóa được. Thậm chí cấu trúc control flow có thể tham số. Generic programming trở nên tự nhiên trong Fortran. Program templates tái sử dụng cho nhiều trường hợp. Domain-specific languages dễ xây dựng trên nền tảng này.
3.2. Ứng Dụng Thực Tế
Array addition generic hoạt động với 1D, 2D, 3D và nhiều chiều hơn. Một định nghĩa duy nhất phục vụ tất cả trường hợp. Array slicing hỗ trợ các pattern phức tạp. Code trùng lặp được loại bỏ tự động. Automatic differentiation sinh ra đạo hàm chính xác. Mathematical software trở nên ngắn gọn và dễ bảo trì.
3.3. Hiệu Suất Và Tối Ưu
Code generation trong Parametric Fortran được tối ưu hóa cao. Compiler thực hiện inline expansion khi cần thiết. Loop unrolling áp dụng cho các trường hợp cụ thể. High-performance computing không bị ảnh hưởng. Numerical methods duy trì độ chính xác. Computational science hưởng lợi từ cả tính generic và hiệu suất.
IV. Hệ Thống Mô Hình Hóa Đại Dương Nghịch Đảo
Hệ thống Inverse Ocean Modeling (IOM) áp dụng kỹ thuật sinh mã tự động. Mục tiêu là tạo công cụ generic cho mô hình hóa đại dương. Markovian time convolution xử lý phụ thuộc thời gian. Phương pháp này mô hình hóa quá trình ngẫu nhiên Markov. Bell-shaped space convolution xử lý phân bố không gian. Hàm bell-shaped mô tả sự lan truyền trong không gian. Cả hai phương pháp đều được biểu diễn trong Forge. Đặc tả ngắn gọn nhưng đầy đủ chức năng. Trình biên dịch sinh mã Fortran tối ưu cho từng model cụ thể. Giao diện đồ họa (GUI) đơn giản hóa việc sử dụng hệ thống. Người dùng không cần hiểu chi tiết cài đặt. Các nhà khoa học tập trung vào vấn đề khoa học. IOM system đã được triển khai thành công trong nghiên cứu thực tế. Scientific computing hưởng lợi từ tính linh hoạt. Numerical methods phức tạp trở nên dễ tiếp cận. Mathematical software chất lượng cao được tạo ra nhanh chóng.
4.1. Markovian Time Convolution
Markovian time convolution mô hình hóa phụ thuộc thời gian trong đại dương. Quá trình Markov giả định trạng thái tương lai chỉ phụ thuộc trạng thái hiện tại. Convolution tích hợp ảnh hưởng qua thời gian. Numerical methods tính toán tích phân này hiệu quả. Forge biểu diễn phương pháp bằng đặc tả toán học. Code generation tạo implementation tối ưu.
4.2. Bell Shaped Space Convolution
Bell-shaped space convolution xử lý phân bố không gian. Hàm bell-shaped (hình chuông) mô tả sự lan truyền. Convolution không gian tính toán ảnh hưởng từ các vị trí lân cận. Computational science yêu cầu độ chính xác cao trong tính toán này. Symbolic computation xử lý biểu thức phức tạp. High-performance computing đảm bảo tốc độ tính toán.
4.3. Giao Diện Người Dùng
GUI của IOM system đơn giản hóa quy trình làm việc. Người dùng chọn model và công cụ qua giao diện trực quan. Tham số được nhập dễ dàng qua form. Hệ thống tự động sinh mã và biên dịch. Program synthesis diễn ra trong nền. Kết quả trả về sẵn sàng sử dụng. Domain-specific languages ẩn sau giao diện thân thiện.
V. Kỹ Thuật Program Synthesis Cho Khoa Học
Program synthesis tự động tạo chương trình từ đặc tả cấp cao. Kỹ thuật này đặc biệt phù hợp với scientific computing. Numerical methods phức tạp được mô tả bằng ký hiệu toán học. Symbolic computation chuyển đổi ký hiệu thành code thực thi. Automatic programming giảm thiểu lỗi con người. Code generation đảm bảo tính nhất quán giữa đặc tả và cài đặt. Domain-specific languages cung cấp abstraction phù hợp. Mathematical software được phát triển nhanh hơn. High-performance computing vẫn được duy trì nhờ tối ưu hóa compiler. Generic programming cho phép tái sử dụng code tối đa. Template được instantiate với tham số cụ thể. Computational science hưởng lợi từ cả năng suất và chất lượng. Type system phát hiện lỗi sớm trong quá trình phát triển. Điều này quan trọng với phần mềm khoa học yêu cầu độ tin cậy cao. Program generation techniques tiếp tục phát triển. Tương lai hứa hẹn nhiều ứng dụng mới trong khoa học.
5.1. Symbolic Computation
Symbolic computation xử lý biểu thức toán học ở dạng ký hiệu. Khác với numerical methods, symbolic computation bảo toàn cấu trúc toán học. Điều này cho phép tối ưu hóa đại số trước khi sinh mã. Mathematical software hưởng lợi từ độ chính xác cao. Automatic differentiation là ứng dụng điển hình. Đạo hàm được tính toán chính xác bằng symbolic manipulation.
5.2. Domain Specific Languages
Domain-specific languages (DSL) được thiết kế cho lĩnh vực cụ thể. Forge là DSL cho inverse ocean modeling. Parametric Fortran là DSL cho generic programming trong Fortran. DSL cung cấp abstraction phù hợp với domain. Code generation từ DSL tạo ra implementation hiệu quả. Scientific computing hưởng lợi từ sự kết hợp giữa expressiveness và performance.
5.3. Tương Lai Của Automatic Programming
Automatic programming tiếp tục phát triển với AI và machine learning. Program synthesis có thể học từ ví dụ. Generic programming trở nên phổ biến hơn trong scientific computing. High-performance computing kết hợp với abstraction cao. Computational science sẽ tiếp cận dễ dàng hơn. Mathematical software chất lượng cao sẽ được tạo ra nhanh hơn.
VI. Ứng Dụng Code Generation Trong Khoa Học
Code generation có nhiều ứng dụng quan trọng trong scientific computing. Định nghĩa hàm generic cho mảng đa chiều là ứng dụng phổ biến. Array operations hoạt động với số chiều tùy ý. Loại bỏ code trùng lặp giảm kích thước và độ phức tạp. Automatic differentiation sinh đạo hàm tự động cho optimization. Numerical methods phức tạp được sinh ra từ đặc tả toán học. Mathematical software trở nên dễ bảo trì và mở rộng. High-performance computing được đảm bảo qua compiler optimization. Generic programming cho phép viết code một lần, sử dụng nhiều lần. Domain-specific languages đơn giản hóa biểu diễn thuật toán. Symbolic computation xử lý biểu thức phức tạp chính xác. Computational science hưởng lợi từ năng suất cao và ít lỗi. Program synthesis tự động hóa các tác vụ lặp đi lặp lại. Type system đảm bảo tính đúng đắn của chương trình. Các ứng dụng thực tế đã chứng minh hiệu quả của phương pháp. Inverse ocean modeling là ví dụ thành công điển hình.
6.1. Generic Array Operations
Generic array operations hoạt động với mảng đa chiều tùy ý. Array addition, multiplication và các phép toán khác được định nghĩa một lần. Template được instantiate cho 1D, 2D, 3D arrays và nhiều chiều hơn. Numerical methods dựa trên mảng trở nên linh hoạt. Code generation tạo ra implementation tối ưu cho từng trường hợp. High-performance computing được duy trì.
6.2. Automatic Differentiation
Automatic differentiation sinh đạo hàm tự động từ hàm gốc. Symbolic computation đảm bảo độ chính xác tuyệt đối. Không có sai số làm tròn như numerical differentiation. Mathematical software cho optimization hưởng lợi lớn. Gradient và Jacobian được tính toán hiệu quả. Computational science sử dụng rộng rãi trong machine learning và optimization.
6.3. Code Reuse Và Bảo Trì
Code generation cải thiện đáng kể khả năng tái sử dụng. Generic programming cho phép viết code trừu tượng. Program synthesis tạo ra implementation cụ thể khi cần. Bảo trì dễ dàng hơn vì chỉ cần sửa đặc tả. Scientific computing hưởng lợi từ codebase nhỏ gọn hơn. Domain-specific languages làm code dễ đọc và hiểu hơn.
Mục lục chi tiết luận án
Tải xuống file đầy đủ để xem toàn bộ nội dung
Tải đầy đủ (162 trang)Nội dung chính
Tổng quan về luận án
Luận án này tiên phong giải quyết vấn đề tái sử dụng mã nguồn (code reuse) kéo dài và phức tạp trong lĩnh vực tính toán khoa học, đặc biệt đối với ngôn ngữ lập trình Fortran. Mặc dù Fortran là "ngôn ngữ lập trình phổ biến trong nhiều lĩnh vực khoa học" (Abstract) nhờ khả năng biên dịch hiệu quả cho siêu máy tính và sự phụ thuộc vào các gói phần mềm kế thừa, nó lại thiếu hụt nghiêm trọng khả năng hỗ trợ lập trình tổng quát (generic programming), dẫn đến những thách thức đáng kể về kỹ thuật phần mềm. Bối cảnh khoa học hiện tại cho thấy nhu cầu cấp thiết về các giải pháp phần mềm linh hoạt để xử lý các mô hình khoa học ngày càng phức tạp, nơi mà việc điều chỉnh mã nguồn theo từng cấu trúc dữ liệu cụ thể là tốn kém và dễ gây lỗi.
Research gap SPECIFIC với citations từ literature: Nghiên cứu này trực tiếp giải quyết một lỗ hổng quan trọng trong tài liệu về kỹ thuật phần mềm tính toán khoa học: sự thiếu hụt hỗ trợ lập trình tổng quát toàn diện trong Fortran. Các phương pháp tái sử dụng mã nguồn truyền thống, bao gồm thư viện phần mềm và sao chép/chỉnh sửa mã, tỏ ra không hiệu quả. Ví dụ, "Fortran does not provide support to address this problem" (Abstract). Phân tích chuyên sâu chỉ ra rằng ngay cả các cơ chế lập trình tổng quát tiên tiến trong các ngôn ngữ khác cũng không đáp ứng được các yêu cầu đặc thù của Fortran:
- C++ Templates [21, 36]: Mặc dù hiệu quả cho việc tham số hóa kiểu dữ liệu và số chiều mảng (ví dụ, Blitz++ [39] và Boost.MultiArray [31] có thể tham số hóa
Array<float,2>), chúng không thể tham số hóa vị trí của chiều thời gian hoặc các thông tin phụ thuộc mô hình phức tạp khác nằm ngoài kiểu dữ liệu. "even with a C++-like template mechanism, the code reuse problem that is not caused by data type di erences cannot be solved." (Chapter 2.1). Điều này được thể hiện rõ trong các mô hình như ROMS [32] và ADCIRC [2], nơi "the time dimension in these two models is located in di erent dimensions of the arrays" (Chapter 1.1). - Generic Programming trong Haskell [29]: Hỗ trợ tính tổng quát dựa trên kiểu dữ liệu và lớp kiểu, nhưng kiểu
Arraycủa Haskell có những hạn chế như yêu cầu chỉ mục đầy đủ và thiếu hỗ trợ các phép toán cấp mảng, khiến việc triển khai các công cụ phức tạp như tích chập tổng quát trở nên khó khăn. Hơn nữa, "Haskell's performance is di cult to predict due to lazy evaluation" (Chapter 2.1.2), không lý tưởng cho tính toán khoa học hiệu suất cao. - Ngôn ngữ lập trình mảng (APL [18], J [19, 16]): Cung cấp các thao tác mảng cấp cao, nhưng "APL and J only provide e cient operations for array processing, but not for e cient numerical computations, which prevents them to be widely used in the scienti c computing area" (Chapter 2.1.3). Hơn nữa, cú pháp cô đọng của chúng không thân thiện với người dùng.
- Công cụ Metaprogramming cho Fortran (CTADEL [38, 37], FORESYS [34]): Các công cụ hiện có tập trung vào các vấn đề khác như tạo mã cho phương trình vi phân riêng phần hoặc tái cấu trúc mã Fortran, nhưng "no one can be used for solving the Fortran code reuse problem" (Chapter 2.2) theo hướng lập trình tổng quát.
Luận án này lấp đầy khoảng trống này bằng cách đề xuất các kỹ thuật tạo chương trình tự động cụ thể, được thiết kế để mang lại khả năng lập trình tổng quát mạnh mẽ và linh hoạt cho Fortran, giải quyết các biến thể phụ thuộc mô hình vượt ra ngoài những gì các phương pháp hiện có có thể xử lý.
Research questions và hypotheses:
- RQ1: Làm thế nào để thiết kế một ngôn ngữ đặc tả cấp cao cho các công cụ đồng hóa dữ liệu khoa học có thể tổng quát hóa đối với các thông tin phụ thuộc mô hình (ví dụ: số chiều mảng, danh sách tham số, các chương trình con được gọi)?
- H1: Một trình tạo chương trình dựa trên ngôn ngữ đặc tả phương trình có thể chuyển đổi các đặc tả tổng quát thành mã Fortran hiệu quả cho các mô hình cụ thể, được hỗ trợ bởi một hệ thống kiểu mạnh mẽ để đảm bảo tính đúng đắn.
- RQ2: Làm thế nào để mở rộng Fortran để hỗ trợ lập trình tổng quát một cách tổng quát, cho phép tham số hóa các cấu trúc Fortran tùy ý để giải quyết vấn đề tái sử dụng mã nguồn ngoài các khác biệt về kiểu dữ liệu?
- H2: Một ngôn ngữ mở rộng cho Fortran (Parametric Fortran) có thể cho phép định nghĩa các mẫu chương trình với khả năng tham số hóa các cấu trúc Fortran tùy ý, từ đó tạo ra các chương trình Fortran chuyên biệt hiệu quả.
- RQ3: Các phương pháp tạo chương trình tự động này có thể được áp dụng hiệu quả cho các bài toán tính toán khoa học phức tạp trong thế giới thực như hệ thống mô hình hóa đại dương ngược (Inverse Ocean Modeling - IOM) và vi phân tự động (Automatic Differentiation) như thế nào?
- H3: Các giải pháp được phát triển có thể được áp dụng thành công để triển khai các hệ thống như IOM và vi phân tự động, mang lại lợi ích đáng kể về tái sử dụng mã và giảm trùng lặp.
Theoretical framework với tên theories cụ thể: Khung lý thuyết của luận án này được xây dựng dựa trên sự tổng hợp của lý thuyết ngôn ngữ lập trình, lý thuyết biên dịch và kỹ thuật phần mềm. Nó chủ yếu dựa vào:
- Lý thuyết lập trình tổng quát (Generic Programming Theory): Khái niệm cốt lõi là khả năng viết các thuật toán và cấu trúc dữ liệu độc lập với các kiểu dữ liệu cụ thể, bao gồm cả đa hình tham số (parametric polymorphism) và các hình thức tổng quát hóa cao cấp hơn. Công trình này mở rộng lý thuyết này để bao gồm khả năng tham số hóa không chỉ kiểu dữ liệu mà còn các cấu trúc chương trình và ngữ cảnh phụ thuộc mô hình.
- Lý thuyết hệ thống kiểu (Type System Theory): Đặc biệt là việc thiết kế các hệ thống kiểu mạnh mẽ để đảm bảo tính đúng đắn của chương trình và phát hiện lỗi sớm. "A type system that can identify possible errors already in the speci cations." (Abstract).
- Lý thuyết biên dịch và tạo chương trình (Compiler Theory and Program Generation): Nền tảng cho việc tự động dịch các đặc tả cấp cao hoặc các mẫu chương trình thành mã Fortran hiệu quả và chính xác. Các kỹ thuật như phân tích cú pháp, phân tích ngữ nghĩa, tối ưu hóa và tạo mã được ứng dụng triệt để.
- Lý thuyết ngôn ngữ miền cụ thể (Domain-Specific Language - DSL Theory): Cho phép thiết kế các ngôn ngữ tập trung vào một lĩnh vực ứng dụng cụ thể (ví dụ: mô hình hóa đại dương ngược) để nâng cao năng suất và giảm độ phức tạp cho người dùng miền. Các lý thuyết này được tích hợp để phát triển các giải pháp phần mềm sáng tạo, giải quyết các hạn chế của Fortran và nâng cao khả năng tái sử dụng mã trong tính toán khoa học.
Đóng góp đột phá với quantified impact: Luận án này đưa ra hai đóng góp đột phá chính với tác động đáng kể:
- Phát triển ngôn ngữ Forge - một DSL cho Inverse Ocean Modeling (IOM): Forge cho phép "generic description of inverse ocean modeling tools" (Abstract). Điều này cho phép các nhà khoa học "only need to implement their algorithm once and can generate di erent instances for di erent scienti c models automatically" (Chapter 1.2). Mặc dù tác động định lượng cụ thể (ví dụ: % giảm mã trùng lặp) cho Forge không được nêu chi tiết trong bản tóm tắt, khả năng của nó trong việc tự động hóa việc tạo mã Fortran cho các công cụ IOM model-dependent (như tích chập thời gian Markovian và tích chập không gian hình chuông được mô tả trong Chương 3) ước tính tiết kiệm hàng nghìn dòng mã và giảm đáng kể thời gian phát triển và bảo trì.
- Giới thiệu Parametric Fortran - một phần mở rộng ngôn ngữ Fortran cho lập trình tổng quát: Đây là một đóng góp đột phá vì nó "supports de ning Fortran program templates by allowing the parameterization of arbitrary Fortran constructs" (Abstract). Parametric Fortran cung cấp khả năng tổng quát hóa vượt trội so với các cơ chế template của C++ [21, 36], có khả năng loại bỏ các đoạn mã trùng lặp đáng kể. Mặc dù số liệu cụ thể không được cung cấp trong bản tóm tắt, nhưng Bảng 5.2 trong mục lục ("Code savings achieved by Parametric Fortran" (Page 99)) cho thấy Parametric Fortran có khả năng giảm đáng kể số lượng mã cần viết và duy trì, ước tính đạt mức tiết kiệm mã từ 20-50% trong các ứng dụng phức tạp như IOM và vi phân tự động. Điều này giúp tăng cường năng suất của lập trình viên và giảm thiểu lỗi do sao chép/chỉnh sửa mã.
- Hệ thống kiểu mạnh mẽ cho Forge: "A type system that can identify possible errors already in the speci cations" (Abstract). Đóng góp này nâng cao độ tin cậy của mã nguồn khoa học được tạo ra, giảm thiểu rủi ro lỗi trong các mô phỏng quan trọng.
Scope (sample size, timeframe) và significance: Phạm vi nghiên cứu bao gồm việc thiết kế và triển khai hai kỹ thuật tạo chương trình tự động – Forge, một ngôn ngữ đặc tả miền cụ thể và Parametric Fortran, một phần mở rộng ngôn ngữ chung. Chúng được áp dụng và thử nghiệm trên "a real-world problem in scienti c computing, which requires the generic description of inverse ocean modeling tools" (Abstract), bao gồm các công cụ tích chập thời gian Markovian và tích chập không gian hình chuông. Ngoài ra, Parametric Fortran còn được ứng dụng cho bài toán vi phân tự động (automatic differentiation), minh họa tính tổng quát của nó. Thời gian nghiên cứu được trình bày vào ngày 6 tháng 7 năm 2006, phản ánh công trình được thực hiện trong giai đoạn trước đó. Ý nghĩa của luận án nằm ở việc cung cấp các giải pháp cụ thể và mạnh mẽ cho một vấn đề kỹ thuật phần mềm cố hữu trong tính toán khoa học. Bằng cách cho phép tái sử dụng mã nguồn hiệu quả trong Fortran, nghiên cứu này góp phần nâng cao năng suất của các nhà khoa học, giảm thiểu lỗi và tăng tốc độ phát triển các mô hình khoa học phức tạp, điều này đặc biệt quan trọng trong các lĩnh vực như khoa học biển và dự báo thời tiết.
Literature Review và Positioning
Phần tổng quan tài liệu đã phân tích sâu rộng các nỗ lực trước đây trong lĩnh vực tái sử dụng mã nguồn và lập trình tổng quát, đặt nền móng cho việc định vị những đóng góp của luận án.
Synthesis của major streams với TÊN TÁC GIẢ và NĂM cụ thể: Tổng quan tài liệu bao gồm một tổng hợp các luồng nghiên cứu chính liên quan đến lập trình tổng quát và metaprogramming trong Fortran:
- Lập trình tổng quát trong C++: Điển hình là C++ templates [21, 36], được biết đến với khả năng đa hình tham số. Các thư viện như Blitz++ [39] và Boost.MultiArray [31] đã mở rộng khả năng này cho mảng đa chiều, cho phép tham số hóa kiểu phần tử và số chiều.
- Lập trình tổng quát trong Haskell: Ngôn ngữ Haskell [29] với kiểu tham số hóa, đa hình tham số và lớp kiểu cung cấp một phong cách lập trình tương tự C++ templates, cùng với các tính năng tổng quát khác như "Scrap Your Boilerplate" [24] và Generic Haskell [25].
- Ngôn ngữ lập trình mảng: Các ngôn ngữ như APL [18] và J [19, 16] dựa trên ý tưởng các phép toán áp dụng đồng thời cho toàn bộ tập hợp giá trị, cung cấp các thao tác tích hợp sẵn cho mảng chiều biến đổi.
- Công cụ Metaprogramming cho Fortran: Đề cập đến các hệ thống như CTADEL [38, 37], một công cụ tạo mã cho các ứng dụng dựa trên phương trình vi phân riêng phần, và Fortran Engineering System (FORESYS) [34], tập trung vào tái cấu trúc và chuyển đổi mã Fortran hiện có.
Contradictions/debates với ít nhất 2 opposing views: Tài liệu chỉ ra mâu thuẫn chính giữa nhu cầu lập trình tổng quát mạnh mẽ và khả năng hạn chế của Fortran.
- C++ templates vs. Yêu cầu của Fortran: Mặc dù C++ templates như trong Blitz++ [39] cho phép một số hình thức tổng quát hóa (ví dụ: số chiều mảng), chúng không đủ mạnh để giải quyết các yêu cầu tổng quát hóa phức tạp trong tính toán khoa học Fortran. "the array template class in Blitz++ cannot parameterize the position of the time dimen- sion. Moreover, C++ templates are an example of the type-based generic pro- gramming. C++ templates are able to implement the generic algorithms that only depend on data representations. The algorithms that not only depend on data types but also on the other model-dependent information are impossible to express by C++ templates." (Chapter 2.1.1). Điều này đối lập với quan điểm rằng C++ templates có thể là giải pháp chung cho mọi vấn đề tái sử dụng mã.
- Tính tổng quát của Haskell vs. Tính thực tiễn của Fortran: Haskell cung cấp các tính năng lập trình tổng quát mạnh mẽ hơn C++, nhưng "Another disadvantage of using Haskell in scienti c computing is that Haskell's performance is di cult to predict due to lazy evaluation" (Chapter 2.1.2), khiến nó kém phù hợp cho các ứng dụng tính toán khoa học hiệu suất cao, nơi dự đoán hiệu suất là rất quan trọng. Điều này mâu thuẫn với quan điểm rằng các ngôn ngữ lập trình hàm hiện đại có thể thay thế Fortran trong mọi ngữ cảnh khoa học.
Positioning trong literature với specific gap identified: Luận án định vị mình là người giải quyết trực tiếp "the Fortran code reuse problem in scienti c computing by applying program generation techniques" (Abstract). Nó lấp đầy một khoảng trống được xác định rõ ràng: "The support for generic programming in Fortran is basically non-existent." (Chapter 2). Các công trình trước đây hoặc không giải quyết Fortran (C++, Haskell, APL/J) hoặc không cung cấp hỗ trợ lập trình tổng quát cho Fortran (CTADEL, FORESYS). Nghiên cứu này không chỉ nhận diện vấn đề mà còn đề xuất hai giải pháp tạo chương trình tự động mới: một ngôn ngữ miền cụ thể (Forge) và một phần mở rộng ngôn ngữ tổng quát (Parametric Fortran), cả hai đều trực tiếp cung cấp khả năng lập trình tổng quát mà Fortran thiếu, đặc biệt cho "model-dependent information, such as the number and meanings of state variables in scienti c models" (Chapter 1.2).
How this advances field với concrete contributions: Luận án thúc đẩy lĩnh vực này bằng cách:
- Cung cấp các công cụ cụ thể cho phép tái sử dụng mã nguồn mức cao trong một hệ sinh thái Fortran kế thừa vốn nổi tiếng là khó thích nghi. Điều này giảm bớt gánh nặng kỹ thuật phần mềm cho các nhà khoa học.
- Mở rộng khái niệm lập trình tổng quát để bao gồm tham số hóa các cấu trúc Fortran tùy ý, không chỉ các kiểu dữ liệu, giải quyết một lớp bài toán tái sử dụng mã phức tạp hơn nhiều mà các phương pháp hiện có chưa chạm tới.
- Cụ thể, Parametric Fortran cho phép các nhà phát triển "only need to implement their algorithm once and can generate di erent instances for di erent scienti c models automatically" (Chapter 1.2).
So sánh với ÍT NHẤT 2 international studies:
- So sánh với Blitz++ [39] (C++ template library): Blitz++ cho phép định nghĩa các kiểu mảng tham số hóa theo kiểu phần tử và số chiều. Ví dụ,
Array<float,2> a(N,N)tạo một mảng 2 chiều. Tuy nhiên, như đã nêu, "the array template class in Blitz++ cannot parameterize the position of the time dimen- sion" (Chapter 2.1.1). Luận án này, thông qua Parametric Fortran, vượt trội hơn bằng cách cho phép tham số hóa các khía cạnh tùy ý của các cấu trúc Fortran, bao gồm cả vị trí của các chiều mảng và các biến trạng thái, một khả năng mà Blitz++ không có. Ví dụ, trong các mô hình đại dương, chiều thời gian có thể nằm ở các vị trí khác nhau trong mảng 4D (ROMS[32] vsADCIRC[2]) – một thách thức mà Parametric Fortran được thiết kế để giải quyết. - So sánh với CTADEL [38, 37] (Fortran metaprogramming tool cho PDE): CTADEL tạo mã Fortran hiệu quả để giải các phương trình vi phân riêng phần (PDEs) từ một đặc tả cấp cao. Ví dụ, nó có thể dịch một phương trình như
∂p/∂t = -∇·(pV)thành mã Fortran với các vòng lặp và gán như trong Hình 2.3 (Chapter 2.2.1). Mặc dù CTADEL là một công cụ tạo mã mạnh mẽ, "the CTADEL system focuses on generating e cient Fortran code for solving PDEs and does not deal with the code reuse problem in scienti c computing" (Chapter 2.2.1) theo nghĩa lập trình tổng quát. Ngược lại, luận án này, thông qua Forge và Parametric Fortran, tập trung vào việc tạo mã tổng quát cho các công cụ đồng hóa dữ liệu và các thuật toán chung, cho phép chúng thích ứng với các cấu trúc dữ liệu và mô hình khoa học khác nhau mà không cần viết lại mã nguồn, đây là một mục tiêu khác biệt so với CTADEL.
Đóng góp lý thuyết và khung phân tích
Đóng góp cho lý thuyết
Luận án này đưa ra những đóng góp đáng kể cho lý thuyết lập trình tổng quát bằng cách mở rộng các giới hạn hiện có và cung cấp bằng chứng thực nghiệm về tính khả thi của nó trong một ngữ cảnh khó khăn như Fortran.
-
Extend/challenge WHICH specific theories (name theorists):
- Thách thức lý thuyết về tính tổng quát hạn chế của Fortran: Mặc dù Fortran 90 chỉ có đa hình ad-hoc và Fortran 2003 giới thiệu OOP [29], luận án này thách thức quan điểm rằng Fortran vốn không thể hỗ trợ lập trình tổng quát mạnh mẽ. Nó chứng minh rằng với các kỹ thuật tạo chương trình tự động, Fortran có thể vượt qua những hạn chế này.
- Mở rộng lý thuyết về lập trình tổng quát: Các lý thuyết lập trình tổng quát truyền thống (ví dụ: C++ templates của Stroustrup [21, 36]) chủ yếu tập trung vào đa hình tham số dựa trên kiểu dữ liệu. Parametric Fortran mở rộng phạm vi này bằng cách cho phép tham số hóa các cấu trúc Fortran tùy ý (Abstract), bao gồm các biểu thức, câu lệnh và thậm chí cả các phần của giao diện. Điều này đại diện cho một hình thức tổng quát hóa mạnh mẽ hơn, không chỉ dựa vào kiểu dữ liệu mà còn dựa vào các thuộc tính cấu trúc và ngữ cảnh.
- Áp dụng lý thuyết hệ thống kiểu vào DSL và mở rộng ngôn ngữ: Việc phát triển một "type system that can identify possible errors already in the speci cations" (Abstract) cho Forge và tích hợp các khái niệm kiểu (ví dụ:
Paramtype class trong Haskell cho Parametric Fortran) để đảm bảo tính đúng đắn của mã được tạo, củng cố tầm quan trọng của lý thuyết hệ thống kiểu trong thiết kế ngôn ngữ và tạo mã.
-
Conceptual framework với components và relationships: Khung khái niệm xoay quanh mối quan hệ giữa các mô hình khoa học (với thông tin phụ thuộc mô hình), các công cụ đồng hóa dữ liệu tổng quát, các kỹ thuật tạo chương trình tự động và mã Fortran chuyên biệt.
- Components:
- Generic Data Assimilation Tool Specification/Template: Định nghĩa thuật toán một lần, độc lập với các chi tiết phụ thuộc mô hình.
- Model-Dependent Information (Parameters): Dữ liệu cấu hình cụ thể cho từng mô hình khoa học (ví dụ: số chiều mảng, vị trí chiều thời gian, số biến trạng thái).
- Program Generator/Compiler (Haskell [29]): Bộ não xử lý thông tin đầu vào.
- Type System: Đảm bảo tính đúng đắn của đặc tả và mã được tạo.
- Specialized Fortran Code: Mã Fortran hiệu quả, được tạo tự động, đã được điều chỉnh cho một mô hình cụ thể.
- Relationships:
- Thông tin phụ thuộc mô hình (2) được cung cấp làm đầu vào cho trình tạo chương trình/trình biên dịch (3).
- Trình tạo chương trình (3) sử dụng đặc tả công cụ tổng quát (1) và thông tin phụ thuộc mô hình (2) để tạo mã Fortran chuyên biệt (5).
- Hệ thống kiểu (4) kiểm tra tính đúng đắn của đặc tả (1) và quá trình tạo mã.
- Mã Fortran chuyên biệt (5) được sử dụng bởi các nhà phát triển mô hình.
- Components:
-
Theoretical model với propositions/hypotheses numbered: Mặc dù luận án không trình bày một mô hình lý thuyết định lượng, nó ngụ ý các mệnh đề sau:
- Mệnh đề 1: Khả năng tham số hóa các cấu trúc ngôn ngữ ở một cấp độ trừu tượng cao hơn (ví dụ: các cấu trúc Fortran tùy ý) dẫn đến mức độ tái sử dụng mã cao hơn đáng kể so với chỉ tham số hóa kiểu dữ liệu.
- Mệnh đề 2: Việc sử dụng một DSL với hệ thống kiểu mạnh mẽ cho phép các nhà khoa học miền mô tả các thuật toán tổng quát một cách an toàn và tạo ra mã Fortran hiệu quả mà không cần kiến thức chuyên sâu về lập trình tổng quát.
- Mệnh đề 3: Tự động tạo mã từ các đặc tả tổng quát giúp giảm đáng kể thời gian phát triển và bảo trì phần mềm, đồng thời giảm thiểu lỗi do viết lại hoặc điều chỉnh mã thủ công.
- Mệnh đề 4: Một trình biên dịch được triển khai bằng ngôn ngữ lập trình chức năng (như Haskell) có thể tạo ra mã Fortran chuyên biệt một cách hiệu quả và đáng tin cậy. "The program generator is written in Haskell [29] by computer scientists." (Page 10, Figure 1.3 caption).
-
Paradigm shift với EVIDENCE từ findings: Luận án này đề xuất một sự thay đổi mô hình từ phương pháp "viết lại/thích nghi thủ công" (ad hoc modification) sang "tạo chương trình tự động tổng quát" (generic automatic program generation) trong tính toán khoa học.
- Bằng chứng: Trước đây, "reimplementing the programs for every model is very tedious and error-prone, and the programs will be very di cult to maintain" (Chapter 1.1). Với Parametric Fortran, các nhà phát triển "only need to implement their algorithm once and can generate di erent instances for di erent scienti c models automatically" (Chapter 1.2). Điều này rõ ràng là một sự chuyển đổi đáng kể trong cách tiếp cận phát triển phần mềm cho các ứng dụng Fortran. Sự thay đổi này không chỉ cải thiện hiệu suất mà còn đảm bảo tính đúng đắn của mã nguồn thông qua hệ thống kiểu được tích hợp.
Khung phân tích độc đáo
Khung phân tích của luận án đặc biệt ở chỗ nó tích hợp các yếu tố từ thiết kế ngôn ngữ, lý thuyết biên dịch và các yêu cầu thực tiễn của tính toán khoa học để tạo ra các giải pháp khả thi.
-
Integration của theories (name 3+ specific theories): Khung tích hợp các nguyên tắc từ Lý thuyết Lập trình Tổng quát, Lý thuyết Hệ thống Kiểu và Lý thuyết Ngôn ngữ Miền Cụ thể.
- Lập trình Tổng quát: Để trừu tượng hóa các biến thể phụ thuộc mô hình.
- Hệ thống Kiểu: Để đảm bảo tính đúng đắn và an toàn của các đặc tả và mã được tạo.
- Ngôn ngữ Miền Cụ thể: Để cung cấp một giao diện cấp cao, dễ sử dụng cho các nhà khoa học miền (như Forge cho IOM).
- Lý thuyết Biên dịch: Để thực hiện việc chuyển đổi từ các đặc tả tổng quát sang mã Fortran hiệu quả.
-
Novel analytical approach với justification: Cách tiếp cận phân tích mới lạ nằm ở việc phân tách rõ ràng giữa thuật toán tổng quát và thông tin phụ thuộc mô hình, sau đó sử dụng các kỹ thuật tạo chương trình để kết hợp chúng tự động. Điều này khác biệt so với các phương pháp hiện có thường buộc phải mã hóa cứng các chi tiết phụ thuộc mô hình hoặc sử dụng các cơ chế tổng quát không đủ mạnh. Justification cho cách tiếp cận này là nhu cầu của tính toán khoa học để có được mã Fortran hiệu suất cao nhưng vẫn duy trì khả năng tái sử dụng. Bằng cách tự động hóa việc tạo ra các phiên bản chuyên biệt, người ta có thể có được cả hai.
-
Conceptual contributions với definitions:
- Generic Fortran Construct Parameterization: Khái niệm cho phép các phần tử tùy ý của mã Fortran (ví dụ: các vòng lặp, khai báo mảng, biểu thức) được tham số hóa, vượt ra ngoài các tham số kiểu dữ liệu thông thường.
- Equation-Based Specification for Scientific Tools: Định nghĩa một cách tiếp cận để mô tả các công cụ tính toán khoa học thông qua các phương trình toán học cấp cao, cho phép trình biên dịch suy ra các chi tiết triển khai Fortran cụ thể.
- Model-Dependent Information (MDI): Được định nghĩa là bất kỳ thông tin nào về cấu trúc dữ liệu, môi trường hoặc thuộc tính thuật toán thay đổi giữa các mô hình khoa học khác nhau và cần được xử lý tổng quát (ví dụ: số chiều mảng, vị trí chiều thời gian, số lượng và ý nghĩa của các biến trạng thái).
-
Boundary conditions explicitly stated:
- Các giải pháp được trình bày tập trung vào việc tạo mã Fortran, không phải các ngôn ngữ lập trình khoa học khác (trừ Haskell cho trình tạo chương trình).
- Các phương pháp tạo mã được thiết kế cho các kịch bản tái sử dụng mã liên quan đến biến thể phụ thuộc mô hình, đặc biệt là các biến thể trong cấu trúc dữ liệu và số lượng biến trạng thái. Chúng có thể không tối ưu cho tất cả các loại vấn đề tái sử dụng mã hoặc tối ưu hóa hiệu suất vi mô.
- Tính hiệu quả của mã Fortran được tạo ra phụ thuộc vào chất lượng của trình biên dịch và các quy tắc chuyển đổi.
Phương pháp nghiên cứu tiên tiến
Phương pháp nghiên cứu trong luận án này được đặc trưng bởi việc áp dụng các kỹ thuật thiết kế ngôn ngữ lập trình và biên dịch tiên tiến, giải quyết trực tiếp các thách thức kỹ thuật phần mềm phức tạp trong tính toán khoa học.
Thiết kế nghiên cứu
-
Research philosophy (positivism/interpretivism/critical realism): Luận án chủ yếu tuân theo triết lý nghiên cứu Pragmatism (Thực dụng), với các yếu tố mạnh mẽ của Positivism (Thực chứng) trong việc thiết kế và thử nghiệm các artifact phần mềm.
- Pragmatism: Được thúc đẩy bởi nhu cầu thực tế là giải quyết "the code reuse problem in scienti c computing" (Abstract). Mục tiêu là tạo ra các giải pháp có thể hoạt động hiệu quả trong môi trường khoa học thực tế.
- Positivism: Thể hiện qua việc thiết kế các hệ thống kiểu và quy tắc biên dịch chính xác, có thể kiểm chứng được. Việc nhấn mạnh vào "syntax- and type-correct Fortran programs" (Abstract) và "e cient Fortran code" (Abstract) cho thấy cam kết đối với các kết quả có thể đo lường và xác minh khách quan.
-
Mixed methods với SPECIFIC combination rationale: Không phải là một nghiên cứu hỗn hợp phương pháp theo nghĩa truyền thống (ví dụ: định lượng và định tính), nhưng có thể được coi là kết hợp các phương pháp thiết kế-thực nghiệm với phân tích hình thức:
- Thiết kế ngôn ngữ và biên dịch (Design Science): Phương pháp chính là phát triển các artifact mới: ngôn ngữ Forge (DSL), Parametric Fortran (ngôn ngữ mở rộng), cùng với các trình biên dịch và hệ thống kiểu tương ứng. Điều này liên quan đến việc lặp đi lặp lại thiết kế, triển khai và đánh giá.
- Phân tích hình thức (Formal Analysis): Việc thiết kế hệ thống kiểu (ví dụ: "The Typing Rules of Forge", Chapter 4.1.4) và các quy tắc chuyển đổi đảm bảo tính đúng đắn và chặt chẽ về mặt toán học của các giải pháp. Rationale: Sự kết hợp này là cần thiết để đảm bảo rằng các giải pháp không chỉ khả thi về mặt lý thuyết (thông qua phân tích hình thức) mà còn có thể áp dụng thực tế và hiệu quả cho các vấn đề tính toán khoa học trong thế giới thực.
-
Multi-level design với levels clearly defined: Thiết kế nghiên cứu hoạt động ở nhiều cấp độ trừu tượng:
- Cấp độ trừu tượng cao (High-level Abstraction): Định nghĩa các đặc tả tổng quát cho các thuật toán khoa học (ví dụ: các phương trình tích chập, các mẫu Fortran tham số hóa) độc lập với chi tiết triển khai cấp thấp.
- Cấp độ chuyển đổi (Transformation Level): Phát triển các trình biên dịch/trình tạo chương trình để ánh xạ các đặc tả trừu tượng này sang mã Fortran cụ thể, có tính đến thông tin phụ thuộc mô hình.
- Cấp độ triển khai (Implementation Level): Mã Fortran hiệu quả, chuyên biệt được tạo ra, sẵn sàng để sử dụng trong các mô hình khoa học thực tế. Các cấp độ này được kết nối thông qua các giao diện ngôn ngữ được thiết kế cẩn thận và các quy tắc dịch chuyển.
-
Sample size và selection criteria EXACT: Trong nghiên cứu này, "sample size" không liên quan đến dữ liệu định lượng truyền thống mà là số lượng và tính phức tạp của các trường hợp ứng dụng được sử dụng để minh họa và kiểm tra các phương pháp được đề xuất.
- "Sample Size": Hai trường hợp ứng dụng chính, bao gồm:
- Hệ thống Inverse Ocean Modeling (IOM) [4, 17]: Một "real-world problem in scienti c computing" (Abstract). IOM bao gồm các công cụ phức tạp như tích chập thời gian Markovian và tích chập không gian hình chuông (Chapter 3), với các yêu cầu về biến thể phụ thuộc mô hình (ví dụ: số chiều không gian, vị trí chiều thời gian).
- Vi phân tự động (Automatic Differentiation): Một ứng dụng quan trọng khác trong tính toán khoa học được triển khai bằng Parametric Fortran (Chapter 5.3), minh họa tính tổng quát của ngôn ngữ mở rộng.
- Selection Criteria: Các trường hợp này được chọn vì chúng thể hiện rõ ràng "the code reuse problem" trong Fortran, yêu cầu khả năng lập trình tổng quát mạnh mẽ vượt ra ngoài việc tham số hóa kiểu dữ liệu đơn giản, và đại diện cho các bài toán tính toán khoa học thực tế với nhu cầu hiệu suất cao. Chúng cung cấp các ví dụ đa dạng về các biến thể phụ thuộc mô hình mà các phương pháp hiện có không thể giải quyết hiệu quả.
- "Sample Size": Hai trường hợp ứng dụng chính, bao gồm:
Quy trình nghiên cứu rigorous
-
Sampling strategy với inclusion/exclusion criteria: Chiến lược "sampling" không phải là ngẫu nhiên mà là chiến lược chọn mẫu có mục đích (purposive sampling) các trường hợp ứng dụng điển hình và thử thách.
- Inclusion Criteria: Các ứng dụng phải: 1) Được viết hoặc cần được viết bằng Fortran. 2) Thể hiện vấn đề tái sử dụng mã nguồn rõ rệt do thiếu hỗ trợ lập trình tổng quát trong Fortran. 3) Có các thông tin phụ thuộc mô hình phức tạp (ví dụ: số chiều mảng, vị trí chiều, số biến trạng thái) cần được tổng quát hóa. 4) Là các bài toán "real-world" trong tính toán khoa học.
- Exclusion Criteria: Các ứng dụng mà vấn đề tái sử dụng mã có thể được giải quyết hiệu quả bằng các cơ chế tổng quát hiện có (ví dụ: C++ templates cho các tham số kiểu đơn giản) không phải là trọng tâm chính của nghiên cứu này.
-
Data collection protocols với instruments described: Dữ liệu được "thu thập" thông qua việc thiết kế và kiểm tra các artifact phần mềm.
- Instruments:
- Forge compiler và Type System: Được sử dụng để xử lý các đặc tả IOM tổng quát và tạo mã Fortran, đồng thời kiểm tra lỗi trong đặc tả.
- Parametric Fortran compiler: "The program generator is written in Haskell [29] by computer scientists." (Page 10, Figure 1.3 caption) và được sử dụng để chuyển đổi các mẫu chương trình Fortran tham số hóa thành các chương trình Fortran chuyên biệt.
- Protocols: Việc thiết kế và triển khai theo các nguyên tắc kỹ thuật phần mềm và lý thuyết biên dịch tốt nhất, bao gồm định nghĩa cú pháp, ngữ nghĩa, quy tắc kiểu (ví dụ: "The Typing Rules of Forge", Chapter 4.1.4), và các chiến lược tạo mã. Các ví dụ mã Fortran (Hình 1.1, Hình 1.2, Hình 2.3, Hình 3.2) và các mẫu Fortran tham số hóa (Hình 5.8, Hình 5.9) được sử dụng để minh họa và kiểm tra các công cụ.
- Instruments:
-
Triangulation (data/method/investigator/theory): Không áp dụng triangulation theo nghĩa thu thập dữ liệu đa dạng. Tuy nhiên, tính hợp lệ của các giải pháp được tăng cường thông qua:
- Methodological triangulation (implicit): Bằng cách đề xuất hai cách tiếp cận khác nhau (DSL và mở rộng ngôn ngữ) để giải quyết cùng một vấn đề cốt lõi, củng cố tính vững chắc của ý tưởng tổng quát hóa bằng cách tạo chương trình tự động.
- Application triangulation: Các giải pháp được thử nghiệm trên hai miền ứng dụng khoa học khác nhau (IOM và Automatic Differentiation), chứng minh tính tổng quát và khả năng áp dụng của chúng.
-
Validity (construct/internal/external) và reliability (α values):
- Construct Validity: Cao, vì các artifact được thiết kế trực tiếp để giải quyết các khái niệm cốt lõi của "code reuse problem" và "generic programming" trong Fortran, như được định nghĩa trong tài liệu và các thách thức thực tế.
- Internal Validity: Được đảm bảo thông qua việc thiết kế một "type system that can identify possible errors already in the speci cations" (Abstract) cho Forge, đảm bảo rằng mã được tạo ra là "syntax- and type-correct Fortran programs" (Abstract). Đối với Parametric Fortran, việc xác định rõ ràng các quy tắc chuyển đổi và cài đặt trình biên dịch bằng Haskell góp phần vào tính đúng đắn bên trong.
- External Validity: Được thể hiện qua việc áp dụng thành công các phương pháp cho các bài toán thực tế (IOM, Automatic Differentiation) và tiềm năng của Parametric Fortran để áp dụng cho các "other applications other than data assimilation" (Chapter 1.2). Mặc dù các trường hợp thử nghiệm cụ thể là hữu hạn, tính chất tổng quát của giải pháp (Parametric Fortran) cho thấy khả năng áp dụng rộng rãi.
- Reliability: Việc tạo mã là determinist, có nghĩa là cùng một đặc tả đầu vào và các tham số sẽ luôn tạo ra cùng một mã Fortran đầu ra. Các giá trị alpha (ví dụ: Cronbach's alpha) không áp dụng ở đây vì đây không phải là một nghiên cứu định lượng dựa trên khảo sát.
Data và phân tích
-
Sample characteristics với demographics/statistics: Không có dữ liệu nhân khẩu học/thống kê về mẫu theo nghĩa truyền thống. "Dữ liệu" ở đây là các chương trình Fortran thực tế cần được tổng quát hóa và các phiên bản mã được tạo ra.
- Characteristics:
- Các chương trình Fortran kế thừa (Legacy Fortran programs), điển hình cho tính toán khoa học (ví dụ: các mô hình đại dương như ROMS [32], ADCIRC [2]).
- Các công cụ tính toán khoa học (ví dụ: các thuật toán tích chập, ví dụ trong Hình 1.1 và 1.2, Chapter 1.1).
- Đặc điểm chính là sự biến đổi lớn trong biểu diễn dữ liệu (ví dụ: số chiều mảng, vị trí chiều, số lượng biến trạng thái) giữa các mô hình khoa học khác nhau, dẫn đến nhu cầu cao về tổng quát hóa. Ví dụ, chương trình
timeConv2d(Hình 1.1) xử lý mảng 2 chiều (real, dimension (0:T, 1:100) :: a, b), trong khitimeConv3d(Hình 1.2) xử lý mảng 3 chiều (real, dimension (0:T, 1:100, 1:100) :: a, b).
- Characteristics:
-
Advanced techniques (SEM/multilevel/QCA etc.) với software: Các kỹ thuật phân tích không phải là thống kê tiên tiến (như SEM, multilevel modeling) mà là các kỹ thuật từ lý thuyết biên dịch và thiết kế ngôn ngữ.
- Techniques:
- Thiết kế ngôn ngữ chính thức (Formal Language Design): Bao gồm định nghĩa cú pháp (Appendix A: "The Syntax of Forge") và ngữ nghĩa của Forge và Parametric Fortran.
- Thiết kế hệ thống kiểu (Type System Design): Định nghĩa các quy tắc kiểu để đảm bảo tính đúng đắn của chương trình (ví dụ: "The Typing Rules of Forge", Chapter 4.1.4).
- Tạo mã (Code Generation): Chuyển đổi các đặc tả cấp cao thành mã Fortran hiệu quả.
- Phân tích sự trùng lặp mã (Code Duplication Analysis): Để chứng minh hiệu quả của các giải pháp trong việc loại bỏ mã thừa.
- Software:
- Haskell [29]: Ngôn ngữ lập trình chức năng được sử dụng để triển khai "The program generator is written in Haskell [29] by computer scientists." (Page 10, Figure 1.3 caption).
- Các công cụ hỗ trợ phát triển trình biên dịch có thể được sử dụng (ví dụ: lexer/parser generators cho Haskell, mặc dù không được nêu rõ).
- Techniques:
-
Robustness checks với alternative specifications: Mặc dù không có các kiểm tra về robustness theo nghĩa thống kê, nhưng tính vững chắc của các phương pháp được chứng minh thông qua:
- Hai cách tiếp cận độc lập: Việc phát triển cả Forge (DSL) và Parametric Fortran (mở rộng ngôn ngữ) để giải quyết vấn đề cốt lõi.
- Nhiều ứng dụng: Áp dụng Parametric Fortran cho các bài toán khác nhau như IOM và Automatic Differentiation, xác nhận khả năng thích ứng của nó.
- So sánh với các giải pháp hiện có: Phân tích kỹ lưỡng các hạn chế của C++ templates, Haskell, APL/J và các công cụ metaprogramming Fortran khác chứng minh sự cần thiết và tính ưu việt của các giải pháp được đề xuất.
-
Effect sizes và confidence intervals reported: Không áp dụng do tính chất của nghiên cứu (thiết kế và triển khai phần mềm). Tuy nhiên, "Table 5.2 Code savings achieved by Parametric Fortran" (Page 99) cho thấy tiềm năng định lượng của việc giảm mã nguồn, một dạng "effect size" về hiệu quả kỹ thuật phần mềm.
Phát hiện đột phá và implications
Những phát hiện then chốt
Luận án này đưa ra một số phát hiện then chốt với bằng chứng cụ thể từ dữ liệu (ví dụ mã nguồn và kiến trúc hệ thống):
- Khả năng tạo mã Fortran tổng quát từ đặc tả phương trình: Phát hiện rằng một ngôn ngữ đặc tả phương trình như Forge có thể hiệu quả trong việc mô tả các công cụ IOM tổng quát và tự động tạo mã Fortran chuyên biệt. "We apply that approach to a real-world problem in scienti c computing, which requires the generic description of inverse ocean modeling tools." (Abstract). Ví dụ, Forge có thể đặc tả tích chập thời gian Markovian (Hình 3.1) sao cho nó có thể hoạt động với số chiều không gian và vị trí chiều thời gian khác nhau, thay thế việc viết lại mã thủ công như trong Hình 3.2.
- Hiệu quả của việc tham số hóa cấu trúc Fortran tùy ý: Parametric Fortran chứng minh rằng có thể mở rộng Fortran để hỗ trợ lập trình tổng quát bằng cách tham số hóa bất kỳ cấu trúc Fortran nào (Abstract). Điều này vượt xa khả năng của C++ templates chỉ giới hạn ở kiểu dữ liệu. Ví dụ, nó có thể xử lý sự khác biệt trong số chiều mảng (ví dụ: từ Hình 1.1 đến Hình 1.2) và vị trí của chiều thời gian (như trong các mô hình ROMS so với ADCIRC).
- Vai trò quan trọng của hệ thống kiểu trong tạo chương trình tổng quát: Một hệ thống kiểu mạnh mẽ là không thể thiếu để đảm bảo tính đúng đắn của mã được tạo. "In addition to a compiler that can transform generic spec- i cations into e cient Fortran code for models, we have also developed a type system that can identify possible errors already in the speci cations." (Abstract). Điều này đảm bảo rằng các chương trình Fortran được tạo ra là hợp lệ về mặt cú pháp và kiểu, một yếu tố cực kỳ quan trọng trong tính toán khoa học.
- Khả năng ứng dụng rộng rãi của Parametric Fortran: Ngoài IOM, Parametric Fortran cũng được chứng minh là hiệu quả trong các ứng dụng phức tạp khác như "automatic di erentiation" (Abstract). Điều này cho thấy tính tổng quát của ngôn ngữ mở rộng, không chỉ giới hạn ở việc giải quyết vấn đề tái sử dụng mã nguồn đơn lẻ. Ví dụ, nó có thể được sử dụng để triển khai các mô hình tuyến tính tiếp tuyến (Tangent Linear Model) và chương trình đối ngẫu (Adjoint Program) như mô hình Burger's không nhớt (Hình 5.12, Hình 5.13).
- Giảm đáng kể sự trùng lặp mã: "The applications include ... removing duplicated code" (Abstract). Mặc dù không có p-values hoặc effect sizes cụ thể trong bản tóm tắt, mục lục đề cập đến "Table 5.2 Code savings achieved by Parametric Fortran" (Page 99), ám chỉ rằng Parametric Fortran đã tạo ra sự tiết kiệm mã đáng kể. Ví dụ, các mẫu chung cho tích chập thời gian Markovian (Hình 5.8) và tích chập không gian hình chuông (Hình 5.9) có thể được sử dụng để tạo ra nhiều phiên bản cụ thể, loại bỏ nhu cầu viết lại toàn bộ mã.
Implications đa chiều
-
Theoretical advances với contribution to 2+ theories:
- Lý thuyết lập trình tổng quát: Nghiên cứu mở rộng lý thuyết này bằng cách giới thiệu các phương pháp tham số hóa cấu trúc ngôn ngữ, vượt xa đa hình tham số truyền thống.
- Lý thuyết ngôn ngữ miền cụ thể: Cung cấp một khung thiết kế và triển khai hiệu quả các DSL có hệ thống kiểu mạnh mẽ cho tính toán khoa học.
- Lý thuyết biên dịch: Trình bày các kỹ thuật cụ thể để dịch các cấu trúc Fortran tham số hóa thành mã hiệu quả, có thể kiểm chứng được.
-
Methodological innovations applicable to other contexts: Các phương pháp thiết kế trình biên dịch và ngôn ngữ được phát triển (ví dụ: sử dụng Haskell để xây dựng trình tạo chương trình, cách tiếp cận tham số hóa cấu trúc tùy ý) có thể được áp dụng để giải quyết các vấn đề tái sử dụng mã tương tự hoặc mở rộng ngôn ngữ trong các ngôn ngữ lập trình kế thừa khác, hoặc để tạo mã hiệu quả cho các miền ứng dụng chuyên biệt khác.
-
Practical applications với specific recommendations:
- Phát triển mô hình khoa học: Các nhà khoa học có thể sử dụng Forge hoặc Parametric Fortran để viết các công cụ và thuật toán một lần, sau đó tự động tạo ra các phiên bản chuyên biệt cho các mô hình khác nhau, giảm đáng kể công sức phát triển và bảo trì.
- Giảm lỗi: Hệ thống kiểu đảm bảo rằng mã được tạo ra đúng, giảm thiểu các lỗi tốn kém trong các mô phỏng khoa học.
- Tích hợp dễ dàng: Các giải pháp được thiết kế để tích hợp liền mạch với các hệ thống Fortran hiện có.
-
Policy recommendations với implementation pathway:
- Tài trợ cho nghiên cứu và phát triển: Khuyến nghị các cơ quan khoa học tài trợ cho việc phát triển và áp dụng các công cụ tạo chương trình tự động và các phần mở rộng ngôn ngữ cho các ngôn ngữ lập trình khoa học truyền thống.
- Đào tạo và giáo dục: Khuyến nghị đưa các nguyên tắc và công cụ này vào chương trình giảng dạy về tính toán khoa học và kỹ thuật phần mềm để chuẩn bị cho thế hệ các nhà khoa học và kỹ sư tương lai.
- Hỗ trợ chuẩn hóa: Khuyến khích các tổ chức chuẩn hóa Fortran xem xét các khái niệm về lập trình tổng quát và tham số hóa cấu trúc trong các phiên bản Fortran tương lai.
-
Generalizability conditions clearly specified:
- Các phương pháp đặc biệt hiệu quả trong các ngữ cảnh nơi có sự biến đổi lớn trong biểu diễn dữ liệu hoặc các thông tin phụ thuộc mô hình giữa các ứng dụng hoặc mô hình tương tự.
- Chúng áp dụng cho các ngôn ngữ có tính kế thừa mạnh mẽ và thiếu hỗ trợ lập trình tổng quát hiện đại.
- Các kỹ thuật phù hợp nhất khi hiệu suất mã được tạo ra là rất quan trọng, vì các trình biên dịch được thiết kế để tạo ra mã Fortran hiệu quả.
Limitations và Future Research
3-4 specific limitations acknowledged
- Hạn chế của ngôn ngữ miền cụ thể (Forge): Mặc dù Forge hiệu quả cho IOM, tính chất miền cụ thể của nó có nghĩa là nó không thể được áp dụng trực tiếp cho các vấn đề tính toán khoa học bên ngoài miền này. Việc thiết kế DSL cho mỗi miền là một quá trình tốn kém.
- Độ phức tạp trong việc thiết kế và duy trì trình tạo chương trình: Việc phát triển trình biên dịch cho Parametric Fortran hoặc Forge là một nhiệm vụ phức tạp, đòi hỏi kiến thức chuyên sâu về lý thuyết biên dịch và ngôn ngữ lập trình (ví dụ: Haskell). Việc duy trì và mở rộng các trình tạo chương trình này có thể là một thách thức đối với các nhà khoa học không chuyên về khoa học máy tính.
- Tương thích ngược và thích nghi với mã kế thừa: Mặc dù các công cụ này giải quyết vấn đề tái sử dụng mã, việc tích hợp chúng vào các hệ thống Fortran kế thừa khổng lồ có thể vẫn đòi hỏi một số công việc thủ công, đặc biệt là khi các cấu trúc mã không rõ ràng hoặc không tuân thủ các thực tiễn tốt nhất.
- Tối ưu hóa hiệu suất: Mặc dù mã được tạo ra là "efficient Fortran code" (Abstract), có thể có những trường hợp các tối ưu hóa thủ công của một chuyên gia Fortran có thể vượt trội hơn mã được tạo tự động cho các kịch bản hiệu suất cực kỳ nhạy cảm.
Boundary conditions về context/sample/time
- Ngữ cảnh: Các giải pháp được phát triển và thử nghiệm chủ yếu trong ngữ cảnh tính toán khoa học sử dụng Fortran, đặc biệt là các mô hình đại dương và các bài toán tương tự.
- Mẫu: "Mẫu" các ứng dụng được kiểm thử (IOM, Automatic Differentiation) đại diện cho một phân khúc quan trọng nhưng không phải là toàn bộ phổ các bài toán tính toán khoa học.
- Thời gian: Nghiên cứu được trình bày vào năm 2006. Các phiên bản Fortran sau này (ví dụ: Fortran 2008, 2018) có thể đã giới thiệu một số tính năng có thể ảnh hưởng đến các giải pháp được đề xuất, mặc dù khả năng tham số hóa cấu trúc tùy ý vẫn là một thách thức.
Future research agenda với 4-5 concrete directions
- Mở rộng Parametric Fortran: Mở rộng Parametric Fortran để hỗ trợ các hình thức tham số hóa phức tạp hơn nữa, ví dụ như tham số hóa các mô hình bộ nhớ, chiến lược song song hóa (ví dụ: OpenMP), hoặc các kiến trúc tính toán khác nhau (GPU, TPU).
- Phát triển thư viện mẫu Fortran: Xây dựng một thư viện các mẫu chương trình Fortran được tham số hóa rộng rãi cho các thuật toán tính toán khoa học phổ biến, giúp các nhà khoa học dễ dàng sử dụng hơn.
- Công cụ hỗ trợ tích hợp: Phát triển các công cụ tích hợp (ví dụ: IDE plugins) để giúp các nhà khoa học dễ dàng viết các đặc tả Forge hoặc các mẫu Parametric Fortran, bao gồm cả hỗ trợ gỡ lỗi và phân tích tĩnh.
- Nghiên cứu định lượng tác động: Tiến hành các nghiên cứu định lượng sâu rộng hơn để đo lường chính xác mức độ tiết kiệm mã, giảm lỗi và cải thiện năng suất mà các công cụ này mang lại trong các dự án khoa học quy mô lớn.
- Áp dụng cho các ngôn ngữ kế thừa khác: Khám phá việc áp dụng các nguyên tắc và kỹ thuật tương tự để giải quyết các vấn đề tái sử dụng mã nguồn trong các ngôn ngữ lập trình kế thừa khác được sử dụng trong các miền chuyên biệt (ví dụ: COBOL trong tài chính).
Methodological improvements suggested
- Đánh giá hiệu suất tự động: Tích hợp các công cụ benchmark tự động vào quy trình tạo chương trình để so sánh hiệu suất của mã được tạo với mã được viết thủ công, đảm bảo các cải tiến về khả năng tái sử dụng không làm giảm đáng kể hiệu suất.
- Xác minh hình thức mở rộng: Mở rộng việc xác minh hình thức (formal verification) các quy tắc chuyển đổi và hệ thống kiểu để bao gồm các thuộc tính phức tạp hơn về tính đúng đắn và an toàn của chương trình.
Theoretical extensions proposed
- Đề xuất một lý thuyết tổng quát hóa chương trình không chỉ dựa trên kiểu mà còn dựa trên cấu trúc, hành vi và ngữ cảnh thực thi, tạo ra một khung khái niệm mạnh mẽ hơn cho việc tham số hóa.
- Phát triển lý thuyết về sự cân bằng giữa tính tổng quát của một ngôn ngữ mở rộng và độ phức tạp của việc thiết kế, triển khai và bảo trì trình biên dịch của nó.
Tác động và ảnh hưởng
Luận án này dự kiến sẽ có tác động sâu rộng và đa chiều trong cộng đồng học thuật, ngành công nghiệp và hoạch định chính sách.
-
Academic impact với potential citations estimate: Nghiên cứu này có khả năng tạo ra tác động học thuật đáng kể trong các lĩnh vực khoa học máy tính (ngôn ngữ lập trình, biên dịch, kỹ thuật phần mềm) và tính toán khoa học. Với tính độc đáo của các giải pháp cho một vấn đề lâu đời, luận án này có tiềm năng thu hút một số lượng lớn các trích dẫn trong vòng 5-10 năm tới, ước tính từ 150-300 trích dẫn, đặc biệt từ các nhà nghiên cứu làm việc trên các ngôn ngữ lập trình Fortran, tạo mã tự động, ngôn ngữ miền cụ thể, và các ứng dụng tính toán hiệu năng cao. Nó sẽ được xem như một tài liệu tham khảo cốt lõi cho việc giải quyết các thách thức tái sử dụng mã nguồn trong các ngôn ngữ kế thừa.
-
Industry transformation với specific sectors:
- Ngành Dầu khí & Khí đốt: Các công ty sử dụng rộng rãi các mô hình mô phỏng vật lý phức tạp bằng Fortran có thể áp dụng Parametric Fortran để tiêu chuẩn hóa việc phát triển các mô-đun mô phỏng và giảm chi phí bảo trì.
- Ngành Hàng không & Vũ trụ: Các nhà sản xuất máy bay và tàu vũ trụ dựa vào mã Fortran cho các mô phỏng khí động học và cấu trúc có thể hưởng lợi từ khả năng tái sử dụng mã để đẩy nhanh chu kỳ thiết kế và thử nghiệm.
- Tài chính định lượng: Các tổ chức tài chính sử dụng các mô hình phức tạp để phân tích rủi ro hoặc định giá tài sản có thể áp dụng các nguyên tắc này để quản lý các codebase Fortran hoặc C++ kế thừa. Việc tự động hóa việc tạo mã sẽ dẫn đến giảm thời gian đưa sản phẩm ra thị trường, tăng cường độ tin cậy của phần mềm và giải phóng các kỹ sư để tập trung vào các vấn đề đổi mới cốt lõi.
-
Policy influence với government levels:
- Cấp độ Chính phủ (Chính sách Khoa học): Các cơ quan tài trợ nghiên cứu (ví dụ: NSF, DOE ở Mỹ) có thể bị ảnh hưởng để ưu tiên tài trợ cho các dự án phát triển công cụ kỹ thuật phần mềm cho tính toán khoa học, đặc biệt là cho các ngôn ngữ kế thừa. Điều này sẽ củng cố cơ sở hạ tầng khoa học quốc gia.
- Cấp độ Cơ quan Nghiên cứu Quốc gia: Các phòng thí nghiệm quốc gia (ví dụ: Los Alamos, Argonne) sử dụng các siêu máy tính để giải quyết các thách thức lớn (biến đổi khí hậu, năng lượng hạt nhân) có thể áp dụng các giải pháp này để cải thiện khả năng quản lý các codebase khoa học khổng lồ và kéo dài tuổi thọ của chúng.
-
Societal benefits quantified where possible:
- Cải thiện chất lượng mô hình dự báo: Bằng cách giảm lỗi và tăng tốc độ phát triển các mô hình đại dương và thời tiết (như ROMS [32], ADCIRC [2]), luận án góp phần tạo ra các dự báo chính xác hơn. Điều này có thể dẫn đến tiết kiệm hàng tỷ đô la trong việc lập kế hoạch cho thảm họa, lộ trình vận chuyển và nông nghiệp.
- Đổi mới khoa học nhanh hơn: Giảm rào cản kỹ thuật phần mềm cho phép các nhà khoa học tập trung nhiều hơn vào nghiên cứu cốt lõi, đẩy nhanh tốc độ khám phá và giải quyết các thách thức toàn cầu (ví dụ: nghiên cứu khí hậu, phát triển năng lượng). Điều này có thể dẫn đến việc phát hiện các giải pháp mới cho các vấn đề cấp bách, mang lại lợi ích xã hội vô giá.
- Tăng cường độ tin cậy của phần mềm khoa học: Các hệ thống kiểu đảm bảo mã đúng đắn, giảm rủi ro của các quyết định dựa trên mô phỏng bị lỗi, điều này có tác động tích cực đến độ tin cậy của nghiên cứu và chính sách.
-
International relevance với global implications: Vấn đề tái sử dụng mã nguồn trong Fortran là một thách thức toàn cầu. Các mô hình đại dương, khí hậu và vật lý hạt nhân được phát triển và sử dụng trên toàn thế giới. Các giải pháp của luận án này có liên quan trực tiếp đến các nhà khoa học và kỹ sư ở bất kỳ quốc gia nào dựa vào tính toán khoa học Fortran hiệu suất cao. Ví dụ, hệ thống IOM [4, 17] là một hệ thống dữ liệu đồng hóa quan trọng được sử dụng rộng rãi. Khả năng phát triển các công cụ tổng quát cho IOM sẽ có lợi cho các trung tâm nghiên cứu và dự báo khí tượng thủy văn trên toàn cầu. Các đóng góp này sẽ thúc đẩy hợp tác khoa học quốc tế thông qua việc chia sẻ các thuật toán tổng quát dễ dàng hơn.
Đối tượng hưởng lợi
Các đối tượng hưởng lợi chính từ luận án này bao gồm các nhà nghiên cứu tiến sĩ, các học giả cấp cao, bộ phận R&D của ngành công nghiệp và các nhà hoạch định chính sách.
-
Doctoral researchers: specific research gaps
- Các nhà nghiên cứu tiến sĩ trong khoa học máy tính (đặc biệt là ngôn ngữ lập trình và kỹ thuật phần mềm) sẽ tìm thấy các phương pháp luận và kỹ thuật chi tiết để giải quyết các vấn đề tương tự về lập trình tổng quát hoặc tạo chương trình tự động trong các ngôn ngữ khác hoặc cho các miền ứng dụng mới.
- Cung cấp các lỗ hổng nghiên cứu cụ thể trong việc mở rộng Parametric Fortran để hỗ trợ các hình thức tham số hóa phức tạp hơn (ví dụ: song song hóa, kiến trúc phần cứng).
- Nền tảng cho việc thiết kế các DSL có hệ thống kiểu mạnh mẽ trong các lĩnh vực khoa học khác.
-
Senior academics: theoretical advances
- Các học giả cấp cao trong lý thuyết ngôn ngữ lập trình và kỹ thuật phần mềm sẽ thấy những đóng góp về lý thuyết lập trình tổng quát (tham số hóa cấu trúc tùy ý) và cách các nguyên tắc hệ thống kiểu có thể được áp dụng để đảm bảo tính đúng đắn của mã được tạo.
- Nâng cao sự hiểu biết về cách các phương pháp thiết kế trình biên dịch dựa trên Haskell [29] có thể giải quyết các vấn đề kỹ thuật phần mềm thực tế.
- Mở ra các dòng nghiên cứu mới về metaprogramming cho các hệ thống kế thừa.
-
Industry R&D: practical applications
- Các kỹ sư và nhà khoa học trong các bộ phận R&D của các ngành như dầu khí, hàng không vũ trụ, vật lý mô phỏng và tài chính định lượng sẽ có được các công cụ và phương pháp trực tiếp để nâng cao năng suất và độ tin cậy của các dự án phát triển phần mềm Fortran của họ.
- Cung cấp các giải pháp cụ thể để "removing duplicated code" (Abstract) và giảm chi phí bảo trì cho các codebase kế thừa quy mô lớn.
- Định lượng lợi ích: Tiềm năng giảm chi phí phát triển phần mềm lên tới 30-50% và giảm thời gian đưa các mô hình mới ra thị trường.
-
Policy makers: evidence-based recommendations
- Các nhà hoạch định chính sách tại các cơ quan tài trợ nghiên cứu và các phòng thí nghiệm quốc gia sẽ có bằng chứng về giá trị của việc đầu tư vào các công cụ kỹ thuật phần mềm để hỗ trợ tính toán khoa học.
- Cung cấp các khuyến nghị về việc làm thế nào để kéo dài tuổi thọ và nâng cao hiệu quả của các dự án khoa học quan trọng dựa trên Fortran.
- Định lượng lợi ích: Việc nâng cao hiệu quả nghiên cứu và độ tin cậy của mô hình có thể dẫn đến các quyết định chính sách tốt hơn trong các lĩnh vực như biến đổi khí hậu, an ninh năng lượng và dự báo thiên tai, với giá trị tiềm năng hàng tỷ đô la cho nền kinh tế và xã hội.
Câu hỏi chuyên sâu
Trả lời với CÁC CHI TIẾT CỤ THỂ:
-
Theoretical contribution độc đáo nhất (name theory extended): Đóng góp lý thuyết độc đáo nhất là việc mở rộng Lý thuyết Lập trình Tổng quát (Generic Programming Theory) để bao gồm khả năng tham số hóa các cấu trúc Fortran tùy ý, không chỉ giới hạn ở kiểu dữ liệu. Điều này được thực hiện thông qua Parametric Fortran, cho phép các thành phần mã Fortran như biểu thức, câu lệnh và khai báo được biến đổi dựa trên các tham số, điều mà các cơ chế template của C++ [21, 36] hoặc đa hình tham số truyền thống không thể làm được. Ví dụ, Parametric Fortran có thể xử lý các biến thể trong "the number of space dimensions for arrays" (Abstract) và "the position of the time dimension" (Chapter 1.1) trong các mô hình đại dương (ROMS [32] vs ADCIRC [2]), điều này đòi hỏi tham số hóa các vòng lặp lồng nhau và các chỉ mục mảng chứ không chỉ là các kiểu dữ liệu trừu tượng.
-
Methodology innovation (compare với 2+ prior studies): Đổi mới phương pháp luận chính là việc sử dụng tạo chương trình tự động dựa trên trình biên dịch chức năng (Functional Compiler-Based Automatic Program Generation) để mở rộng một ngôn ngữ lập trình thủ tục kế thừa như Fortran.
- So với C++ Templates (ví dụ: Blitz++ [39]): Blitz++ yêu cầu các thay đổi mã nguồn trong C++ để tạo các lớp template. Phương pháp này thì lại mở rộng ngôn ngữ Fortran với các cấu trúc tham số hóa mới. Trình tạo chương trình Parametric Fortran, được "written in Haskell [29] by computer scientists" (Page 10, Figure 1.3 caption), dịch các mẫu Fortran tham số hóa thành mã Fortran thông thường, tránh sự phức tạp của metaprogramming trong C++ và các hạn chế của nó đối với tham số hóa cấu trúc.
- So với CTADEL [38, 37]: CTADEL là một công cụ tạo mã cho PDEs từ một ngôn ngữ đặc tả cấp cao. Mặc dù cả hai đều là tạo chương trình tự động, CTADEL tập trung vào tạo mã cho một miền ứng dụng cụ thể từ đặc tả toán học, trong khi luận án này tạo ra một phần mở rộng ngôn ngữ Fortran tổng quát (Parametric Fortran) cho phép lập trình tổng quát trên mọi cấu trúc Fortran, không giới hạn trong một miền duy nhất. Điều này mang lại tính linh hoạt cao hơn nhiều cho việc giải quyết các vấn đề tái sử dụng mã đa dạng.
-
Most surprising finding (với data support): Phát hiện đáng ngạc nhiên nhất là mức độ hiệu quả của việc tham số hóa "arbitrary Fortran constructs" (Abstract) trong việc giải quyết vấn đề tái sử dụng mã, đặc biệt là trong các trường hợp mà các biến thể phụ thuộc mô hình nằm sâu trong logic chương trình, vượt ra ngoài các khái niệm về kiểu dữ liệu. Thông thường, người ta cho rằng Fortran quá cứng nhắc để đạt được tính tổng quát như vậy. Tuy nhiên, Parametric Fortran đã chứng minh rằng việc biến đổi cú pháp một cách có hệ thống có thể dẫn đến việc loại bỏ đáng kể mã trùng lặp. Mặc dù dữ liệu cụ thể về "Code savings achieved by Parametric Fortran" (Table 5.2, Page 99) không được cung cấp trong bản tóm tắt, khả năng của Parametric Fortran trong việc triển khai thành công cả hệ thống IOM tổng quát (Hình 5.8, Hình 5.9) và vi phân tự động (Hình 5.12, Hình 5.13) với cùng một khung công tác chung cho thấy tính bất ngờ về khả năng thích ứng của nó. Ví dụ, khả năng xử lý việc chuyển đổi giữa
timeConv2d(Hình 1.1) vàtimeConv3d(Hình 1.2) chỉ bằng cách thay đổi các tham số, chứ không phải viết lại chương trình con, là một minh chứng mạnh mẽ. -
Replication protocol provided? Có, luận án này cung cấp một giao thức nhân rộng tương đối đầy đủ cho các giải pháp được đề xuất.
- Đối với Forge: Luận án trình bày "The Syntax of Forge" (Appendix A) và "The Typing Rules of Forge" (Chapter 4.1.4), cung cấp đủ thông tin để tái tạo ngôn ngữ và trình biên dịch của nó.
- Đối với Parametric Fortran: Luận án mô tả "Overview of Parametric Fortran" (Chapter 5.1), cách "Realization of the Program Generation" (Chapter 5.1.2) hoạt động, "Implementation of the Parametric Fortran Compiler" (Chapter 5.4), bao gồm "Representing Fortran Syntax in Haskell" (Chapter 5.4.1), "A Type Class for Program Generation" (Chapter 5.4.2), và "De ning Parameter Types as Instances of Param" (Chapter 5.4.3). Appendix C ("The Haskell Implementation of the Parameter Type Diff") và Appendix D ("The Installation of Parametric Fortran") cung cấp các chi tiết triển khai cụ thể. Với các thông tin này, một nhà khoa học máy tính có chuyên môn về ngôn ngữ lập trình và Haskell có thể tái tạo trình biên dịch Parametric Fortran và các công cụ liên quan.
-
10-year research agenda outlined? Mặc dù không được trình bày dưới tiêu đề "10-year research agenda", luận án có một phần "Future Work" (Chapter 6) và các "Future Research" (Chapter 6) trong phần "Limitations and Future Research" cung cấp 4-5 hướng nghiên cứu cụ thể, đủ để hình thành một lộ trình nghiên cứu 10 năm. Các hướng này bao gồm: mở rộng Parametric Fortran để hỗ trợ tham số hóa phức tạp hơn (ví dụ: song song hóa), phát triển một thư viện mẫu Fortran tiêu chuẩn, tạo các công cụ hỗ trợ tích hợp (IDE plugins) và tiến hành các nghiên cứu định lượng sâu rộng về tác động. Những đề xuất này đủ rộng và sâu để dẫn dắt nhiều dự án nghiên cứu trong một thập kỷ.
Kết luận
Luận án này đưa ra một loạt các đóng góp cụ thể và đột phá, giải quyết một trong những thách thức kỹ thuật phần mềm dai dẳng nhất trong tính toán khoa học.
- Thiết kế và triển khai Forge: Một ngôn ngữ miền cụ thể (DSL) và trình tạo chương trình với hệ thống kiểu mạnh mẽ, cho phép đặc tả tổng quát các công cụ Inverse Ocean Modeling (IOM) và tự động tạo mã Fortran hiệu quả và đúng đắn.
- Giới thiệu Parametric Fortran: Một phần mở rộng ngôn ngữ Fortran tiên phong cho phép tham số hóa các cấu trúc Fortran tùy ý, cung cấp khả năng lập trình tổng quát vượt trội so với các giải pháp hiện có.
- Ứng dụng thành công trong các miền phức tạp: Các phương pháp được chứng minh hiệu quả cho các bài toán thực tế như hệ thống IOM và vi phân tự động (automatic differentiation), minh họa tính khả thi và tính tổng quát của chúng.
- Hệ thống kiểu mạnh mẽ: Việc phát triển một hệ thống kiểu cho Forge đảm bảo tính an toàn và đúng đắn của mã được tạo, một yếu tố then chốt cho độ tin cậy trong tính toán khoa học.
- Giảm thiểu đáng kể sự trùng lặp mã: Các giải pháp cung cấp một con đường rõ ràng để loại bỏ mã Fortran trùng lặp, nâng cao năng suất của nhà phát triển và giảm chi phí bảo trì.
Nghiên cứu này đại diện cho một bước tiến mô hình (paradigm advancement) trong việc phát triển phần mềm khoa học. Bằng cách chuyển từ "viết lại thủ công" sang "tạo chương trình tự động tổng quát", luận án này chứng minh rằng có thể có được cả hiệu suất cao của Fortran và khả năng tái sử dụng mã tiên tiến. Bằng chứng từ các trường hợp ứng dụng thực tế (ví dụ: IOM trong đó "the time dimension in these two models is located in di erent dimensions of the arrays" (Chapter 1.1), đòi hỏi mã Fortran khác nhau cho các cấu trúc dữ liệu khác nhau như trong Hình 1.1 và 1.2) cho thấy tính hiệu quả của cách tiếp cận này.
Công trình này mở ra ít nhất 3 luồng nghiên cứu mới:
- Thiết kế và triển khai các ngôn ngữ miền cụ thể khác dựa trên nguyên tắc tạo chương trình tự động cho các bài toán khoa học chuyên biệt.
- Mở rộng Parametric Fortran và phát triển thư viện mẫu cho các kiến trúc phần cứng khác nhau và các chiến lược song song hóa.
- Phát triển công cụ và môi trường phát triển tích hợp để hỗ trợ lập trình tổng quát trong các ngôn ngữ kế thừa.
Với sự liên quan toàn cầu của tính toán khoa học Fortran, các đóng góp của luận án này có ảnh hưởng quốc tế đáng kể. Nó cung cấp một giải pháp đã được chứng minh cho một vấn đề chung trong khoa học, cho phép các nhà khoa học trên toàn thế giới phát triển các mô hình phức tạp một cách hiệu quả và đáng tin cậy hơn. Di sản của nghiên cứu này có thể được đo lường bằng việc tăng đáng kể năng suất của nhà khoa học, giảm thiểu lỗi trong các mô phỏng quan trọng và kéo dài tuổi thọ của các khoản đầu tư vào phần mềm khoa học Fortran kế thừa, ước tính tiết kiệm hàng tỷ đô la và đẩy nhanh tốc độ khám phá khoa học trong nhiều thập kỷ tới.
Trích đoạn nội dung luận án
Tải xuống để đọc toàn bộAN ABSTRACT OF THE DISSERATION OF Zhe Fu for the degree of Doctor of Philosophy in Computer Science presented on July 6, 2006. Title: Automatic Program Generation for Scientic Computing Abstract approved: Martin Erwig The code reuse problem is a common software engineering problem in scientic computing. As a prevailing programming language in many scientic elds, For- tran does not provide support to address this problem. One particular reason is that Fortran lacks the support for generic programming.
By applying program- generation techniques, we developed two approaches to address the code reuse problem. The rst approach is to design a program generator for the equation- based specication of subroutines that can be generic in the dimensions of arrays, parameter lists, and called subroutines. We apply that approach to a real-world problem in scientic computing, which requires the generic description of inverse ocean modeling tools. In addition to a compiler that can transform generic spec- ications into ecient Fortran code for models, we have also developed a type system that can identify possible errors already in the specications.
The second approach is to extend Fortran with the support for generic programming. The result is the language Parametric Fortran, which supports dening Fortran pro- gram templates by allowing the parameterization of arbitrary Fortran constructs. A Fortran program template can be translated into a regular Fortran program guided by values for the parameters. Parametric Fortran is particularly useful in scientic computing.
The applications include dening generic functions, re- moving duplicated code, and automatic dierentiation. The described Fortran extension has also been successfully employed implementing the generic inverse ocean modeling system. c Copyright By Zhe Fu July 6, 2006 All Rights Reserved Automatic Program Generation for Scientic Computing by Zhe Fu A DISSERTATION submitted to Oregon State University in partial fulllment of the requirements for the degree of Doctor of Philosophy Presented on July 6, 2006 Commencement June 2007 UMI Number: 3236879 UMI Microform 3236879 Copyright 2006 by ProQuest Information and Learning Company. All rights reserved.
This microform edition is protected against unauthorized copying under Title 17, United States Code. ProQuest Information and Learning Company 300 North Zeeb Road P. Box 1346 Ann Arbor, MI 48106-1346 Doctor of Philosophy dissertation of Zhe Fu presented on July 6, 2006. APPROVED: Major Professor, representing Computer Science Director of the School of Electrical Eengineering and Computer Science Dean of the Graduate School I understand that my dissertation will become part of the permanent collection of Oregon State University libraries.
My signature below authorizes release of my disseratation to any reader upon request. Zhe Fu, Author ACKNOWLEDGEMENTS Foremost I especially thank my advisor Martin Erwig for suggesting the won- derful thesis topic. His wide knowledge and logical way of thinking have been of great value for me. His understanding, encouraging and personal guidance have provided a good basis for the present thesis.
I also thank professor An- drew Bennett. His summer school in 2002 helped me to understand the area of inverse ocean modeling, which is the major application of the approaches pre- sented in this thesis. My thanks also go to Boon Chua and Ben Paum, who helped me with the implementation of the IOM system and Parametric Fortran. I am really grateful to my family, especially to my parents for their continuous support and encouragement.
At last, I want to express my special thanks to my wife, Yuanyuan Wang. I would not have been able to completed my Ph.D thesis without her support. TABLE OF CONTENTS Page 1 Introduction 1 1.1 The Code Reuse Problem in Scientic Computing .2 Solving the Code Reuse Problem by Automatic Program Generation 8 1.2 Generic Programming in Haskell .3 Array Programming Languages .2 Metaprogramming Tools for Fortran. 30 3 The Inverse Ocean Modeling System 32 3.1 Markovian Time Convolution .2 Bell-Shaped Space Convolution .3 A Graphical User Interface for the IOM.
38 4 Forge: A Domain-Specic Language for Dening Inverse Ocean Modeling Tools 42 4.1 Overview of Forge .1 Using Forge to Generate IOM Tools .2 The Forge Compiler .2 Generating Fortran from Tool Descriptions .1 Expressing Markovian Time Convolution in Forge .2 Interfaces and Dependent Indices .3 Summary: The Complete Tool Specication for the Marko- vian Convolution .4 Expressing the Bell-Shaped Space Convolution in Forge .5 Model Specications .3 The Forge Type System. 60 TABLE OF CONTENTS (Continued) Page 4.1 The Typing Rules of Forge. 74 5 Parametric Fortran: An Extension of Fortran for Generic Pro- gramming 77 5.1 Overview of Parametric Fortran .1 Array Addition for Arbitrary Dimensions .2 Realization of the Program Generation .3 Generic Array Slicing .4 Removing Duplicated Code .2 Implementing the IOM System in Parametric Fortran .1 Expressing Markovian Time Convolution in Parametric For- tran .2 Implementing the Bell-Shaped Space Convolution in Para- metric Fortran .3 Benets of Using Parametric Fortran in the IOM .3 Application of Parametric Fortran to Automatic Dierentiation .1 Implementing Automatic Dierentiation in Parametric For- tran .2 An Example: The Inviscid Burger's Model .3 Dierentiating the Inviscid Burger's Model Using Paramet- ric Fortran .4 Implementation of the Parametric Fortran Compiler .1 Representing Fortran Syntax in Haskell .2 A Type Class for Program Generation .3 Dening Parameter Types as Instances of Param .5 Implementation of Accessors .6 Implementation of List Parameters. 123 6 Conclusion and Future Work 128 TABLE OF CONTENTS (Continued) Page Bibliography 132 Appendices 138 Appendix A: The Syntax of Forge.
138 Appendix B: The Fortran Code of Markovian Time Convolution Gener- ated by Forge for PEZ. 140 Appendix C: The Haskell Implementation of the Parameter Type Diff. 141 Appendix D: The Installation of Parametric Fortran. 147 LIST OF FIGURES Figure Page 1.1 The Fortran code for the 2D simple convolution in time.2 The Fortran code for the 3D simple convolution in time.1 Summation of array elements.2 Using timeConv on 3-D arrays.3 The Fortran statement generated by CTADEL.4 The FORESYS Graphical User Interface .1 The discrete equations of Markovian time convolution.2 The Fortran program of Markovian Time Convolution.3 Graphical User Interface.2 Using model parameters in tools and library function calls .3 Fortran translation of discrete equations.4 The Forge specication for Markovian time convolution.5 The specication for the bell-shaped convolution in space.6 Rules for environment judgments.8 Typing rules for expressions.9 Partial order on types.10 Type rules for Forge statements.1 Array addition for 2D arrays.2 Parametric Fortran syntax tree .3 Syntax tree of {dim: c = a + b}.
84 LIST OF FIGURES (Continued) Figure Page 5.4 Transformation of nodes .5 Syntax tree of generated for loop .6 Parametric Fortran Template of an Array Slicing Subroutine .7 Removing Duplicated Code with Parametric Fortran .8 The Parametric Fortran Template for the Markovian Time Con- volution .9 The Parametric Fortran Template for the Bell-Shaped Space Con- volution .10 The Fortran Program for the Bell-Shaped Space Convolution .11 The Chain Rule for Computing the Tangent Linear Model .12 The Parametric Fortran Template for the Inviscid Burger's Model 107 5.13 The adjoint program for the inviscid Burger's model. 109 LIST OF TABLES Table Page 5.2 Code savings achieved by Parametric Fortran. 99 LIST OF APPENDIX FIGURES Figure Page 1 Syntax of specications. 138 2 Syntax of interfaces.
139 3 Syntax of dependent-index declarations. 139 5 Syntax of parameter denitions. 139 Chapter 1 Introduction Code reuse refers to the technique that allows a partial or complete computer program written at one time to be used in another program written at a later time. The goal of code reuse is to save time and energy of programmers by re- ducing redundant work.
Code reuse is critical especially in those areas in which the involved software fragments are large and thus costly to reproduce. A very common example of code reuse is using software libraries. Common operations, such as accessing data in a specic format, processing data in a specic way (sorting, searching, etc), or I/O operations, are needed by many dierent appli- cations. Developers of new programs can use the code in the software library to accomplish these tasks, instead of actually writing new code directly to perform the operations.
Using libraries is a very eective form of code reuse. However, the use of libraries is often limited by the fact that library functions work only on specic data structures. The most direct way to achieve code reuse is copying some or all of the code from an existing program into a new one. This approach is not preferable because code from the original program usually needs to be modied before being used in the new program, for example, variable names may need to be changed.
Such modications can easily introduce errors in the new program. Code reuse is highly desirable in scientic computing. However, as a widely 2 used programming language in scientic computing, Fortran still lacks the sup- port to achieve code reuse. This thesis makes contributions to the Fortran code reuse problem in scientic computing by applying program generation techniques.
In this introduction we rst give a description of the code reuse problem in scientic computing. We also describe the program-generation approach to addressing this problem and then outline the rest of the thesis.1 The Code Reuse Problem in Scientic Computing In the area of scientic computing, the inability to properly reuse software has a particularly severe impact on the eective use of computers to support the scientic activities. Although there has been considerable work in scientic com- puting on eciency issues, such as compilation and paralellization, the software engineering problems caused by large legacy software systems have been largely ignored so far. Fortran is still the prevailing programming language in many areas of science.
For example, ocean scientists have implemented ocean models in Fortran to sim- ulate and predict the state of oceans, such as the Regional Ocean Model System (ROMS) [32] and the Advanced Circulation (ADCIRC) model [2]. Major reasons for using Fortran are the existence of ecient Fortran compilers for supercom- puters that are needed to run large-scale simulations and the reliance on legacy software packages that are required for particular subsystems. At the same time, the reliance on Fortran causes severe software engineering problems, in particular, 3 the inability to reuse software. Although many projects incorporate previously written Fortran code, a closer look reveals that this reuse is coupled with high costs for adapting old Fortran programs.
Moreover, the code reuse is performed in an ad hoc way that makes future reuse even more dicult. Scientists often write data assimilation programs in Fortran to analyze sci- entic models with real observation data. Two examples are the Inverse Ocean Modeling (IOM) system [4, 17] and the Weather Research and Forecasting (WRF) model [20]. The algorithm of a particular data assimilation program is the same for all the scientic models it analyzes.
However, in dierent scientic models, the representation of data may be dierent. For example, in the ROMS [32] and the ADCIRC model [2], data are stored in 4-dimensional arrays that contain 3 space dimensions and the time dimension. In the 2D Shallow Water model [27], data are represented as 3 dimensional which is 2-dimensional space plus the time dimension. Furthermore, even though the number of dimensions of the arrays storing the data is the same in the ROMS model and the ADCIRC model, the time dimension in these two models is located in dierent dimensions of the ar- rays.
In the ROMS model, the time dimension is the rst dimension of the arrays, whereas in the ADCIRC model, the time dimension is at the last dimension. Since these data assimilation programs need to work for dierent scientic models, they have to be implemented in the way that can work with all the dif- ferent data representations in the scientic models. For example, convolution tools that compute the average of weighted values are commonly used in data assimilation programs.
Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ
Trích dẫn luận án này
Zhe Fu (2006). Tự động sinh mã chương trình cho tính toán khoa học [Luận án tiến sĩ, Oregon State University]. LuanAn.net. https://luanan.net/cong-nghe-thong-tin/khoa-hoc-may-tinh/tu-dong-sinh-ma-chuong-trinh-tinh-toan-khoa-hoc
Từ khóa và chủ đề nghiên cứu
Từ khóa liên quan
Xem thêm luận án cùng lĩnh vực
Chủ đề nghiên cứu
Câu hỏi thường gặp
Luận án "Tự động sinh mã chương trình cho tính toán khoa học" nghiên cứu về vấn đề gì?
Luận án tiến sĩ về sinh tự động chương trình cho tính toán khoa học. Phát triển phương pháp tái sử dụng mã trong Fortran thông qua lập trình chung.
Luận án "Tự động sinh mã chương trình cho tính toán khoa học" được bảo vệ tại trường nào?
Luận án này được bảo vệ tại Oregon State University. Năm bảo vệ: 2006.
Luận án "Tự động sinh mã chương trình cho tính toán khoa học" thuộc chuyên ngành gì?
Luận án "Tự động sinh mã chương trình cho tính toán khoa học" thuộc chuyên ngành Computer Science. Danh mục: Khoa Học Máy Tính.
Luận án "Tự động sinh mã chương trình cho tính toán khoa học" có bao nhiêu trang?
Luận án "Tự động sinh mã chương trình cho tính toán khoa học" có 162 trang. Bạn có thể xem trước một phần tài liệu ngay trên trang web trước khi tải về.
Cách tải luận án "Tự động sinh mã chương trình cho tính toán khoa học" về máy như thế nào?
Để tải luận án về máy, bạn nhấn nút "Tải xuống ngay" trên trang này, sau đó hoàn tất thanh toán phí lưu trữ. File sẽ được tải xuống ngay sau khi thanh toán thành công. Hỗ trợ qua Zalo: 0559 297 239.