Projektit

Tälle sivulle on listattu kaikki ohjelmointi- ja kirjallisuusprojektit, jotka löytyvät tältä sivustolta.

NimiKategoriaKieliVuosi
AsgårdpeliC++~2014
BilarpakettienhallintaohjelmistoRöda2017
Fortenesikääntäjä ja ohjelmointikieliC++2017
Fortobesoteerinen ohjelmointikieliJava2014
Goldfishesoteerinen ohjelmointikieliC++2014
Java-NightfallpeliJava2015
MafiapeliRöda2017
Proceed High Language 1.2ohjelmointikieliJava2012
PlanesikääntäjäRöda2016
PScriptohjelmointikieliHaskell2016
Pycosäveltävä ohjelmaPython2016
Radio Gemnettiradiomm. Röda2017
Respondaverkko-ohjelmaPython2016
RetkiohjelmointikieliPython2018
RödaohjelmointikieliJava2015
Sveohjelmointikielimm. JavaScript~2012
SYCPOLesoteerinen ohjelmointikieliJava2014
Tampioesoteerinen ohjelmointikieliPython2017
Twocodeesoteerinen ohjelmointikieliSve2014
Herimatifiktiivinen kieli2013
Kosminen vuoropuhelusarjakuva2016
Rediamfiktiivinen planeetta2013
Sardiinirasiakirja2015
Tjaldfiktiivinen kieli2013

Ohjelmointiprojektit

Lisää ohjelmiani voi löytää Github-sivuiltani. Lisäksi Esolangs-sivullani on lisää suunnittelemiani ohjelmointikieliä, mutta kaikkia ei ole toteutettu.

Asgård (peli, ~2014)

Asgård on roguetyyppinen vuoropohjainen roolipeli, jossa pelaaja taistelee hirviöitä vastaan pimeässä labyrintissä. Se on tällä hetkellä enemmän pelimoottori kuin varsinainen peli.

Bilar (pakettienhallintaohjelmisto, 2017)

Röda Bilar (Bilar-Importable Library Archive) on pakettienhallintaohjelma Röda-kirjastoille. Sen avulla voi ladata ja päivittää paketteja.

Forten (esikääntäjä ja ohjelmointikieli, 2017)

\PushVar:rnl@start:1
\DefCmd:rnl@IgnoreNls:0{\IfEq:{\Eof}:0{\IfEq:{\PeekToken}{
}{\Ignore:{\NextToken}\rnl@IgnoreNls}}}
\After{\DefOp{
}{\IfEq:{\rnl@start}:1{\rnl@IgnoreNls\SetVar:rnl@start:0}\Else{\IfEq:{\Eof}:0{\IfEq:{\PeekToken}{
}{\Ignore:{\NextToken}`
`
}\Else{ }}\rnl@IgnoreNls}}\EvalAgain}

Forten on saanut vaikutteita TeXistä, Putenista ja Fortobista. Se on ohjelmointikieli, jota voi käyttää esikääntäjänä. Sen ominaisuuksiin kuuluu Fortobista lainattu syntaksin muutettavuus.

Fortob (esoteerinen ohjelmointikieli, 2014)

$i = '0\;
[$i < '1 0].while: [
	$i = $i + '1\\;
	$i p;
]\;

Fortob on edellisen Forobj-kieleni seuraaja. Suunnittelun tavoite oli luoda kielelle mahdollisimman ruma syntaksi, mutta ei kuitenkaan täysin kryptinen. Onnistuin mielestäni suhteellisen hyvin: koodi näyttää tarpeeksi rumalta niin, että se alkaa olla kaunista.

Suuri osa kielen estetiikasta juontuu siitä, että Fortob on oikeasti pinopohjainen konkatenatiivinen kieli. "Infix"-operaattorit on luotu käyttäen hyväksi ominaisuutta, joka sallii komentojen "katsoa mitä koodissa on seuraavaksi". Kieltä on mahdotonta parsia suorittamatta sitä, koska osa syntaksista luodaan suorituksenaikaisesti.

