Loading ...
Sorry, an error occurred while loading the content.

RE: [ise_users] [ANN] Eiffel Wrapper Generator 0.7.0 released

Expand Messages
  • Thomas Beale
    ... This is a crucial point, and should be understood by everyone on this list! The key to understanding how to go about doing systems begins with: who has the
    Message 1 of 19 , Nov 1, 2003
    • 0 Attachment
      Paul Crismer wrote:

      > Hello Robert,
      >
      > > Nevertheless, you would all agree (I hope) that Component
      > > Eiffel Libraries should be designed from scratch engaging all
      > > of our creative potentials, preferably following the
      > > guidelines given by Professor Meyer in [1].
      >
      > Unfortunately I do not agree.
      > Recently, I had the opportunity to somehow "wrap" some
      > parts of C libraries, namely
      > zlib and libpng (file compression and PNG image handling).
      >
      > Sure I could rewrite in Eiffel the whole zlib and libpng.
      > Unfortunately, I do not have the resources (personal and financial)
      > to rewrite those well-working libraries.
      >
      > Moreover, using those libraries was not the ultimate goal.
      > And also, each line of code you write is a line you must maintain.
      > By reusing libraries, you delegate maintenance to other experts.

      This is a crucial point, and should be understood by everyone on this list!
      The key to understanding how to go about doing systems begins with: who has
      the resources, where are they, and how do we access them. If someone else
      already has a development program for something you want (even Linux kernel),
      there really is no point in rewriting it from scratch, except as a purely
      educational exercise. Even if you do have the reources, you have to be aware
      of who is the "primary credible development program" for the library or
      product in question - any separate development you do in whatever language
      will soon enough be a code fork, and you will be on your own anyway.

      Wrapping or otherwise interfacing (e.g. via .net) is the only way to go for
      accessing good-quality, well-established components in other languages which
      are under ongoing active maintanance and development.

      - thomas beale
    • Robert Jurjevic
      Dear Paul, As of my knowledge, what Professor Meyer had in mind when he designed Eiffel was software components re-usability. Actually, as of my knowledge,
      Message 2 of 19 , Nov 3, 2003
      • 0 Attachment
        Dear Paul,

        As of my knowledge, what Professor Meyer had in mind when he designed Eiffel was software components re-usability. Actually, as of my knowledge, Eiffel was a side effect of his interest in how to make software components reusable. In my opinion, if before Eiffel and O-O languages there was always possible to reuse C libraries, why we would have O-O languages and Eiffel in the first place?

        > If someone else already has a development program for something
        > you want (even Linux kernel), there really is no point in rewriting
        > it from scratch, except as a purely educational exercise.

        I am interested in computer chess, particularly in how computers play chess, and that is to say in chess engines, a Drosophila melanogaster of AI. There is a very good chess engine written in C (on fast machines with lot of memory it matches the strength that of an entry level grandmaster). Unfortunately, in my opinion, the code is not easy to maintain. Adding all these subtle changes (say EL of so called AEL pruning, to name one) is difficult and error prone. Some additional functionality is almost impossible to add without a substantial efforts in changing the structure of a part of existing code (say, evaluation function coefficient optimized using data the engine gathers during its play). Even sometimes it is difficult to say if the code really does what you think it should do (logical bugs are difficult to spot). So, I started to write my own chess engine. Of course, mainly to learn something about chess engine internal architecture, but also in order to make a better code (an O-O code). I started in Eiffel but found some difficulties regarding optimization of critical parts (assembler routines and inlined functions) so I decided to use C++ (even though these routines could have been written in C or C++ and then used in Eiffel program). My opinion is that my chess engine project is not useless because there are dozen of others chess engine projects and finished programs, partly from educational point of view and partly that there is a slight change (although a minute) for my engine to play a better chess than some of those already made. Nevertheless, every design (so every O-O as well) has its limits, and there is a point in time after which it is very hard to maintain it or add new features, but the goal is to make the system which is maintainable as long as possible. That is how one adds a new value to existing knowledge and programs, by being able to change and improve what already exists with little or no effort.

        I think it is pointless to say in this forum, but I will say it anyway. If O-O is compared to a kitchen furniture then it would define standardized furniture elements (including dishwashing machines, etc.). On the other hand, a traditional approach to programming would be compared to kitchen furniture made of one piece which fits particular setting. Imagine if you move or if you want to change the layout and functionality of your kitchen. Which approach would give you more freedom for the changes? If you do not make changes your do not progress!

        Yours sincerely,

        Robert Jurjevic


        -----Original Message-----
        From: Thomas Beale [mailto:thomas@...]
        Sent: 01 November 2003 21:02
        To: ise_users@yahoogroups.com
        Subject: RE: [ise_users] [ANN] Eiffel Wrapper Generator 0.7.0 released


        Paul Crismer wrote:

        > Hello Robert,
        >
        > > Nevertheless, you would all agree (I hope) that Component
        > > Eiffel Libraries should be designed from scratch engaging all
        > > of our creative potentials, preferably following the
        > > guidelines given by Professor Meyer in [1].
        >
        > Unfortunately I do not agree.
        > Recently, I had the opportunity to somehow "wrap" some
        > parts of C libraries, namely
        > zlib and libpng (file compression and PNG image handling).
        >
        > Sure I could rewrite in Eiffel the whole zlib and libpng.
        > Unfortunately, I do not have the resources (personal and financial)
        > to rewrite those well-working libraries.
        >
        > Moreover, using those libraries was not the ultimate goal.
        > And also, each line of code you write is a line you must maintain.
        > By reusing libraries, you delegate maintenance to other experts.

        This is a crucial point, and should be understood by everyone on this list!
        The key to understanding how to go about doing systems begins with: who has
        the resources, where are they, and how do we access them. If someone else
        already has a development program for something you want (even Linux kernel),
        there really is no point in rewriting it from scratch, except as a purely
        educational exercise. Even if you do have the reources, you have to be aware
        of who is the "primary credible development program" for the library or
        product in question - any separate development you do in whatever language
        will soon enough be a code fork, and you will be on your own anyway.

        Wrapping or otherwise interfacing (e.g. via .net) is the only way to go for
        accessing good-quality, well-established components in other languages which
        are under ongoing active maintanance and development.

        - thomas beale





        To unsubscribe from this group, send an email to:
        ise_users-unsubscribe@yahoogroups.com



        Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
      • Robert Jurjevic
        Dear Thomas, As of my knowledge, what Professor Meyer had in mind when he designed Eiffel was software components re-usability. Actually, as of my knowledge,
        Message 3 of 19 , Nov 3, 2003
        • 0 Attachment
          Dear Thomas,

          As of my knowledge, what Professor Meyer had in mind when he designed Eiffel was software components re-usability. Actually, as of my knowledge, Eiffel was a side effect of his interest in how to make software components reusable. In my opinion, if before Eiffel and O-O languages there was always possible to reuse C libraries, why we would have O-O languages and Eiffel in the first place?

          > If someone else already has a development program for something
          > you want (even Linux kernel), there really is no point in rewriting
          > it from scratch, except as a purely educational exercise.

          I am interested in computer chess, particularly in how computers play chess, and that is to say in chess engines, a Drosophila melanogaster of AI. There is a very good chess engine written in C (on fast machines with lot of memory it matches the strength that of an entry level grandmaster). Unfortunately, in my opinion, the code is not easy to maintain. Adding all these subtle changes (say EL of so called AEL pruning, to name one) is difficult and error prone. Some additional functionality is almost impossible to add without a substantial efforts in changing the structure of a part of existing code (say, evaluation function coefficient optimized using data the engine gathers during its play). Even sometimes it is difficult to say if the code really does what you think it should do (logical bugs are difficult to spot). So, I started to write my own chess engine. Of course, mainly to learn something about chess engine internal architecture, but also in order to make a better code (an O-O code). I started in Eiffel but found some difficulties regarding optimization of critical parts (assembler routines and inlined functions) so I decided to use C++ (even though these routines could have been written in C or C++ and then used in Eiffel program). My opinion is that my chess engine project is not useless because there are dozen of others chess engine projects and finished programs, partly from educational point of view and partly that there is a slight change (although a minute) for my engine to play a better chess than some of those already made. Nevertheless, every design (so every O-O as well) has its limits, and there is a point in time after which it is very hard to maintain it or add new features, but the goal is to make the system which is maintainable as long as possible. That is how one adds a new value to existing knowledge and programs, by being able to change and improve what already exists with little or no effort.

          I think it is pointless to say in this forum, but I will say it anyway. If O-O is compared to a kitchen furniture then it would define standardized furniture elements (including dishwashing machines, etc.). On the other hand, a traditional approach to programming would be compared to kitchen furniture made of one piece which fits particular setting. Imagine if you move or if you want to change the layout and functionality of your kitchen. Which approach would give you more freedom for the changes? If you do not make changes your do not progress!

          Yours sincerely,

          Robert Jurjevic

          -----Original Message-----
          From: Thomas Beale [mailto:thomas@...]
          Sent: 01 November 2003 21:02
          To: ise_users@yahoogroups.com
          Subject: RE: [ise_users] [ANN] Eiffel Wrapper Generator 0.7.0 released


          Paul Crismer wrote:

          > Hello Robert,
          >
          > > Nevertheless, you would all agree (I hope) that Component
          > > Eiffel Libraries should be designed from scratch engaging all
          > > of our creative potentials, preferably following the
          > > guidelines given by Professor Meyer in [1].
          >
          > Unfortunately I do not agree.
          > Recently, I had the opportunity to somehow "wrap" some
          > parts of C libraries, namely
          > zlib and libpng (file compression and PNG image handling).
          >
          > Sure I could rewrite in Eiffel the whole zlib and libpng.
          > Unfortunately, I do not have the resources (personal and financial)
          > to rewrite those well-working libraries.
          >
          > Moreover, using those libraries was not the ultimate goal.
          > And also, each line of code you write is a line you must maintain.
          > By reusing libraries, you delegate maintenance to other experts.

          This is a crucial point, and should be understood by everyone on this list!
          The key to understanding how to go about doing systems begins with: who has
          the resources, where are they, and how do we access them. If someone else
          already has a development program for something you want (even Linux kernel),
          there really is no point in rewriting it from scratch, except as a purely
          educational exercise. Even if you do have the reources, you have to be aware
          of who is the "primary credible development program" for the library or
          product in question - any separate development you do in whatever language
          will soon enough be a code fork, and you will be on your own anyway.

          Wrapping or otherwise interfacing (e.g. via .net) is the only way to go for
          accessing good-quality, well-established components in other languages which
          are under ongoing active maintanance and development.

          - thomas beale





          To unsubscribe from this group, send an email to:
          ise_users-unsubscribe@yahoogroups.com



          Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
        • Ken Stauffer
          Or the difference between 1950 s era washer/dryer components compared to today s models. ... From: Robert Jurjevic To: ise_users@yahoogroups.com Sent: Monday,
          Message 4 of 19 , Nov 3, 2003
          • 0 Attachment
            Or the difference between 1950's era washer/dryer components compared to today's models.

            ----- Original Message -----
            From: Robert Jurjevic
            To: ise_users@yahoogroups.com
            Sent: Monday, November 03, 2003 8:29 AM
            Subject: RE: [ise_users] [ANN] Eiffel Wrapper Generator 0.7.0 released


            I think it is pointless to say in this forum, but I will say it anyway. If O-O is compared to a kitchen furniture then it would define standardized furniture elements (including dishwashing machines, etc.). On the other hand, a traditional approach to programming would be compared to kitchen furniture made of one piece which fits particular setting. Imagine if you move or if you want to change the layout and functionality of your kitchen. Which approach would give you more freedom for the changes? If you do not make changes your do not progress!



            [Non-text portions of this message have been removed]
          • Paul Cohen
            Hi, ... I think Meyer had a number of things in mind when designing Eiffel. The reason to have Eiffel is that it gives the programmer a lot more support for
            Message 5 of 19 , Nov 3, 2003
            • 0 Attachment
              Hi,

              Robert Jurjevic wrote:

              >Dear Thomas,
              >
              >As of my knowledge, what Professor Meyer had in mind when he designed Eiffel was software components re-usability. Actually, as of my knowledge, Eiffel was a side effect of his interest in how to make software components reusable. In my opinion, if before Eiffel and O-O languages there was always possible to reuse C libraries, why we would have O-O languages and Eiffel in the first place?
              >
              >
              I think Meyer had a number of things in mind when designing Eiffel. The
              reason to have Eiffel is that it gives the programmer a lot more support
              for writing correct, extendable, modularized etc. software than most
              languages before it.

              Of course people knew about the principles of reuse, modular design and
              decoupling of responsability and the need for correct programs etc. before.

              >
              >
              >>If someone else already has a development program for something
              >>you want (even Linux kernel), there really is no point in rewriting
              >>it from scratch, except as a purely educational exercise.
              >>
              >>
              >
              >I am interested in computer chess, particularly in how computers play chess, and that is to say in chess engines, a Drosophila melanogaster of AI. There is a very good chess engine written in C (on fast machines with lot of memory it matches the strength that of an entry level grandmaster). Unfortunately, in my opinion, the code is not easy to maintain. Adding all these subtle changes (say EL of so called AEL pruning, to name one) is difficult and error prone. Some additional functionality is almost impossible to add without a substantial efforts in changing the structure of a part of existing code (say, evaluation function coefficient optimized using data the engine gathers during its play). Even sometimes it is difficult to say if the code really does what you think it should do (logical bugs are difficult to spot). So, I started to write my own chess engine. Of course, mainly to learn something about chess engine internal architecture, but also in order to make a better c!
              > ode (an O-O code). I started in Eiffel but found some difficulties regarding optimization of critical parts (assembler routines and inlined functions) so I decided to use C++ (even though these routines could have been written in C or C++ and then used in Eiffel program). My opinion is that my chess engine project is not useless because there are dozen of others chess engine projects and finished programs, partly from educational point of view and partly that there is a slight change (although a minute) for my engine to play a better chess than some of those already made. Nevertheless, every design (so every O-O as well) has its limits, and there is a point in time after which it is very hard to maintain it or add new features, but the goal is to make the system which is maintainable as long as possible. That is how one adds a new value to existing knowledge and programs, by being able to change and improve what already exists with little or no effort.
              >
              >I think it is pointless to say in this forum, but I will say it anyway. If O-O is compared to a kitchen furniture then it would define standardized furniture elements (including dishwashing machines, etc.). On the other hand, a traditional approach to programming would be compared to kitchen furniture made of one piece which fits particular setting. Imagine if you move or if you want to change the layout and functionality of your kitchen. Which approach would give you more freedom for the changes? If you do not make changes your do not progress!
              >
              >

              Writing programs in your spare time for your own personal pleasure is
              quite a different undertaking than writing software in a real-world
              project with budget-constraints and dead-lines. I would be stupid (and
              probably fired) not to use existing well-used, well-documented software,
              irrespective of what language it was written with. A tool like EWG will
              make this a lot easier and much less error prone.

              In theory and at the coffe break, yes - many software libraries would
              probably be much better if they were rewritten in Eiffel. And by good
              programmers I should add!

              In reality, try to write as much new stuff you can in Eiffel, hopefully
              adding a library here and there, but reuse everything that's worth reusing!

              /Paul
            • Robert Jurjevic
              Dear Paul, ... As I mentioned a couple of times before, no one can prevent you writing a very big Eiffel program in one class with all features exported. In my
              Message 6 of 19 , Nov 3, 2003
              • 0 Attachment
                Dear Paul,

                > I think Meyer had a number of things in mind when designing
                > Eiffel. The reason to have Eiffel is that it gives the programmer
                > a lot more support for writing correct, extendable, modularized
                > etc. software than most languages before it.

                As I mentioned a couple of times before, no one can prevent you writing a very big Eiffel program in one class with all features exported. In my opinion it is more important to understand the O-O concept, paradigm or philosophy. I think it is this philosophy which is difficult to grasp (at least it was for me as I was brought on traditional C). IMHO the differences between Eiffel and C++ are minor (and quite often a matter of taste) in real-life programming (assuming you follow O-O principles, and don't use C++ as C).

                > Writing programs in your spare time for your own personal
                > pleasure is quite a different undertaking than writing software
                > in a real-world project with budget-constraints and dead-lines.

                I agree with you Paul, and most of my professional work is C (legacy) or C++ (using existing classes for GUI). After inventing my own emulation of O-O language (or better to say implementing ideas of masters in the field) in C (simple Eiffel-like assertions, single inheritance, polymorphism and dynamic binding, simple garbage collector, etc.) I introduced it into my code little by little over the years using it very carefully in order to trade-off between runtime efficiency, O-O emulation overheads and code readability on one side and O-O purity on the other.

                I can tell you that my experience shows that if I would not have these 50+ "classes" now in my C code, the code would be much less maintainable and some new features would even be too expensive to implement (it would be easier to rewrite the whole application from scratch or that is what you would need to do anyway in order to implement that radical new feature) and O-O does have a bearing and may have a direct positive effect on real-life programming.

                Yours sincerely,

                Robert Jurjevic

                -----Original Message-----
                From: Paul Cohen [mailto:paco@...]
                Sent: 03 November 2003 17:12
                To: ise_users@yahoogroups.com
                Subject: Re: [ise_users] [ANN] Eiffel Wrapper Generator 0.7.0 released


                Hi,

                Robert Jurjevic wrote:

                >Dear Thomas,
                >
                >As of my knowledge, what Professor Meyer had in mind when he designed Eiffel was software components re-usability. Actually, as of my knowledge, Eiffel was a side effect of his interest in how to make software components reusable. In my opinion, if before Eiffel and O-O languages there was always possible to reuse C libraries, why we would have O-O languages and Eiffel in the first place?
                >
                >
                I think Meyer had a number of things in mind when designing Eiffel. The
                reason to have Eiffel is that it gives the programmer a lot more support
                for writing correct, extendable, modularized etc. software than most
                languages before it.

                Of course people knew about the principles of reuse, modular design and
                decoupling of responsability and the need for correct programs etc. before.

                >
                >
                >>If someone else already has a development program for something
                >>you want (even Linux kernel), there really is no point in rewriting
                >>it from scratch, except as a purely educational exercise.
                >>
                >>
                >
                >I am interested in computer chess, particularly in how computers play chess, and that is to say in chess engines, a Drosophila melanogaster of AI. There is a very good chess engine written in C (on fast machines with lot of memory it matches the strength that of an entry level grandmaster). Unfortunately, in my opinion, the code is not easy to maintain. Adding all these subtle changes (say EL of so called AEL pruning, to name one) is difficult and error prone. Some additional functionality is almost impossible to add without a substantial efforts in changing the structure of a part of existing code (say, evaluation function coefficient optimized using data the engine gathers during its play). Even sometimes it is difficult to say if the code really does what you think it should do (logical bugs are difficult to spot). So, I started to write my own chess engine. Of course, mainly to learn something about chess engine internal architecture, but also in order to make a better c!
                > ode (an O-O code). I started in Eiffel but found some difficulties regarding optimization of critical parts (assembler routines and inlined functions) so I decided to use C++ (even though these routines could have been written in C or C++ and then used in Eiffel program). My opinion is that my chess engine project is not useless because there are dozen of others chess engine projects and finished programs, partly from educational point of view and partly that there is a slight change (although a minute) for my engine to play a better chess than some of those already made. Nevertheless, every design (so every O-O as well) has its limits, and there is a point in time after which it is very hard to maintain it or add new features, but the goal is to make the system which is maintainable as long as possible. That is how one adds a new value to existing knowledge and programs, by being able to change and improve what already exists with little or no effort.
                >
                >I think it is pointless to say in this forum, but I will say it anyway. If O-O is compared to a kitchen furniture then it would define standardized furniture elements (including dishwashing machines, etc.). On the other hand, a traditional approach to programming would be compared to kitchen furniture made of one piece which fits particular setting. Imagine if you move or if you want to change the layout and functionality of your kitchen. Which approach would give you more freedom for the changes? If you do not make changes your do not progress!
                >
                >

                Writing programs in your spare time for your own personal pleasure is
                quite a different undertaking than writing software in a real-world
                project with budget-constraints and dead-lines. I would be stupid (and
                probably fired) not to use existing well-used, well-documented software,
                irrespective of what language it was written with. A tool like EWG will
                make this a lot easier and much less error prone.

                In theory and at the coffe break, yes - many software libraries would
                probably be much better if they were rewritten in Eiffel. And by good
                programmers I should add!

                In reality, try to write as much new stuff you can in Eiffel, hopefully
                adding a library here and there, but reuse everything that's worth reusing!

                /Paul








                To unsubscribe from this group, send an email to:
                ise_users-unsubscribe@yahoogroups.com



                Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
              Your message has been successfully submitted and would be delivered to recipients shortly.