[
    {
        "id": "authors:fx4rx-1jq25",
        "collection": "authors",
        "collection_id": "fx4rx-1jq25",
        "cite_using_url": "https://resolver.caltech.edu/CaltechCSTR:1982.5035-tr-82",
        "type": "monograph",
        "title": "Type Inference in a Declarationless, Object-Oriented Language",
        "author": [
            {
                "family_name": "Holstege",
                "given_name": "Eric J.",
                "clpid": "Holstege-E-J"
            }
        ],
        "abstract": "In recent years, two developments in the design of programming\nlanguages have yielded significant improvements in a number of areas from\nthe standard FBAPP programming model. These are the object-oriented\nparadigm, and variable polymorphism.\n\nThe object-oriented programming model allows the specification, hence\nrestriction of the operations allowed on a data structure, something not\npossible with the more traditional PASCAL-style record structuring. This\nability to encapsulate data from the outside world gives a greater security\nand error avoidance in very large software projects involving many\nprogrammers.\n\nIn addition, the object-oriented style is conceptually easy to program in,\nprovidmg a useful framework for the subdivision of large problems into\nmanageable pieces. This property is essential for the rapid and reliable\nimplementation of large software systems.\n\nVariable polymorphism refers to the ability of variables to change types\nat runtime. This is in contradistinction to typelessness (as in BLISS) where\nvariables have no types associated with them. In most cormon languages,\nthe programmer must declare the types of all the variables he uses; these\ntypes are then static throughout the execution of the program. Declarations\nallow the compiler to produce efficient code and to identify errors whose\ndetection must otherivlse be deferred until runtime; however, they sacrifice\na good deal of the generality which is possible with less stringent variable\nbinding schemes. On the other hand, languages which don't require\ndeclarations, and whch allow variables to change types, such as SNOBOL and\nLISP, provide this generality by virtue of their extremely late binding, but\nthereby sacrifice efficiency.\n\n\nSMALLTALK is perhaps the purest language which embodies both object-\norientedness and declarationlessness. Unfortunately, these two features,\nwhile of great benefit in increasing programmer productivity and program\nreliability, suffer heavily from the point of view of runtime efiiciency.\n\nThe project is to investigate ways to obtain the udeniable advantages of\npolymorphism and object-orientedness, without sacrificing runtime\nefficiency. More specifically, the goal is to build a compiler for a dialect of\nSMALLTALK for the VAX under UNIX (Berkeley 4.lbsd), which incorporates\ndata-flow type inference algorithms enabling it to produce executable\nprograms of an efficiency comparable to that of programs produced by\ncompilers for more traditional but less powerful languages.\n\nThe optimization methods are described, test results are examined, and\nindications of future directions are given.",
        "doi": "10.7907/fx4rx-1jq25",
        "publisher": "California Institute of Technology",
        "publication_date": "1982-01-01"
    }
]