áá±á¬ááºážáá«ážááᯠááááºáá¯ááºáá±áá²á·áá±á¬ áá¯á¶á·ááŒááºáá»ááºá¡ááŒá
Ạáá±ážáá¬ážáá²á·ááŒááºážááŒá
áºáááºá
ááœááºáá²á·ááá·áº ááŸá áºááŸá áºáá»á±á¬áºá¡ááœááºáž áá»áœááºá¯ááºááẠáá®ááœááºáá¬ážáá±á¬ ááœá±áá±ážáá»á±ááŸá¯á áá áºááŒáá·áº á¡áá°ážááŒá¯ RADIUS áá¬áá¬ááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááẠGo ááᯠá¡áá¯á¶ážááŒá¯áá²á·áááºá áááºážáá áºáá»áŸá±á¬ááºááŸá¬ áá¬áá¬á áá¬ážáá²á· ááŸá¯ááºááœá±ážááŸá¯ááœá±ááᯠááá¯ááºááá¯ááºáá±á·áá¬áá±áá«áááºá áááá¯ááááºáá»á¬ážááá¯ááºááá¯ááºá á¡ááœááºááá¯ážááŸááºážááŒá®áž á€áá±á¬ááºážáá«ážááááºááœááºáá»ááºááá¯ááºáá±á¬áºáááºáž Go ááá¯ááºááá¯ááºá¡áá¯á¶ážááŒá¯ááŒááºážá¡ááœá±á·á¡ááŒá¯á¶ááẠáááºážááá¬ááœááºáá±ážá¡ááœáẠá áá¬ážáá¯á¶ážá¡áááºážáááºááŸáá·áº ááá¯ááºáááºáá«áááºá Go ááẠáá±ážáááºá á¡ááœááºáááºááá¯ááºáá±á¬ áá¯ááºá¡ááœáẠáááºááá¬áá¬á áá¬ážáá áºáᯠááŒá áºáá¬áá±áááºá áááºážáá¬áá¬á áá¬ážááᯠáááºááŒáœá áœá¬á¡áá¯á¶ážááŒá¯áá±ááá·áº Google á០áááºáá®ážáá²á·ááŒááºážááŒá áºáááºá á¡á±á¬ááºááŒá±ááá¯ááºážá Go áá¬áá¬á áá¬ážá áá®ááá¯ááºážááẠáá¬ááºáááºáá¬ááºááœá±ážáááŸááá±á¬ áááá¯ááááºáá¬áá»á¬ážá¡ááœáẠááá¯ážááœá¬ážáááºáᯠáá»áœááºá¯ááºááá¯ážááá¯ážáá¬ážáá¬ážááẠáááºáá«áááºá
á¡á¬ážáááºážáá±á¬ áááá¯ááááºáá¬áá»á¬ážá¡ááœáẠáá®ááá¯ááºážáá¯ááºáá¬ážáá«ááá¬ážá
á¡á¬ážáááºážáá°ááẠááŒá¿áá¬áá»á¬ážááᯠááŒá±á¬ááá¯áááºáá á áááºáá°ážá áááºáááºážáá»á¬ážááŸáá·áº á¡áááºáááºáá»á¬ážá¡ááŒá±á¬ááºáž ááá¯ááºáá¬á áœá¬ááŒá±á¬ááá¯áááº...
Go ááẠáááºáá°áááºá¡ááœááºááœááºáá°áááºá ááá¯á·ááŒá±á¬áá·áº áá±á·áá»áá·áºááŸá¯áá¯á¶ážááááŒá¯áá¯ááºáá² áá¯ááºáááºááá¯ááºá
á±ááẠááœááºáá°áá«áááºá áá¯ááºááᯠá¡áááááá¯ááºáá±á¬ á¡áá°ážáá»áœááºážáá»ááºáá°áá»á¬áž (áááºáá±áá»á¬áá»á¬ážá áá±á¬ááºáááºáá»á¬áž á
áááºááŒáá·áº) ááœá²áááºááá·áºá¡áá« ááá¹áá¬áá¯á¶ážááá¯ááºáᬠáá¯áá¹ááá®á¡áá»á¬ážá¡ááŒá¬ážááœáẠáá¬áá¬á
áá¬ážá á€á¡ááºá¹áá«áááºááᯠá¡áá¯á¶ážááŒá¯áá«áááºá Design Driven Development áá²á·ááá¯á·áá±á¬ áááºážá
áá
áºáá»á¬ážá¡ááœáẠá¡ááœááºá¡áááºááŒá±áá«áááºá
á¡ááœá±á·á¡ááŒá¯á¶áááŸááá±ážáá±á¬ áááá¯ááááºáá¬áá»á¬ážáááºááẠáá
áºááẠááá¯á·ááá¯áẠááŸá
áºáááºá¡ááŒá¬ááœáẠá¡áá±á¬áºáá±áž áá±á¬ááºážááœááºáá±á¬ áá¯ááºááᯠá
áááºáá¯ááºáá¯ááºááŒáááºá áá»áœááºáá±á¬áºáá±á·áá¬áá²á·áá²á· á
á¬á¡á¯ááºááá±á¬á· "Go Programming" (Mark Summerfield) ááŒá
áºáá«áááºá á
á¬á¡á¯ááºááẠá¡ááœááºáá±á¬ááºážáááºá áááºážááẠáá¬áá¬á
áá¬ážá ááœá²ááŒá¬ážááŸá¯áá»á¬ážá
áœá¬ááᯠáááááá«áááºá Java, PHP áá²á·ááá¯á·áá±á¬ áááá¯á¡ááºáá² ááŸá¯ááºááœá±ážáá±á¬ áá¬áá¬á
áá¬ážáá»á¬ážááŒá®ážáá±á¬ááºá ááŸá±á¬áºááá¬áááŸáááŒááºážááẠáááºážáááºážáá¬áááºá ááá¯á·áá±á¬áº áááŒá¬áá® ááá¯á·ááá¯áẠáá±á¬ááºááá¯ááºážááœáẠá¡ááá·áºá¡áááºááŸááá±á¬ áááá¯ááááºáá¬áá»á¬ážá
áœá¬ááẠáááºáááºá¡áá
áºááœáẠáááºážáááºážáá±á¬ááºážáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááẠá
áááºáá°ážááŸááááºá áá«á ááááºááá¯á¡ááºááá¬ážá
Rob Pike (áá¬áá¬á áá¬ážáá¡áááá¡ááœá±ážá¡áá±á«áºááá¬ááŸááº) ááẠGo áá¬áá¬á áá¬ážááᯠáá¬ážáááºáááœááºáá°ááŒá®áž á¡áá¯á¶ážááŒá¯áááœááºáá°áá±á¬ á ááºááŸá¯áá¬áá¬á áá¬ážáá áºáá¯á¡ááŒá Ạáááºáá®ážáá²á·áááºá áá¬áá¬á áá¬ážááẠá¡áááºážááŒá®ážáá»á¬ážááœáẠá¡ááŒáá·áºáá¯á¶ážáá¯ááºáá¯ááºá áœááºážá¡á¬ážá¡ááœáẠáá®ááá¯ááºážáá¯ááºáá¬ážááŒá®áž áááºážááŸáá·áºáááºáááºá áá¶áááááŸááá«á á¡ááœá±á·á¡ááŒá¯á¶áááŸááá±ážáá±á¬ áááá¯ááááºáá¬áá»á¬ážá áœá¬ááẠáááºážááá¯á· áá»á±á¬ááºáá¯á¶ážáá±ááá·áº á¡ááºá¹áá«áááºáá»á¬ážá áœá¬ááŸáááŒá±á¬ááºáž áááºážáá°ááŒáááºá ááá¯ážááŸááºážááŸá¯á¡ááœáẠá€ááá¹áááẠáá¬áá¬á áá¬ážá áá®ááá¯ááºáá¬áá»á¬ážá á¡áááá¬ááºááŒáá·áº áá¯á¶ážááŒááºáá²á·ááŒááºážááŒá áºááŒá®áž áááºážááᯠá¡áááºááŒá±á¬áá·áº ááá¯á¡ááºááŒá±á¬ááºáž á¡ááŒáá·áºá¡á áá¬ážáááºááá¯ááºáááºá áá±á¬á·ááºáá²áá±ážáá¬ážáá°áá»á¬ážá á á±á·áá±á¬áºááŸá¯ááŸáá·áº Go ááœáẠá¡á±á¬ááºááŒááºááẠáááºážááá¯á·ááŒáá¯ážá á¬ážáá±áááºááᯠáá»áœááºá¯ááºááá¯á· áá¬ážáááºááá«áááºá
áá«ááᯠáá¬ááŒá±á¬áá·áº áá®áá±á¬ááºááá¯ážááŸááºážá¡á±á¬áẠáá¯ááºáá¬ážáá¬áá²á á€áááºááŸá¬ Rob Pike áááá¯ážáá¬ážáá»ááºá¡áá»áá¯á·ááŒá áºáááºá
á€áá±áá¬ááœáẠá¡áá±ážááŒá®ážáá±á¬á¡áá»ááºááŸá¬ áá»áœááºá¯ááºááá¯á·á áááá¯ááááºáá¬áá»á¬ážááẠáá¯áá±áá®áá»á¬ážááá¯ááºáá±á á ááºážáááºážá¡áá áá°ááá¯á·áᬠáááºáááºááááºážá Java ááá¯áá±á·áá¬ááŒá®áž C/C++ áá«ááŸááá¯áẠPython ááá¯áá±á·áá¬áá¬ááŒá áºááá¯ááºáá«áááºá áá°ááá¯á·ááẠáá±á¬ááºážááœááºáá±á¬áá¬áá¬á áá¬ážááᯠáá¬ážááááºááá¯ááºáá±á¬áºáááºáž áá áºáá»áááºáááºážááœáẠáááºážááá¯á·á¡á¬áž áá±á¬á·ááºáá²ááºáá±á¬ááºážáá»á¬áž áááºáá®ážáá±ážá á±ááá¯áá«áááºá áá«ááŒá±á¬áá·áº áá¬áá¬á áá¬ážááᯠáá¬ážáááºááœááºá¡á±á¬áẠáááºáá°ááá·áºáá«áááºá
á¡ááŒááºážáá»ááºážá¡á¬ážááŒáá·áº C ááŸáá·áº áááºážááŸá®ážáá°ááŒá áºááááºá Google ááœáẠá¡áá¯ááºáá¯ááºáá±á¬ áááá¯ááááºáá¬áá»á¬ážááẠáááºážááá¯á·á á¡áááºááœá±ážáááºážááŒá±á¬ááºážáá¯ááºáááºážááᯠá¡á á±á¬ááá¯ááºážááœáẠá áááºááŒááŒá®áž á¡áá»á¬ážá á¯ááŸá¬ á¡áá°ážáááŒáá·áº C áááá¬ážá á¯ááŸáá·áº áá¯ááºáá¯á¶ážáá¯ááºáááºážáá¬áá¬á áá¬ážáá»á¬ážááŸáá·áº áááºážááŸá®ážááŒáááºá áááá¯ááááºážáááºážáá¬áá¬á áá¬ážá¡áá áºááœáẠáá»ááºááŒááºáá±á¬áá¯ááºáá¯ááºá áœááºážá¡á¬ážá¡ááœáẠááá¯á¡ááºáá»ááºááŸá¬ áá¬áá¬á áá¬ážááẠá¡ááœááºá¡á áœááºážáá±á¬ááºááŸá¯áááŒá áºááá·áºáᯠááá¯ááá¯áááºá
ááá¬ááŸáá áá¬ážáá² ááá¯ááºáá¬áž?
ááá¯ážááŸááºážááŸá¯áááŸá±ážáá±á¬ááºážáá á¹á ááºáž
ááá¯ážááŸááºážááŒááºážááẠá¡ááŸá¡áá¡ááœáẠáááŸááááŒá áºááá¯á¡ááºáá±á¬ á¡ááŒá±á¡áá±áá áºáá¯ááŒá áºáááºá áá±á¬áºá ááœáá¯ááºážá
ááá¯ážááá¯ážááŸááºážááŸááºážáá¬ážááŒááºážááẠáááºááá·áºáá®ááá¯ááºážá¡ááœááºáááᯠá¡áá±ážááŒá®ážáá¯á¶ážáááºážááá¯ááºáá áºáá¯ááŒá áºáááºá áááºááááá·áºá¡ááá¯ááºážá ááŒá®ážááŒáá·áºá á¯á¶áá±á¬ááá±á¬áá»ááºááẠáá±á«ááºážááá·áºá áá¬áááŸáááá·áº ááá±á¬áá»ááºááá¯ááºáá±á¬áºáááºáž áááºááŸá¬ážá áá¬áááŸáááá·áº ááá±á¬áá»ááºáá áºáá¯ááŒá áºáááºá ááŸá¯ááºááœá±ážáá±á¬ááŒá¿áá¬áá»á¬ážááᯠááŒá±ááŸááºážááẠ(ááá¯á·ááá¯ááº) áá¯ááºáá±á¬áºááŒá±á¬ááá¯áááºá¡ááœáẠááŸá¯ááºááœá±ážáá±á¬áááááá¬áá áºáᯠááá¯á¡ááºáááºáᯠáá°á¡áá»á¬ážá áá¯á¶ááŒááºááŒáááºá ááá¯á·áá±á¬áº ááá¯ááá¯á·ááá¯ááºá á¥ááᬠPERL áá¬áá¬á áá¬ážááᯠááŒáá·áºáá¡á±á¬ááºá áááá¯ááááºáá¬áá áºáŠážááẠááŒá¿áá¬áá áºáá¯á¡á¬áž ááŒá±ááŸááºážááẠá¡áááºážáá¯á¶áž áááºážáááºážáá¯á¶ážáá»áá¯ážááŸáááá·áºáááºáᯠáá¬áá¬á áá¬áž á¡ááœá±ážá¡áá±á«áºááá¬ááŸááºááá¯á·á áá¯á¶ááŒááºááŒáááºá Go áá¬áá¬á áá¬ážá á¡áá°áá«áááá¬ááŸááºáá»á¬ážááẠááá°áá®áá±á¬áááºážááŒá±á¬ááºážááᯠáá»áŸá±á¬ááºáá²á·ááŒáááºá áááºážááá¯á·ááẠááá¯áááºážáá áºááŒá±á¬ááºážááᯠáá¯á¶ážááŒááºáá²á·ááŒáá±á¬áºáááºáž á¡ááŸááºáááẠáá±á¬ááºážááœááºáá±á¬áááºážáááºážáá áºáá¯ááẠáááºážááá¯ááºáá±á¬ááºááẠáá¯á¶áá±á¬ááºáá«áááºá á€áá»ááºážáááºááŸá¯ááẠáá±ážáááºáá±á¬á¡ááŒá±áá¶á¡á¯ááºááŒá áºááŒá áºáááº- áá áºáá¯áááºážáá±á¬áááºážáááºážááŸá¬ áááºáá°áááºááá¯ááá¯ááœááºáá°ááŒá®áž áá±á·áááºááá¯ááá¯áááºáá²áááºá
ááœáŸá±á·ááŒá±á¬ááºážáá±ááá¯ááºáá°áá»á¬ážá áœá¬ááẠáá¬áá¬á áá¬ážááœáẠá¡á¶áááºááœááºáá»ááŸááá±á¬ abstraction áá»á¬ážááá«áááºááŒá±á¬ááºáž ááá¯ááºááŒá¬ážááŒáááºá áá¯ááºáá«áááºá áá«áááŸááºáá«áááºá áá«áá±ááá·áº áá«á áá¬áá¬á áá¬ážáá²á· á¡áááá¡á¬ážáá¬áá»ááºááœá±áá²á áá áºáá¯áá«á áá¬áá¬á áá¬ážááœáẠááŸá±á¬áºá¡ááẠá¡áááºážáá¯á¶áž áá«áááºááẠ- ááá¯á·ááŒá±á¬áá·áº áááá¯ááááºááᯠáááºááẠáááºáá²áá±á¬ á¡ááááᬠáááá¯á¡ááºáá«á áá¯ááºá á áá¬ážá¡áá¯á¶ážá¡ááŸá¯ááºážááŸáá·áº áááºáááºá á€áááºááŸá¬ ááŒá¿áá¬áááŸááá«á áá±á¬ááºážá áœá¬áá±ážáá¬ážáá±á¬ Golang áááá¯ááááºááẠááœá²á·á ááºážáá¯á¶á¡áááºážááẠááá¯á·ááá¯áẠáá¯á¶ážááááŸááá±á¬ áá±á«ááºááá¯ááºáááºáááºá ááá¯á·á¡ááŒááºá áááá¯ááááºáá áºáá¯áááºááŒááºážáá¡ááŒááºááŸá¯ááºážááẠáááºážááá¯áá±ážáá¬ážááá·áºá¡ááŒááºááŸá¯ááºážááẠá¡áááºážáá¯á¶ážááŒááºážá¡á¬ážáá áºáá¯ááŒá áºáááºá áá¯ááºá¡á¬ážáá¯á¶ážááẠáá áºááŒá±ážáá® áá±á¬áºáááºáá»ááŒááºáž ( built-in gofmt command ááᯠá¡áá¯á¶ážááŒá¯á áá¯ááºáá±á¬ááºááẠ) áᯠáá°ááá«á á¡ááá¯ááá¯ááºážá¡áááºážáááºááᯠáááºááŒááºážááẠááŒá¿áá¬ááá¯ááºáá«á
ááááºááŒá®áž áá¯ááºáá±á¬áºáááŒáááºáá°ážá
ááœááºáááºááŸá¯ááᯠáá»á¯ááºáá»ááºáá²á·á¡áá« á¡áá¯ááá¬á áááºážááá¶ááá¯ááºáá°ážá áááá»ááŸá¯á áá°á·áá¬áááºááá¯ááºáá°ážá
ááá¯ážááŸááºážáá±á¬ááá¹áááŒá±á¬áá·áº Go ááẠá¡ááŒá¬ážáá¬áá¬á áá¬ážáá»á¬ážááŒáá·áº áááºážááá¯á·ááŸáá·áºá¡áá»áœááºážááááºááŸááá°áá»á¬ážááẠááá¬ááá»ááá·áºá¡áá¬áá áºáá¯á¡ááŒá ẠáááºááŒááºáá°áááá·áºáááºáá±á¬ááºááŸá¯áá»áá¯ážáááŸááá±á á¡á ááá¯ááºážááœáẠá¡áááºážááẠá¡áááºáááŒá±ááŒá áºááá¯ááºáá±á¬áºáááºáž áááá¯ááááºááẠáááºáááá¯ááá¯ááœááºáá°ááŒá®áž ááá¯ááá¯ááŸááºážáááºážááŒááºáá¬ážááŒá±á¬ááºáž áááºáááááŒá¯áááá«áááºá
á¥ááá¬á¡á¬ážááŒáá·áºá stdin ááá¯áááºáá±á¬ console utility ááá¯á·ááá¯áẠcommand line arguments ááŸááá¯ááºáá áºáá¯áááºá€áá²á·ááá¯á·áá¯á¶ááááº-
package main
import (
"bufio"
"flag"
"fmt"
"log"
"os"
)
func main() {
flag.Parse()
scanner := newScanner(flag.Args())
var text string
for scanner.Scan() {
text += scanner.Text()
}
if err := scanner.Err(); err != nil {
log.Fatal(err)
}
fmt.Println(text)
}
func newScanner(flags []string) *bufio.Scanner {
if len(flags) == 0 {
return bufio.NewScanner(os.Stdin)
}
file, err := os.Open(flags[0])
if err != nil {
log.Fatal(err)
}
return bufio.NewScanner(file)
}
D ááœááºáá°áá®áá±á¬ááŒá¿áá¬á¡ááœááºááŒá±ááŸááºážáá»ááºáááºá¡áááºážáááºááá¯áá±á¬ááºážáá±á¬áºáááºážáááºáááºáááœááºáá°áá«á
import std.stdio, std.array, std.conv;
void main(string[] args)
{
try
{
auto source = args.length > 1 ? File(args[1], "r") : stdin;
auto text = source.byLine.join.to!(string);
writeln(text);
}
catch (Exception ex)
{
writeln(ex.msg);
}
}
áá°ážáá°ááŒááºážááá²
áá°ááẠáá°á·á¡áá²ááŸá¬ ááá²ááᯠáá±á¬ááºáááºá áá¬áááºáá°áá¬á
á¡á ááŒá¯áá°áá»á¬ážááẠáá±áá°áá»áááŸáááŒááºážááŸáá·áºáááºáááºá Go á¡ááŒá±á¬ááºáž á¡ááŒá²áá á± áááºážáá°ááŒáááºá á€ááŒá¿áá¬ááá¯ááŒá±ááŸááºážáááºá á¡áá»á¬ážá á¯ááẠááá¯ááºááá¯ááºáá¯ááºáá°ážááŒááºážááᯠá¡áá¯á¶ážááŒá¯ááŒáááºá á¥ááá¬á¡á¬ážááŒáá·áºá ááááºážááŒáá·áºáá»á¬ážá á¬áááºážááᯠáá±á«ááºážá ááºážááẠáá¯ááºáá±á¬ááºáá»ááºáá áºáá¯á áá±áá¬á¡áá»áá¯ážá¡á á¬ážáá áºáá¯á á®á¡ááœáẠááá¯ážááŸááºážáá±á¬ áá±á¬áºáá®áá°ážááá·áºááŒááºážááŸááœá²á á¡ááŒá¬ážáááºááá·áºáááºážáááºážááŒáá·áº áá¯ááºáá±á¬ááºááá¯ááºá áœááºážááᯠá¡áá±á¬ááºá¡áááºááá±á¬áºááá¯ááºáᯠááá¬ááŸááºáá»á¬ážá áá¯á¶ááŒááºááŒáááºá
package main
import "fmt"
func int64Sum(list []int64) (uint64) {
var result int64 = 0
for x := 0; x < len(list); x++ {
result += list[x]
}
return uint64(result)
}
func int32Sum(list []int32) (uint64) {
var result int32 = 0
for x := 0; x < len(list); x++ {
result += list[x]
}
return uint64(result)
}
func main() {
list32 := []int32{1, 2, 3, 4, 5}
list64 := []int64{1, 2, 3, 4, 5}
fmt.Println(int32Sum(list32))
fmt.Println(int64Sum(list64))
}
ááá¯áá²á·ááá¯á·áá±á¬ áááºáá±á¬ááºááŸá¯áá»á¬ážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááẠáá¬áá¬á áá¬ážááẠáá¯á¶áá±á¬ááºáá±á¬ á¡áááá¹áá«ááºááŸááááºá á¥ááá¬á¡á¬ážááŒáá·áºá áá±áá°áá» áááá¯ááááºáá±ážáᬠáá±á¬ááºážáááºá
package main
import "fmt"
func Eval32(list []int32, fn func(a, b int32)int32) int32 {
var res int32
for _, val := range list {
res = fn(res, val)
}
return res
}
func int32Add(a, b int32) int32 {
return a + b
}
func int32Sub(a, b int32) int32 {
return a + b
}
func Eval64(list []int64, fn func(a, b int64)int64) int64 {
var res int64
for _, val := range list {
res = fn(res, val)
}
return res
}
func int64Add(a, b int64) int64 {
return a + b
}
func int64Sub(a, b int64) int64 {
return a - b
}
func main() {
list32 := []int32{1, 2, 3, 4, 5}
list64 := []int64{1, 2, 3, 4, 5}
fmt.Println(Eval32(list32, int32Add))
fmt.Println(Eval64(list64, int64Add))
fmt.Println(Eval64(list64, int64Sub))
}
áá»áœááºá¯ááºááá¯á·ááá¯ááºááẠááááºááá á¹á áá»á¬ážááẠá¡áááºážáááºááá¯ááŸááºááœá¬ážáá±á¬áºáááºážá áááºážááẠáá±áá¯áá»á¡á¬ážááŒáá·áº ááŒá áºáá¬áááºá ááá¯á·ááŒá±á¬áá·áºá ááááºážáááºá¹áá»á¬áá¯ááºáááºážá¡á¬ážáá¯á¶ážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááẠáá»áœááºá¯ááºááá¯á·á¡ááœáẠáááºáá²áááºááá¯ááºáá«á
D ááŸá áááá¯ááááºáá áºáá¯ááẠáááááá¬áᬠááá¯áá±á¬ááºážáááºáᯠáá°á¡áá»á¬ážá ááá¯ááŒááŒá®áž áááºážááá¯á·ááẠááŸááºáá±áááá·áºáááºá
import std.stdio;
import std.algorithm;
void main(string[] args)
{
[1, 2, 3, 4, 5].reduce!((a, b) => a + b).writeln;
}
ááá¯á·áá±á¬áºá D á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááẠááŸá¬ážááœááºážááá¯ááºááœááºááŸá¯ááŒá¿áá¬ááᯠáá¯á¶ážááá»á áºáá»á°ááŸá¯áá±á¬ááŒá±á¬áá·áº áááºážááẠááá¯áá±á¬ááºážáá±á¬áºáááºáž ááá¯ááŸááºáááºááá¯ááºáá«á
áááºááœá±á·ááááœááºá áá¯áá¹áááá±áá ááŸá¯ááºááœá±ážááŸá¯áá»á¬áž ááá¯ážáá¬áááºááŸáá·áºá¡áá»áŸ ááœá¬ááá»ááºááẠáá»ááºááŒááºá áœá¬ áá»ááºážááŒá±á¬ááºážáá¬áááºá á á¶áá¬áá¬á áá¬áž á¡á±á¬áºááá±áá¬áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á ááá¯ááºáá±á¬ááºááá¯ááºáá±á¬ áá¯ááºáá±á¬ááºáá»ááºáá áºáá¯ááᯠáá¯ááºáá±á¬ááºááẠááá¯á¡ááºááá·áºá¡áá« ááœá¬ááá»ááºááẠááá¯á áá»ááºááŒááºá áœá¬ ááááºááœá¬ážáá«áááºá
ááááºážááááºážááá¯ááºááŸá¯á áá»á²á·ááœááºááá¯ááºááŸá¯ááŸáá·áº áááºááŸá¯ááá¯ááºááŸá¯ááá¯á·á¡á áá»áœááºá¯ááºáá¡ááŒááºá¡á Go language ááẠá¡ááá¯ááºááá±á¬áºáááºáž á áá¬ážáá¯á¶ážá¡ááŒááºážá¡á¬ážááŒáá·áº ááŸá¯á¶ážáááºá
á¡áá»áá¯á·áá±á¬ááá á¹á áá»á¬ážááœáẠáá±áá°áá»á¡á¬ážááŒáá·áº áááá¯ááááºáá±ážááŒááºážááẠáá»áœááºá¯ááºááá¯á·á¡á¬áž ááŒááºážááááá¯ááºáá±á¬ á¡áá»áá¯ážáá»á±ážáá°ážáá»á¬áž áá±ážáá«áááºá áááºážááᯠá¡áá»áá¯ážá¡á á¬ážá¡áá¯ááºááŒáá·áº ááŸááºážáááºážá áœá¬ ááá¯ááºáá±á¬áºáá¬ážáááºá ááá¯á·ááŒá±á¬áá·áºá áááºááá·áºá á¬áááºážááá¯áááá¯á á®áááºá áá»áœááºá¯ááºááá¯á·ááẠsort.Interface interface ááá¯á¡áá±á¬ááºá¡áááºáá±á¬áºáááºáá¬ááá¯á¡ááºáááºá
import "sort"
type Names []string
func (ns Names) Len() int {
return len(ns)
}
func (ns Names) Less(i, j int) bool {
return ns[i] < ns[j]
}
func (ns Names) Swap(i, j int) {
ns[i], ns[j] = ns[j], ns[i]
}
func main() {
names := Names{"London", "Berlin", "Rim"}
sort.Sort(names)
}
ááẠopen source ááá±á¬áá»ááºáá áºáá¯áá¯ááá¯áá°ááŒá®áž grep âinterface{}â -R command ááᯠrun áá«áá áááºáá»áŸááŸá¯ááºááœá±ážáá±á¬ á¡ááºáá¬áá±á·á áºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áááºááᯠáááºááœá±á·áááá·áºáááºá á áááºáááºážááŸááºááŒáá·áº áá²áá±á¬áºáá²áááºáá»á¬ážá á€á¡áá¬á¡á¬ážáá¯á¶ážááẠáá»áá¯ážááá¯ážáá®ááááŸáááŒááºážááŒá±á¬áá·áºáᯠáá»ááºáá»ááºážááŒá±á¬ááŒáááá·áºáááºá ááá¯á·áá±á¬áºá á€áááºááŸá¬ á¡ááŒá²áááºážááá¯ááºáá±á á¥ááá¬á¡áá±áá²á· DELPHI ááᯠááŒáá·áºáá¡á±á¬ááºá á€áá°áá®áá±á¬ generics áá»á¬ážááŸááá±áá±á¬áºáááºážá áááºážááœáẠáááá¬ážáá±á¬áá±áá¬á¡áá»áá¯ážá¡á á¬ážáá»á¬ážáá«ááŸááá±á¬ áá¯ááºáá±á¬ááºááŸá¯áá»á¬ážá¡ááœáẠá¡áá°áž VARIANT á¡áá»áá¯ážá¡á á¬ážáá áºáá¯áá«ááŸááááºá Go áá¬áá¬á áá¬ážááẠá¡áá¬ážáá°áá¯ááºáá±á¬ááºáááºá
á¡ááŒá±á¬ááºá០á á¬ááŸááºá¡áá
ááŒá®ážáá±á¬á· straitjacket áᬠáá°ážááœááºááŸá¯áá²á· á¡ááœááºá¡á á¬ážáá²á· ááá¯ááºáá®ááá«áááºá Stanislav Lec
ááœááºáá²áá±á¬ááááááºáá»á¬ážá áœá¬ááẠGo ááœáẠáá±áá°áá»ááá±á¬ááá¬ážáá»á¬ážááá¯áááºáá®ážááẠá¡ááŒá¬ážááá¹ááá¬ážáá áºáá¯ááŸáááẠ- áá±á¬ááºááŒááºáááºááŸá¯ááŸááááºáᯠááá¯ááá¯ááºáááºá áá°ááá¯á·áááºáž ááŸááºáááá·áºáááºâŠ áá«áá±ááá·áº ááŸá¬ážááŸá¬ážáá«ážáá«áž ááá á¹á ááœá±ááŸá¬áá¬á
Rob Pike á áá»áœááºá¯ááºááá¯á·á¡á¬áž ááááá±ážáááº-
áááºážááẠá¡á áœááºážáááºáá±á¬áááááá¬ááŒá áºááŒá®áž áááááŒáá·áºá¡áá¯á¶ážááŒá¯ááá·áºáááºá áááá¯á¡ááºáá² ááŸá±á¬ááºááŒááºááá·áºáá«áááºá
Wikipedia á á¡á±á¬ááºáá«ááá¯á·ááᯠááŒá±á¬ááŒáááº-
Reflection ááá¯áááºááŸá¬ áááá¯ááááºáá áºáá¯ááẠáá¯ááºáá±á¬ááºáá±á ááºá¡ááœááºáž áááºážáááá¯ááºááá¯ááºááœá²á·á ááºážáá¯á¶ááŸáá·áº á¡áá°á¡áá»áá·áºáá»á¬ážááᯠá á±á¬áá·áºááŒáá·áºááŒá¯ááŒááºááá¯ááºááá·áº áá¯ááºáááºážá ááºááᯠáááºááœáŸááºážáááºá áááá¯ááááºáá±ážááœá²ááŒááºážááá¯ááºáᬠáá«áá¬ááá¯ááºážáá¡áááºážáᶠáá±á¬ááºááŒááºáááºááŸá¯ááᯠáá±á¬ááºááŒááºáááá¯ááááºážáááºážáá¯áá±á«áºáááºá áááºážááẠmetaprogramming á¡áá»áá¯ážá¡á á¬ážáá áºáá¯ááŒá áºáááºá
ááá¯á·áá±á¬áº áááºááááá·áºá¡ááá¯ááºáž á¡áá¬á¡á¬ážáá¯á¶ážá¡ááœáẠáááºáá±ážáááºááááºá á€ááá á¹á ááœááºá
- áááá¯ááááºáá±ážáááºá¡áááºá¡áá²
- áááá¯áááẠá¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ ááŒááºááŸá¯ááºáž
ááá¯á·ááŒá±á¬áá·áº áá±á¬ááºááŒááºáááºááŸá¯á¡á¬áž ááŒá®ážáá¬ážáá±á¬áááºáááºáá²á·ááá¯á· áááááŸáá·áºá¡áá¯á¶ážááŒá¯ááááºááŒá áºáááºá áá±á¬ááºááŒááºáááºááŸá¯ááᯠáá ááºážá á¬ážáá² á¡áá¯á¶ážááŒá¯ááŒááºážááẠáááºáááá±á¬ áááá¯ááááºáá»á¬ážá á ááºáááºáááŒáẠá¡ááŸá¬ážá¡ááœááºážáá»á¬ážááŸáá·áº ááŒááºááŸá¯ááºážáááá·áºááŒááºážááᯠááŒá áºá á±áááºá ááá¯ááºáá²áá±á¬ áááá¯ááááºáá¬áá áºáŠážááẠá¡ááŒá¬ážáá±á¬á áááºááœá±á·áá»ááŒá®áž áá»áá¯ážááœá¶áá±á¬ áá¯ááºáá±á¬áºááá¯ááºáááºáá»á¬ážááŸá±á·ááœáẠáááºážááá¯ááºááᯠááŒáááá¯ááºá á±ááá·áº á¡áá¬áá¬ááŒá áºáááºá
ááŸá®á០áááºáá»á±ážááŸá¯á¡áááºá ááá¯ááºáá«á áá¬áá¬á áá¬ážáá»á¬ážá áœá¬ááŸ
áá¶áá¬áá¬á¡ááŒáẠá¡ááŒáœá±ážáá»á¬ážáááºáž á¡ááœá±áááºáá¶áá°áá»á¬ážáᶠáá»ááºáá¬ážáá²á·áááºá
áá¬áá¬á áá¬ážááẠC á¡ááœá±á¡ááŸá áºááᯠáá¯á¶ážáá¯á¶ážáá»á¬ážáá»á¬ážá¡ááŒá±áá¶áááºáᯠáá°á¡áá»á¬ážá áá¯á¶ááŒááºáá±áá±á¬áºáááºážá áááºážááẠááá¯ááá¯á·ááá¯ááºáá«á áá¬áá¬á áá¬ážááẠá¡áá±á¬ááºážáá¯á¶áž áááá¯ááááºážáááºážáá¬áá¬á áá¬ážáá»á¬ážá ááŸá¯áá±á¬áá·áºáá»á¬ážá áœá¬ááᯠáá±á«ááºážá ááºáá¬ážáááºá
syntax
ááááŠážá áœá¬á ááá¹áá«áááºáá±á¬ááºáá¯á¶áá»á¬ážá syntax ááẠC language á syntax ááá¯á¡ááŒá±áá¶áááºá ááá¯á·áá±á¬áºá DELPHI áá¬áá¬á áá¬ážáááºáááºáž áááá¬áááºááŸá¬ážáá±á¬ ááœáŸááºážááá¯ážááŸá¯ááŸááááºá ááá¯á·ááŒá±á¬áá·áºá áááá¯ááááºááááºááŸá¯ááá¯ááºááŸá¯ááᯠá¡ááœááºáá»áŸá±á¬á·áá»áá±ážááá·áº áááºáá±áá±á¬ááœááºážá ááœááºážááááºáá»á¬ážááᯠáá¯á¶ážáá¯á¶ážáááºááŸá¬ážááá¯ááºáááºááᯠáá»áœááºá¯ááºááá¯á·ááœá±á·ááŒááºááá«áááºá áá¬áá¬á áá¬ážááœáẠDELPHI áá¬áá¬á áá¬ážááœáẠááœá±ážáá¬áá« â:=â á¡á±á¬áºááá±áá¬áááºáž áá«ááŸááááºá áááºáá±á·áá»áºáá»á¬ážá ááá±á¬ááá¬ážááᯠADA áá²á·ááá¯á·áá±á¬ áá¬áá¬á áá¬ážáá»á¬ážá០áá»á±ážáá°áá¬ážáááºá á¡áá¯á¶ážáááŒá¯áá±á¬ á¡áá¬áá»á¬ážá ááŒá±ááŒá¬áá»ááºááᯠPROLOG áá¬áá¬á áá¬ážá០áá»á±ážáá°áá«áááºá
semantic
áááºáá±á·áá»áºáá»á¬ážááẠDELPHI áá¬áá¬á áá¬ážá á¡áááá¹áá«ááºááᯠá¡ááŒá±áá¶áá¬ážáááºá áááºáá±á·áá»áºáá áºáá¯á á®ááœáẠáá±áá¬ááŸáá·áº áá¯ááºáá»á¬ážááᯠáá¯á¶ážá¡á¯ááºáá¬ážááŒá®áž áá¯áá¹ááááááŸáá·áº á¡áá»á¬ážáá°ááŸá¬ áá¯ááºáá±á¬ááºááŸá¯áá»á¬ážáá«ááŸááááºá áááºážááẠááá·áºá¡á¬áž áááºáá±á·áá»áºá¡ááºáá¬áá±á·á áºááᯠá¡áááºážáá¯á¶ážááŒá áºá¡á±á¬áẠáá»áŸá±á¬á·áá»ááá¯ááºá á±áá«áááºá
ááá¯ááºá á¬ážááŸááºá¡ááœá²á·áááºážáááºážááŒáá·áº á¡áá±á¬ááºá¡áááºáá±á¬áºáá±á¬ááºááœááºááŸá¯ááᯠDELPHI áá¬áá¬á áá¬ážá០áá»á±ážáá°áá²á·áá«áááºá
á á¯á ááºážááŸá¯
áá¬ááá áºáá¯ááŸáááŒááºážááŸá¬ á¡ááŒá±á¬ááºážááŒáá»ááºáááŸááá² ááá¯ááºáá«- C áááá¯ááááºááᯠááŒá¯á á¯áá±á áẠGo ááᯠáá®ááœááºáá²á·áááºá áá¬áá¬á áá¬ážá á¡á¬ážáá¬áá»ááºáá»á¬ážáá²á០áá áºáá¯ááŸá¬ áááºážá á á¯á ááºážááŸá¯ á¡ááœááºááŒááºáááºá á¡áá¯ááºáá®áá¬ááᯠDELPHI áá¬áá¬á áá¬ážá០áá»á±ážáá°áá²á·áááºá Go áááºáá±á·ááºá»áá áºáá¯á á®ááẠDELPHI áá±á¬áºáá»á°ážáá áºáá¯ááŸáá·áº áááºááá¯ááºáááºá á€áááºáá±á·áá»áºáá»á¬ážááᯠá¡ááŸááºáááẠááá¯á¡ááºááŸáᬠááŒááºáááºá á¯á ááºážáá«áááºá ááá¯á·ááŒá±á¬áá·áºá áá±á¬ááºáá áºááŒáááºáááºážááŒááºááŒá®ážáá±á¬ááºá áááºááẠáááá¯ááááºáá áºáá¯áá¯á¶ážááᯠá á¯á ááºážááẠáááá¯á¡ááºáá±á¬áºáááºážá ááŒá±á¬ááºážáá²áá¬ážáá±á¬ áááºáá±á·áá»áºáá»á¬ážááŸáá·áº áááºáá±á·áá»áºáá»á¬ážáá±á«áºááœááºáá°áááºááá·áº ááŒá±á¬ááºážáá²áá¬ážáá±á¬ áááºáá±á·áá»áºáá»á¬ážááá¯áᬠááŒááºáááºáá±á«ááºážá ááºážáá« (ááá¯á·áá±á¬áẠáááºáá±á·áá»áºá¡ááºáá¬áá±á·á áºáá»á¬áž ááŒá±á¬ááºážáá²ááœá¬ážááŸáá¬)á
á¡ááá·áºááŒáá·áº á¡áá±á¬ááºá¡áŠáá»á¬áž
áá¬áá¬á áá¬ážááœáẠC áá²á·ááá¯á·áá±á¬ á¡ááá·áºáááá·áºáá¬áá¬á áá¬ážáá»á¬ážááŸáá·áº áááºááá¯á·áá»áŸááááºááá¯ááºááá·áº ááá°áá®áá±á¬á¡ááá·áºááŒáá·áºáááºáá±á¬ááºááŸá¯áá»á¬ážáá«ááŸááááºá
- ááá¯ááºážáá»á¬áž
- Hash ááá¬ážáá»á¬áž
- áá»ááº
- Duck typing ááᯠRUBY áá²á·ááá¯á·áá±á¬ áá¬áá¬á áá¬ážáá»á¬ážá០áá»á±ážáá°ááẠ(áá¶ááá±á¬ááºážá áœá¬ááŒáá·áºá áá»á¬ážá áœá¬áá±á¬áá°ááá¯á·ááẠáááºážá á¡áá¬ážá¡áá¬ááᯠá¡ááŒáá·áºá¡á áá¬ážáááẠááá¯á·ááá¯áẠá¡áá¯á¶ážáááŒá¯ááŒáááº)á
ááŸááºáá¬ááºá á®áá¶ááá·áºááœá²ááŸá¯
Memory Management ááẠáá±áá°áá»á¡á¬ážááŒáá·áº áá®ážááŒá¬ážáá±á¬ááºážáá«ážááᯠááá¯ááºáááºáá«áááºá C++ áá²á·ááá¯á·áá±á¬ áá¬áá¬á áá¬ážáá»á¬ážááœáẠááááºážáá»á¯ááºááŸá¯ááᯠáá±á¬á·ááºáá²áá±ážáá¬ážáá°áᶠáá¯á¶ážááá»ááºáá¬ážáá²á·áá«áá ááá¯á·áá±á¬áẠDELPHI áá²á·ááá¯á·áá±á¬ áá±á¬ááºááá¯ááºážáá¬áá¬á áá¬ážáá»á¬ážááœáẠááá¯ážáá¬ážáá±ááœááºááŸá¯áá¯á¶á á¶ááᯠá¡áá¯á¶ážááŒá¯áá²á·áááºá á€áá»ááºážáááºááŸá¯ááŒáá·áºá ááááá²á·á¡á á¯á¡áá±ážáá»á¬ážááᯠááœá²á·á ááºážááŒá®ážááááºážá á ááºááá¯ááºážááá¯ááºáᬠááá¯ážáá¬ážáá»ááºáá»á¬ážááᯠááœáá·áºáááŒá¯áá²á ááá¯á·áá±á¬áẠGo ááẠááá¯á¡á á¯á¡áá±ážáá»á¬áž (C# áá²á·ááá¯á·) ááœáẠááá·áºááœááºážááŸá¬ááœá±ááœá±á·ááŸááá²á·áááºá ááá¯á·á¡ááŒááºá á¡ááŸáá¯ááºá á¯áá±á¬ááºážáá°ááẠáááºááŸááá°áááá»á¬ážáá±á¬ á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯áá»á¬ážááẠááá¯ááá¯áááá±á¬ááºááŒá®áž á¡áá»áááºááŸáá·áºáááŒá±ážáá® áá¯ááºáá±á¬ááºá áá¬áá»á¬ážá áœá¬á¡ááœáẠá¡áá¯á¶ážááŒá¯áá±ááŒá®ááŒá áºáááºá ááááºážááŸááºáá áºáá¯ááᯠááááºážáááºážááẠáááºááá¯ážáá áºáá¯ááᯠstack áá±á«áºááœáẠááœá²áá±áá±ážááá·áºá¡áá« áá¬áá¬á áá¬ážááá¯ááºááá¯ááºá á¡ááá¡ááŸááºááŒá¯áááºá áááºážááẠáááºááá¯áá®áááºáá±áá»á¬ááœáẠáááºááᯠáá»áŸá±á¬á·áá»áá±ážááŒá®áž áááá¯ááááºá á¡ááŸáááºááᯠááá¯ážá á±áááºá
Concurrency ááŸáá·áº Concurrency
áá¬áá¬á áá¬ážá ááŒáá¯ááºááá¯ááºááŸá¯ááŸáá·áº ááŸááºááŒáá¯ááºááá¯ááºá áœááºážááẠáá»á®ážááœááºážááŒááºážááẠáá»á±á¬áºááœááºáááºá á¡ááá·áºáááá·áºáá¬áá¬á áá¬ážááẠGo ááŸáá·áº á¡áá±ážááŸááẠááŸááºááŒáá¯ááºááá¯ááºááŒááºážáááŸááá«á ááá¬ážáá»áŸáááŸá¯ááŸááááºá áá±á¬áºáááºááᯠáá¬áá¬á áá¬ážáá±ážáá¬ážáá°áá»á¬ážá០áá®ááœááºáá²á·ááŒááºážááá¯ááºáá±á¬áºáááºáž áá±á¬ááºážááœááºáá±á¬ ADA áá¬áá¬á áá¬ážáá±á¬ááºážá០ááá¯ážááŸááºážá áœá¬ ááŸá¬ážáááºážáá²á·ááŒááºážááŒá áºáááºááᯠáááááŒá¯ááá·áºáááºá Multi-threaded code á¡ááœáẠáá¯á¶ááŸááºááŒá áºááá·áº deadlocks ááŸáá·áº race condition ááá¯á·á ááŒááºážá¡á¬ážáááºážáá«ážáá±á¬ ááŸá¯ááºááœá±ážááŸá¯áááºážáá«ážáá±á¬ ááŒá¿áá¬áá»á¬ážááᯠá¡á ááºááá¯ááºááŸááá±á ááºááœáẠáá¬áá¬á áá¬ážááẠCPU áá»á¬ážá¡á¬ážáá¯á¶ážááᯠá¡áá¯á¶ážááŒá¯á á¡ááŒáá¯ááºáá»áááºáááºááŸá¯áá»á¬áž áááºážáá±á«ááºážáá»á¬ážá áœá¬ááᯠáá¯ááºáá±á¬ááºááá¯ááºá áœááºážááŸááááºá
á¡ááá¯á¡áá»áá¯ážáá¶á á¬ážááœáá·áºáá»á¬áž
á¡ááŒááºáááẠáá°ááá¯ááºáž ááá¯ááºáá»áá¯ážáááẠááŒá áºááœá¬ážáááºá
áá¬áá¬á áá¬ážáááºáááºáž áá»áœááºá¯ááºááá¯á·á¡á¬áž áá¶áááááŸááá±á¬ á¡áá»áá¯ážáá»á±ážáá°ážáá»á¬ážá áœá¬ááᯠáá±ážáá±á¬ááºáááº-
- ááá±á¬áá»ááºááá¯áááºáá±á¬ááºááŒá®ážáá±á¬áẠá¡áá±á¬ááºá¡áááºáá±á¬áºááá¯ááºáá±á¬ ááá¯ááºáá áºáá¯áááºážááẠá¡ááá®áá±ážááŸááºážáá»á¬ážááŒáá·áºáá»ááºááŸá¯ááᯠáá»á¬ážá áœá¬ááá¯ážááŸááºážá á±áááºá
- áááºááŒáááºáá±á¬á á¬ááá¯ááºááŒááºážááŸáá·áº á¡áá»áá¯ážá¡á á¬ážá¡áá¯áá¬áááẠá á¬áá±ážááŒááºážá ááºážáááºááŸá¯áá»á¬ážáááŒá¯áá¯ááºáá² ááá·áºáá¯ááºááŸáá¡ááŸá¬ážá¡ááœááºážá¡áá±á¡ááœááºááᯠáááááá¬áá¬áá»áŸá±á¬á·áá»ááá¯ááºáááºá á á¬áá±ážááŒááºážá ááºážáááºááŸá¯áá¯á¶ážáááá¯ááºáá² áá¯ááºáá±á¬ááºáá±á¬ áááá¯ááááºáá¬á¡áá»áá¯á·ááᯠáá»áœááºá¯ááºááááŒá®áž áááºážááá¯á·ááá¯ááºá¡áááºá¡ááœá±ážááŸá¬ áááááá¬áᬠááááá¯ááºááŸá¯áááŸááá«á
- á¡ááœááºááá¯ážááŸááºážáá±á¬ á¡ááŒááºá¡ááŸááºá á¯á ááºážááŸá¯ááŸáá·áº á á¶ááŒá á¬ááŒáá·áºááá¯ááºá áá±á¬ááºážááœááºáá±á¬áááºáá±á¬ááºáááœááºáá°ááŸá¯ááá¯á·ááŒá áºááŒá®ážá cross-platform á¡ááá®áá±ážááŸááºážáá»á¬ážáááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááᯠáá»á¬ážá áœá¬ááá¯ážááŸááºážá á±áááºá
- RE2 áá¯á¶ááŸááºá¡áá¯á¶ážá¡ááŸá¯ááºážáá»á¬ážááẠthread-safe ááŒá áºááŒá®áž ááŒáá¯áááºááŸááºážáááá¯ááºáá±á¬ áá¯ááºáá±á¬ááºáá»áááºáá»á¬ážááŸááááºá
- ááŒááºáá¡ááœá²á·á¡á ááºáž áá°áá±á¬ááºáá»á¬ážááá«áá² ááá±á¬áá»ááºá¡áá»á¬ážá á¯ááᯠáá¯ááºáá±á¬ááºááœáá·áºááŒá¯ááá·áº á¡á¬ážáá±á¬ááºážááá·áº á á¶ááŒá á¬ááŒáá·áºááá¯ááºá
- áá¬áá¬á áá¬ážááẠááŒá¿áá¬ááᯠááŒá±ááŸááºážáááºážááẠá¡á¬áá¯á¶á áá¯ááºááẠáá¯á¶áá±á¬ááºáá±á¬áºáááºáž ááŒá¿áá¬ááᯠáááá±á¬ááºá áœá¬ ááŒá±ááŸááºážááá¯ááºááá·áº á¡ááá·áºáááá·áºáááºá
- Go eco á áá áºááœáẠá¡áá»áááºááá¯ááºážá¡ááœáẠáá®ááœááºáá¬ážáá±á¬ áááááá¬áá»á¬áž áá«áááºáá±ááŒá®ážááŒá áºáááº- á ááºážáááºááŸá¯áá»á¬ážá á á¬ááœááºá á¬áááºážáá»á¬ážá áááºáá±á·áá»áºá á®áá¶ááá·áºááœá²ááŸá¯á á¡á áœááºážáááºáá±á¬ ááááºááŒá¬áá»á¬ážá áá¯ááºáá¯ááºáá¯ááºááŒááºážá ááŒáá¯ááºááœá²á¡ááŒá±á¡áá±áá»á¬ážááᯠá á áºáá±ážááŒááºážá áááºááŒáá·áº áá«ááŸááá«áááºá
- Go áá¬ážááŸááºáž 1.11 ááẠáá¬áááºááŒá®áž VCS hosting áááááºááœáẠáááºáá±á¬ááºáá¬ážááá·áº built-in semantic ááŸá®ááá¯ááŸá¯á á®áá¶ááá·áºááœá²ááŸá¯ááᯠááááºáááºáá²á·áááºá Go áá±áá áá áºááœáẠáá«áááºááá·áº áááááá¬á¡á¬ážáá¯á¶ážááẠáááºážááá¯á·áá¶ááŸáá¯ááºááᯠáá±á«ááºážáá¯ááºáá¯ááºáááºá áááºáá±á¬ááºáááºááŸáá·áº ááá·áºááœááºážááẠá€áááºáá±á¬ááºááŸá¯áá»á¬ážááᯠáá áºááŸáááºááá¯áž á¡áá¯á¶ážááŒá¯ááá¯ááºáááºááŒá áºáááºá ááŒá®ážáá±á¬á· á¡á²áá« á¡áááºážáá±á¬ááºážáááºá áá¬ážááŸááºáž 1.11 áá±á¬ááºááŸááá¬áááºááŸáá·áºá¡áá»áŸá áááºáá±á·áá»áºáá¬ážááŸááºážáááºááŒááºážááá¯ááºáᬠááŒá¿áá¬ááá¯áááºáž áá¯á¶ážáááŒá±áááºááœá¬ážáá²á·áááºá
- áá¬áá¬á áá¬ážá á¡ááá á¡áá°á¡áááŸá¬ ááŸá±á¬áºááá¬ááᯠáá»áŸá±á¬á·áá»áááºááŒá áºáá±á¬ááŒá±á¬áá·áºá áá¬áá¬á áá¬ážááẠdeveloper áá»á¬ážá¡á¬áž á¡ááŸá¬ážá¡ááœááºážáá»á¬ážááᯠááŒááºáá¬ážá áœá¬ ááá¯ááºááœááºáá¯ááºáá±á¬ááºááẠááŸá¯á¶á·áá±á¬áºáá±ážáá«áááºá á¡áááºááŒá±á¬áá·áºááá¯áá±á¬áº áááºážááẠááŸááºáááºáááºá á¡ááŒá±á¬ááºážááŸá¬ ááá¯ááºáá«áá áááºážááẠá¡ááŸá¬ážá¡ááœááºážáá»á¬ážááᯠáá¯á¶ážáá¯á¶ážáá»á¬ážáá»á¬áž ááá¯ááºááœááºááẠáá±á·ááœá¬ážáááá·áºáááºááŒá áºáá±á¬ááŒá±á¬áá·áº ááŒá áºáááºá áá±á¬ááºáá áºáá¯á developer á¡áá»á¬ážá á¯ááẠerror ááá¯ááºááœááºááŒááºážááᯠááááºááᬠáá»á áºáá»á°ááŸá¯ááŒá®áž áááºážááá¯á·ááᯠá¡ááŸá¬ážá¡ááœááºážááᯠá¡áááºááá¯á·ááá¯á·ááẠáááºážááá¯á·ááᯠáá¯ááºáá±á¬ááºááŒááºážá¡á á¬áž áááºážááá¯á·ááᯠáá¯ááºáá±á¬ááºááŒááºážááẠááá¯ááŸá áºáááºáá«áááºá
- Go ááœáẠvirtuality áááŸááá±á¬ááŒá±á¬áá·áº áá¬áá¬á áá¬ážááẠááŸá±ážááá¯áž OOP áááºážá áá áºááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááŒááºážáááŸááá«á ááá¯á·áá±á¬áºá áááºážááẠá¡ááºáá¬áá±á·á áºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááá·áºá¡áá« ááŒá¿áá¬ááá¯ááºáá«á OOP áááŸáááŒááºážááẠá áááºáá°áá»á¬ážá¡ááœáẠáááºáá±á¬ááºááẠá¡áá¬ážá¡áá®ážááᯠáááááá¬áᬠáá»á±á¬á·áááºážá á±áááºá
áááºááœá¬á¡áá»áá¯ážá¡ááœáẠááá¯ážááá¯ážááŸááºážááŸááºáž
ááŸá¯ááºááœá±ážááẠááœááºáá°áááºá ááá¯ážááŸááºážááẠáááºáá²áááºá
Go ááᯠááá¯ážááŸááºážá á±ááẠáá®ááá¯ááºážáá¯ááºáá¬ážááŒá®áž ááá¯áááºážááá¯ááºááœáẠá¡á±á¬ááºááŒááºáááºá á¡ááœá²á·ááá¯ááºáá¯ááºáá±á¬ááºááŒááºážá á¡áá»áá¯ážáá»á±ážáá°ážáá»á¬ážááᯠáá¬ážáááºááŒá®áž áá¯ááºáááºážá¡ááá·áºáá¬áá¬á áá¬ážáá»á¬ážá á¡áá¯á¶ážáááŸáááŒá±á¬ááºážáá²ááá¯ááºááŸá¯ááᯠááŒá®ážááœá±á·áá±áá±á¬ á áááºáááá¯ááááºáá¬áá»á¬ážá¡ááœáẠáá±ážáá¬ážáá«áááºá áááºážááááºáááºááá¯ááºááœáẠáá±á«ááºážá ááºááœá²á·á ááºážáá¯á¶á¡áááºážá¡áá»ááºážááŸáááŒá®ážá áááºážááẠá¡áá»áááºááŒá¬áá¬áááºááŸáá·áºá¡áá»áŸ á¡ááŒá±á¬ááºážá¡áá²áá»á¬ážááᯠáááºááœá±á·áá»áá» ááá¯ááºáá±á¬ááºááá¯ááºáá±á¬ááŒá±á¬áá·áº developer áá»á¬ážááẠáá¬áá¬á áá¬ážáá®ááœááºáááºážáá áºááŸá¯áá»á¬ážááᯠá¡áá¯á¶ážáááŸááá±á·áá¬ááŒááºážá¡ááœááºááá¯ááºáá² ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯á¡ááœáẠá¡áá»áááºáá»á¬ážá áœá¬ááᯠááœááºááœááºáááºáááºáááŸáá á±áá«áááºá
áá¯áá¹ááá®áá»á¬ážááẠá¡á¬ážáá¬áá»ááºáá»á¬ážá áœá¬ááá¯áááºáž áááŸááááº- á¡áááá·áºááá¯ááºážáááºáá±á¬ááºááŸá¯á¡áá¬ážá¡áá®ážááẠáá»áœááºážáá»ááºáá°áá áºáŠážááᯠáá»ááºááŒááºá áœá¬ááŸá¬ááœá±ááá¯ááºá á±ááŒá®áž áá¬áá¬á áá¬ážááááŒá±á¬ááºážáá²ááá¯ááºááŸá¯ááŒá±á¬áá·áº áááºážááá¯á·ááẠ10 ááŸá áºááŒá¬ááá·áºááá¯áẠáá°áá®áá±á¬áá¯ááºááᯠá¡áá¯á¶ážááŒá¯ááœáá·áºáá±ážáááºá
áá±á¬ááºáá»ááº
ááŒá®ážáá¬ážáá±á¬ áŠážááŸá±á¬ááºá¡ááœááºá¡á á¬ážááẠáááºáá áºáá±á¬ááºááᯠááá¯áááºáá¯ááŸááºá¡ááŒá Ạáááºáá±á¬á¡áá«á០áááŒá¯áá¯ááºáá²á·áá±á
á¡ááœá²á·á áááºáá¬ááºááᯠáŠážá á¬ážáá±ážááá·áº áááá¯ááááºáá¬áá»á¬ážá ááá¬áááºááá¯ááºáᬠá áááºáá±á«áºááŸá¯áá»á¬ážááŸáá·áº á¡áá¯á¶ážáááŸááá±á¬ "ááááááá¯ááºááᯠááŒáŸáá·áºáááºááŒááºáž" ááᯠááŸá áºáááºáá±á¬ áá®á¡áá¯áá®ááá¬ážáá»á¬ážá¡ááœááºá áááºážááẠááá·áºá¡á¬áž ááá°ááœáá·áºáááŒá¯áá±á¬ áá±áá°áá»-áááºááœááºáá»ááºáááºáá¬ááŒá±á¬ááºáá±á¬ áá¬áá¬á áá¬ážááŒá áºáá±á¬ááŒá±á¬áá·áºá áá¬áá¬á áá¬ážááẠá¡ááœááºááá¯ážááœá¬ážáá«áááºá ááá·áºá¡áá¯ááºáááááºá០áá¬áá¬áá»á±á¬áºááœáŸááºááŸá¯ááŸáá·áº áá¯ááºáá±á¬áºááá¯ááºáááºáá»á¬ážááŸá±á·ááœáẠááá·áºááá¯ááºááẠááá±á¬áºáááºááŸááºáááºááŒáááŒááºáž (áá»áœááºá¯ááºááá¯á·ááẠáá¬ááºáááºááᯠá€á á¶ááŸá¯ááºážáá»á¬ážááŒáá·áº ááá¯ááºážáá¬ááŒááºážááá¯ááºáá² IQ ááŒáá·áº ááá¯ááºážáá¬ááŒááºážááŒá áºáááº)á ááááŸá¬ á¡áá¬á¡á¬ážáá¯á¶ážááá¯áá²á áá«áᬠááá¯ááºáá±ážááá¯ááºáᬠáŠážá á¬ážáá±ážááá á¹á áá«á áááºááá¯ážááŸááá±á¬ áá®ááœááºáááºážáá áºááŸá¯áá»á¬áž á¡á¬ážáá¯á¶ážáá²á·ááá¯á·áááºá áá¬áá¬á áá¬ážááẠááá¹áá¬áá¯á¶ážááá¯ááºáᬠááŒááºážááá¯ááŸá¯á០á¡á á¯ááá¯ááºá¡ááŒá¯á¶ááá¯áẠáááºáá¶ááŸá¯á¡áá á¡ááŸááºážáá±ážáá±ááŒá®ááŒá áºáááºá áá¬áá¬á áá¬ážááẠáááºážáááá¯ážááŸááºážááŸá¯ááœáẠááá¬áá¬ážáá«áá«ááŸáááŒá®áž áááºááááá·áºá¡ááá¯ááºáž áá¬ááºáááºáááºááŒááºááŸá¯á¡á¬ážáá¯á¶ážááẠááá¯ážááŸááºážáá«áááºá
source: www.habr.com