Kirjoittaja Aihe: Onko olemassa 2021 täysin robustia tietokone-ohjelmaa?  (Luettu 1228 kertaa)

Jere Sumell

  • Käyttäjä
  • Viestejä: 348
  • Tietojenkäsittelyn tradenomi vuosimallia 2017.
    • Profiili
    • Tietokone-blogi
Keskustelin taannoin jokin kuukausi takaperin shakkitietokoneen ohjelmoinnista Ohjelmointiputkassa avaten siitä oman säikeensä siellä, niin tuli tuollainen kysymys mieleeni, että voiko tietokone-ohjelma tai algoritmi olla käytännössä koskaan 100% robusti?

Kun tuli juttua ohjelmoinnin teoriassa koodin vaativusmääritelmistä, eli lähinnä että ohjelmakoodi on

a.) mahdollisimman uudelleenkäytettävää (re-usability), mikä yleensä saavutetaan modulaarisoimalla top-down -menetelmällä pilkommalla suuremmat ongelmat yhä pienempiin osa-ongelmiin, kunnes jäljellä on enää niin yksinkertainen metodi, joka todella on moneen tilanteeseen sopiva.
b.) Mahdollisimman vähän koodin toistoa sisältävää (code redudancy), lähinnä turhien toistojen ja ehtolauseiden minimointia, mutta proseduraalisissa ohjelmoinnissa ja rakenteisessa ohjelmoinnissa esiintyy uudelleen toistoa paljonkin, ja mitä mennään ohjelmoinnin historiaan, niin 1950/1960 -luvulla tämä ei ollut mitenkään voinut olla vaatimuksena.

Päädyin miettimään tuollaista, että voiko ylipäätään, jos ongelma on algoritmisesti ratkeava suotuisassa ajassa, kuinka todellista reaalimaailman sovelluksissa ohjelmiston robustisuus käytännössä toteutuneena on?

Päädyin pohdinnassa siihen, että jos ottaa kaikkien ohjelmien emo/isä-ohjelman tarkasteluun, jollaisena käyttöjärjestelmää voidaan ainakin jossain määrin pitää, kun tietokoneella oikein voi tehdä mitään järkevää ilman, että siinä olisi asennettuna jokin kyseisessä sähkölaitteessa toimiva käyttöjärjestelmä, niin Windows nyt ei ainakaan ole lähelläkään robustia, mutta pohtisin, että mahtoiko 1990 vuonna ensimmäinen Linux-versio olla melko lähellä sitä?

Linuxin kehittäjäyhteisö on paisunut ja kehitystyö niin laajaksi, että Linux:kaan, jota voi pitää hyvänä käyttöjärjestelmänä tekniikkansa osalta, niin ei tämäkään mikään täysin robusti käyttöjärjestelmä-ohjelmisto ole käsittääkseni?

Tästä nousee siis kysymys, onko mahdollista ohjelmoida käyttöjärjestelmää jollekin sähkölaitteelle, joka olisi täysin robusti?

Varmaan mikro-ohjelmointitasolla mitä joskus joku täälläkin palstalla totesi, että varmaan prosessoritehtaalla mikro-ohjelmoitu C-kääntäjä Intelin tehtailla poltetaan piirilevyyn kiinni, niin ne varmaan aika tavalla järkeviä analyyseja virhesyötteistä antaa, mutta korkeamman tason vähän kompleksiemmista ohjelmista, en ole nähnyt missään alan kirjallisuudessa ohjelmointiteoriasta puhuttaessa, että koodin pitäisi olla parhaimmillaan myös täysin robusti ratkaisu.

Näin ei varmaan käytännössäkkään ole? Onko muilla palstalaisilla tähän jotain ajatusta heittää?
Free Internet and  people for humans all over the globe!

(Profiilikuvassa oma valokuvani GIMPissä editoituna Disney Classic-väripaletin väreihin ja muunnettuna bittikartta-tiedostosta vektorigrafiikaksi.)

JaniAlander

  • Käyttäjä / moderaattori+
  • Viestejä: 3048
    • Profiili
