FAS ja FASOS – suomalainen “LAMP‑pino” ennen webiä
FAS‑ohjelmointikieli ja FASOS‑käyttöjärjestelmä muodostivat yhdessä kokonaisuuden, jota voidaan nykytermein verrata LAMP‑pinoon. Kyse ei ollut vain kielestä tai käyttöjärjestelmästä, vaan yhtenäisestä sovellusympäristöstä, jossa ohjelmointi, ajonaikainen hallinta, tiedonkäsittely ja siirrettävyys oli suunniteltu toimimaan saumattomasti yhdessä.
Mitä LAMP tarkoittaa – ja miksi vertaus toimii
Nykyinen LAMP‑pino koostuu neljästä kerroksesta:
- Linux – käyttöjärjestelmä
- Apache – palvelin ja ajonaikainen ympäristö
- MySQL – tiedonhallinta
- PHP / Python / Perl – sovelluslogiikka
FAS‑ympäristössä nämä roolit eivät olleet erillisiä tuotteita, vaan yksi integroitu kokonaisuus, jossa vastuut jakautuivat seuraavasti:
| Nykytermi | FAS‑ympäristön vastine |
|---|---|
| Linux | FASOS |
| Apache | Ajomonitori |
| PHP / Python | FAS‑kieli |
| MySQL | Merkkimuotoiset tiedostot + IS/IR‑rakenteet |
FASOS – käyttöjärjestelmä sovelluksia varten
FASOS ei ollut yleiskäyttöinen käyttöjärjestelmä nykyisessä mielessä, vaan sovellusajoon erikoistunut ympäristö. Sen tehtäviä olivat:
- Modulien lataus ja purku ajonaikaisesti
- Muistinhallinta eri laiteympäristöissä
- Kutsujen optimointi ja linkitys
- Yhteys käyttöjärjestelmän palveluihin
Nykytermein FASOS vastasi Linuxin ja sovelluspalvelimen yhdistelmää, jossa sovellusten elinkaari ja resurssien hallinta oli keskitetty.
FAS‑kieli – sovelluslogiikka ja liiketoimintasäännöt
FAS‑kieli oli sovelluslogiikan ydin, kuten PHP tai Python nykyisessä web‑pinossa. Sen erityispiirteitä olivat:
- Yksinkertainen peruskieli
- Vahva makrojärjestelmä
- Modulaarinen rakenne
- Call‑by‑reference‑parametrinvälitys
Makrot vastasivat nykyisiä framework‑laajennuksia: niillä rakennettiin monimutkaisemmat rakenteet ilman, että peruskieltä paisutettiin.
Ajomonitori – Apache ennen HTTP:tä
Ajomonitori oli FAS‑ympäristön näkymätön mutta keskeinen osa. Se:
- Vastasi ohjelmien käynnistyksestä
- Hallitsi modulien latausta
- Optimoi kutsuja ajonaikaisesti
- Tarjosi rajapinnan käyttöjärjestelmään
Nykytermein ajomonitori vastasi Apachea tai muuta sovelluspalvelinta, joka ei itse sisällä liiketoimintalogiikkaa, mutta mahdollistaa sen suorittamisen tehokkaasti ja hallitusti.
Tiedonhallinta – ennen relaatiotietokantoja
FAS‑ympäristössä tiedot tallennettiin merkkimuotoisina tiedostoina, mikä oli tietoinen ratkaisu:
- Täysi koneriippumattomuus
- Helppo siirrettävyys
- Ennustettava rakenne
IS‑ ja IR‑rakenteet vastasivat nykyisiä indeksoituja tietokantoja, mutta ilman erillistä tietokantapalvelinta. Tietomallit olivat lähempänä flat file + indeksi ‑ratkaisua kuin relaatiomallia.
Modulaarisuus = mikropalvelut ennen mikropalveluja
FAS‑ohjelmat koostuivat itsenäisistä moduleista, joita:
- Ladattiin vain tarvittaessa
- Voitiin päivittää erikseen
- Jaettiin useiden sovellusten kesken
Tämä vastaa nykyistä mikropalvelu‑ ja kirjastomallia, jossa yhteiset komponentit elävät omassa elinkaaressaan.
Siirrettävyys – “write once, run anywhere”
FAS‑ympäristön keskeinen tavoite oli siirrettävyys:
- Sama ohjelma eri koneilla
- Sama lähdekoodi eri käyttöjärjestelmissä
- Minimaalinen ympäristökohtainen muutos
Nykytermein tämä vastaa konttiajattelua: sovellus ja sen ajonaikainen ympäristö muodostavat yhtenäisen kokonaisuuden.
Miksi vertaus LAMP‑pinoon on perusteltu
FAS + FASOS:
- Yhdisti käyttöjärjestelmän, ajonaikaisen ympäristön ja sovelluslogiikan
- Tarjosi vakaan ja pitkäikäisen alustan
- Mahdollisti laajat sovelluskokonaisuudet ilman ulkoisia riippuvuuksia
Kyseessä oli ennen webiä syntynyt sovelluspino, joka ratkaisi samoja ongelmia kuin nykyiset web‑arkkitehtuurit – eri teknologioilla, mutta yllättävän samankaltaisilla periaatteilla.
Perintö
FAS‑ympäristö osoittaa, että monet nykyiset ohjelmistoarkkitehtuurin perusideat – modulaarisuus, siirrettävyys, ajonaikainen hallinta – eivät ole uusia. Ne toteutettiin Suomessa jo vuosikymmeniä ennen web‑aikakautta, omista lähtökohdista ja omiin tarpeisiin.
FAS ja FASOS olivat aikansa täysi sovelluspino, jonka ajattelutapa on yhä tunnistettavissa nykyisissä järjestelmissä.