- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi
I have two questions about ifort:
1. Does modern Fortran(2003-2008) supports all the requirements of object oriented programming compared to C++ ? If not,what are those capabilities and what is their usage?
2. Is it possible to open an excel file in fortran and manipulate the data in different sheets of the file and then save and close it?If so,how?
Thanks
I have two questions about ifort:
1. Does modern Fortran(2003-2008) supports all the requirements of object oriented programming compared to C++ ? If not,what are those capabilities and what is their usage?
2. Is it possible to open an excel file in fortran and manipulate the data in different sheets of the file and then save and close it?If so,how?
Thanks
Link Copied
5 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I am not sure how one answers your first question. What are these "requirements"? Fortran's OO support does not match C++ feature-for-feature. For example, while it has destructors (finalizers) it does not have constructors (though you can fake it with your own generic declaration.) Fortran was careful to adopt the most useful part of OO without going down the rabbit hole that C++ did.
As for your second question, yes, it is possible. There is an example provided with the product in the COM zip file, and I have seen users contribute code here in the forum.
As for your second question, yes, it is possible. There is an example provided with the product in the COM zip file, and I have seen users contribute code here in the forum.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi again:
I meant does fortran has all the capabilities to write a code completely in OOP and doesn't lack any necessary feature?
I meant does fortran has all the capabilities to write a code completely in OOP and doesn't lack any necessary feature?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
It depends on your definition of OOP and "necessary". Fortran certainly has the major aspects of OOP: extensibility, polymorphism and type-bound procedures. You tell me what you think is necessary and I can tell you if Fortran has it. Nobody is claiming that Fortran has every OOP feature ever conceived.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Question 1 I shall leave to Steve.
Question 2 appears to not linked to question 1, and leads me to ask what is the driving force behind it?
Excel clearly can use Visual basic (which is pefectly adapted for OOP) to control Windows objects as well as run non-VBS code from DLL's - which may be derived from Fortran code having the correct calling convention - via the Declare statement. Why not just learn some VBA which can open Excel and all sorts of other objects? I don't think that we Fortran programmers are so hidebound to think every thing needs to be done in Fortran if there is an easier way in another language whose basics are relatively easy to learn.
Question 2 appears to not linked to question 1, and leads me to ask what is the driving force behind it?
Excel clearly can use Visual basic (which is pefectly adapted for OOP) to control Windows objects as well as run non-VBS code from DLL's - which may be derived from Fortran code having the correct calling convention - via the Declare statement. Why not just learn some VBA which can open Excel and all sorts of other objects? I don't think that we Fortran programmers are so hidebound to think every thing needs to be done in Fortran if there is an easier way in another language whose basics are relatively easy to learn.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
IMHO Fortran 2003 has enough capabilities to create object-oriented programs. It may not be the style
of OOP that is encouraged by C++, for instance Fortran 2003 has no multiple inheritance, but every OO
language that I know of has its own style of OOP. Fortran does not emphasize the role of classes in the same
way as C++ for instance.
It can even do things that are not as easy or as transparent in C++. For instance: procedure pointers and
type-bound procedures use the very same syntax. That means that it is irrelevant to the using code how
the procedure is bound to the object. A simple example: "age"-dependent behaviour of an object
representing some animal:
type :: animal
...
procedure(behave_in_some_way) :: behave
contains
...
end type
if ( this%age > 2.0 ) then ! Animal becomes mature after 2 years
this%behave => behave_as_adult
endif
The procedure "this%behave" can be changed dynamically per object. (I have adapted this from
my book "Modern Fortran in Practice")
I am not claiming that it is always easy to use an object-oriented programming style in Fortran,
but it definitely is possible and practical. Even before Fortran 2003, you could achieve nice results.
Regards,
Arjen
of OOP that is encouraged by C++, for instance Fortran 2003 has no multiple inheritance, but every OO
language that I know of has its own style of OOP. Fortran does not emphasize the role of classes in the same
way as C++ for instance.
It can even do things that are not as easy or as transparent in C++. For instance: procedure pointers and
type-bound procedures use the very same syntax. That means that it is irrelevant to the using code how
the procedure is bound to the object. A simple example: "age"-dependent behaviour of an object
representing some animal:
type :: animal
...
procedure(behave_in_some_way) :: behave
contains
...
end type
if ( this%age > 2.0 ) then ! Animal becomes mature after 2 years
this%behave => behave_as_adult
endif
The procedure "this%behave" can be changed dynamically per object. (I have adapted this from
my book "Modern Fortran in Practice")
I am not claiming that it is always easy to use an object-oriented programming style in Fortran,
but it definitely is possible and practical. Even before Fortran 2003, you could achieve nice results.
Regards,
Arjen
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page