Oletetaan että joskus tulisi kisa jossa kilpaileva tekoäly ohjaa esim vuoropohjaista/reaaliaikaista strategiapeliä. Kuinka toteuttaisit ohjelmien kommunikaation siten että tämä ei rajaa ohjelmointikieliä liikaa, eikä käy hitaaksi tai kiintolevyä rasittavaksi?
Ohjelmointiputkan ristinollakisa toteutettiin käynnistämällä molemmat tekoälyohjelmat joka vuorolla kirjoittamalla tekstitiedostoon tulos jonka pääohjelma luki. Tämä on tietysti helppo tapa mutta rasittaa järjestelmää eikä varmaankaan kovin tehokas.
Onnistuisiko esim tcp tyylinen kommunikointi localhost:n tiettyyn porttiin, kuinka moni kieli jäisi ulkopuolelle ja haittaako se ylipäänsä? Tietysti koodaajilla olisi pääohjelma testaamiseen jo tekoälyä tehtäessä joten pakettien yhteensopivuus ei enää kilpailuvaiheessa olisi ongelma.
TCP/IP on hyvä. Ulkopuolelle taitaa jäädä lähinnä QBasic, ja sehän nyt ei ketään kiinnostakaan.
/me ducks and covers
Näyttäisi ettei QBasic ehkä edes jäisi ulkopuolelle ;) Lisäkirjastojen käyttö sallittu.
Jos kyseessä ei ole verkkopeli, voidaan käyttää myös yhteistä muistialuetta viestien välitykseen.
Yhteiset muistialueet vasta rajaisivatkin kieliä ulkopuolelle, ja toteutus on muutenkin niin järjestelmäriippuvainen, että tuo vaatisi tasapuolisuuden vuoksi erityistä omaa rajapintaa.
TCP/IP on hyvä vaihtoehto, joskin myös se vaatii monissa kielissä hieman perustasosta poikkeavaa opettelua.
Käyttäisin mielelläni tekstitiedostoja myös tulevissa kilpailuissa, koska ne eivät rajoita ohjelmointikieltä eivätkä vaadi ylimääräistä opettelua kilpailijoilta.
Minulla on sellainen tuntuma, että TCP/IP:n käyttö ei ole monelle (esim. minulle) itsestään selvää. Aiempien kokemusten perusteella tekstitiedostot ovat riittävän tehokas ratkaisu.
Aihe on jo aika vanha, joten et voi enää vastata siihen.