Pereiti prie turinio

Rekomenduojami pranešimai

package main

import "fmt"

func main() {
   fmt.Println("Hello!")
}

Viena tema paskatino sukurti kitą, apie kitą su Google pagalba vystoma kalbą – Go.

 

Pastaruoju metu ypač ja susižavėjau. Tiesiog aukso viduriukas tarp C ir aukštesnio lygio kalbų. Sunku netgi racionaliai paaiškinti, bet tiesiog neįprastai malonu programuoti.

 

Kūrėjai teigė, kad iš esmės norėjo pervilioti programuotojus nuo tokių kalbų kaip C, C++, Java, tačiau efektas kiek kitas – Python, Ruby naudotojai mielai ima Go į rankas, kadangi skirtumas tarp jų ir Go nėra toks, kaip pereinant prie kitos kalbos, o vietų, kur Go stipresnė, tikrai yra.

 

Pagrindiniai Go aspektai, šaunantys į galvą:

 

  • Statinis tipizavimas (tačiau interfeisų dėka ir savotiškas Duck typing, labai praverčia)
  • Tam tikras OOP, bet ne toks, koks įprasta (interfaces, structs, composition vs. classes and inheritance)
  • Paprastas concurrency – vadinamosios "Goroutines", panašios į green threads, automatiškai paskirstomos per keletą OS lygio thread'ų ir procesų
  • "Don't communicate by sharing memory, share memory by communicating" – bendravimas tarp atskirų funkcijų ar goroutines įgyvendinamas kanalais.
  • Plati standartinė biblioteka: nuo JSON paketo, HTTP kliento/serverio iki šifravimo įrankių...
  • Kompiliavimasis į statinį binary – geri greičiai, portability
  • Protingas Go runtime su Garbage Collectoriumi, reflectionu ir t.t.
  • Aiškus tipų formatas: kai C reikia netgi tam tikros taisyklės tam, kad suprastum sudėtingesnius tipus (:lol:), GO viskas nurodoma paprastai ir aiškiai.

Tiesa, yra ir minusų, bet tai daugiausiai dėl kalbos jaunumo. Pavyzdžiui, neišsivysčiusi paketų ekosistema – nėra aiškių lyderių tam tikrose srityse (kad ir tokiose dažnose, kaip web frameworkai), kaip kitose kalbose. Taip pat literatūros, blogų, planetų, naudotojų bazės trūkumas – vėlgi, per laiką tai atsiras.

 

Kam galima pritaikyti? Ogi labai daug kam. Serveriai (ypač stipri Go vieta dėl gero concurrency palaikymo), sistemos įrankiai, desktop aplikacijos (kol kas čia Go tik pradeda, nes nėra gerų portų, tarkim, GUI toolkitams, SDL ir pan. – bet viskas juda į priekį, pagrindas yra.) ir t.t.

 

Google sako, kad Go naudojama viduje „for real things“ (vienoje kalboje sakė perrašę, pavyzdžiui, download serverį ir kitus panašius dalykus iš C++ į Go). Canonical (Ubuntu kūrėjų) įrankis Juju parašytas Go, DotCloud naudoja savo įrankiui Docker, ir t.t. Daugiau pavyzdžių galima rasti čia.

 

Susidomėjusiems:

 

Oficialus tinklalapis

Go turas –kalbos pradmenys jau mokantiems programuoti kitomis kalbomis, ypač iš C-like sintaksės. Tolesniam mokymuisi rekomenduočiau "How to write Go code", "Effective Go", "Go references" iš oficialaus tinklalapio.

Go Playground – išbandykite tiesiog naršyklėje

Go resursai – programos, parašytos Go, bibliotekos, tinklalapiai, ir t.t.

 

––

 

Būtų įdomu išgirsti jūsų nuomones. Sudomino? Galbūt jau bandėte?

Redagavo Silke
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Ši kalba stiprokai traukia, tačiau abejoju ar ant jos pervesiu savo sitemele.

Gal reiks ant Apache pamegint pasileist.

Zioplas klausimas kada vyktu kompiliavimas Apache ir appengine atveju? Ar galima ja naudoti kaip ir interpretuojama kalba.

 

papildymas

 

2.go

package main  

import (  
 "os"  
)  

func main() {  
 os.Stdout.WriteString("Content-Type: text/html\n\n");  
 os.Stdout.WriteString("Hello world!\n\n");  
} 

$cd /usr/lib/cgi-bin/

$go build 2.go

$cp 2 2.cgi

$chmod 0755 2.cgi

Redagavo saknis
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tavo atveju yra CGI, bet su Go (ir beveik bet kuria kita kalba) geriau, sakyčiau, būtų leisti normalų HTTP serverį toje kalboje (tuo labiau, kad Go turi tinkamą tam HTTP serverį standartinėje bibliotekoje) ir į jį proxy'inti per Apache. Dėl App Engine – nežinau, viskas per jų SDK turėtų vykti.

 

