CHILL

**CHILL** (forkortelse for CCITT High Level Language) er et prosedyrisk høynivå programmeringsspråk som ble lansert i november 1980. Språket er konstruert for bruk i telekommunikasjon og strømbrytere innenfor telefonsentraler, og blir fortsatt brukt av enkelte teleselskaper i eldre systemer og for programmering av stillverk.

Språket CHILL ligner i størrelse og kompleksitet på programmeringsspråket Ada, og har også hentet trekk fra ALGOL 68, Modula-2 og mange andre høynivåspråk som var populære på 1970- og 1980-tallet. I 1996 ble CHILL utvidet med objektorientert programmering; denne avarten kalles *Object CHILL* og CHILL96.

I 1997 lanserte Electronics and Telecommunications Research Institute (ETRI) i Sør-Korea varianten ETRI-CHILL.

I 1989 ble CHILL anerkjent som en standard av den internasjonale standardiseringsorganisasjonen (ISO). CCITT skiftet i 1993 navn til ITU-T, og i slutten av 1999 kunngjorde ITU-T at de hadde stanset vedlikeholdet av CHILL-standarden. Den siste standarden er fra 2003, siste gang gjennomgått 18. juni 2014.

GNU CHILL var en fri og åpen CHILL-kompilator fra GNU-prosjektet. Kompilatoren ble inkludert i GNU Compiler Collection (GCC) versjon 2.95 i 1999. Siste versjon var 2.95.3 som ble lansert i 2001. GNU CHILL er ikke lenger en del av GCC.

CHILL ble blant annet brukt på System 12 fra Alcatel og EWSD fra Siemens. CHILL ble også brukt til å skrive sanntidsoperativsystemet *[[CHIPSY Real-time Operating System]]*. Dette var et prosjekt som Regnesenteret ved Universitetet i Trondheim (RUNIT), SINTEF og det norske selskapet Kvatro Telecom var delaktig i.

## Historie
### Forhistorien
Grunnarbeidet for utviklingen av høynivå programmeringsspråk for telekommunikasjon startet i 1966. CCITT's plenumsmøte i Mar del Plata, Argentina i 1968, besluttet at denne utviklingen skulle håndteres av CCITT. Man innså også nødvendigheten av å standardisere slike språk, og fra 1968 til 1972 var CCITT opptatt av å definere grunnmaterialet for en standard. Man forsøkte å definere programvarespesifikasjoner, så vel som å gi enhetlige beskrivelser av programvarestyrte systemer, slik at forskjellige telefonsystemer lettere kunne sammenlignes med hverandre. De nye språkene måtte være lett å lese og lære, og samtidig være åpne og systemuavhengige.

CCITT besluttet seg for å standardisere tre typer språk. Fra 1973 til 1976 arbeidet de med å skape disse språkene: (1) Et beskrivende språk som definerte beskrivelser av egenskaper, spesifikasjoner og systemer; dette ble senere til *CCITT [[Specification and Description Language]]* (SDL), (2) et høynivåspråk som senere ble til CHILL, og (3) et menneske-maskin kommandospråk for å operere og vedlikeholde telefonsystemene; dette ble senere til *CCITT [[MML (programmeringsspråk)|Man-Machine Language]]* (MML).

### 1973–1974: Enigheten om et nytt programmeringsspråk
I 1973 startet forarbeidet med CHILL. CCITT var engasjert i en evaluering av eksisterende programmeringsspråk, med den intensjon å finne det språket som best fulgte anbefalingene fra CCITT. Deltagere fra AT&T, ITT Corporation, Siemens, UK Post Office og France Telecom var opptatte av å evaluere 27 programmeringsspråk, basert på 15 løselig definerte krav som maskinuavhengighet, portabilitet, den logiske strukturen til programmer, modularisering og utvidbarhet. Kravene var forsiktig definerte og var inspirert av generelle tendenser innenfor programmingsspråk på denne tiden, særlig den akademiske interesse for maskinuavhengighet og portabilitet og industriens interesse i modularisering.

Blant de 27 språkene var ALGOL 68, Pascal og PL/I, så vel som proprietære språk som var utviklet av teleselskaper som ITT Corporation og Ericsson. ALGOL 68 og PL/I ble tidlig forkastet som egnet til telefonsentraler. Til slutt stod syv språk igjen som mulige kandidater:

* Datamax Printer Language (DPL), utviklet av Nippon Telegraph and Telephone (NTT) i Tokyo i Japan
* Ensign Software Programming Language/1 (ESPL/1), utviklet av ITT Corporation i USA og Belgia (solgt til Alcatel i 1986)
* Mary, utviklet av Regnesenteret ved Universitetet i Trondheim (RUNIT)/SINTEF i Norge
* Pascal, skapt i 1970 av den sveitsiske informatikeren Niklaus Wirth (1934–)
* PAPE, utviklet av France Telecom og CNET
* PLEX, utviklet av Ericsson i Sverige
* RTL/2, utviklet ved University of Essex, Storbritannia

