<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>A Guided Tour of the Fibonacci System: Taste of Time</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Antonio Albano</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Carla Brasini</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Milena Diotallevi</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Giorgio Ghelli</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Renzo Orsini</string-name>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Engineering Ingegneria Informatica S.p.A., Laboratorio Ricerca &amp; Sviluppo</institution>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Università di Pisa</institution>
          ,
          <addr-line>Dipartimento di Informatica</addr-line>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Università di Venezia</institution>
          ,
          <addr-line>Corso di Laurea in Scienze dell'Informazione</addr-line>
        </aff>
      </contrib-group>
      <abstract>
        <p>At the beginning of the eighties, if you had to operate on persistent data with a complex structure, you had to go through a cicle of reading data from storage, converting it in main memory format, operate on the main memory format, convert back to storage format, save the converted data. Somebody had to do something about this.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        1. Introduction: Galileo and Fibonacci
At the beginning of the eighties, if you had to operate on persistent data with a complex
structure, you had to go through a cicle of reading data from storage, converting it in main
memory format, operate on the main memory format, convert back to the storage format, save.
At the Computer Science Department of Pisa University, Antonio Albano began the Galileo
project with the aim of designing a new approach that could end all that hussle: a modern and
robust language and system where you could just operate on complex persistent data as if it
where a local variable of your code, without any need to convert, to load, to save [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] (other
groups were studying the same idea, we do not claim he was the only one [
        <xref ref-type="bibr" rid="ref2 ref3">2, 3</xref>
        ]) .
      </p>
      <p>
        This sounds ambitious, but Galileo was actually much more than this. First of all, it abandoned
the relational data model that was dominating in that period in favour of a much more expressive
“semantic data model”. Then, it exhibited a static and strong type system, which means that
every type error was detected at compile time, with no exception. It was a mostly functional
programming language, meaning that side-efects were limited to a statically delimited amount
of updatable locations, paving the way for simpler approaches to automatic verification of
program properties and to powerful code optimization techniques [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ].
      </p>
      <p>
        The static type system of Galileo was inspired by the language ML, designed by Robin Milner
in the seventies [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], but it substituted polymorphism with subtyping, in order to better support
complex persistent data like those of conceptual models of databases.
      </p>
      <p>
        The first paper on Galileo appears in 1983 [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], which is the same year when Stroustrup
introduced C++. The connection between objects in the C++ style and Galileo subtyping was
immediately clear, and Galileo played a big part in the frenetic research of that period about
the idea of “object-oriented databases”: in the middle of the eighties the Galileo dream of a
database where the “impedence mismatch” between persistent data and program variables
would disappear seemed, for some years, to be adopted by many researchers in the field, and it
even appeared in some commercial products.
      </p>
      <p>
        In the meanwhile, the Galileo project was moving along new lines. First of all, the quest for a
