Tính năng lập chỉ mục mảng tùy ý của Fortran gây ra cuộc thảo luận sôi nổi trong cộng đồng lập trình viên

Nhóm Cộng đồng BigGo
Tính năng lập chỉ mục mảng tùy ý của Fortran gây ra cuộc thảo luận sôi nổi trong cộng đồng lập trình viên

Một bài viết gần đây về việc chuyển đổi trình mô phỏng bay F-16 từ Fortran sang Unity đã khơi dậy một cuộc thảo luận thú vị trong cộng đồng lập trình, đặc biệt xung quanh khả năng lập chỉ mục mảng ít được biết đến nhưng mạnh mẽ của Fortran . Cuộc trò chuyện này làm nổi bật cách thức một số tính năng của ngôn ngữ lập trình đã bị bỏ qua hoặc quên lãng trong quá trình phát triển hiện đại.

Thiết kế đẹp mắt của một máy bay tương lai đại diện cho sự đổi mới trong công nghệ mô phỏng bay
Thiết kế đẹp mắt của một máy bay tương lai đại diện cho sự đổi mới trong công nghệ mô phỏng bay

Tính năng lập chỉ mục mảng linh hoạt của Fortran thu hút sự chú ý

Cuộc thảo luận tập trung vào khả năng của Fortran trong việc định nghĩa các mảng với chỉ số bắt đầu tùy ý, thay vì bị giới hạn ở việc lập chỉ mục bắt đầu từ số không hoặc số một như hầu hết các ngôn ngữ hiện đại. Tính năng này cho phép các nhà phát triển tạo ra các mảng bắt đầu từ bất kỳ giá trị chỉ số nào, chẳng hạn như -2 hoặc 5, làm cho mã nguồn trở nên trực quan hơn cho một số ứng dụng nhất định. Trong ví dụ về trình mô phỏng bay, các bảng tra cứu sử dụng chỉ số trong khoảng từ -2 để phù hợp với các giá trị góc âm một cách tự nhiên.

Các thành viên cộng đồng đã bày tỏ sự ngạc nhiên về khả năng này, với nhiều người lưu ý rằng có bao nhiêu mã nguồn phức tạp tồn tại trong các ngôn ngữ khác chỉ để xử lý các phép tính offset. Tính năng này loại bỏ nhu cầu tính toán số học liên tục trong đầu khi làm việc với dữ liệu không tự nhiên bắt đầu từ số không hoặc số một.

Ví dụ Trường hợp Sử dụng:

real(8), dimension(-2:9) :: lookup_table
! Tạo mảng với các chỉ số từ -2 đến 9
! Hữu ích cho các giá trị góc tấn công trong ứng dụng hàng không vũ trụ
Biểu đồ này minh họa lực nâng liên quan đến góc độ, làm nổi bật các mô hình toán học thiết yếu trong hàng không
Biểu đồ này minh họa lực nâng liên quan đến góc độ, làm nổi bật các mô hình toán học thiết yếu trong hàng không

Các tính năng bị mất trong ngôn ngữ lập trình hiện đại

Cuộc trò chuyện đã tiết lộ cách thức nhiều tính năng lập trình hữu ích đã biến mất theo thời gian, phần lớn là do ngôn ngữ lập trình C không bao gồm chúng và các ngôn ngữ khác đã theo C . Một số thành viên cộng đồng đã chỉ ra rằng Pascal , Ada , Modula và các phương ngữ BASIC khác nhau cũng hỗ trợ lập chỉ mục mảng linh hoạt, nhưng những khả năng này đã bị từ bỏ khi các ngôn ngữ dựa trên C trở nên thống trị.

Giống như nhiều tính năng ngôn ngữ lập trình khác, có vẻ như nó đã bị mất đi đơn giản chỉ vì C không có nó và mọi người đều muốn sao chép C .

Nhận xét này đã khơi dậy sự suy ngẫm rộng hơn về cách thức các quyết định thiết kế ngôn ngữ có thể ảnh hưởng đến toàn bộ thế hệ các công cụ và thực hành lập trình.

Các ngôn ngữ hỗ trợ chỉ mục mảng tùy ý:

  • Fortran (cho phép mảng bắt đầu từ bất kỳ chỉ mục nào, ví dụ: từ -2 đến 9)
  • Pascal và Modula
  • Ada (dựa trên Pascal )
  • Các phương ngữ BASIC khác nhau
  • Hầu hết các ngôn ngữ dựa trên C KHÔNG hỗ trợ tính năng này

Ứng dụng thực tế và sự đánh đổi

Trong khi tính năng này mang lại những lợi ích rõ ràng cho một số trường hợp sử dụng nhất định, một số nhà phát triển đã đặt câu hỏi về giá trị thực tế của nó. Những người chỉ trích cho rằng việc lập chỉ mục tùy ý tạo ra sự phức tạp bằng cách yêu cầu các hàm phải biết chỉ số bắt đầu của mảng, có khả năng thêm một tham số khác để truyền xung quanh. Tuy nhiên, những người ủng hộ nhấn mạnh rằng đối với các ứng dụng xử lý các mô hình toán học, dữ liệu khoa học hoặc bảng tra cứu với phạm vi chỉ số có ý nghĩa, tính năng này cải thiện đáng kể khả năng đọc mã và giảm lỗi.

Bối cảnh mô phỏng hàng không vũ trụ đã cung cấp một ví dụ hoàn hảo trong đó các chỉ số âm cho các giá trị góc tấn công làm cho mã nguồn trở nên trực quan hơn so với việc ép buộc mọi thứ vào một hệ thống dựa trên số không với các phép tính offset liên tục.

Tác động rộng hơn đối với thiết kế ngôn ngữ

Cuộc thảo luận này làm nổi bật cách thức tiến hóa ngôn ngữ lập trình không phải lúc nào cũng tiến bộ. Các tính năng giải quyết các vấn đề thực tế có thể biến mất không phải vì chúng có khiếm khuyết, mà vì chúng không được các ngôn ngữ có ảnh hưởng áp dụng. Sự nhiệt tình của cộng đồng trong việc khám phá lại tính năng lập chỉ mục mảng của Fortran cho thấy rằng các nhà thiết kế ngôn ngữ hiện đại có thể được hưởng lợi từ việc xem xét lại các ngôn ngữ cũ để tìm kiếm những viên ngọc bị lãng quên.

Cuộc trò chuyện cũng đề cập đến ý nghĩa ban đầu của Fortran là FORmula TRANslator, nhấn mạnh cách thức ngôn ngữ này được thiết kế đặc biệt cho tính toán toán học và khoa học nơi mà những tính năng như vậy hoàn toàn hợp lý.

Tham khảo: Translating a Fortran F-16 Simulator to Unity 4D