Vs: Onko olemassa 2021 täysin robustia tietokone-ohjelmaa?
« Vastaus #1 : 27.07.21 - klo:15.14 »
Hmm vierastan vähän tuota robust sanaa, mikähän olisi hyvä suomenkielinen ilmaisu tässä yhteydessä. Ensimmäiset mieleen tulevat olisi sorttia "jämäkkä", "kestävä", "vikasietoinen"....
Core i5-9400F 2.9ghz 32GB Ram, Nvidia RTX2060 Kubuntu 20.04.01-64bit, Windows 10 Pro 64-bit Samsung Series 5, AMD A-6 2.1 GHz 4 Gt Ram, Ubuntu 18.04 64-bit.
Lenovo T60 Core2Duo 2GB Ram Ati Mobility Radeon 128 MB Ubuntu Mate 16.04-64bit
Commodore Amiga 500 1MB Ram.

epiphone

  • Käyttäjä
  • Viestejä: 762
    • Profiili
Vs: Onko olemassa 2021 täysin robustia tietokone-ohjelmaa?
« Vastaus #2 : 27.07.21 - klo:15.27 »
https://www.sanakirja.org/search.php?id=68316&l2=17

Tuollainen tuli googlella vastaan...
Kahvi on väkevin juomani

JaniAlander

  • Käyttäjä / moderaattori+
  • Viestejä: 3048
    • Profiili
Vs: Onko olemassa 2021 täysin robustia tietokone-ohjelmaa?
« Vastaus #3 : 27.07.21 - klo:16.20 »
Vankka olisi tässä yhteydessä ehkä paras...
Core i5-9400F 2.9ghz 32GB Ram, Nvidia RTX2060 Kubuntu 20.04.01-64bit, Windows 10 Pro 64-bit Samsung Series 5, AMD A-6 2.1 GHz 4 Gt Ram, Ubuntu 18.04 64-bit.
Lenovo T60 Core2Duo 2GB Ram Ati Mobility Radeon 128 MB Ubuntu Mate 16.04-64bit
Commodore Amiga 500 1MB Ram.

_Pete_

  • Käyttäjä
  • Viestejä: 1759
  • Fufufuuffuuu
    • Profiili
Vs: Onko olemassa 2021 täysin robustia tietokone-ohjelmaa?
« Vastaus #4 : 28.07.21 - klo:16.06 »
On:

speksi: tulosta loputtomasti "Moi" kunnes ohjelma keskeytetään

Koodia: [Valitse]
10 print "Moi"
20 goto 10

Toimii täysin robustisti speksien mukaan

AimoE

  • Käyttäjä
  • Viestejä: 2128
    • Profiili
Vs: Onko olemassa 2021 täysin robustia tietokone-ohjelmaa?
« Vastaus #5 : 28.07.21 - klo:18.43 »
Näin kerran manuaalin jostain 50-60-luvulta. Siinä esiteltiin ohjelmointikieli tms. nimeltään "Auto Code II" tietokoneeseen, joka on ollut jos ei aivan ensimmäinen Suomessa, niin ihan ensimmäisiä. TKK:n käytössä se taisi olla eka. Kieli oli jotain konekielen ja assemblerin väliltä; silloin ei vielä ollut assemblereita. Esittelytekstissä kehuttiin että tämän uuden järjestelmän avulla verraton kokematonkin ohjelmoija voi nopeasti oppia kirjoitamaan virheettömiä ohjelmia (ihan tarkkaa sanamuotoa en pääse enää tarkistamaan, mutta aikalaillanoinse oli). Siitä on riittänyt naurun aiheeksi ja riittää vieläkin.

Jere Sumell

  • Käyttäjä
  • Viestejä: 348
  • Tietojenkäsittelyn tradenomi vuosimallia 2017.
    • Profiili
    • Tietokone-blogi
Vs: Onko olemassa 2021 täysin robustia tietokone-ohjelmaa?
« Vastaus #6 : 29.07.21 - klo:08.35 »
On:

speksi: tulosta loputtomasti "Moi" kunnes ohjelma keskeytetään