Goldfish (esoteerinen ohjelmointikieli, 2014)

0 rc
48 iisiiisdoh
49 niisiiisoc

Goldfish on esoteerinen ohjelmointikieli, joka perustuu Deadfish i -ohjelmointikieleen. Goldfish on uskoakseni Turing-täydellinen, mutta en ole vielä keksinyt, miten sillä voisi järkevästi kirjoittaa ohjelmia.

Ohjelmaa suoritettaessa Goldfish-tulkki luo kaksi taulua: funktiotaulun ja muuttujataulun. Funktioita voi siirtää indeksistä toiseen, mutta muuttujia ei voi. Funktiota kutsuttaessa käytössä on funktiolle annettu argumentti sekä se muuttuja, joka on muuttujataulussa samassa indeksissä, missä nykyinen funktio on.

Java-Nightfall (peli, 2015)

Java-Nightfall on fork samannimisestä alkuperäisestä keskeneräisestä projektista. Suurin osa koodista ei ole siis minun tekemääni, vaikka olenkin toteuttanut monta tärkeää ominaisuutta. Peli on klooni LEGO:n julkaisemasta hakkerointiteemaisesta pelistä Spybot: The Nightfall Incident ja se on lajityypiltään vuoropohjainen strategiapeli.

Pelaajan tavoite on ohjata "ohjelmia" ruudukossa ja tappaa vastustajan ohjelmat. Jokainen ohjelma koostuu useasta ruudusta ja kasvattaa taakseen "häntää" vähän kuin matopelissä.

Mafia (peli, 2017)

Ohjelma on verkossa toimiva palvelu, jota voi käyttää pelinjohtajana Mafioso-pelissä. Se on saanut vaikutteita Kahoot-palvelusta, ja perustuu älypuhelimien käyttämiseen. Pelin aikana jokaisen pelaajan puhelin kertoo pelaajalle yksilöllisiä ohjeita.

Proceed High Language 1.2 (ohjelmointikieli, 2012)

var evens =
    (1..100).filter (
    	#(i) i%2 == 0
    );

PHL on eräs ensimmäisiä ohjelmointikieliäni. Se kääntyy PIL-väliaikaiskielelle ja siitä C:ksi tai assemblyksi. Se on melko huonostu ohjelmoitu. PHL-kehitysympäristön asentaminen ei ole välttämättä kovin yksinkertaista.

Plan (esikääntäjä, 2016)

<h1>|page.title|</h1>

| for paragraph in page.content |
	<p>|paragraph|</p>
| end |

Plan on kevyt esikääntäjä, joka on tarkoitettu html-mallineiden käsittelyyn. Se on osa Rödan internet-kirjastoa.

Plan julkaistiin joulukuussa 2016. Muun muassa tämä sivusto on generoitu Planilla.

PScript (ohjelmointikieli, 2016)

model Squarable {
	$ square();
}

extend Int with Squarable {
	Int square() {
		return this*this;
	}
}

PScript on harjoituksena toteuttamani ohjelmointikieli, jonka suurin innoittaja on Rust-kieli. Sen hienoin ominaisuus on malleiksi kutsutut tyypit, jotka ovat vähän kuin rajapinnat Javassa mutta eivät aivan. Malleihin perustuva tyyppijärjestelmä mahdollistaa eri toimintojen abstraktoinnin viemisen äärimmäisyyksiin, mikä tekee tyyppihierarkiasta monimutkaisen mutta kauniin: jokainen metodi on määritelty omassa mallissaan. Vaikkei kielestä ole juuri käytännön hyötyä, se onnistuu tehtävässään harjoituksena.

PScript julkaistiin vuonna 2016.

Pyco (säveltävä ohjelma, 2016)

Pyco on säveltävä ohjelma, jonka toteutin ja suunnittelin yhdessä Lassi Kaimion kanssa.

Jos haluat kokeilla Pycoa, voit kuunnella sen sävellyksiä Radio Gemillä.

