{{Short description|Object-oriented programming language}} {{Distinguish|CESIL}} {{Infobox programming language | name = | logo = <!-- (filename) --> | logo caption = | screenshot = <!-- (filename) --> | screenshot caption = | paradigm = [[Object-oriented Programming|object-oriented]] | family = | designer = [[Craig Chambers]] | developer = <!-- or: | developers = --> | released = {{Start date and age|1992|df=yes}} | latest release version = | latest release date = <!-- {{Start date and age|YYYY|MM|DD|df=yes/no}} --> | latest preview version = | latest preview date = <!-- {{Start date and age|YYYY|MM|DD|df=yes/no}} --> | typing = dynamic (optionally static) | scope = | programming language = | discontinued = | platform = | operating system = | license = | file ext = | file format = <!-- or: | file formats = --> | website = <!-- {{url|www.example.com}} --> | implementations = | dialects = | influenced by = | influenced = [[Diesel (programming language)|Diesel]] }}

'''Cecil''' is a pure [[Object-oriented programming|object-oriented]] [[programming language]] that was developed by [[Craig Chambers]] at the [[University of Washington]] in 1992 to be part of the Vortex project there. Cecil has many similarities to other object-oriented languages, most notably [[Objective-C]], [[Modula-3]], and [[Self (programming language)|Self]].<ref name="DeanDeFouw1996">{{cite conference |last1=Dean |first1=Jeffrey |last2=DeFouw |first2=Greg |last3=Grove |first3=David |last4=Litvinov |first4=Vassily |last5=Chambers |first5=Craig |title=Vortex: an optimizing compiler for object-oriented languages |book-title=Proceedings of the 11th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications |conference=[[OOPSLA]]'96 |year=1996 |pages=83–100 |isbn=0-89791-788-X |doi=10.1145/236338.236344|doi-access=free }}</ref><ref name="Chambers1992">{{cite conference |last1=Chambers |first1=Craig |title=Object-oriented multi-methods in Cecil |book-title=ECOOP ’92 European Conference on Object-Oriented Programming |series=[[Lecture Notes in Computer Science|LNCS]]| volume=615 |conference=ECOOP'92 |year=1992 |pages=33–56 |doi=10.1007/BFb0053029 |issn=0302-9743 |isbn=3-540-55668-0}}</ref> The main goals of the project were [[extensibility]], orthogonality, efficiency, and ease-of-use.

The language supports [[multiple dispatch]] and multimethods, dynamic [[Inheritance (object-oriented programming)|inheritance]], and optional [[static type checking]]. Unlike most other OOP systems, Cecil allows subtyping and code inheritance to be used separately, allowing run-time or external extension of object classes or instances. Like Objective-C, all object services in Cecil are invoked by [[message passing]], and the language supports run-time class identification. These features allow Cecil to support dynamic, [[exploratory programming]] styles. Parameterized types and methods ([[Generic programming|generics]], [[type polymorphism|polymorphism]]), [[garbage collection (computer science)|garbage collection]], and [[Delegation (programming)|delegation]] are also supported. Cecil also supports a module mechanism for isolating independent libraries or packages. Cecil does not presently support threads or any other form of concurrency. A standard library for Cecil is also available and includes various collection, utility, system, I/O, and GUI classes.

The [[Diesel (programming language)|Diesel]] language was the successor of Cecil.<ref>{{cite web |title=Diesel |publisher=[[University of Washington]] |url=http://wasp.cs.washington.edu/wasp_diesel.html}}</ref>

==References== {{reflist}}

==External links== * [http://www.cs.washington.edu/research/projects/cecil/ UW Cecil Group: Home] Official webpage * [http://www.cs.washington.edu/research/projects/cecil/www/cecil.html Cecil language features]

[[Category:Dynamically typed programming languages]] [[Category:Object-oriented programming languages]] [[Category:Prototype-based programming languages]]

{{compu-lang-stub}}