Koodia: [Valitse]
10 print "Moi"
20 goto 10

Toimii täysin robustisti speksien mukaan

No tuo nyt on, mutta sitten herää kysymys, kuinka järkevä tai hyodyllinen ohjelmaa suorittaessa tuo on. Eihän pelkän tervehdystekstin tulostaminen loputtomiin kovinkaan mielekkäältä ohjelmalta vaikuta.
Free Internet and  people for humans all over the globe!

(Profiilikuvassa oma valokuvani GIMPissä editoituna Disney Classic-väripaletin väreihin ja muunnettuna bittikartta-tiedostosta vektorigrafiikaksi.)

Jere Sumell

  • Käyttäjä
  • Viestejä: 348
  • Tietojenkäsittelyn tradenomi vuosimallia 2017.
    • Profiili
    • Tietokone-blogi
Vs: Onko olemassa 2021 täysin robustia tietokone-ohjelmaa?
« Vastaus #7 : 29.07.21 - klo:08.38 »
Hmm vierastan vähän tuota robust sanaa, mikähän olisi hyvä suomenkielinen ilmaisu tässä yhteydessä. Ensimmäiset mieleen tulevat olisi sorttia "jämäkkä", "kestävä", "vikasietoinen"....

Kyllä tuo vakaa, vankka aika lähellä on jos ei tykkää robusti-sanaa itseään käyttää.

Yleensä akateemisissa teksteissä on tuo robusti, mutta kyllähän se vankka, kestävä, kun viittaan esimerkiksi Tieteen Termipankin Wiki-lähteeseen, jossa on myos tuo virhesyotteiden mielekkäät analyysit.

https://tieteentermipankki.fi/wiki/Nimitys:robusti
Free Internet and  people for humans all over the globe!

(Profiilikuvassa oma valokuvani GIMPissä editoituna Disney Classic-väripaletin väreihin ja muunnettuna bittikartta-tiedostosta vektorigrafiikaksi.)

_Pete_

  • Käyttäjä
  • Viestejä: 1759
  • Fufufuuffuuu
    • Profiili
Vs: Onko olemassa 2021 täysin robustia tietokone-ohjelmaa?
« Vastaus #8 : 29.07.21 - klo:08.56 »
On:

speksi: tulosta loputtomasti "Moi" kunnes ohjelma keskeytetään

Koodia: [Valitse]
10 print "Moi"
20 goto 10

Toimii täysin robustisti speksien mukaan

No tuo nyt on, mutta sitten herää kysymys, kuinka järkevä tai hyodyllinen ohjelmaa suorittaessa tuo on. Eihän pelkän tervehdystekstin tulostaminen loputtomiin kovinkaan mielekkäältä ohjelmalta vaikuta.

Niin kuten tämän tapauksen määrittelystä näkee niin se juuri niin järkevä ja hyödyllinen kuin pitääkin.


kamara

  • Käyttäjä
  • Viestejä: 2559
    • Profiili
Vs: Onko olemassa 2021 täysin robustia tietokone-ohjelmaa?
« Vastaus #9 : 29.07.21 - klo:14.51 »
Kyllähän monimutkaisiakin ohjelmia voi todistaa oikein toimivaksi, mutta silloin todistuksenkin pitää olla virheetön. Eli sekin olisi parempi tehdä koneellisesti – ainakin osittain.

AimoE

  • Käyttäjä
  • Viestejä: 2128
    • Profiili
Vs: Onko olemassa 2021 täysin robustia tietokone-ohjelmaa?
« Vastaus #10 : 29.07.21 - klo:17.53 »
Kyllähän monimutkaisiakin ohjelmia voi todistaa oikein toimivaksi, mutta silloin todistuksenkin pitää olla virheetön. Eli sekin olisi parempi tehdä koneellisesti – ainakin osittain.
Ainakin osittain, joopa joo. Sanotaan että Gödel tuli hulluksi todistettuaan että kaikkia matemaattisia totuuksia ei voi todistaa (tulos tunnetaan nimellä Gödelin epätäydellisyyslause). Vain hitunen kaikista matemaattisen logiikan totuuksista voidaan matemaattisen logiikan säännöillä todistaa, ja ohjelman oikein toimivaksi todistaminen kuuluu juuri tähän todistusten luokkaan.