Konklusjonen av dette studiet var at ingen av de syv kandidatene var egnet. Evalueringsgruppen fant svakheter i alle språkene. Spesialiserte språk hadde store fordeler fremfor mer generelle språk som Mary og Pascal, fordi de allerede var rettet mot telefonkommunikasjon. Likevel var slike teknologiske fordeler inkompatible med den diplomatiske naturen til CCITT: Det var ikke mulig å skape en universell standard av noe som ble eid og utviklet av én enkelt produsent. Noe slikt ville underminere muligheten til å skape programmer som var portable og maskinvareuavhengige.

I november 1974 konkluderte sluttrapporten med at «[…] det ble slått fast at det ikke var mulig å oppnå konsensus for noe språk, verken i en modifisert eller umodifisert form». Mary og Pascal hadde oppstått i akademiske miljøer, og hadde ingen bagasje fra private økonomiske særinteresser. De samlet likevel ikke nok støtte. Mary var relatert til den akademiske interessen i maskinorienterte høynivåspråk. Pascal var også oppstått i et akademisk miljø, men var lite egnet til «sanntidsprosessering». Niklaus Wirth omtalte denne karakteristikken som «helt objektiv og nøyaktig». CCITT forkastet som sådan både den akademiske rute, såvel som ulike veier som var pløyd opp av ulike produsenter. Det var nå opp til CCITT å skape et nytt programmeringsspråk, å skape noe som var nytt og uprøvd både for organisasjonen, så vel som for dens enkelte medlemmer.

Beslutningen om å lage et standardisert programmeringsspråk, var basert på idéer og strategier som ble lagt frem av administrasjonen for det svenske televerket i 1968. Slike administrasjoner var innflytelsesrike tidlig på 1970-tallet, gjennom arbeidsgrupper som var organisert av CCITT. I november 1974 besluttet deres stemmer at en ekspertgruppe skulle konstruere et nytt programmeringsspråk fra grunnen av. Som sådan var dette i tråd med den indre logikken i det internasjonale telekommunikasjonsregime.

Forskjellige kommersielle produsenter la frem sine egne programmeringsspråk for panelet i CCITT. Det er lite som tyder på at dette skjedde ut fra altruistiske motiver om å dele sine proprietære forretningshemmeligheter med almenheten. De ønsket først og fremst å oppnå fordeler av at deres språk ble anbefalt av CCITT. I denne første runde av teknisk diplomati ble ingen produsenter favoriserte.

CCITT var også påvirket av andre idéer som hadde vokst frem på begynnelsen av 1970-tallet:

* Universaliteten til matematikken hadde økt sin legitimitet gjennom informatikkens utbredelse.
* Det var generell enighet om å bruke verdensspråket engelsk i programmeringsspråk.
* Fagfeltet programvareutvikling (*software engineering*) vokste frem fra 1968 til 1972 for å løse  «programvarekrisen». Fagfeltet påvirket også utviklingen av programmeringsspråk i årene som fulgte, og konferanser om programvareutvikling ble sponset av NATO.
* Fremveksten av maskinorienterte høynivåspråk og digitalisering av telenettet var også i tiden. Førstnevnte fremmet ideen om minimalistiske språk, såvel som ideen om portabilitet og maskinvareuavhengighet.

Disse faktorer førte til dannelsen av en distinkt gruppe som var opptatt av programmeringsspråk for telekommunikasjon. Denne gruppen organiserte *[[International Federation for Information Processing]]* (IFIP) fra 1960, *Software Engineering for Telecommunication Switching Systems* (SETSS) fra 1973 til 1992 og *International Switching Symposium* (ISS) fra 1972 til 1990. Dette miljøet vakte interesse hos CCITT, og hadde en betydelig innflytelse på deltagerne.

### 1975–: Ekspertgruppen
I 1975 ble det satt ned en *[[ad hoc]]*-gruppe bestående av åtte spesialister for å håndtere utviklingen av et nytt programmeringsspråk. De åtte spesialistene representerte Philips (Nederland), NTT (Japan), SINTEF (på vegne av administrasjonen for de nordiske teleselskapene), Siemens (Tyskland), Ellemtel Utvecklings AB (Sverige), ITT (USA), British Telecom (Storbritannia) og PPT (Sveits).

I oktober 1976 var et foreløbig forslag for det nye programmeringsspråket klart, og i 1977 startet en etterfølgende periode med evaluering. Spesialistgruppen ble erstattet av «implementatorenes forum», som samlet praktiske erfaringer fra ulike implementasjoner av språket. I slutten av 1979 ble det endelige forslaget lagt frem, og plenumsforsamlingen i CCITT godkjente definisjonen av CHILL i november 1980.

