Google on näemmä kehittänyt jossain välissä taas yhden ohjelmointikielen lisää, nimeltään Go, tai Golang https://golang.org/
Mikähän järki siinäkin on, etenkin kun kielen syntaksi on aika karmeeta, kun esimerkiksi metodeissa käytetään isoa alkukirjaimia.
Wikipediasta:
---
Yksinkertainen esimerkki "hello.go":
package main
import "fmt"
func main() {
fmt.Println("Hello, 世界")
}
---
Omaan silmään tuo näyttää rumalta, jos vertaa vaikka Pythoniin.
Ilmeisesti tuo on kuitenkin käännettävä kieli ("nopea kääntäminen, joka tekee ohjelmankehityksestä yhtä joustavaa kuin tulkkiympäristöissä."), mutta miksei käyttäisi sitten vanhaa kunnon Javaa?
Mikähän järki siinäkin on, etenkin kun kielen syntaksi on aika karmeeta, kun esimerkiksi metodeissa käytetään isoa alkukirjaimia.
Wikipediasta:
---
Yksinkertainen esimerkki "hello.go":
package main
import "fmt"
func main() {
fmt.Println("Hello, 世界")
}
---
Omaan silmään tuo näyttää rumalta, jos vertaa vaikka Pythoniin.
Ilmeisesti tuo on kuitenkin käännettävä kieli ("nopea kääntäminen, joka tekee ohjelmankehityksestä yhtä joustavaa kuin tulkkiympäristöissä."), mutta miksei käyttäisi sitten vanhaa kunnon Javaa?
Vastaukset 54
Vanhimmat
echo hello to me
Älä tsekkaa pimperoita, ne johtaa hurttuuteen ja kikkelivaivoivoihin.
Johan tuo on ollut oletusarvoisesti Linux jakeluissa esiasennettuna kohta 10 vuotta.
Vala, Go, Lua, Ruby, Python ja Perl, on mukana oletusarvoisesti sellaisissa jakeluissa, joissa voidaan asentaa mihin tahansa jakeluun kuuluva ohjelma, ilman että niitä pitää lähteä ympäri verkkoa etsimään sopivaa versiota tai pakettilähdettä. Riittää hyvin jos kolme peräkkäistä kirjanta tietää ohjelman nimestä, niin löytyy ja asentuu, joissakin menee pitkään kootessa ja kasatessa ja jotkut asentuu nopeamin kuin kerkiää hiiren siirtää asenna painikkeen päältä.
Täällä mämä rakkulat hihkuu innoissaan "ubuntussa on, debianissa on", niinkuin ne ei olisi kaikissa jakeluissa asennettavissa.
Ai on vai?
$ go
bash: go: komentoa ei löydy
3, 14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280 34825 34211 70679 82148 08651 32823 06647 09384 46095 50582 23172 53594 08128 48111 74502 84102 70193 85211 05559 64462 29489 54930 38196 44288 10975 66593 34461 ...
Eihän sitä Ubuntussa ole, luulisi tuon olevan itsestään selvä, kuten sanoin jakulut joissa voidaan asentaa kaikki linux mailmaan tehdyt ohjelmat, ubuntussa ei saa asennettua edes edellisen ununtun ohjelmaa.
Jäi muuten vahvasti edustettu haskell-ohjelmointi kieli pois, sekin on oletusarvoisesti mukana.
Ja tuota haskellia ei ole ubuntussa ollenkaan kun se niihin snappeloihin sotkeutu, vaikka debianissa se jollain tavalla on vielä mukana.
Se, jos sulla ei ole Go asennettuna ei tarkota sitä ettei sitä löytyisi distrosta. Eihän nyt kaikki distroissa olevat ohjelmat ole oletuksena asennettuna.
Väittäjän mukaan pitäisi olla mukana. Ei ole mukana.
MOT
Missä se ei ole mukana, Ubuntussako, ei varmasti ole ubuntussa, kukaan ei ole sellaista väittänyt, MOT, vain itellesi.
Asenna oikea Linux jakelu niin on varmasti mukana.
Saa asennettua 'apt install gccgo' kääntäjän:
gccgo/focal 4:10.0-1ubuntu2 amd64
Go compiler, based on the GCC backend
gccgo-go/focal 2:1.13~1ubuntu2 amd64
Go programming language -- gccgo
Helppoa kuin heinänteko! :)
Ubuntussa ihan hullun hommaa kun sama ohjelma voi olla kolmeen kertaan asennettuna, ensin debianin paketeista, sitten flatpakeista ja vielä kerran sanppiloista, kyllä siinä on yksi mailman typerin viritys, ei voi muuta sanoa.
Pitää tietää mitä tekee - ja miksi! Se, että itse menee asentamaan 3x saman ohjelma, niin siitä saa syyttää monitorin ja penkin välissä olijaa: Snap on syntynyt käytännön syistä eli kun järjestelmässä pakettimäärä alkaa lähetä sataatuhatta, niin aina on niitä, joita joku ei ehdi/osaa/jaksa portata julkaisupäivään mennessä - tai oikeastaan kuukautta ennen. Snap:n avulla tällainen ohjelma, jonka kehitys on venähtänyt saadaan kuitenkin vielä mukaan. Aikanaan voi sitten siirtyä käyttämään apt-versiota. Flatpak on noille kilpailija - saa nähdä millä pakettienhallinnalla mennään jatkossa.
Eikä siinä vielä kaikki, jos ohjelma on Ubuntun versioon 10.4 leimattu, ei sitä saa asennettua 14.4:seen, vaikka mitään muuta eroa ei olisi kuin tuo numero. Huh hu..
No se nyt johtuu siitä, että ohjelma voi vaatia toimiakseen jonkin vanhan kirjastoversion, jota ei enää uudemmassa distrossa ole. Ihan sama se on missä tahansa käyttiksssä.
Eikä ole sama, jossakin ohjelmapaketti puretaan takaisin palasiksi ja haetaan puuttuvat ja kootaan uudestaan, eikä lopeteta siihen mikä valmiina tarjotaan.
Kääntäminen lopetetaan vasta kun oikeasti ei voida tavoittaa haluttua osaa ohjelmaan. Ubuntulle riittä kun se näkee eri numerot, se ei tutki kääntäjän virheitä.
Itse asiassa saa, tarvitset source-paketin ja tiedot kaikista niistä muutoksista, mitä on tapahtunut ohjelmasi käyttämille kirjastorajapinnoille. Joskus riittää uudelleen kääntäminen, toisinaan ohjelman käyttökuntoon saattaminen vaatii kunnon porttaus-operaation, kun jokin rajapinta-tuki on esim. poistunut. Jos ohjelma ei ole mukana, kukaan kehittäjä ei ole viitsinyt sitä vielä portata - eli kukaan kehittäjä ei sitä ilmeisesti käytä, jolloin sen voi jättää pois. Vaihtoehtoja on: Tehdä porttaus itse - vaatii aika paljon, mutta palkitsee syvällisemmällä ymmärryksellä järjestelmästä. Tai sitten voi yrittää vakuuttaa ohjelman tekijän, että se kannattaa vielä portata. Ja jos tämä ei onnistu, sitten pitää käyttää jotakin muuta ohjelmaa jos oma viitseliäisyyskin on lopussa!
Etäs se tietoturva, koko ajan ollaan haavoittuvuustilaston käressä, eikä asialle tehdä mitään, on se ununtu niiiin ihaaanaaa, voi jeelvelin jeeveli näitä räpeltäjiä
Onkohan se ubuntun väriloisto, WC:n pytyllä istuissa kehitelty, on vähän samankaltaisuutta havaittavissa.
Minä eilen huomasin paskalla ollessani, että olin unohtanut kiireessä wc-renkaan laskea.
Istuin siis huomaamattani posliinin päällä. No ei siinä mitään, homma sujui kuten tavallisesti.
Varmaan muistutti se lopputulos Ubuntun taustakuvaa, siinäkin on jotain epämääräistä hämärästi nähtävissä.
Pakettirepo pidetään auki jos muistetaan, päivittämiset takkuilee kun palvelimia ei tavoiteta aukiollessa.
Hölynpölyä. Kyllä ne distrojen repositoryt on käytettävissä ihan kokoajan, pois sulkien toki normaalit palvelinten huollot ja mahdolliset vikatilanteet, jotka ei liity linuxiin mitenkään.
Mistä kummasta oikein olet saanut päähäsi, että repositoryt olisi päällä vain ajoittain?
Niin yksinkertainen tapaus kun Mintin päivitys on kiinni ubunrepoista, vähän päästä tultiin tilanteeseen että piti siirtää kun ubun palvelin ei olut tavoitettavissa.
Jos viitsit hakea niin tännekin monta kertaa kirjoittelin ja kyselin mistä johtuu ja miksi taas.
En puhu nyt normaalista automaattisesta järjestelmän päivittymisestä, vaan siitä kun ohjelma yritetään asentaa ja enne sitä pitää pakettivarasto saattaa ajantasalle, vain silloin sen voi huomata, ja juuri silloin se eniten ärsyttää kun joutuu jättämään kesken.
Entäs ne ikkunan kaksisenttisen reunukset jotaka ovat läpinäkyviä, kun kuvakkaappauksen ottaa niin puoli ruutua on mukan työoöydän taustaa, ei mitään järkeä siinäkään.
Linuxissa käyttäjä voi itse valita millaista työpöytäteemaa käyttää, ei ole mikään pakko käyttää mitään missä olisi jotain läpinäkyvää. Jos et halua sellaista niin älä sitten valitse sellaista teemaa. Eli mitä oikein itket? SitäpaitsiOnhan sitä nyt Windowsissakin nähty läpinäkyviä ikkunankehyksiä jne.
Haista nyt home, se ei ole kiinni työpöytä teemasta, voi helkatti kun pitää kaikki rautalangasta vääntää se on kiinni ohjelmasta joka tehty niin eikä teemaa vaihtamalla sille mitään voi.
Onko sinulla kokemusta yhtään mistään, kun tuollaisia kirjoittelet. Voisin kuvakaappauksin todistaa, mutta en viitsi, kun täällä on nähty muidenkin ottamana vastaavia kuvakaappauksia, enkä muista onko minulla asennettuna sellaista ohjelmaa valmiina.
Mutta ei tästä monta päivää ole kun viimeksi törmäsin sellaiseen, hetkin katsotaanpa "kuvat" kansiosta onko tallessa. Joo ei ollut, ja kuvia katsellessa tuli mieleen että rajasin pois sen läpinäkyvän reunuksen joten en erota sitä noiden muiden joukosta.
Ja näkyvään ikkunakehykseen sijoitettaan mitä sattuun, miten vitussa niihin voi mitää teemoja tehdä, kun kaiken mailma painikkeet on ylimääräistä leveyttä tuomassa, on siinäkin yksi halavatun keksintö.
No kummastihan se näkyy onnistuvan kun Linuxille on teemoja vaikka kuinka paljon. Sitäpaitsi ota nyt huomioon se, että linuxille on useampi työpöytäympäristö saatavilla. Jos et pidä yhdestä niin voit käyttää toista. Tässä Linux eroaa merkittävästi Windowsista. Windowsissa sun on pakko käyttää sitä yhtä ja samaa työpöytäympäristöä pidät siitä tai et. Linuxissa voit valita useista eri työpöytäympäristöistä kuten: Gnome, Cinnamon, Mate, XFCE, KDE, LXDE, LxQT jne.
Haloo pahvi, nyt ei ole kysymys työpöytä managerista, vaan teemoista, ymmärrätkö mikä se teema on. Työpöytämanagereista minulle kelpaa vain se paras XFCE, olen itse tehnyt oman teemani, jonka otin käyttöön jo Mintin aikoihin ja ole käyttänyt sitä samaa kaikissa jakeluissa, ehkä vähän värivivahdetta vaihdellen. Ja tämä on ehdottomasti paras.
https://gifyu.com/image/ByBM
yksinkertainen, mutta siisti, ei tarvitse hiirellä hapuilla kun haluaa ikunoita kasvattaa.
Emme voi odottaa minkään muuttuvan ennen kuin käyttäjät tekevät valintoja, jotka asettavat yksityisyyden etusijalle.
On meillä siinä linux mailman keulakuva, ei ihme että pysytään markinaalikerhossa.
Entä nämä slookanit "Ubuntu toimii graafisesti, ..", eikö ihmisillä ole enää aivoja ollekaan.
Onhan nyt Go ollut olemassa jo ikuisuuden ajn, nytkö sen vasta huomasit? Mitä tulee tuohon antamaasi kodiesimerkkiin, niin mikä tuossa nyt muka on niin erityisen rumaa? Tuohan on varsin samankaltainen kuin monessa muussakin ohjelmointikielessä. Jos nyt viittauksesi Pythoniin liittyy siihen, että Pythonissa ohjelmalohkot määritellään sisennysten avulla, niin Python on siinä harvinaisuus ja useimmissa ohjelmointikielissä lohkot määritellään nimenomaan esimerkiksi aaltosulkujen avulla. En ota kantaa siihen millainen Pythonin tapa on muihin verrattuna, mutta tyypillinen se ei ole.
Ja Javaako sinä sitten suosittelisit? Just joo, mahollisimman tehoton kieli ja ympäristö moneen muuhun natiivikoodia tuottavaan ja tulkattavaan kieleen verrattuna. Itse ohjelmoijataustaisena en ole koskaan pitänyt Javaa omiin suosikkikieliini kuuluvana vaikka toki osaankin sitä.
T. miksuh
Lisään vielä sen, että minusta on vin hyvä, että ohjelmoijill on käytettävissään vihtoehtoja ohjelmointikieliksi. on myös hyvä, että uusi kieliä kehitetään, koska asiat voi aina tehdä paremmin kuin aiemmin.
Yksi mielenkiintoinen kieli tällä hetkellä on Rust, johon esimerkiksi Linux -ytimen kehitys saattaa siirtyä jossain vaiheessa. Rust on toki yleiskäyttöinen kieli, joten se sopii moneen muuhunkin tottakai.
T. miksuh
Tarkennuksena se, että Go on ollut olemassa jo noin 12 vuoden ajan, eli mikään uusi ohjelmointikieli se ei ole. Go löytyy myös esimerkiksi itse käyttämästäni Debianista yhtenä monista Debianista löytyvistä ohjelmointikielistä.
T. miksuh
Kyllä. Nyt vasta huomasin, kun oli vapaapäivän kunniaksi aikaa surffata internetissä.
Kuten jo aloituksessa mainitsin, niin on mielestäni typerää käyttää metodeissa suuraakkosta alkukirjaimena, koska monissa muissa kielessä isolla alkukirjaimella viitataan luokkiin. Vaikuttaisi tehdyn sen vuoksi, että joku nörtti haluaa olla väkisin eri mieltä.
Javan heitin vain esimerkkinä, koska jos kieli ei ole edes tulkattava, vaan vaatii kääntämisen, niin silloin on sama käyttää jo muita ennestään tunnettuja kieliä. Laiteläheistä koodia tehdessä C:tä tai assemblyä.
Go on siis mielestäni harvinaisen turha kieli.
Aika onneton perustelu, voisi verrata vaikka PHILIPS monitoriin kun siinä on pyöreä jalka ja muissa se ei ole. Koita keksiä parempi perustelu tuolla ei ohjelmointikieliä aseteta turhuusjärjestykseen.
Turhuutta voit arvostella kun osaat enemmän kuin kopioida jonkun esimerkin.
Hölynpölyä. En ole itse Go -kielellä koodannut, joten en osaa sanoa onko isojen kirjainten käyttäminn metodeissa pakollista vai pelkästään vakiintunut tapa, jos nyt edes sitä. Jokatapauksessa isojen kirjainten käyttäminen nyt on vain merkintätapa eikä se nyt kyllä tee mistään ohjelmointikielestä hyvää tai huonoa. On täysin naurettavaa takertua tuollaiseen asiaan. Sitäpaitsi mitäs niillä muill ohjelmointikielillä muka on tämän asian kanssa tekemistä? Kyllähän nyt jokaisella ohjelmointikielellä saa olla oma tapansa merkitä asioita. Se, jos metodien nimissä käytetään alussa isoja kirjaimia tuskin kertoo vielä kovin paljon kielen syntaksista.
Et ole muuten tainnut sitten koodata kovin paljon, koska erilaisia vakiintuneita tapoja merkitä esimerkiksi metodien nimiä on eri kielissä ja ympäristöissä useita.
Esimerkiksi voi olla vakiintunut tapa merkitä metodien nimiä niin, että nimen ensimmäinen kirjain on pieni kirjain ja sitten jos nimi koostuu useasta yhteenkirjoitetusta sanasta niin jokainen seuraava sana alkaa isolla kirjaimella. Toinen yleisesti käytetty tapa merkitä noita on käyttää alaviivaa erottamaan sanoja, jollon nimessä olevien sanojn i tarvitse alkaa isoilla kirjaimilla vaan usein koko nimi kirjoitetaan pienillä kirjaimilla..
Onhan noita vakiintuneita merkitätapoja nyt useita. Joku metodin nimen merkintätapa nyt ei kuitenkaan yksinään tee kielestä huonoa tai hyvää.
Lisäksi on aivn älytönt väittää, ettei muita ohjelmointikieliä tarvita, koska on jokin yleisesti käytetty kieli. Kukas sen edes sitten määrittelee mikä on se yleisesti käytetty kieli, jonka lisäksi muita ei tarvita? Todellisuudessa on vain hyvä, että ohjelmoijilla on valinnanvaraa ohjelmointikielissä. Jokainen voi sitten käyttää sitä kieltä, joka sopii itselle ja omaan tarkoitukseen parhaiten.
Sitäpaitsi kaikissa ohjelmointikielissä on puutteita ja sudenkuoppia, jotka tarpeettomasti aiheuttavat ongelmia ohjelmoijille. Siksi on hyvä, että kehitys jatkuu ja luodaan jopa kokonaan uusia ohjelmointikieliä, joilla pyritään ratkaisemaan aiempien kielien ongelmia. Senkin takia on hyvä, että uusia kieliä luodaan, että sillon voidaan löytää uusia parempia tapoja tehdä asioita. On epärealistista oletta, että esimerkiksi C tai C olisivat niin täydellisiä kieliä, että muita ei tarvittaisi tai kannattaisi kehittää. Jos noin ajateltaisiin, niin sillon moni nykyinn yleisesti käytetty kieli olisi jäänyt kehittämättä.
Mitä haittaa sitäpaitsi muka on siitä, että kehitetään uusia ohjelmointikieliä yleisimpien llisäksi? Eihän sinun ole mikään pakko niitä käyttää.
Esimerkiksi aiemmin mainitsemani Rust on kuitenkin herättänyt paljon kiinnostusta ihan syystäkin.
T. miksuh
Miten muuten ylipäätänsä on mahdollista, että muka huomasit Go -kielen olevan olemassa "kun vapaapäivänä oli aikaa surffata netissä" kun Go on ollut olemassa jo kutakuinkin 12 vuotta kuten aiemmin sanoin? Etkö sitten ole 12 vuoteen surffannut netissä vai? Vai onko asia vaan niin ettet ole juurikaan kooaannut tai ollut muutenkaan kiinnostunut ohjelmointikielistä?
T. miksuh
Ihme asioista sitä nykyään vedetään herneet nenään.
Ruby on...
Dynaaminen avoimen lähdekoodin ohjelmointikieli, joka keskittyy yksinkertaisuuteen ja tuottavuuteen. Siinä on tyylikäs syntaksi, joka on luonnollinen lukea ja helppo kirjoittaa.
Noinhan siellä sanotaan, ja heti alkuun siitä saakin sen kuvan että olisi helppo oppia, mutta jo 3..4 tunnin päästä tunne helppoudesta katoaa. Syntaksi todella sisältää muista kielistä poikkeavia ratkaisuja ja 5..6 tuntia aloituksesta olet kypsä luovuttamaan. Tämä spesiaali syntaksi asettaa muistamiskyvyt koetukselle, kun ne jo näin vanhemmiten on muutenkin heikommassa mallissa.
Sellaisen mielikuvan se kuitenkin pystyi luomaan että kieli on erittäin kyvykäs ja tuottoisa ympäristö, ja jota voi hyödyntää vaikka HTML-sivujen tuottamiseen.
Go, Rust ja Julia ovat näitä uusia läpilyöneitä kieliä.
Juliassa ei ole kunnon moduuleita, sillä kaikki moduulin muuttujat ovat julkisia niin kuin Pythonissakin.
"sillä kaikki moduulin muuttujat ovat julkisia niin kuin Pythonissakin"
EI PIDÄ PAIKKAANSA
Juliasta en tiedä, mutta pyhonia tunnen vähän paremmin, ja siinä säädellää muuttujien näkyvyyttä; nonlocal, global ja global termein.
Pythonissa funktion muuttujat voivat olla lokaaleja, mutta moduulitasolla kaikki ovat import-kelpoisia eli siis julkisia.
Go:n tärkein kriteeri olemassaololle on lienee koodarien ja softien sitouttaminen Googlen omaan ekosysteemiin.
"package main"
Miksi pitää erikseen julistaa tuota?
import "fmt"
Ok. No voidaanko importoida pelkkä funktio tai metodi, ettei tarvitsisi tehdä näin:
fmt.Println("Hello, 世界")
Turha tuota fmt:tä on joka paikassa julistaa.
Että mitä, ei ymmärrä