Gödelin täydellisyyslause kuului ainakin minun aikanani lukion oppimäärään, mutta Gödelin epätäydellisyyslause todistuksineen käydään edelleenkin läpi vasta yliopistolla, matemaattisen logiikan kurssilla.

AimoE

  • Käyttäjä
  • Viestejä: 2128
    • Profiili
Vs: Onko olemassa 2021 täysin robustia tietokone-ohjelmaa?
« Vastaus #11 : 30.07.21 - klo:09.33 »
Tuli mieleen että "hitunen" on aika hämäävä sanonta, joten tarkennan sitä hitusen.

Todistettavien tosien väitteiden ja kaikkien tosien väitteiden keskinäistä suhdetta voi jossain määrin verrata rationaalilukujen ja reaalilukujen suhteeseen. Irrationaalilukuja on vaikea käsitellä täsmällisesti, joten kutakuinkin kaikki laskenta tehdään rationaaliluvuilla, joiden arvo on mahdollisimman lähellä tarkoitettua reaalilukua. Kuitenkin jos heitetään tikkaa lukuakselille, niin todennäköisyys osua johonkin rationaalilukuun on niin infinitesimaalinen, ettei sitä voi mitata, joten todennäköisyys on käytännössä nolla. Ihan tasan nolla se ei kuitenkaan ole, vaan eroaa nollasta hitusen. Silti, vaikka rationaalilukuun osuminen on näin epätodennäköistä, rationaaliluvut ovat olemassa ja niiden käyttö on mielekästä.

Todistettavien totuuksien todistaminen on myöskin mielekästä, vaikka niitä onkin vain hitunen verrattuna niihin joita ei voi todistaa.

Ohjelmien oikeaksi todistamisessa oleellisinta on kuitenkin se, mistä Pete huomautti. Silloinkin kun voidaan todistaa, että ohjelma toimii täsmälleen speksin mukaan, niin käyttäjän kannalta ohjelma saattaa silti toimia väärin.
« Viimeksi muokattu: 30.07.21 - klo:09.46 kirjoittanut AimoE »

kamara

  • Käyttäjä
  • Viestejä: 2559
    • Profiili
Vs: Onko olemassa 2021 täysin robustia tietokone-ohjelmaa?
« Vastaus #12 : 30.07.21 - klo:14.57 »
Kiitos AimoE tästä piristävästä informaatiosta.  8)


jekku

  • Käyttäjä
  • Viestejä: 2609
    • Profiili
Vs: Onko olemassa 2021 täysin robustia tietokone-ohjelmaa?
« Vastaus #13 : 30.07.21 - klo:21.18 »
Ja kuten vanhat miehet sanovat: "joka pävä jotain", minulle robusti on aina tarkoittanut jotain "kirveellä veisteltyä" - en koskaan ollut vaivautunut tarkistamaan ;)

Jere Sumell

  • Käyttäjä
  • Viestejä: 348
  • Tietojenkäsittelyn tradenomi vuosimallia 2017.
    • Profiili
    • Tietokone-blogi
Vs: Onko olemassa 2021 täysin robustia tietokone-ohjelmaa?
« Vastaus #14 : 31.07.21 - klo:16.42 »
Ohjelmien oikeaksi todistamisessa oleellisinta on kuitenkin se, mistä Pete huomautti. Silloinkin kun voidaan todistaa, että ohjelma toimii täsmälleen speksin mukaan, niin käyttäjän kannalta ohjelma saattaa silti toimia väärin.

Tuo on hyvä huomio! Tuossa kohtaa, kun ohjelma toimii käyttäjän kannalta eri tavalla, mitä pitäisi, yleensä ohjelmistokuvauksen määrittelyssä suunnitteluvaiheessa jotain vikaa, tai sitten ohjelmoija ei ole ymmärtänyt oikein jotain asiaa.