Radio Gem (nettiradio, 2017)

Radio Gem on Pyco-ohjelman demoamiseen tarkoitettu nettiradio, joka soittaa tauotta tietokoneen säveltämää musiikkia. Se sisältää Pycon lisäksi myös Folklaine-ohjelman sävellyksiä ja Ylekov-ohjelman uutisia.

Responda (verkko-ohjelma, 2016)

Responda on harjoitustyönä ohjelmoitu viestipalvelu, jossa jokainen lähetetty viesti on vastaus johonkin edelliseen viestiin.

Responda julkaistiin vuonna 2016.

Retki (ohjelmointikieli, 2018)

Ennen kirjoitusta sisältämättömän esineen lukemista:
   Sano "[Se] ei sisällä mitään kirjoitusta."
   Keskeytä toiminto.

Retki on Tampion tavoin suomen kirjakieleen perustuva ohjelmointikieli ja se on ottanut vaikutteita englanninkielisestä Inform 7-kielestä. Sen avulla voi luoda omia suomenkielisiä tekstiseikkailuja.

Retki perustuu Suomilog-kirjastooni, jonka avulla voi tehdä jäsentimiä sanataivutukseen perustuville ohjelmointikielille.

Röda (ohjelmointikieli, 2015)

function main(file) {
	readLines(file) | enum() | print(`$linenum $line`) for line, linenum
}

Röda on edistynyt skriptikieli, joka yhdistää ominaisuuksia Bourne Shellistä, Pythonista ja muista komentosarjakielistä. Se tukee sisäänrakennettuna ominaisuutena virtoja, jotka mahdollistavat sekventiaalisen datan käsittelyn helposti ja vaivattomasti. Röda on yleiskäyttöinen, mutta sitä käytetään eniten tiedostojen käsittelyyn, tiedon jäsentelyyn sekä etsimiseen ja verkko-ohjelmointiin.

Röda julkaistiin joulukuussa 2015.

Sve (ohjelmointikieli, ~2012)

def: do10times(task)
	for: local i = 0, i < 10, i++
		task::i


do10times::def(i) print::i

Sve on melko tavanomainen skriptikieli, jonka erikoisin ominaisuus on sen mukautuvat muuttujaympäristöt. Kieli on suunniteltu helpottamaan laajennosten kirjoittamista mm. peleihin ja sitä on käytetty julkisissa kymmenien pelaajien Minecraft-palvelimissa pelimekaniikan ylläpitämiseen ja minipelien rakentamiseen.

Olen toteuttanut Sven sekä Javalla että JavaScriptillä. Sven ensimmäinen versio otetiin käyttöön vuonna 2012.

SYCPOL (esoteerinen ohjelmointikieli, 2014)

PROGRAM           CARD
STANDARD SYSTEM CARD I

MAIN         PROCEDURE
(1) PROCEED TO !PS
      WITH ARGUMENTS
        .TEXT
        .OUTPUT
(2) RETURN
      WITH SUCCESS

SYCPOL (System card programming language) on nostalginen esoteerinen ohjelmointikieli, jonka syntaksi perustuu "järjestelmäkortteihin". Koodi kirjoitetaan jotenkin (ei ole selvää miten) fyysisille korteille, jotka syötetään tietokoneeseen. Nykypäivänä voimme valitettavasti ainoastaan simuloida SYCPOL-koneita.

SYCPOLin virallinen toteutus on Javalla kirjoitettu tulkki VISCIM-JA. Kieli julkaistiin vuonna 2014.

Tampio (esoteerinen ohjelmointikieli, 2017)

Pienen luvun kertoma on
    riippuen siitä, onko se pienempi tai yhtä suuri kuin yksi,
    joko yksi
    tai pieni luku kerrottuna pienen luvun edeltäjän kertomalla.

Luvun edeltäjä on se vähennettynä yhdellä.

Olkoon pieni muuttuja uusi muuttuja, jonka arvo on nolla.