### 1980–1990: CHILL tas i bruk
Fra 1977 begynte mange selskaper og organisasjoner å konstruere CHILL-kompilatorer. Frem til 1987 var mer enn 30 kompilatorer laget for forskjellige typer datamaskiner og datamaskinarkitekturer. Flere av kompilatorene var satt i industriell produksjon, og de fleste systemene nedenfor ble programmerte med egenproduserte kompilatorer:

### 1990–1999: Fra suksess til marginalisering
Fra 1980 fortsatte CCITT å støtte og vedlikeholde CHILL og oppgradere språket i henhold til industriens behov og den tekniske utvikling. CCITT skiftet i 1993 navn til ITU-T. Utviklingen av CHILL kan deles opp i fire faser:

* 1981–1984: Programmering i stykkevise deler, navnekvalifisering og I/O (over telenett)
* 1985–1988: Tidsverdier og tidsoperasjoner
* 1991–1992: Variabler (dataobjekter) for reelle tall
* 1992–1996: Utvidelser med objekt-orientert programmering

I 1989 ble CHILL anerkjent som en standard av den internasjonale standardiseringsorganisasjonen (ISO).

Arbeidet med objektorienterte versjonen av CHILL ble påbegynt i 1992. Den kalles noen ganger *Object-CHILL*, og andre ganger CHILL96.

I 1997 lanserte Electronics and Telecommunications Research Institute (ETRI) i Sør-Korea en egen variant kalt ETRI-CHILL.

I 1990 var CHILL det eneste programmeringsspråket som var felles for mer enn én av telefonsentralene som var i bruk i verden. Omkring 45% av de digitale sentralene benyttet CHILL, mot omkring 32% i 1985. Mange av de mest suksessfulle telefonsentralsystemene i verdensmarkedet var blitt konstruert for å kjøre CHILL, deriblant systemene EWSD, E10, D70 og System 12 (nevnt ovenfor). På dette tidspunktet hadde mer enn 12&nbsp;000 programmerere benyttet språket på en eller annen måte. I 1993 var det mellom 12&nbsp;000 og 15&nbsp;000 CHILL-programmerere i verden, og mer enn 1&nbsp;000 årsverk hadde blitt brukt på å investere i CHILL-kompilatorer, støtte og trening.

Det nest mest brukte programmeringsspråket for telekommunikasjon i 1993 var Protel (*Procedure Oriented Type Enforcing Language*), som ble benyttet av Northern Telecom i Canada. Programmeringsspråket C, som ble benyttet av AT&T i USA, var på tredjeplass.

I slutten av 1999 – 19 år etter sin fødsel, var språket CHILL blitt marginalisert. Det var faretruende nær sin død. Det var ingen videre utvikling av språket, og ingen ny programvare ble skrevet med CHILL. Språket ble bare brukt av enkelte teleselskaper i eldre systemer og for programmering av stillverk. Den 19. november 1999 kunngjorde ITU-T at de hadde stanset vedlikeholdet av CHILL-standarden. Den siste standarden er fra desember 2003, siste gang gjennomgått 18. juni 2014.

Den 29. august 1998 donerte selskapet Cygnus Solutions sin CHILL-kompilator til GNU-Prosjektet. GNU CHILL var en fri og åpen kompilator, og ble inkludert i GNU Compiler Collection (GCC) versjon 2.95 den 31. juli 1999. Siste versjon (2.95.3) ble lansert den 16. mars 2001, og GNU CHILL ble fjernet i GCC 3.0 som ble lansert 18. juni 2001. GNU CHILL er ikke lenger en del av GCC.

## CHIPSY Real-time Operating System
CHILL ble også brukt til å skrive *CHIPSY Real-time Operating System*, et prosjekt som norske SINTEF og Kvatro Telecom var delaktig i.

## Oppbygningen av CHILL
CHILL arvet trekk fra mange andre høynivåspråk som var populære på 1970- og 1980-tallet, deriblant Ada. Nedenfor er et eksempelprogram i CHILL:

 line_allocator:
 MODULE
    SEIZE line_process, line, occupied, unoccupied,
       search,connect, accepted;
    GRANT line_allocator_process;
    line_allocator_process:
    PROCESS ();
       NEWMODE states = SET(free, busy);
       DCL next_state states := free, lno INT := 0;
       line(lno) := START line_process(lno);
       DO FOR EVER;
          CASE next_state OF
          (free): RECEIVE CASE SET sender;
              (occupied):
                  next_state := busy;
              (search):
                  SEND connect(sender) TO line(lno);
                  SEND accepted TO sender;
                  next_state := busy;
          (else): -- Consume any other signal
          ESAC;
          (busy): RECEIVE CASE SET sender;
             (unoccupied):
                next_state := free;
             (search):
                SEND rejected TO sender;
             (else): -- Consume any other signal
             ESAC;
          ESAC;
       OD;
    END
    line_allocator_process;
 END
 line_allocator;

## Referanser




## Kilder
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*

## Eksterne lenker
*  The CHILL Homepage