Ja sitten taas jos mennään lähemmäs rautatasoa, niin onhan ohjelmia, jotka ovat virheellisiä, mutta saattavat mennä ongelmitta kääntäjän tai tulkin läpi, ja sitten ohjelmakoodikin voi olla syntaktisesti, eli kieliopillisesti kaikkien sääntöjen mukaan virheettömästi laadittu, kirjoitettu, mutta sitten kun kääntäjä myös tarkistaa semantiikkaankin liittyviä asioita, niin yleensä ne ei mene kääntäjästä tai tulkista läpi, jos se kääntäjä tai tulkki on oikein ohjelmoitu ymmärtämään niitä korkean kielen niistä puhutaan produktioista, kun siinä leksikaalisessa analyysissa sitä produktioista jäsennetään se kielioppi-sääntöpuu, kun kääntäjää ohjelmoidaan.

Tässäkin ketjussa nyt tullut oikein mitään kovinkaan myötäpuhuvia argumentteja, että kovinkaan kompleksisia ohjelmistokokonaisuuksia ei voi täysin vakaina, tai itse tykkään tuosta robusti sanasta, niin robusteina pitää, ja kuten tuossa aiemmin todettiin, niin teustauskin pitäisi tehdä virheettömästi, ja kun ajatellaan, että ohjelmointi on aina käsityötä, ihmisen älyllisen ponnistelun tulos, ohjelmointia ei voi yleisesti ottaen automatisoida, että sähkölaite tai jos nyt tarkennetaan tietokone alagenrenä noista sähkölaitteista, niin taitaa olla ihmisen elinkaaren loppuun saakka tämä kysymys robustista tietokoneohjelmasta auki jäävä loppuun saakka.

Ei ole tiettävästi olemassa ihmisen historian huomioon ottaen vielä elossa ollutta ihmistä, jonka ajattelu ja päättely ja toiminta toimisi täysin virheettömästi, ja se on inhmillinen piirre. Onko niin, että kun ohjelmointi on ihmisen älyllisen aivotyöskentelyn käsityönä tapahtuvan toiminnan tulos, ja ihmiselle on luontaista tehdä virheitä, niin johtopäätöksenä että tietokoneohjelmoinnissa siis on ripaus inhimillisä piirteitä olemassa enemmän, mitä nyt äkkiseltään voisi kuvitella?
Free Internet and  people for humans all over the globe!

(Profiilikuvassa oma valokuvani GIMPissä editoituna Disney Classic-väripaletin väreihin ja muunnettuna bittikartta-tiedostosta vektorigrafiikaksi.)

AimoE

  • Käyttäjä
  • Viestejä: 2128
    • Profiili
Vs: Onko olemassa 2021 täysin robustia tietokone-ohjelmaa?
« Vastaus #15 : 31.07.21 - klo:18.41 »
Jaa, minä ajattelin että robusti ja oikein toimiminen ovat kaksi eri asiaa. Vastasin kamaralle, kun aloitin sen haaran. Robusti ei minulle tarkoita täysin virheetöntä. Vankka on ihan hyvä käännös.

Jere Sumell

  • Käyttäjä
  • Viestejä: 348
  • Tietojenkäsittelyn tradenomi vuosimallia 2017.
    • Profiili
    • Tietokone-blogi
Vs: Onko olemassa 2021 täysin robustia tietokone-ohjelmaa?
« Vastaus #16 : 01.08.21 - klo:15.41 »
Jaa, minä ajattelin että robusti ja oikein toimiminen ovat kaksi eri asiaa. Vastasin kamaralle, kun aloitin sen haaran. Robusti ei minulle tarkoita täysin virheetöntä. Vankka on ihan hyvä käännös.

Ymmärsin kyllä hyvin sinun lähestymistapasi, eli ihminen tai toinen tietokone, joka käyttää ohjelmaa, että eri asia on, toimiiko ohjelma käyttäjän kannalta on se sitten ihminen tai toinen tietokone, oikein.