Kun nykyinen sivu avautuu,
    pieneen muuttujaan luetaan luku
    ja nykyinen sivu näyttää pienen muuttujan arvon kertoman.

Tampio on esoteerinen ohjelmointikieli, joka jäljittelee suomen kirjakieltä. Sen syntaksi perustuu siis vahvasti sanojen taivuttamiseen.

Tampio on toteutettu Pythonilla ja se käyttää apunaan Voikko-kirjastoa morfologiseen jäsentämiseen.

Twocode (esoteerinen ohjelmointikieli, 2014)

{ i~0;                 /={i~i+1}============\
  *i~"Hello world\n" }=>={putc(*i)}={!*i}=S=/
                                          #

Twocode on kaksiulotteinen esoteerinen ohjelmointikieli, joka koostuu kaksiulotteisista ohjausrakenteista ja yksiulotteisista komennoista.

Kieli julkaistiin vuonna 2014. Sen toteutus on kirjoitettu Svellä.

Kirjallisuusprojektit

Herimati (fiktiivinen kieli, 2013)

umazikarim uma'akoholini umi amakese!

Herimati on yksinkertaisempi versio tjaldista.

Kosminen vuoropuhelu (sarjakuva, 2016)

Koko ohjelman pointti tuntuu olevan, että siinä on viehättäviä seksinnälkäisiä nuoria naisia...

Kosminen vuoropuhelu on kirjoittamani Internet-sarjakuva. Se perustuu täysin vuoropuheluun, eikä sen "kuvilla" ole juuri mitään funktiota. Itse asiassa sarjakuvat generoidaan tekstitiedostoista.

Rediam (fiktiivinen planeetta, 2013)

Rediam on fiktiivinen planeetta, jonka historiaa, kulttuuria ja kieliä olen kehittänyt tulevia projekteja varten.

Sardiinirasia (kirja, 2015)

Hän heräsi kirkkaaseen valoon, joka loisti takapenkin leveistä ikkunoista. Muistettuaan, missä oli, hän tiiraili eteen nähdäkseen Sannan, mutta joutui pettymykseen todeta olevansa tyhjässä autossa. Hän ponnahti istumaan ja yritti tunnistaa sijaintiaan.

Ulkona oli selvästi päivä. Ikkunasta näkyi asfaltoitu piha ja pieni puinen rakennus. Vihanta niitty ulottautui kauas aidan ulkopuolelle ja rajautui metsään jossain kaukana. Mökin, joka oli punainen ja suippokattoinen, takana oli jonkinlainen parkkipaikan tapainen.

Sanna seisoi pihalla muovikassi kädessään. Hän kätteli laihaa miestä, joka oli pukeutunut lippalakkiin ja ruutupaitaan. He puhuivat jotain, minkä jälkeen Sanna tuli autolle, avasi oven ja veti Teemun ulos.

Sardiinirasia on tulevaisuuden Suomeen sijoittuva romaani, jonka kirjoitin vuoden 2015 NaNoWriMo-kilpailua varten. Se kertoo naapureista Sanna Virrasta ja Teemu Laitalasta, jotka pakenevat kotikaupunkiinsa tehtyä terrori-iskua ja joutuvat myöhemmin poliisien jahtaamiksi.

Kirja on melko viimeistelemätön.

Tjald (fiktiivinen kieli, 2013)

Hernût "oghadtem geprundmse. ko nejaomese, sest levidtest hadma lemese" Adriken junnasteeva.

Adrik herpidtem heghaneeva. ko pidtem nejaoneeva, Adrik muutest tidtalni jelma amasimige gholineeva.

Adrik "hermajadt anmûr herpidtjel, nertni anaghar. jomadt amasnist tur elilla proponasmige, noram vilneva" juntaneeva, Hernût kunnaneevani, delmaneevani. nest amaneeva gal nist. ko hadt, tidtadtem belemeva. vienadt vakkamevaha.

Tjald on keinotekoinen kieli, johon olen kehittänyt sanaston ja kieliopin. Se on osa Rediam-universumia.