QUẢNG CÁO ĐẦU TRANG

Collapse

Thông báo

Collapse
No announcement yet.

Fortran compared with C++

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Fortran compared with C++

    Nhớ hình như ở topic xxx có bác nào đó hỏi về chuyển đổi ngôn ngữ Fortran sang C++ (hay Visual Basic) gì đó...nên wuyen post ở đây hướng dẫn "Fortran compared with C++ " của bà giáo Rebecca Brannon

    http://www.me.unm.edu/~rmbrann/fortcpp.pdf

    Ngoài ra, quan trọng hơn, theo đường link này có thể tìm và download nhiều sách và bài giảng của Rebecca về tensors, strain, Mohr's circle, đặc biệt các bài về Tensors có những vấn đề chưa có sách nào đề cập rõ ràng bằng, và về mảng tensors và constitutive models, bà giáo Rebecca hơi bị siêu cả về tài liệu lẫn cách giảng (my own ideas).

    Hope this help in some way!

    wuyen
    Last edited by wuyen; 15-01-2005, 11:26 AM.

  • #2
    Một vài so sánh giữa Fortran và C trong tính toán kỹ thuật (scientific computing)

    Vừa tìm thấy cái này trong máy tính, post lên nếu cái quan tâm đến lập trình thì đọc cho vui

    ===========

    "I speak Spanish to God, Italian to women, French to men, and German to my horse
    " (Emperor Charles V). Vậy với Tính toán kỹ thuật (Scientific Computing), ta dùng ngôn ngữ gì ? ;-)
    Dưới đây là vài nhận xét về sự lựa chọn giữa Fortran và C theo quan điểm của một người sử dụng. Nếu bạn là expert về chương trình dịch, mời bạn bổ sung thêm ! <o =""></o>

    Nếu bạn dạo một vòng quanh thế giới các chương trình tính toán trong kỹ thuật, bạn sẽ thấy có hai hệ ngôn ngữ lập trình được sử dụng phổ biến nhất : C/C++ và Fortran (chủ yếu là F77, một số ít bắt đầu chuyển sang F90). Trong đó, Fortran vẫn là ngôn ngữ thống trị. Vì sao lại không phải là ngôn ngữ C với cấu trúc chặt chẽ, với các lợi thế về con trỏ và bộ nhớ động ? Ta có thế giải thích bởi một vài lý do như sau


    - Tốc độ tính toán. Với mục tiêu ban đầu là xây dựng một ngôn ngữ “FORmula TRANslation”, ngôn ngữ Fortran đươc thiết kế cho phép thực hiên chương trình với tốc độ nhanh nhất (mục tiêu high performance in computing). Bảng dưới đây cho phép ta so sánh giữa C/C++/F77/F90 dựa trên một vài tiêu chuẩn cần thiết trong việc đánh giá một chương trình tính toán (1: best, 4: worst) (source http://csep1.phy.ornl.gov/CSEP/PL/PL.html , bạn có thể tìm thấy nhưng bình luận chi tiết về từng tiêu chuẩn ở cùng địa chỉ)



    <o ="">
    </o>
    <table class="MsoNormalTable" style="border: 1.5pt outset ; width: 58.1%;" border="1" cellpadding="0" width="58%"> <tbody><tr style=""> <td style="padding: 0.75pt;"> <o =""></o>

    </td> <td style="padding: 0.75pt; width: 8.3%;" width="8%"> C <o =""></o>

    </td> <td style="padding: 0.75pt; width: 9.64%;" width="9%"> C++ <o =""></o>

    </td> <td style="padding: 0.75pt; width: 8.52%;" width="8%"> F77 <o =""></o>

    </td> <td style="padding: 0.75pt; width: 8.52%;" width="8%"> F90 <o =""></o>

    </td> </tr> <tr style=""> <td style="padding: 0.75pt;"> numerical robustness <o =""></o>

    </td> <td style="padding: 0.75pt;"> 4 <o =""></o>

    </td> <td style="padding: 0.75pt;"> 3 <o =""></o>

    </td> <td style="padding: 0.75pt;"> 2 <o =""></o>

    </td> <td style="padding: 0.75pt;"> 1 <o =""></o>

    </td> </tr> <tr style=""> <td style="padding: 0.75pt;"> data parallelism <o =""></o>

    </td> <td style="padding: 0.75pt;"> 3 <o =""></o>

    </td> <td style="padding: 0.75pt;"> 3 <o =""></o>

    </td> <td style="padding: 0.75pt;"> 3 <o =""></o>

    </td> <td style="padding: 0.75pt;"> 1 <o =""></o>

    </td> </tr> <tr style=""> <td style="padding: 0.75pt;"> data abstraction <o =""></o>

    </td> <td style="padding: 0.75pt;"> 3 <o =""></o>

    </td> <td style="padding: 0.75pt;"> 2 <o =""></o>

    </td> <td style="padding: 0.75pt;"> 4 <o =""></o>

    </td> <td style="padding: 0.75pt;"> 1 <o =""></o>

    </td> </tr> <tr style=""> <td style="padding: 0.75pt;"> object oriented programming <o =""></o>

    </td> <td style="padding: 0.75pt;"> 3 <o =""></o>

    </td> <td style="padding: 0.75pt;"> 1 <o =""></o>

    </td> <td style="padding: 0.75pt;"> 4 <o =""></o>

    </td> <td style="padding: 0.75pt;"> 2 <o =""></o>

    </td> </tr> <tr style=""> <td style="padding: 0.75pt;"> functional programming <o =""></o>

    </td> <td style="padding: 0.75pt;"> 3 <o =""></o>

    </td> <td style="padding: 0.75pt;"> 2 <o =""></o>

    </td> <td style="padding: 0.75pt;"> 4 <o =""></o>

    </td> <td style="padding: 0.75pt;"> 1

    </td></tr></tbody> </table>
    Bạn có thể thấy F77/F90 đáp ứng được tiêu chuẩn quan trọng nhất trong Scientific Computing khả năng tính toán các phép tính số học (phần lớn các chương trình trong kỹ thuật đòi hỏi các tính toán phức tạp nhưng lại chỉ cần các chương trình có cấu trúc đơn giản). Ngoài ra, Fortran có thêm lợi điểm là được thiết kế gần gũi với toán học (biến nội tại (intrinsic variable) complex, chỉ sổ của mảng có thể bắt đầu bằng một số bất kỳ, etc).

    - Rất nhiều thư viện và chương trình đã được xây dựng trên Fortran. Trừ khi làm những bài tập nho nhỏ, bạn luôn cần sử dụng các module đã được lập sẵn cho chương trình của mình. Ví dụ như để giải một bài toán kết cấu bằng phương pháp ma trận, thì bạn phải sử dụng một chương trình nghich đảo ma trận. Đây cũng là một lý do quan trọng khiến các chương trình được lập ngôn ngữ Fortran (ngay cả các phiên bản cũ như F77 với rất nhiều yếu điểm so với C, đặc biệt trong việc quản lý mảng) vẫn tiếp tục được phát triển. Việc chuyển ngôn ngữ lập trình cho các chương trình lớn đòi hỏi những khối lượng công viêc và chi phí (trong đó có cả các chi phí đào tạo) không nhỏ. Và ngay cả khi quyết đinh thay đổi ngôn ngữ, việc chuyển từ F77 sang F90 cũng đơn giản hơn.<o =""></o>


    - Dễ học và dễ sử dụng. Cần hiểu rằng các nhà khoa học hay các kỹ sư bản thân họ không phải là những lập trình viên, mà họ là những người sử dụng ngôn ngữ lập trình như một công cụ để giải quyết bài toán của mình. Cấu trúc đơn giản của chương trình Fortran cũng là một lợi thế so với C (ví dụ với biến con trỏ, truyền biến theo địa chỉ) khiến nó được nhiều người sử dụng.<o =""></o>


    Tóm lại, sau 25 năm, ngôn ngữ F77 hiên nay vẫn được sử dụng rộng rãi.
    Và cùng với các cải tiến đáng kể trong F90 về lập trình hướng đối tượng, tính toán song song …, dường như Fortran vẫn chiếm rất nhiêu ưu thế so với C/C++ trong lĩnh vực tính toán kỹ thuật.<o =""></o>

    <o =""></o>Tóm tắt lịch sử ngôn ngữ C và Fortran<o =""></o>

    <o =""></o>1954 Nhóm nghiên cứu của John Backus thiết kế “Mathematical Formula Translating System Fortran” cho hệ máy tính IBM 704 <o =""></o>

    1956 First Fortran Manual published.<o =""></o>

    1966 American Standards Association (ANSI) đưa ra chuẩn Fortran 66 (Fortran IV).<o =""></o>

    1969-73 Ken Thompson, Dennis Ritchie và đồng nghiệp phát triển ngôn ngữ C cho hệ điều hành Unix<o =""></o>

    1978 Fortran 77 standard; <o =""></o>

    Brian Kernighan and Dennis Ritchie xuất bản “The C Programming Language”.<o =""></o>

    1984 Phiên bản đầu tiên của C++. <o =""></o>

    1986 Bjarne Stroustrup xuất bản : The C++ Programming Language.<o =""></o>

    1989 Chuẩn ANSI đầu tiên cho C.<o =""></o>

    1991 Chuẩn Fortran 90. <o =""></o>

    1997 Chuẩn Fortran 95.<o =""></o>

    1998 Chuẩn C++ đầu tiên.<o =""></o>

    2002 Draft Fortran 200x standard.
    Does engineering need science?

    Ghi chú


    • #3
      Ðề: Fortran compared with C++

      Nguyên văn bởi wuyen
      Nhớ hình như ở topic xxx có bác nào đó hỏi về chuyển đổi ngôn ngữ Fortran sang C++ (hay Visual Basic) gì đó...nên wuyen post ở đây hướng dẫn "Fortran compared with C++ " của bà giáo Rebecca Brannon

      http://www.me.unm.edu/~rmbrann/fortcpp.pdf

      Ngoài ra, quan trọng hơn, theo đường link này có thể tìm và download nhiều sách và bài giảng của Rebecca về tensors, strain, Mohr's circle, đặc biệt các bài về Tensors có những vấn đề chưa có sách nào đề cập rõ ràng bằng, và về mảng tensors và constitutive models, bà giáo Rebecca hơi bị siêu cả về tài liệu lẫn cách giảng (my own ideas).

      Hope this help in some way!

      wuyen
      Cái link này hay quá, mình viết bằng C, nhưng vẫn phải đọc cái source FORTRAN để tham khảo. Có cái comparison nay đỡ biết mấy.

      Ghi chú

      Working...
      X