Go yra kompiliuojama kalba.

Redagavo Silke
Nuoroda į pranešimą
Dalintis kituose puslapiuose

sharing hostingo atveju normalus web serveris - apache. Dedikuotuose galima uzsiimti su smulkiasniais gaminiais.

Na taip, jei tenka sėdėti shared ir su CGI – ne kažką :D Tiesiog sakau, kaip beveik visada yra dedikuotame, ar VPS'e – stovi serveris toje kalboje (Ruby, Python, Perl, Go, ...) ir bendrauja kažkaip (dažniausiai – http, kai kada FastCGI, SCGI, ...) su rimtesniu web serveriu (Apache, nginx, lighty, ...), kuris servina statiką + duoda requestus aplikacijos serveriui.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Na taip, jei tenka sėdėti shared ir su CGI – ne kažką :D Tiesiog sakau, kaip beveik visada yra dedikuotame, ar VPS'e – stovi serveris toje kalboje (Ruby, Python, Perl, Go, ...) ir bendrauja kažkaip (dažniausiai – http, kai kada FastCGI, SCGI, ...) su rimtesniu web serveriu (Apache, nginx, lighty, ...), kuris servina statiką + duoda requestus aplikacijos serveriui.

pramoksta kas koki framework ir iteigineja kad rado ka naudingo, apache konfiguracijos galimybes pasiteisino, zinoma sis serveris kiekvienam useriui duoti - pavojus del klaidu. Taciau visada rekia ieskoti optimalumo, nemanau kad teigiamas reiskinys kai CMS perima visu uzklausu aptarnavima. Manyciau reiktu nepamirsi bent jau robots.txt,sitemap.xml ir gincitinas reikalas del status 404.

Nemanau kad freimvorkai gerai.

p.s.

shared su CGI, greiciausiai jau deficitas.

Redagavo saknis
Nuoroda į pranešimą
Dalintis kituose puslapiuose

pramoksta kas koki framework ir iteigineja kad rado ka naudingo, apache konfiguracijos galimybes pasiteisino, zinoma sis serveris kiekvienam useriui duoti - pavojus del klaidu. Taciau visada rekia ieskoti optimalumo, nemanau kad teigiamas reiskinys kai CMS perima visu uzklausu aptarnavima. Manyciau reiktu nepamirsi bent jau robots.txt,sitemap.xml ir gincitinas reikalas del status 404.

Nemanau kad freimvorkai gerai.

p.s.

shared su CGI, greiciausiai jau deficitas.

Kaip ir sakiau, statinius failus visada servina Apache/nginx/pan., aplikacijos serveris rūpinasi jau tik dinaminiu turiniu.

 

Susidomejau cia kalba. Dabar mokausi C++, o po to kokia patartumet? Galvoju apie C, o poto apie cia Go. Ka jus manote? Ar taip gerai?

Jo, kaip north sakė, neskubėk niekur. C++ nėra toks jau mažas ir paprastas dalykas, pirma įvaldyk ją. :)

http://i.imgur.com/cU3bSrN.png

 

––

 

Šiaip kol kas net pats abejoju, ar Go rekomenduočiau, kaip pirmąją kalbą. Kalba gera, tačiau kaip įvadą į programavimą..? Galbūt per daug netradicinė. Sunku apibrėžti, kas būtent neduoda ramybės. Gal tiesiog programavęs kokia nors kita kalba suprasi, kodėl Go yra būtent tokia, kokias problemas sprendžia. Perėjus į Go bus „woah, goroutines, channels, awesome!“. O perėjus iš Go į kokią nors C: „WTF, kur visi mano geri daikčiukai!“ :D

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

  • Prisijunk prie bendruomenės dabar!

    Uždarbis.lt nariai domisi verslo, IT ir asmeninio tobulėjimo temomis, kartu sprendžia problemas, dalinasi žiniomis ir idėjomis, sutinka būsimus verslo partnerius ir dalyvauja gyvuose susitikimuose.

    Užsiregistruok dabar ir galėsi:

    ✔️ Dalyvauti diskusijose;

    ✔️ Kurti naujas temas;

    ✔️ Rašyti atsakymus;

    ✔️ Vertinti kitų žmonių pranešimus;

    ✔️ Susisiekti su bet kuriuo nariu asmeniškai;

    ✔️ Naudotis tamsia dizaino versija;

    ir dar daugiau.

    Registracija trunka ~30 sek. ir yra visiškai nemokama.

  • Naujausios temos

  • Karštos temos

×
×
  • Pasirinkite naujai kuriamo turinio tipą...