USENET News sfnet.keskustelu.filosofia

Säie: ohjelmointikieli joka kehittää ajattelua

Edellinen säie: Ihmisyyden megatavut DNA:ssa?
[Muut säikeet] [Muut uutisryhmät]
From: Marko Gronroos <magi AT iki PISTE fi>
Newsgroups: sfnet.keskustelu.filosofia,sfnet.atk.ohjelmointi
Subject: Re: ohjelmointikieli joka kehittää ajattelua
Date: 07 Oct 2003 22:22:50 +0300

Miikka Lahti <miilahti AT cc PISTE jyu PISTE fi> writes:
> Tuo luovuuspuoli on aika lailla yliarvostettu. Ohjelmointiongelmat
> (rakenteellisesti, "algoritmisesti") ovat pääsääntöisesti erittäin
> simppelejä,

Olen jyrkästi eri mieltä. Lähes jokainen ohjelmointiongelma,
äärimmäisen pieniä ja rajattuja lukuunottamatta, on "äärettömän"
monimutkainen.

Ohjelmointiongelmat riippuvat ensinnäkin tehtävän
kompleksisuudesta. Toisekseen monet ratkaisut ovat sellaisia, ettei
niiden kompleksisuudella ole varsinaista ylärajaa vaan ne ovat
"open-ended". Jokaisessa sovelluksessa (ongelmassa) voi esimerkiksi
aina kehittää uusia ominaisuuksia, jotka lisäävät järjestelmän
monimutkaisuutta. Ja komponenttien määrän kasvaessa niiden välisten
suhteiden määrä voi kasvaa jopa eksponentiaalisesti (mutta onneksi ei
yleensä).

Toisekseen lähes jokainen ongelma on aina ratkaistavissa usealla eri
tavalla ja aina on parempia ratkaisuja. Hyvien ohjelmointiratkaisujen
löytämisellä ei tosiaankaan ole mitään tekemistä välineiden kanssa.

> Vaikeudet syntyvät tekniikan hallinnassa. Sopii katsoa vaikkapa
> atk.ohjelmointi-palstan aiheita; 99% käsittelee jotain teknistä
> seikkaa, äärimmäisen harva sitä, miten jokin asia rakenteellisesti
> toteutetaan.

Harvempi vaivautuisi edes kysymään vastauksia vaikeisiin
suunnitteluongelmiin, koska pelkästään ongelman kuvaaminen on varsin
työlästä. Niihin ei saisi mitään älyllisiä vastauksia, ainakaan jos
ihmiset eivät käytä miettimiseen vähintään viikkoa. Tekniset
kysymykset sen sijaan ovat helppoja kysyä ja nopeita vastata (jos
tuntee ko. teknologian).

> Näin siksi, että useimpien tavallisissa ohjelmissa olevien
> toimintojen algoritminen toteuttaminen on lastenleikkiä (ja jos
> jonkun ei ole, siihen löytyvät yleensä valmiit välineet).

Useimmissa ohjelmissa on varsin vähän "algoritmeja". Mutta ei se
ohjelmoinnin vaikeus ole algoritmien keksimisessä vaan esimerkiksi
ongelman jäsentämisessä siten, että se on toteutettavissa "hyvin". Kun
asiat voi jäsentää lähes kuinka monella tavalla tahansa, on se aika
vaikeaa.

--
-- Marko Grönroos, magi<at>iki.fi (http://www.iki.fi/magi/)

Edellinen säie: Ihmisyyden megatavut DNA:ssa?
[Muut säikeet] [Muut uutisryhmät]