Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Re: Paras kieli?

29 views
Skip to first unread message

Teemu Likonen

unread,
Sep 19, 2016, 2:29:14 AM9/19/16
to
Jukka K. Korpela kirjoitti 11.8.2016 kello 23.27:

> Jokaisella kielellä voidaan ilmaista kaikki ajateltavissa olevat
> asiat. Pidän tätä osana kielen määritelmää; kielen käsitteeseen
> kuuluu, että sillä voidaan laajentaa sen omaa ilmaisuvalikoimaa,
> esimerkiksi ottaa käyttöön uusia sanoja ja rakenteita. (Esimerkiksi
> ns. ohjelmointikielillä ei ole tätä ominaisuutta, koska niiden
> laajentaminen pitää tehdä niiden ulkopuolella, metakielellä. Siksi ne
> eivät olekaan kieliä kuin huonon metaforan mielessä.)

Kiinnostavia poikkeuksia ovat Lisp ja Forth, joita nimenomaan
laajennetaan niillä itsellään. Kieleen voi luoda uusia rakenteita
ohjelman suorituksen aikana. Kyse ei ole funktioista, vaan uusista
ohjelmarakenteista.

Esimerkin vuoksi tehdään Common Lispillä uusi ”sana” ping-pong, jonka
argumentit suoritetaan ensin samassa järjestyksessä kuin ne esiintyvät
ja sen perään käänteisessä järjestyksessä:

(defmacro ping-pong (&body body)
`(progn ,@body ,@(reverse body)))

Makron kielenä on normaali Common Lisp, eli kieli on itsensä metakieli.
Ja sitten suoritetaan:

CL-USER> (ping-pong
(write-line "eka")
(write-line "toka")
(write-line "kolmas"))

eka
toka
kolmas
kolmas
toka
eka

Myös Common Lispin lukijaa eli sitä, kuinka tekstimuodossa olevaa koodia
luetaan, voi ohjelmoida ja muuttaa ohjelman suorituksen aikana. Sekin
tehdään Common Lispillä itsellään.

--
/// Teemu Likonen - .-.. <https://github.com/tlikonen> //
// PGP: 4E10 55DC 84E9 DFF6 13D7 8557 719D 69D3 2453 9450 ///
signature.asc

Jukka K. Korpela

unread,
Sep 20, 2016, 4:02:30 PM9/20/16
to
19.9.2016, 9:29, Teemu Likonen kirjoitti:

> Jukka K. Korpela kirjoitti 11.8.2016 kello 23.27:
>
>> Jokaisella kielellä voidaan ilmaista kaikki ajateltavissa olevat
>> asiat. Pidän tätä osana kielen määritelmää; kielen käsitteeseen
>> kuuluu, että sillä voidaan laajentaa sen omaa ilmaisuvalikoimaa,
>> esimerkiksi ottaa käyttöön uusia sanoja ja rakenteita. (Esimerkiksi
>> ns. ohjelmointikielillä ei ole tätä ominaisuutta, koska niiden
>> laajentaminen pitää tehdä niiden ulkopuolella, metakielellä. Siksi ne
>> eivät olekaan kieliä kuin huonon metaforan mielessä.)
>
> Kiinnostavia poikkeuksia ovat Lisp ja Forth, joita nimenomaan
> laajennetaan niillä itsellään. Kieleen voi luoda uusia rakenteita
> ohjelman suorituksen aikana. Kyse ei ole funktioista, vaan uusista
> ohjelmarakenteista.

Kyseessä on kiinnostava laajennettavuus, mutta se ei tee kyseisistä
”ohjelmointikielistä” kieliä sanan varsinaisessa merkityksessä. On
varsin vaikeaa määritellä, mitä ”kieli” varsinaisessa merkityksessään
tarkoittaa, mutta sille siis on ominaista myös se, että sillä voidaan
ilmaista kaikki ajateltavissa olevat asiat – toki eri kielissä
eriasteisen sujuvasti. Miten sanottaisiin Lispillä tai Forthilla
”Rakastan sinua”, ”Antaisitko suolaa?” tai ”Oleminen on havaituksi
tulemista”?

Valitettavasti kieli-sanan toissijainen käyttö, jota Kielitoimiston
sanakirja kuvaa ilmauksella ”matematiikan, atk-ohjelmoinnin tms.
konstruoitu merkkijärjestelmä”, on niin juurtunut nykyaikaiseen
kielenkäyttöön, että se hämärtää ajatteluamme. ”Ohjelmointikielet” ovat
todellisuudessa sovinnaisia merkintäjärjestelmiä, joilla ohjataan
tietokoneen toimintaa ”ohjelmointikielen” kääntäjän tai tulkin kautta.
Tämä on valtavan paljon suppeampi – joskin tietysti hyvin tärkeä –
käyttöala kuin ihmisten kielillä on.

--
Yucca, http://www.cs.tut.fi/~jkorpela/

Paavo Väisänen

unread,
Sep 23, 2016, 2:12:01 AM9/23/16
to
Näin kirjoitti Jukka K. Korpela Usenetin ryhmään
sfnet.keskustelu.kieli,sfnet.atk.ohjelmointi:
> 19.9.2016, 9:29, Teemu Likonen kirjoitti:
>
>> Jukka K. Korpela kirjoitti 11.8.2016 kello 23.27:
>>
>>> Jokaisella kielellä voidaan ilmaista kaikki ajateltavissa olevat
>>> asiat. Pidän tätä osana kielen määritelmää; kielen käsitteeseen
>>> kuuluu, että sillä voidaan laajentaa sen omaa ilmaisuvalikoimaa,
>>> esimerkiksi ottaa käyttöön uusia sanoja ja rakenteita. (Esimerkiksi
>>> ns. ohjelmointikielillä ei ole tätä ominaisuutta, koska niiden
>>> laajentaminen pitää tehdä niiden ulkopuolella, metakielellä. Siksi ne
>>> eivät olekaan kieliä kuin huonon metaforan mielessä.)
>>
>> Kiinnostavia poikkeuksia ovat Lisp ja Forth, joita nimenomaan
>> laajennetaan niillä itsellään. Kieleen voi luoda uusia rakenteita
>> ohjelman suorituksen aikana. Kyse ei ole funktioista, vaan uusista
>> ohjelmarakenteista.
>
> Kyseessä on kiinnostava laajennettavuus, mutta se ei tee kyseisistä
> ?ohjelmointikielistä? kieliä sanan varsinaisessa merkityksessä. On
> varsin vaikeaa määritellä, mitä ?kieli? varsinaisessa merkityksessään
> tarkoittaa, mutta sille siis on ominaista myös se, että sillä voidaan
> ilmaista kaikki ajateltavissa olevat asiat ? toki eri kielissä
> eriasteisen sujuvasti. Miten sanottaisiin Lispillä tai Forthilla
> ?Rakastan sinua?, ?Antaisitko suolaa?? tai ?Oleminen on havaituksi
> tulemista??
>
> Valitettavasti kieli-sanan toissijainen käyttö, jota Kielitoimiston
> sanakirja kuvaa ilmauksella ?matematiikan, atk-ohjelmoinnin tms.
> konstruoitu merkkijärjestelmä?, on niin juurtunut nykyaikaiseen
> kielenkäyttöön, että se hämärtää ajatteluamme. ?Ohjelmointikielet? ovat

> todellisuudessa sovinnaisia merkintäjärjestelmiä, joilla ohjataan
> tietokoneen toimintaa ?ohjelmointikielen? kääntäjän tai tulkin kautta.
> Tämä on valtavan paljon suppeampi ? joskin tietysti hyvin tärkeä ?
> käyttöala kuin ihmisten kielillä on.
>
Esko Kivikoski kävi häviämässä Tieto-ottelun Australiassa
Historianopettajalle,
eräs sukulaiseni "ymmärsi hyvin, koska Eskolla oli vain Keskikoulu
tausta!"
Myöhemmin selvisi, ettei Esko voinutkaan voittaa, juontaja oli antanut
vastaukset
Australian Mestarille etukäteen.
Eskon tulkki käänsi "konemaisesti": Mikä oli Kultainen härkä?(Mikä oli
nimeltään..)
Esko mörähteli aikansa ja arvasi väärin. Jos tulkki olisi "kääntänyt
suomeksi":
Mikä oli Kultainen bulla? (Paavin bulla) Esko olisi täräyttänyt lonkalta
oikein?

>

--
Puakki

Risto Kauppila

unread,
Nov 24, 2016, 9:40:04 PM11/24/16
to
Tässä yhteydessä kannattaa muistaa, että luonnollisten kielten
ilmaisuvoimalla on haittansa: Ne ovat loogisesti ristiriitaisia.

Rike
0 new messages