Tämäkin Peten esittämä moikkailu loputtomiin tietokoneenruudulla ei oikein tosiaan kuten totesin, vaikuta mielekkäältä tietokoneohjelmalta ja jo alkuperäisessä viestissäni taisin mainita "vähän komplesisemman" -tietokoneohjelman ehkä vähän tarkoittaen myös sitä, että sillä olisi jotain reaalimaailman käyttöä.

Onhan tuo Peten ohjelma robusti, en sitä kiistä, mutta onko tuttailulla tietokoneen käyttäjää ohjelmoituna tietokoneen sen tekemänä mitään kovinkaan hyödyllistä tarkoistusta?

Maailma on täysi ohjelmia, ja paljoon jo löytyy reaalimaailmassa tietokoneen kykeneviä peruskäyttäjän näkkulmasta ohjelmia, jotka pystyvät tekemään kaikenlaista, joten sellaista lienee enää turhaa lähteä ohjelmoimaan ainakaan nollasa. Lopulta meidän ihmisten elämässä ei kysymys kuulukaan "Onko ohjelma täydellinen ja vakaa toimiessaan", mitä tämä järjestelmä on lähtenyt muovautumaan jo todella kauan sitten vapaan markkinatalousjärjestelmän suuntaan, mitä siihen vapaan markkinatalousjärjestelmän ehkä jotkut siihen oppineet puhuvat ihmisen luontaisesta ahneudesta, ja vaikka kuinka Marxin tekstit olisi tuttuja, niin  ihminen ei koskaan saavuta minkään teorian tai käytännönkään maksimi-ideaalista optimitilannetta. Ihminen on vajaa luomus. (vrt. Bill Gates, Microsoftin perustaja, pitkään maailmassa ihmisen sen hetkisen suurimman omaisuuden luonut juristi-opinnot Haravardissa keskeyttänyt tietokone-ohjelmoija-harrastaja, joka loi tietokone-ohjelmoillaan ihmisen historian merkittävimmän omaisuuden.)

Yritetään tässä silti navigoida tämä elämä toivottavasti humaaniin loppuun vanhuudessa, on täällä paljon hienoakin. Tietotekniikka ja nopeat nettiyhyteydet, mitä ihminen on kehittänyt, on tuonut mukanaan paljon hyvääkin, mutta ennen tosiaan jotkin asiat olivat paremmin: Ennen sentään piti ostaa fyysinen mediatuote, jos halusi kuunella jotain artistia tai musiikkiakin enemmän, ja edes 2000-luvun millenumtaitteen ohessa kotimaiset miesten lehtien julkaisukin lakkautettiin kustannustehokkaista syistä. Nykynuoriso ei edes tiedä, mikä on "äänilevy", tai "kotimainen pornolehti". Nämä asiat oli siihen maailmaan aikaan paremmin, kun ihmisllä oli mediat mitä me seurasimme, niin televisio, radio, printti-sanomalehdet, ja printti-aikakauslehdet.
« Viimeksi muokattu: 01.08.21 - klo:15.50 kirjoittanut Jere Sumell »
Free Internet and  people for humans all over the globe!

(Profiilikuvassa oma valokuvani GIMPissä editoituna Disney Classic-väripaletin väreihin ja muunnettuna bittikartta-tiedostosta vektorigrafiikaksi.)

ilkant

  • Käyttäjä
  • Viestejä: 689
  • Kubuntu
    • Profiili
Vs: Onko olemassa 2021 täysin robustia tietokone-ohjelmaa?
« Vastaus #17 : 11.08.21 - klo:18.17 »
Kyllähän monimutkaisiakin ohjelmia voi todistaa oikein toimivaksi, mutta silloin todistuksenkin pitää olla virheetön. Eli sekin olisi parempi tehdä koneellisesti – ainakin osittain.

Kauan sitten perehdyin jonkin verran ohjelmien oikeaksi todistamiseen tieteellisesti. Oli aika mutkikasta silloin. Monisteet ovat jo kadonneet. Netissä on varmaan tietoa noista menetelmistä. Silloin tuli myös mieleen, että tuollainen laaja analyysi kannattaisi tehdä koneella. Millaisia ohjelmia on tarjolla?