better integration of object-oriented features with strong subtyping [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. These were the years
when graphical interfaces started their difusion, and the Galileo project went in that direction
as well [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ].
      </p>
      <p>An important contribution of the project was the design of new linguistic mechanisms, that
were absent in traditional object-oriented languages but were important to allow Galileo to
be used for conceptual models. In this context, the main contributions of the project were the
notions of roles, virtual objects, and named associations.</p>
      <p>
        Roles and virtual objects were introduced in order to give objects the ability to change thier class
during their lifetime, and to extend to strongly typed objects the capabilities that views provide
to relational databases [
        <xref ref-type="bibr" rid="ref10 ref11 ref9">9, 10, 11</xref>
        ]. Regarding Named associations, object-oriented databases use
object references in order to represent associations, but references are directed while associations
are bi-directional, and references represent unary associations, which association can also be
many-to-many. Named associations were a typed mechanism parallel to the class mechanism
designed to solve these problems [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ].
      </p>
      <p>While Galileo was evolving in order to incorporate these mechanism, its type system was
showing its limits, which derived from the initial choice of trading parametric polymorphism
for subtyping. Advances in the study of type theory, some of which arrived from the Galileo
group itself, proved now that it was possible to have a language supporting the two mechanisms
at the same time [13, 14].</p>
      <p>The combination of parametric polymorphism and subtyping is dificult but is extremely
powerful. Around 1991, the Galileo group, while continuing its work on new versions of
the language and system Galileo [15], began the definition of a new Database Programming
Language, called Fibonacci, which would inherit all the ideas and innovations introduced
by Galileo, but would embed them into an extremely rich type system, able to support new
mechanisms for code reuse and modularization [16, 17].</p>
      <p>The SEBD community followed this stream of innovations, since the first Fibonacci papers
were presented in 1993 and in 1994 to SEBD, before the publication of the Fibonacci definition
in VLDB Journal in 1995 [18, 19].</p>
      <p>Fibonacci was the apex of the Galileo project, and its conclusion. The century was closing
down, new research themes were attracting the group interest, such as semi-structued data, XML
data, mobile ambients, graph databases, data warehouses, peer-to-peer databases. In the world
of commercial databases many new systems were now object-relational, mainstream languages,
such as Java, were starting to combine subtyping with parametric polymorphism, some NoSQL
system were trying to address the impedence mismatch problem, the group decided to move
onwards.</p>
      <p>We do not yet understand why so many programmers have still to load data, convert, operate,
convert back, save the converted data, forty years after Antonio Albano and others studied
many diferent approaches to free the programming world from this legacy, but, at least, we
tried to make our part.
(Eds.), 17th International Conference on Very Large Data Bases, September 3-6, 1991,
Barcelona, Catalonia, Spain, Proceedings, Morgan Kaufmann, 1991, pp. 565–575. URL:
http://www.vldb.org/conf/1991/P565.PDF, Best Paper Award of the European Program
Committee.
[13] P. Curien, G. Ghelli, Coherence of subsumption, minimum typing and type-checking in F&lt;=,
Math. Struct. Comput. Sci. 2 (1992) 55–91. URL: https://doi.org/10.1017/S0960129500001134.
doi:10.1017/S0960129500001134.
[14] G. Ghelli, Termination of system F-bounded: A complete proof, Inf. Comput. 139 (1997)
39–56. URL: https://doi.org/10.1006/inco.1997.2662. doi:10.1006/inco.1997.2662.
[15] A. Albano, G. Antognoni, G. Baratti, G. Ghelli, R. Orsini, Il Galileo95, in: A. Albano,
S. Salerno, F. Arcelli, M. Gaeta, S. Rizzo, G. Vantini (Eds.), Atti del Terzo Convegno Nazionale
su Sistemi Evoluti per Basi di Dati, SEBD 1995, Ravello (Costiera Amalfitana), Italy, 28-30
Giugno 1995, 1995, pp. 247–272.
[16] A. Albano, G. Ghelli, R. Orsini, Fibonacci: A programming language for object databases,</p>
      <p>VLDB J. 4 (1995) 403–444. URL: http://www.vldb.org/journal/VLDBJ4/P403.pdf.
[17] G. Ghelli, F. Nanni, G. Puglielli, A. Albano, Tipi e moduli nel linguaggio Fibonacci, in:
P. Atzeni, L. Cabibbo, M. Panti (Eds.), Atti del Sesto Convegno Nazionale Sistemi Evoluti
per Basi di Dati, SEBD 1998, Ancona, Italy, 23-25 Giugno 1998, 1998, pp. 377–397.
[18] A. Albano, R. Bergamini, G. Ghelli, R. Orsini, An introduction to the database programming
language Fibonacci, in: D. Saccà (Ed.), Convegno SEBD’93, Proceedings of the Conference
on Advanced Database Systems (Atti del Convegno Nazionale su Sistemi Evoluti per Basi
di Dati, SEBD) 1993, Hotel Capo Suvero, Gizzeria, Italy, 14-16 June, 1993, Mediterranean
Press (via S. Pellico, 13 - Tel. 0984-465645 - 87030 Rende (CS)), 1993, pp. 247–266.
[19] A. Albano, C. Brasini, M. Diotallevi, G. Ghelli, R. Orsini, A guided tour of the Fibonacci
system, in: S. Bergamaschi, C. Sartori, P. Tiberio (Eds.), Atti del Secondo Convegno
Nazionale su Sistemi Evoluti per Basi di Dati, SEBD 1994, Rimini, Italy, 1994, Editrice
Esculapio Progetto Leonardo, via U. Terracini, 30, 40131 Bologna, 1994, pp. 371–394.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>A.</given-names>
            <surname>Albano</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Cardelli</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Orsini</surname>
          </string-name>
          ,
          <article-title>Galileo: A strongly-typed, interactive conceptual language</article-title>
          ,
          <source>ACM Trans. Database Syst</source>
          .
          <volume>10</volume>
          (
          <year>1985</year>
          )
          <fpage>230</fpage>
          -
          <lpage>260</lpage>
          . URL: https://doi.org/10.1145/3857.3859. doi:
          <volume>10</volume>
          .1145/3857.3859.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>J. W.</given-names>
            <surname>Schmidt</surname>
          </string-name>
          ,
          <article-title>Some high-level language constructs for data of type relation (abstract)</article-title>
          , in: D.
          <string-name>
            <surname>C. P. Smith</surname>
          </string-name>
          (Ed.),
          <source>Proceedings of the 1977 ACM SIGMOD International Conference on Management of Data</source>
          , Toronto, Canada,
          <source>August 3-5</source>
          ,
          <year>1977</year>
          , ACM,
          <year>1977</year>
          , p.
          <fpage>9</fpage>
          . URL: https: //doi.org/10.1145/509404.509407. doi:
          <volume>10</volume>
          .1145/509404.509407.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>M. P.</given-names>
            <surname>Atkinson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Chisholm</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W. P.</given-names>
            <surname>Cockshott</surname>
          </string-name>
          , PS-Algol:
          <article-title>an Algol with a persistent heap</article-title>
          ,
          <source>ACM SIGPLAN Notices</source>
          <volume>17</volume>
          (
          <year>1982</year>
          )
          <fpage>24</fpage>
          -
          <lpage>31</lpage>
          . URL: https://doi.org/10.1145/988376.988378. doi:
          <volume>10</volume>
          .1145/988376.988378.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>A.</given-names>
            <surname>Albano</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Giannotti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Orsini</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Pedreschi</surname>
          </string-name>
          ,
          <article-title>The type system of Galileo</article-title>
          , in: M. P. Atkinson,
          <string-name>
            <given-names>P.</given-names>
            <surname>Buneman</surname>
          </string-name>
          , R. Morrison (Eds.),
          <source>Data Types and Persistence. Edited Papers from the Proceedings of the First Workshop on Persistent Objects</source>
          , Appin, Scotland,
          <string-name>
            <surname>UK</surname>
          </string-name>
          ,
          <year>August 1985</year>
          , Topics in Information Systems, Springer,
          <year>1985</year>
          , pp.
          <fpage>101</fpage>
          -
          <lpage>119</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>M. J. C.</given-names>
            <surname>Gordon</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Milner</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F. L.</given-names>
            <surname>Morris</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. C.</given-names>
            <surname>Newey</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C. P.</given-names>
            <surname>Wadsworth</surname>
          </string-name>
          ,
          <article-title>A metalanguage for interactive proof in LCF</article-title>
          , in: A. V.
          <string-name>
            <surname>Aho</surname>
            ,
            <given-names>S. N.</given-names>
          </string-name>
          <string-name>
            <surname>Zilles</surname>
          </string-name>
          , T. G. Szymanski (Eds.),
          <source>Conference Record of the Fifth Annual ACM Symposium on Principles of Programming Languages, Tucson</source>
          , Arizona, USA,
          <year>January 1978</year>
          , ACM Press,
          <year>1978</year>
          , pp.
          <fpage>119</fpage>
          -
          <lpage>130</lpage>
          . URL: https://doi.org/ 10.1145/512760.512773. doi:
          <volume>10</volume>
          .1145/512760.512773.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>A.</given-names>
            <surname>Albano</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Orsini</surname>
          </string-name>
          ,
          <string-name>
            <surname>Dialogo:</surname>
          </string-name>
          <article-title>An interactive environment for conceptual design in Galileo</article-title>
          , in: S. Ceri (Ed.),
          <article-title>Methodology and Tools for Data Base Design</article-title>
          , North-Holland,
          <year>1983</year>
          , pp.
          <fpage>229</fpage>
          -
          <lpage>254</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>A.</given-names>
            <surname>Albano</surname>
          </string-name>
          , G. Ghelli,
          <string-name>
            <given-names>M. E.</given-names>
            <surname>Occhiuto</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Orsini</surname>
          </string-name>
          ,
          <article-title>Object-oriented Galileo, in:</article-title>
          <string-name>
            <surname>K. R. Dittrich</surname>
            ,
            <given-names>U.</given-names>
          </string-name>
          <string-name>
            <surname>Dayal</surname>
            ,
            <given-names>A. P.</given-names>
          </string-name>
          Buchmann (Eds.),
          <source>On Object-Oriented Database Systems, Topics in Information Systems</source>
          , Springer,
          <year>1991</year>
          , pp.
          <fpage>87</fpage>
          -
          <lpage>104</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>A.</given-names>
            <surname>Albano</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Alfò</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Coluccini</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Orsini</surname>
          </string-name>
          ,
          <article-title>An overview of Sidereus: A graphical database schema editor for Galileo</article-title>
          , in: J. W. Schmidt,
          <string-name>
            <given-names>S.</given-names>
            <surname>Ceri</surname>
          </string-name>
          , M. Missikof (Eds.),
          <source>Advances in Database Technology - EDBT'88, Proceedings of the International Conference on Extending Database Technology, Venice, Italy, March</source>
          <volume>14</volume>
          -18,
          <year>1988</year>
          , volume
          <volume>303</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>1988</year>
          , pp.
          <fpage>567</fpage>
          -
          <lpage>571</lpage>
          . URL: https://doi.org/10.1007/3-540-19074-0_
          <fpage>77</fpage>
          . doi:
          <volume>10</volume>
          .1007/3-540-19074-0\_
          <fpage>77</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>A.</given-names>
            <surname>Albano</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Bergamini</surname>
          </string-name>
          , G. Ghelli,
          <string-name>
            <given-names>R.</given-names>
            <surname>Orsini</surname>
          </string-name>
          ,
          <article-title>An object data model with roles</article-title>
          , in: R.
          <string-name>
            <surname>Agrawal</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          <string-name>
            <surname>Baker</surname>
            ,
            <given-names>D. A.</given-names>
          </string-name>
          <string-name>
            <surname>Bell</surname>
          </string-name>
          (Eds.),
          <source>19th International Conference on Very Large Data Bases, August 24-27</source>
          ,
          <year>1993</year>
          , Dublin, Ireland, Proceedings, Morgan Kaufmann,
          <year>1993</year>
          , pp.
          <fpage>39</fpage>
          -
          <lpage>51</lpage>
          . URL: http://www.vldb.org/conf/1993/P039.PDF.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>A.</given-names>
            <surname>Albano</surname>
          </string-name>
          , G. Antognoni, G. Ghelli,
          <article-title>View operations on objects with roles for a statically typed database language</article-title>
          ,
          <source>IEEE Trans. Knowl. Data Eng</source>
          .
          <volume>12</volume>
          (
          <year>2000</year>
          )
          <fpage>548</fpage>
          -
          <lpage>567</lpage>
          . URL: https: //doi.org/10.1109/69.868907. doi:
          <volume>10</volume>
          .1109/69.868907.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>G.</given-names>
            <surname>Ghelli</surname>
          </string-name>
          ,
          <article-title>Foundations for extensible objects with roles</article-title>
          ,
          <source>Inf. Comput</source>
          .
          <volume>175</volume>
          (
          <year>2002</year>
          )
          <fpage>50</fpage>
          -
          <lpage>75</lpage>
          . URL: https://doi.org/10.1006/inco.
          <year>2001</year>
          .
          <volume>2943</volume>
          . doi:
          <volume>10</volume>
          .1006/inco.
          <year>2001</year>
          .
          <volume>2943</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>A.</given-names>
            <surname>Albano</surname>
          </string-name>
          , G. Ghelli,
          <string-name>
            <given-names>R.</given-names>
            <surname>Orsini</surname>
          </string-name>
          ,
          <article-title>A relationship mechanism for a strongly typed objectoriented database programming language</article-title>
          , in: G.
          <string-name>
            <surname>M. Lohman</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Sernadas</surname>
          </string-name>
          , R. Camps
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>