For faster navigation, this Iframe is preloading the Wikiwand page for Go (ohjelmointikieli).

Go (ohjelmointikieli)

Wikipediasta

Tämä artikkeli käsittelee ohjelmointikieltä. Sanan muista merkityksistä, katso Go (täsmennyssivu).
Go
Paradigma moniparadigmainen: imperatiivinen, rinnakkainen, strukturoitu
Yleinen suoritusmalli käännettävä
Julkaistu 2009
Suunnitellut Rob Pike, Ken Thompson
Kehittäjä Google
Vaikutteet Alef, BCPL, C, Limbo, Occam, Pascal, Smalltalk[1]
Verkkosivu go.dev

Go (usein muodossa Golang)[2] on Googlen kehittämä ja marraskuussa 2009 julkistettu ohjelmointikieli.[3] Kieltä ovat olleet kehittämässä muun muassa Rob Pike ja Ken Thompson. Se on julkaistu BSD-lisenssillä.[4] Go-kielen taustalla on Rob Piken ja muiden, pääasiassa Bellin laboratorioista Googlelle siirtyneiden Go-tiimin jäsenten pitkäaikainen tyytymättömyys moderniin kieli- ja käyttöjärjestelmäympäristöön[5].

Tähän artikkeliin tai osioon ei ole merkitty lähteitä, joten tiedot kannattaa tarkistaa muista tietolähteistä.Voit auttaa Wikipediaa lisäämällä artikkeliin tarkistettavissa olevia lähteitä ja merkitsemällä ne ohjeen mukaan. Tarkennus: mielipiteistettyjä väitteitä jotka tarvitsisivat lähteen

Olioparadigma Simula-ohjelmointikielestä periytyvine luokkahierarkioineen ei koskaan miellyttänyt Pikea. Hän ei uskonut väitteisiin, joiden mukaan käännettävät ja staattisesti tyypitetyt kielet ovat kankeita ja siksi tarvitaan dynaamista tyypitystä ja skriptikieliä.

Lisäksi Pike on aina ollut sitä mieltä, että CSP-malliin perustuva rinnakkaislaskenta on paras, joskaan ei ainoa tapa strukturoida modernia prosessi- ja tietoliikenneympäristöä (ja monia muita asioita) algoritmeiksi. Samalla se mahdollistaa moniprosessori- ja moniydinkoneiden tehokkaan hyödyntämisen.

Go on harkittu ortogonaalisuuteen ja säännöllisyyteen pyrkivä kokonaisuus, jossa jokaisella kielen ja kirjastojen ominaisuudella on perusteet joiden on tarkoitus tukea toisiaan ilman redundantteja tai turhia ominaisuuksia.

Go-ohjelmointikielen maskotti.
Tähän artikkeliin tai osioon ei ole merkitty lähteitä, joten tiedot kannattaa tarkistaa muista tietolähteistä.Voit auttaa Wikipediaa lisäämällä artikkeliin tarkistettavissa olevia lähteitä ja merkitsemällä ne ohjeen mukaan. Tarkennus: väitteitä jotka tarvitsisivat lähteen
Tämän artikkelin tai sen osan kieliasua on pyydetty parannettavaksi.Voit auttaa Wikipediaa parantamalla artikkelin kieliasua.Tarkennus: epämääräisyyksiä, puhekieltä

Go-kielen tärkeimpiä ominaisuuksia ovat:

  • interface-käsitteeseen ja tyyppien laajentamiseen ("type embedding") perustuva, kevyt ja joustava "olioparadigma", joka osin tulee Robert Griesemerin (ETH:n ja "Wirthin koulukunnan" miehiä) kautta. Tämä on jokseenkin uniikki lähestymistapa "valtavirran" kielissä.
  • nopea kääntäminen, joka tekee ohjelmankehityksestä yhtä joustavaa kuin tulkkiympäristöissä.
  • staattinen, turvallinen tyypitys, jossa kääntäjä kuitenkin usein johtaa tyypit implisiittisesti, jolloin ohjelmoijan ei tarvitse erikseen määritellä tyyppejä.
  • CSP-mallin mukainen rinnakkaisuuden hallinta.

Lisäksi Go-kieleen on kerätty monta pienempää ideaa Piken, Thompsonin, Griesemerin ja nuoremman Russ Coxin kokemusten perusteella. Ominaisuudet ovat tuttuja muista ohjelmointikielistä ja niihin kuuluvat muiden muassa:

Go-kielen sisältämien ominaisuuksien lisäksi lähes yhtä oleellisia ovat asiat, jotka siitä on tietoisesti jätetty pois:

  • poikkeukset (rajoitettu muoto on mukana)
  • standardikirjastot eivät määrittele graafista käyttöliittymää

Tyyppiparametrinen geneerisyys puuttui alussa, tekijöiden mukaan pelkkä interface-käsite oli riittävä. Käyttäjien palautteen vuoksi geneerisyys lisättiin versiossa 1.18.

Go-projektilla on kattava standardikirjasto, joka sisältää esim. välineet moderniin verkko-ohjelmointiin HTTP/HTML/JSON/XML-ympäristössä. Koska standardikirjastot eivät määrittele graafista käyttöliittymää, Go-ohjelmat on usein rakennettu tässä kirjastossa toteutetun Web-palvelimen avulla. Go käyttää yleensä staattista linkitystä, jolloin esim. Web-palvelinpohjaisen Go-sovelluksen voi asentaa käyttöön yhtenä binaaritiedostona ilman ulkoisia riippuvuuksia. CGO-lisäosan avulla voi kutsua erillisiä C-kielisiä kirjastoja.

Yksinkertainen esimerkki "hello.go":[6]

package main

import "fmt"

func main() {
	fmt.Println("Hello, 世界")
}

Jokainen go-ohjelma kuuluu johonkin pakettiin (esimerkissä main). Ohjelmaan tuodaan paketti fmt, joka sisältää standarditulostukseen tarvittavan toiminnon. Ohjelman suoritus alkaa main()-funktiosta. Ohjelma käyttää fmt.Println()-metodia rivin esittämiseen.

Ohjelma suoritetaan komentoriviltä:

go run hello.go

Esimerkissä hello.go on lähdekooditiedoston nimi.

Huomaa, että go-kääntäjä vaatii lohkon aloittavan aaltosulun rivin loppuun, ei omalle rivilleen.

Ohjelmien kääntäminen

[muokkaa | muokkaa wikitekstiä]

Käännetty ohjelma tehdään komennolla go build.[7]

Kääntäjä tukee UTF-8-muotoista lähdekoodia, kuten koko standardiympäristö ja syötteen käsittely. UTF-8 on sallittu tunnusten nimissä.

Aiheesta muualla

[muokkaa | muokkaa wikitekstiä]
{{bottomLinkPreText}} {{bottomLinkText}}
Go (ohjelmointikieli)
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?