C ja Turing-täydellisyys

iteopiskellutnoviisi

En oikein ole hahmottanut ilmeisesti jotain Turing-täydellisyydestä tai C:stä. Käsitykseni mukaan

1. Turing-täydellinen ohjelmointikieli on sellainen, että sillä pystyy tekemään kaiken mitä tietokoneella voi ylipäätään tehdä.

2. C on Turing-täydellinen.

3. C:ssä ei ole grafiikanpiirto-ominaisuuksia.

Selvästi noihin sisältyy joku ymmärrysvirhe, kun tietokoneella voi tehdä grafiikkaa. Minkä kohdan olen ymmärtänyt väärin?

6

224

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • "C:ssä ei ole grafiikanpiirto-ominaisuuksia."

      Kieli ei tarvitse mitään "grafiikanpiirto-ominaisuuksia". Sitä varten käytetään alustan tarjoamaa rajapintaa. C:n tapauksessa se olisi yleensä GTK 2, tai vaikka SDL.

      • iteopiskellutnoviisi

        Yritätkö juksata? Wikipedian mukaan sekä GTK ja SDL on kirjoitettu C:llä. Tarkennanpa kysymystä. Onko se pikselinpiirtofunktio, jota GTK tai SDL käyttää C-koodin syntaksin mukainen vai kutsuuko kirjastot jollain muulla kielellä, esim. assemblyllä, kirjoitettua pikselinpiirtorutiinia, ja muu osa yllä olevista kirjastoista on kirjoitettu C:llä.


      • iteopiskellutnoviisi kirjoitti:

        Yritätkö juksata? Wikipedian mukaan sekä GTK ja SDL on kirjoitettu C:llä. Tarkennanpa kysymystä. Onko se pikselinpiirtofunktio, jota GTK tai SDL käyttää C-koodin syntaksin mukainen vai kutsuuko kirjastot jollain muulla kielellä, esim. assemblyllä, kirjoitettua pikselinpiirtorutiinia, ja muu osa yllä olevista kirjastoista on kirjoitettu C:llä.

        Epäoleellista alkuperäisen kysymyksen kannalta.

        Ei se grafiikka ole kuin numeroita muistipaikoissa ja se mitä näkyy ruudulla pikseleinä on jotkut tietyt muistipaikat järjestelmässä jotka siinä muutellaan.

        C-kielellä voi tehdä ihan minkälaista grafiikkaa haluat sinne muistipaikkoihin. Se että jossain välissä ohjataan itse hardwarea säätämällä joku muistialue vastaamaan ruudulla näkyviä pikseleitä ei liity millään tavalla Turing täydellisyyteen.

        GTK sekä SDL kutsuvat tavallisesti Xlib kirjastoa, ihan sillä C-kielellä mutta voivat kutsua myös muitakin rajapintoja. Turing täydellisyys tarkoittaa sitä että kielellä voi simuloida turingin konetta, ja voi siis näin ollen laskea mielivaltaisia laskuja kunhan muistikapasiteetti ja aika riittää. Toisin sanoen mielivaltaista grafiikkaa voidaan laskea Turing täydellisellä kielellä piirtämättä yhtään pikseliä ruudulle sillä kaikki voidaan tehdä jossain muistiavaruudessa. Turing täydellisyyteen ei kuulu syöte ja tulostusjärjestelmät vaan se laskenta.


    • Ja tarkennetaanpa:

      Se grafiikka siellä ruudulla on käytännössä pätkä tietokoneen muistia visualisoituna, jossa jokainen pikseli on muistipaikassa oleva numero.

      Näin ollen tekstitilassakin voi tehdä grafiikkaa pyörittelemällä pikseleitä jossain taulukossa ja taulukon voi tulostaa ruudulle.

      Graafisessa tilassa temppuun käytetään grafiikkakirjastoja joka tarjoaa rajapinnan siihen, että se mitä johonkin muistialueeseen kirjoitetaan näkyy ruudulla (eli näyttömuistissa). Lisäksi tarjoaa myös rajapintakutsut perustemppujen tekemiseen ettei tarvitse pikseli kerrallaan piirrellä.

      SDL:n kaverina voi käyttää vaikka OpenGL:ää niin grafiikan piirrot tehdään GPU:lla ja osaa sitten aika paljonkin temppuja.

      Kannattaa sitten muistaa se, että C kieli on pääsääntöisesti systeemitason kieli mutta sillä tehdään myös LSB:lle natiivisovellusta juttuja GTK kirjaston kautta. GTK 2 on tarkoitettu siihen että toimii siirrettävästi mutta GTK 3 sitten on lähinnä CentOS/Red Hat Enterprisen julkaisukohtainen ja Debianin rajapinta. GTK 3:lla ei siis luvata CentOS/Red Hat Enterprisellä, että sama koodi toimisi seuraavassa julkaisussa. C:tä käytetään myös Motif rajapinnalle.

      Pääsääntöisesti C:tä käytetään sulautetuissa vekottimissa, ja ohjelmat toimivat komentorivillä stdin/stdout. Graafisiakin tehdään.

    • pcmuseo
    • Olet ymmärtänyt hieman väärin mitä Turing-täydellinen tarkoittaa. Helpoin esimerkki lienee sään ennustaminen: Nopeampi tietokone voi laskea tunnissa vuorokauden sääennusteen. Hitaampi tietokone voi emuloida nopeampaa ja täten ennustaa säätä, mutta käyttää vuorokauden laskeakseen tunnin sääennusteen. Voi toisaalta sanoa, että hitaampi kone pystyy kaikkeen mihin nopeampikin, ja toisaalta ettei sillä kuitenkaan voi ennustaa säätä.

      Lähempänä totuutta oleva määritelmä on, kuten edellä todettiin, se, että Turing-täydellinen kone osaa käännellä bittijonoja siten kuin tietokone ylipäänsä voi. Näiden esittäminen on sitten eri asia: ei voi tulostaa värejä, jos ei ole tulostinta, mutta voi laskea ja piirtää ruudulle kuvan joka tulostettaisiin.

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Ketä tietää

      Missä ammuttiin pyssyllä.
      Kotka
      44
      5832
    2. Ei tunnu, että välität yhtään

      Tuntuu, että et edes muista minua koko ihmistä. 😢
      Ikävä
      47
      5328
    3. Onko kaipaamallasi

      Naisella silikonit 🤔
      Ikävä
      48
      3708
    4. Näytitpä taas niin hyvältä!

      Nautit tilanteesta täysin rinnoin. Sinä olet kuin
      Tunteet
      13
      3663
    5. Vimpelin liikuntahallilla tulipalo?

      Katsoin, että liikuntahallista tuloo mustaa savua. Sitten ovet pärähti hajalle, ja sisältä tuli aikamoinen lieska. Toise
      Vimpeli
      94
      3286
    6. Veikeä Satu

      Tuu jutteleen, kaipaan sua. Oot kuuma nainen.
      Ikävä
      31
      3126
    7. Oletko nyt

      Onnellinen mies naisesi kanssa?
      Ikävä
      59
      2884
    8. Rakastatko?

      Ala kertomaan se ja heti
      Ikävä
      57
      2730
    9. Mikä haluat olla kaivatullesi?

      1. Kaveri 2. Ystävä 3. Panokaveri 4.puoliso 5 jokin muu
      Ikävä
      53
      2390
    10. Kosiako meinasit?

      Voi sua rakas ❤️
      Ikävä
      38
      1844
    Aihe