Staattinen kirjoitus on ohjelmointikielissä laajalti käytetty tekniikka , jossa muuttuja , aliohjelman parametri, funktion palautusarvo liitetään tyyppiin ilmoitushetkellä eikä tyyppiä voi muuttaa myöhemmin (muuttuja tai parametri hyväksyy, ja funktio palauttaa vain tämän tyyppiset arvot ). Esimerkkejä staattisesti kirjoitetuista kielistä ovat Ada , C , C++ , C# , D , Java , ML , Pascal , Solidity , Go , Fortran. Päinvastainen tekniikka on dynaaminen kirjoitus .
Jotkut staattisesti kirjoitetut kielet saivat myöhemmin mahdollisuuden käyttää myös dynaamista kirjoitusta erityisten alijärjestelmien avulla. Esimerkiksi VariantDelphissä paketit AliceML : ssä [1] , Data.DynamicHaskellissa [2] .
Staattinen kirjoittaminen tuottaa yksinkertaisimman konekoodin , joten se on hyödyllinen kielille, jotka tuottavat käyttöjärjestelmän suoritettavaa tiedostoa tai JIT-käännöstä välikoodia . Monet virheet poistetaan jo käännösvaiheessa, joten staattinen kirjoittaminen sopii monimutkaisen mutta nopean koodin kirjoittamiseen. IDE : ssä osuvampi automaattinen täydennys on mahdollista , varsinkin jos kirjoitus on vahvaa staattista: monet vaihtoehdot voidaan hylätä, koska ne eivät vastaa tyyppiä. Mitä suurempi ja monimutkaisempi projekti on, sitä suurempi on staattisen kirjoittamisen etu ja päinvastoin.
Samaan aikaan staattisesti kirjoitetut kielet, joilla on riittämättömästi kehittynyt matemaattinen perusta, osoittautuvat melko monisanaisiksi: joka kerta on määritettävä, minkä tyyppinen muuttuja on. Joillakin kielillä on automaattinen tyyppipäätelmä , mutta tämä voi johtaa hienovaraisiin virheisiin. Tämä ei päde ML -perheen kielille, jotka perustuvat ns. " päätyyppisyyteen [3] ", joka sekä päättelee automaattisesti minkä tahansa lausekkeen yleisimmän tyypin ja tarkastaa tiukasti riippuvuustyyppien vastaavuuden. Tämä antaa kielelle dynaamisesti kirjoitettujen ilmaisukykyä ja samalla parantaa suorituskykyä ja tyyppiturvallisuutta [3] .