ãã®èšäºã¯ä»¥åã«å
¬éãããèšäºãžã®è¿çãšããŠæžããããã®ã§ã
éå» XNUMX 幎以äžã«ããããç§ã¯ Go ã䜿çšããŠãéçºããã課éã·ã¹ãã ãåããç¹æ®ãª RADIUS ãµãŒããŒãå®è£ ããŠããŸããã ãã®éçšã§ãç§ã¯èšèªèªäœã®è€éããåŠãã§ãããŸãã ããã°ã©ã èªäœã¯éåžžã«åçŽã§ããããã®èšäºã®ç®çã§ã¯ãããŸããããGo èªäœã䜿çšããçµéšã¯ãGo ãæè·ããããã«ããã€ãã®èšèãå ãã䟡å€ããããŸãã Go ã¯ãæ¬æ Œçã§ã¹ã±ãŒã©ãã«ãªã³ãŒãã®äž»æµã®èšèªã«ãªãã€ã€ãããŸãã ãã®èšèªã¯ Google ã«ãã£ãŠäœæãããç©æ¥µçã«äœ¿çšãããŠããŸãã çµè«ããèšãã°ãç§ã¯æ£çŽã«èšã£ãŠãGo èšèªã®èšèšã¯ç¥æ§ã®ãªãããã°ã©ããŒã«ãšã£ãŠæªããã®ã ãšèããŠããŸãã
匱ãããã°ã©ããŒåãã«èšèšãããŠããŸãã?
匱è ã¯åé¡ã«ã€ããŠè©±ãã ã¢ã€ãã¢ã倢ã«ã€ããŠå匷ãèªããŸã...
Go ã¯åŠç¿ãéåžžã«ç°¡åã§ãäºå®äžãŸã£ãããã¬ãŒãã³ã°ãè¡ããªããŠãã³ãŒããèªãããšãã§ããã»ã©ç°¡åã§ãã ãã®èšèªã®æ©èœã¯ãå€ãã®ã°ããŒãã«äŒæ¥ã§ãäžæ žã§ã¯ãªãå°é家 (ãããŒãžã£ãŒã顧客ãªã©) ãšäžç·ã«ã³ãŒããèªããšãã«äœ¿çšãããŠããŸãã ããã¯ããã¶ã€ã³é§åéçºãªã©ã®æ¹æ³è«ã«éåžžã«äŸ¿å©ã§ãã
åå¿è
ããã°ã©ããŒã§ããXNUMX ïœ XNUMX é±éåŸã«ã¯ããªããŸãšããªã³ãŒããäœæã§ããããã«ãªããŸãã ç§ãå匷ããæ¬ã¯ãGo ProgrammingãïŒããŒã¯ã»ãµããŒãã£ãŒã«ãèïŒã§ãã ãã®æ¬ã¯ãšãŠãè¯ããŠãèšèªã®å€ãã®ãã¥ã¢ã³ã¹ã«è§ŠããŠããŸãã Java ã PHP ãªã©ã®å¿
èŠä»¥äžã«è€éãªèšèªã䜿çšããåŸã§ã¯ãéæ³ããªãã®ãæ°é®®ã§ãã ããããé
ããæ©ãããå€ãã®éãããããã°ã©ããŒã¯ãæ°ããåéã§å€ãææ³ã䜿çšãããšããèããæã¡ãŸãã ããã¯æ¬åœã«å¿
èŠã§ãã?
ããã»ãã€ã¯ (ãã®èšèªã®äž»ãªã€ããªãã®ãŒè ) ã¯ãç解ããããå¹æçã«äœ¿çšã§ããç£æ¥èšèªãšã㊠Go èšèªãäœæããŸããã ãã®èšèªã¯å€§èŠæš¡ãªããŒã ã§æ倧éã®çç£æ§ãçºæ®ã§ããããã«èšèšãããŠãããããã«ã€ããŠã¯çãã®äœå°ããããŸããã å€ãã®åå¿è ããã°ã©ãã¯ãæ¬ ããŠããæ©èœããããããããšäžæºãæ±ããŠããŸãã ãã®åçŽããžã®æ¬²æ±ã¯ãèšèªã®èšèšè ã«ããæèçãªæ±ºå®ã§ããããªããããå¿ èŠãªã®ããå®å šã«ç解ããã«ã¯ãéçºè ã®åæ©ãšãéçºè ã Go ã§äœãéæããããšããŠããã®ããç解ããå¿ èŠããããŸãã
ã§ã¯ããªãããã»ã©ã·ã³ãã«ã«ãªã£ãã®ã§ãããã? ããã»ãã€ã¯ã®èšèãããã€ãåŒçšããŸãã
ããã§éèŠãªç¹ã¯ãåœç€Ÿã®ããã°ã©ããŒã¯ç 究è ã§ã¯ãªããšããããšã§ãã 圌ãã¯éåžžãéåžžã«è¥ãããããã JavaãC/C++ããŸã㯠Python ãå匷ããåŸãç§ãã¡ã®ãšããã«æ¥ãŸãã 圌ãã¯åªããèšèªãç解ããããšã¯ã§ããŸããããåæã«ç§ãã¡ã¯åœŒãã«è¯ããœãããŠã§ã¢ãäœã£ãŠããããããšèããŠããŸãã ã ãããããèšèªã¯ç解ãããããåŠã³ããããã®ã§ãªããã°ãªããŸããã
圌ã¯ããç¥ãããŠããã¯ãã§ã倧ãŸãã«èšãã° C ã«äŒŒãŠããŸãã Google ã§åãããã°ã©ããŒã¯ãã£ãªã¢ãæ©ãããã¹ã¿ãŒãããŠãããæç¶ãåèšèªãç¹ã« C ãã¡ããªã«ç²ŸéããŠããããšãã»ãšãã©ã§ãã æ°ããããã°ã©ãã³ã°èšèªã§è¿ éãªçç£æ§ãæ±ãããããšããããšã¯ãèšèªãéæ¿ã«ãªããããŠã¯ãããªãããšãæå³ããŸãã
è³¢æãªèšèã§ããã
ã·ã³ãã«ãã®ã¢ãŒãã£ãã¡ã¯ã
ã·ã³ãã«ã§ããããšã¯çŸããã®å¿ é æ¡ä»¶ã§ãã ã¬ãã»ãã«ã¹ãã€ã
ã·ã³ãã«ããä¿ã€ããšã¯ããããããã¶ã€ã³ã«ãããŠæãéèŠãªç®æšã® XNUMX ã€ã§ãã ãåç¥ã®ãšãããå®ç§ãªãããžã§ã¯ããšã¯ãè¿œå ãããã®ãäœããªããããžã§ã¯ãã§ã¯ãªããåé€ãããã®ãäœããªããããžã§ã¯ãã§ãã å€ãã®äººã¯ãè€éãªåé¡ã解決ããã«ã¯ (ãããã¯è¡šçŸããã«ã¯)ãè€éãªããŒã«ãå¿ èŠã§ãããšä¿¡ããŠããŸãã ããããããã§ã¯ãããŸããã PERL èšèªãäŸã«èããŠã¿ãŸãããã èšèªã€ããªãã®ãŒåŠè ã¯ãããã°ã©ããŒã¯ XNUMX ã€ã®åé¡ã解決ããããã«å°ãªããšã XNUMX ã€ã®ç°ãªãæ¹æ³ãæã£ãŠããå¿ èŠããããšä¿¡ããŠããŸããã Go èšèªã®ã€ããªãã®ãŒè ãã¡ã¯ãç®æšãéæããã«ã¯ XNUMX ã€ã®æ¹æ³ã ãã§ååã§ãããšå€æããå¥ã®éãéžæããŸããã ãã®ã¢ãããŒãã«ã¯éèŠãªåºç€ããããŸããããã¯ãåŠã³ãããå¿ãã«ããå¯äžã®æ¹æ³ã§ãã
å€ãã®ç§»æ°ã¯ããã®èšèªã«ã¯ãšã¬ã¬ã³ããªæœè±¡æŠå¿µãå«ãŸããŠããªããšäžæºãæ±ããŠããŸãã ã¯ããããã¯çå®ã§ãããããã¯ãã®èšèªã®äž»ãªå©ç¹ã® XNUMX ã€ã§ãã ãã®èšèªã«ã¯æå°éã®éæ³ãå«ãŸããŠãããããããã°ã©ã ãèªãããã«æ·±ãç¥èã¯å¿ èŠãããŸããã ã³ãŒãã®åé·ãã«é¢ããŠã¯ãããã¯ãŸã£ããåé¡ã§ã¯ãããŸããã ããæžããã Golang ããã°ã©ã ã¯ãæ§é ãã»ãšãã©ããŸãã¯ãŸã£ãããªããåçŽæ¹åã«èªã¿èŸŒãŸããŸãã ããã«ãããã°ã©ã ãèªã¿åãé床ã¯ãããã°ã©ã ãæžã蟌ãé床ãããå°ãªããšã XNUMX æ¡é«éã§ãã ãã¹ãŠã®ã³ãŒãã®æžåŒèšå®ãçµ±äžãããŠãã (çµã¿èŸŒã¿ã® gofmt ã³ãã³ãã䜿çšããŠå®è¡ããã) ãšèããã°ãäœåãªæ°è¡ãèªã¿åã£ãŠããŸã£ããåé¡ãããŸããã
ããŸãè¡šçŸåãç¡ã
èžè¡ã¯èªç±ãå¶çŽãããããšãèš±ããŸããã æ£ç¢ºãã¯åœŒã®è²¬ä»»ã§ã¯ãããŸããã
åçŽããæ±ãããããGo ã«ã¯ä»ã®èšèªã«æ £ããŠãã人ã«ãšã£ãŠèªç¶ãªãã®ãšããŠèªèããããããªæ§æèŠçŽ ãæ¬ ããŠããŸãã æåã¯å€å°äžäŸ¿ã«æãããããããŸããããããã°ã©ã ããã£ãšèªã¿ããããæ確ã«ãªã£ãŠããããšã«æ°ã¥ããŸãã
ããšãã°ãæšæºå ¥åãŸãã¯ã³ãã³ã ã©ã€ã³åŒæ°ãããã¡ã€ã«ãèªã¿åãã³ã³ãœãŒã« ãŠãŒãã£ãªãã£ã¯æ¬¡ã®ããã«ãªããŸãã
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 èšèªãåã£ãŠããŸãããåé·æ§ã§ã¯å£ã£ãŠããŸãã
å Žåã«ãã£ãŠã¯ãæ±çšåãããããã°ã©ãã³ã°ã¯ãåŠå®ã§ããªãå©ç¹ããããããŸãã ããã¯ãsort ããã±ãŒãžã§æ確ã«ç€ºãããŠããŸãã ãããã£ãŠããªã¹ãã䞊ã¹æ¿ããã«ã¯ãsort.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)
}
ãªãŒãã³ãœãŒã¹ ãããžã§ã¯ããååŸã㊠grep âinterface{}â -R ã³ãã³ããå®è¡ãããšããããã«ããã€ã³ã¿ãŒãã§ã€ã¹ãã©ã®ãããé »ç¹ã«äœ¿çšãããŠããããããããŸãã å¿ã®çãåå¿ã¯ãããã¯ãã¹ãŠåŸçºå»è¬åã®æ¬ åŠã«ãããã®ã ãšããã«èšãã§ãããã ãã ããåžžã«ãããšã¯éããŸããã DELPHI ãäŸã«æããŠã¿ãŸãããã ãããã®åããžã§ããªãã¯ãååšããã«ãããããããä»»æã®ããŒã¿åã䜿çšããæäœã®ããã®ç¹å¥ãª VARIANT åãå«ãŸããŠããŸãã Go èšèªã§ãåãããšãã§ããŸãã
å€§ç ²ããã¹ãºã¡ãŸã§
ãããŠãã®ææè¡£ã¯çæ°ã®å€§ããã«èŠåã£ããã®ã§ãªããã°ãªããªãã ã¹ã¿ãã¹ã©ãã»ã¬ãã¯
å€ãã®æ¥µç«¯ãªãã¡ã³ã¯ãGo ã«ã¯ãžã§ããªãã¯ã¹ãäœæããå¥ã®ã¡ã«ããºã ã§ãããªãã¬ã¯ã·ã§ã³ããããšäž»åŒµãããããããŸããã ãããŠåœŒãã¯æ£ããã§ããã...ãããããã¯ãŸããªã±ãŒã¹ã§ãã
ããã»ãã€ã¯ã¯ç§ãã¡ã«æ¬¡ã®ããã«èŠåããŠããŸãã
ããã¯åŒ·åãªããŒã«ã§ããããã䜿çšã«ã¯æ³šæãå¿ èŠã§ãã å³å¯ã«å¿ èŠãªå Žåãé€ããããã¯é¿ããã¹ãã§ãã
ãŠã£ãããã£ã¢ã«ã¯æ¬¡ã®ããã«æžãããŠããŸãã
ãªãã¬ã¯ã·ã§ã³ãšã¯ãããã°ã©ã ãå®è¡äžã«èªèº«ã®æ§é ãšåäœãç£èŠããã³å€æŽã§ããããã»ã¹ãæããŸãã ãªãã¬ã¯ã·ã§ã³ã®åºç€ãšãªãããã°ã©ãã³ã° ãã©ãã€ã ã¯ããªãã¬ã¯ãã£ã ããã°ã©ãã³ã°ãšåŒã°ããŸãã ããã¯ã¡ã¿ããã°ã©ãã³ã°ã®äžçš®ã§ãã
ãã ãããåç¥ã®ãšããããã¹ãŠã®æéãæ¯æããªããã°ãªããŸããã ãã®å Žåã¯æ¬¡ã®ããã«ãªããŸãã
- ããã°ã©ã ãæžãã®ãé£ãã
- ããã°ã©ã ã®å®è¡é床
ãããã£ãŠãåå°ã¯å€§å£åŸå µåšãšåæ§ã«æ³šæããŠäœ¿çšããå¿ èŠããããŸãã ãªãã¬ã¯ã·ã§ã³ã軜çã«äœ¿çšãããšãããã°ã©ã ãèªããªããªãããšã©ãŒã絶ããçºçããé床ãäœäžããŸãã ä¿ç©ããã°ã©ããŒã«ãšã£ãŠãããçŸå®çã§æ§ãããªååã®åã§èªåã®ã³ãŒããæ«é²ã§ããããšã¯ãŸãã«ããã§ãã
ç¿è¿å¹³ããã®æåçãªè·ç©ïŒ ããããããŸããŸãªèšèªããã§ãã
財ç£ãšãšãã«åéãçžç¶äººã«æ®ããŸãã
ãã®èšèªã¯å®å šã« C ã®äŒçµ±ã«åºã¥ããŠãããšå€ãã®äººãä¿¡ããŠãããšããäºå®ã«ãããããããããã§ã¯ãããŸããã ãã®èšèªã«ã¯ãæé«ã®ããã°ã©ãã³ã°èšèªã®å€ãã®åŽé¢ãçµã¿èŸŒãŸããŠããŸãã
æ§æ
ãŸããææ³æ§é ã®æ§æ㯠C èšèªã®æ§æã«åºã¥ããŠããŸãã ãã ããDELPHI èšèªã倧ããªåœ±é¿ãäžããŸããã ãããã£ãŠãããã°ã©ã ã®å¯èªæ§ãå€§å¹ ã«äœäžãããåé·ãªæ¬åŒ§ãå®å šã«åé€ãããŠããããšãããããŸãã ãã®èšèªã«ã¯ãDELPHI èšèªã«åºæã®ã:=ãæŒç®åãå«ãŸããŠããŸãã ããã±ãŒãžã®æŠå¿µã¯ãADA ãªã©ã®èšèªããåçšãããŠããŸãã æªäœ¿çšãšã³ãã£ãã£ã®å®£èšã¯ PROLOG èšèªããåçšãããŠããŸãã
ã»ãã³ãã£ã¯ã¹
ããã±ãŒãžã¯ DELPHI èšèªã®ã»ãã³ãã£ã¯ã¹ã«åºã¥ããŠããŸããã åããã±ãŒãžã«ã¯ããŒã¿ãšã³ãŒããã«ãã»ã«åãããŠããããã©ã€ããŒã ãšã³ãã£ãã£ãšãããªã㯠ãšã³ãã£ãã£ãå«ãŸããŠããŸãã ããã«ãããããã±ãŒãž ã€ã³ã¿ãŒãã§ã€ã¹ãæå°éã«æããããšãã§ããŸãã
å§ä»»ã¡ãœããã«ããå®è£ æäœã¯ DELPHI èšèªããåçšãããŸããã
ç·šé
Go 㯠C ããã°ã©ã ã®ã³ã³ãã€ã«äžã«éçºããããšããåè«ãããã®ãåœç¶ã§ãã ãã®èšèªã®åŒ·ã¿ã® XNUMX ã€ã¯ãè¶ é«éãªã³ã³ãã€ã«ã§ãã ãã®ã¢ã€ãã¢ã¯ DELPHI èšèªããåçšãããŸããã å Go ããã±ãŒãžã¯ DELPHI ã¢ãžã¥ãŒã«ã«å¯Ÿå¿ããŸãã ãããã®ããã±ãŒãžã¯ãæ¬åœã«å¿ èŠãªå Žåã«ã®ã¿åã³ã³ãã€ã«ãããŸãã ãããã£ãŠã次åã®ç·šéåŸã¯ãããã°ã©ã å šäœãã³ã³ãã€ã«ããå¿ èŠã¯ãªããå€æŽãããããã±ãŒãžãšããããã®å€æŽãããããã±ãŒãžã«äŸåããããã±ãŒãžã®ã¿ãåã³ã³ãã€ã«ããŸã (ãã®å Žåã§ããããã±ãŒãž ã€ã³ã¿ãŒãã§ã€ã¹ãå€æŽãããå Žåã«éããŸã)ã
é«ã¬ãã«ã®æ§æèŠçŽ
ãã®èšèªã«ã¯ãC ãªã©ã®äœã¬ãã«èšèªãšã¯ãŸã£ããé¢ä¿ã®ãªãããŸããŸãªé«ã¬ãã«ã®æ§æèŠçŽ ãå«ãŸããŠããŸãã
- æåå
- ããã·ã¥ããŒãã«
- ã¹ã©ã€ã¹
- ããã¯ã¿ã€ãã³ã°ã¯ RUBY ãªã©ã®èšèªããåçšããŠããŸã (æ®å¿µãªããšã«ãå€ãã®äººã¯ãã®å¯èœæ§ãç解ããŠããªãããæ倧éã«æŽ»çšããŠããŸãã)ã
ã¡ã¢ãªç®¡ç
ã¡ã¢ãªç®¡çã«ã€ããŠã¯éåžžãå¥ã®èšäºãæžãå¿ èŠããããŸãã C++ ãªã©ã®èšèªã§ã¯å¶åŸ¡ãéçºè ã«å®å šã«å§ããããŠããŸããããDELPHI ãªã©ã®ãã®åŸã®èšèªã§ã¯åç §ã«ãŠã³ã ã¢ãã«ã䜿çšãããŸããã ãã®ã¢ãããŒãã§ã¯ãå€ç«ã¯ã©ã¹ã¿ãŒã圢æãããããã埪ç°åç §ã¯èš±å¯ãããŸããã§ããããGo ã«ã¯ãã®ãããªã¯ã©ã¹ã¿ãŒã®æ€åºæ©èœãçµã¿èŸŒãŸããŠããŸã (C# ãšåæ§)ã ããã«ãã¬ããŒãž ã³ã¬ã¯ã¿ãŒã¯çŸåšç¥ãããŠããã»ãšãã©ã®å®è£ ãããå¹ççã§ããããã§ã«å€ãã®ãªã¢ã«ã¿ã€ã ã¿ã¹ã¯ã«äœ¿çšã§ããŸãã èšèªèªäœã¯ãå€æ°ãæ ŒçŽããå€ãã¹ã¿ãã¯ã«å²ãåœãŠãããšãã§ããç¶æ³ãèªèããŸãã ããã«ãããã¡ã¢ãª ãããŒãžã£ãŒã®è² è·ã軜æžãããããã°ã©ã ã®é床ãåäžããŸãã
åæå®è¡æ§ãšåæå®è¡æ§
ãã®èšèªã®äžŠåæ§ãšç«¶äºåã¯è³è³ã®äœå°ããããŸããã Go ã«é ãåã°ãªãäœã¬ãã«èšèªã¯ãããŸããã å ¬å¹³ãæãããã«ããã®ã¢ãã«ã¯èšèªã®äœæè ã«ãã£ãŠçºæããããã®ã§ã¯ãªããåã«å€ãè¯ã ADA èšèªããåçšããããã®ã§ããããšã¯æ³šç®ã«å€ããŸãã ãã®èšèªã¯ããã¹ãŠã® CPU ã䜿çšããŠæ°çŸäžã®äžŠåæ¥ç¶ãåŠçã§ããŸããããã«ãã¹ã¬ãã ã³ãŒãã«ããèŠããããããããã¯ã競åç¶æ ã«é¢ããåé¡ã¯ XNUMX æ¡ã»ã©è€éã§ã¯ãããŸããã
è¿œå ã®ã¡ãªãã
å²ããã°èª°ããç¡ç§ã«ãªãã
èšèªã¯ãŸããç§ãã¡ã«çãã®ãªãå€ãã®å©ç¹ããããããŸãã
- ãããžã§ã¯ããæ§ç¯ããåŸã®åäžã®å®è¡å¯èœãã¡ã€ã«ã«ãããã¢ããªã±ãŒã·ã§ã³ã®å±éãå€§å¹ ã«ç°¡çŽ åãããŸãã
- éçåä»ããšåæšè«ã䜿çšãããšããã¹ããäœæããªããŠããã³ãŒãå ã®ãšã©ãŒã®æ°ãå€§å¹ ã«æžããããšãã§ããŸãã ç§ã®ç¥ã£ãŠããããã°ã©ããŒã®äžã«ã¯ããã¹ãããŸã£ããæžããã«ãã¹ããè¡ã£ãŠããããã³ãŒãã®å質ã¯ããã»ã©äœäžããŠããŸããã
- éåžžã«ã·ã³ãã«ãªã¯ãã¹ã³ã³ãã€ã«ãšæšæºã©ã€ãã©ãªã®åªãã移æ€æ§ã«ãããã¯ãã¹ãã©ãããã©ãŒã ã¢ããªã±ãŒã·ã§ã³ã®éçºãå€§å¹ ã«ç°¡çŽ åãããŸãã
- RE2 ã®æ£èŠè¡šçŸã¯ã¹ã¬ããã»ãŒãã§ãããå®è¡æéã¯äºæž¬å¯èœã§ãã
- ãµãŒãããŒãã£ã®ãã¬ãŒã ã¯ãŒã¯ãªãã§ã»ãšãã©ã®ãããžã§ã¯ããå®è¡ã§ãã匷åãªæšæºã©ã€ãã©ãªã
- ãã®èšèªã¯ãåé¡ã解決ããæ¹æ³ã§ã¯ãªããåé¡ã«çŠç¹ãåœãŠãã®ã«åå匷åã§ãããªãããåé¡ãå¹ççã«è§£æ±ºã§ããã»ã©ååã«äœã¬ãã«ã§ãã
- Go ãšã³ ã·ã¹ãã ã«ã¯ããã¹ããããã¥ã¡ã³ããããã±ãŒãžç®¡çã匷åãªãªã³ã¿ãŒãã³ãŒãçæã競åç¶æ æ€åºãªã©ãããããå Žé¢ã§ããã«äœ¿ããéçºãããããŒã«ããã§ã«å«ãŸããŠããŸãã
- Go ããŒãžã§ã³ 1.11 ã§ã¯ãäžè¬ç㪠VCS ãã¹ãã£ã³ã°äžã«æ§ç¯ãããçµã¿èŸŒã¿ã®ã»ãã³ãã£ãã¯äŸåé¢ä¿ç®¡çãå°å ¥ãããŸããã Go ãšã³ã·ã¹ãã ãæ§æãããã¹ãŠã®ããŒã«ã¯ããããã®ãµãŒãã¹ã䜿çšããŠãã³ãŒããäžåºŠã«ããŠã³ããŒãããã«ããã€ã³ã¹ããŒã«ããŸãã ããã¯çŽ æŽãããããšã§ãã ããŒãžã§ã³ 1.11 ã®ç»å Žã«ãããããã±ãŒãžã®ããŒãžã§ã³ç®¡çã®åé¡ãå®å šã«è§£æ±ºãããŸããã
- ãã®èšèªã®äžå¿çãªèãæ¹ã¯éæ³ãæžããããšã§ããããããã®èšèªã¯éçºè ã«ãšã©ãŒåŠçãæ瀺çã«è¡ãããä¿ããŸãã ããã¯æ£ããã§ããããããªããšããšã©ãŒåŠçããŸã£ããå¿ããããŠããŸãããã§ãã ãã XNUMX ã€ã¯ãã»ãšãã©ã®éçºè ãæå³çã«ãšã©ãŒåŠçãç¡èŠãããšã©ãŒãåŠçãã代ããã«åã«ãšã©ãŒãäžåãã«è»¢éããããšã奜ãããšã§ãã
- Go ã«ã¯çŽç²ãªåœ¢ã§ã¯ä»®æ³æ§ããªãããããã®èšèªã¯å€å žç㪠OOP æ¹æ³è«ãå®è£ ããŠããŸããã ãã ããã€ã³ã¿ãŒãã§ã€ã¹ã䜿çšããå Žåãããã¯åé¡ã«ãªããŸããã OOP ããªããããåå¿è ã«ãšã£ãŠã®åå ¥éå£ãå€§å¹ ã«è»œæžãããŸãã
ã³ãã¥ããã£ã®å©çã®ããã®ã·ã³ãã«ã
è€éã«ããã®ã¯ç°¡åã§ãããåçŽåããã®ã¯é£ããã§ãã
Go ã¯ã·ã³ãã«ã«ãªãããã«èšèšãããŠããããã®ç®æšã¯éæã§ããŠããŸãã ããã¯ãããŒã ã¯ãŒã¯ã®å©ç¹ãç解ãããšã³ã¿ãŒãã©ã€ãº ã¬ãã«ã®èšèªã®ç¡éã®ã°ãã€ãã«ããããããŠããè³¢ãããã°ã©ããŒåãã«æžãããŠããŸãã æ¯èŒçå°èŠæš¡ãªæ§ææ§é ãä¿æããŠãããããæéã®çµéã«ããå€æŽã®åœ±é¿ãã»ãšãã©åããããšããªããããéçºè ã¯èšèªã®é©æ°ãééãªãç 究ããã®ã§ã¯ãªããéçºã«å€ãã®æéãå²ãããšãã§ããŸãã
äŒæ¥ã¯ãŸããåå ¥éå£ãäœãããå°é家ãããã«èŠã€ããããšãã§ããèšèªã®äžå€æ§ã«ãã 10 幎åŸã§ãåãã³ãŒãã䜿çšã§ãããªã©ãå€ãã®å©ç¹ãåããŠããŸãã
ãŸãšã
è³ã®å€§ãããåå ã§ãŸãŠãããŒãã«è³åè³è ã«ãªã£ãããšã¯äžåºŠããããŸããã
ããŒã ã¹ããªãããããå人çãªãšãŽãåªå ããããã°ã©ããŒããåŠè¡çãªææŠãšçµããã®ãªããèªå·±æ¹åããæããçè«å®¶ã«ãšã£ãŠããã®èšèªã¯éåžžã«æªããã®ã§ããèªåã®ä»äºã®çµæããçŸçåã³ãæããååã®åã§èªåããããã§ãã·ã§ãã«ã§ããããšã瀺ããŸãïŒãã ããIQã§ã¯ãªããããã®åºæºã§ç¥æ§ã枬å®ããå ŽåïŒã 人çã®ããããããšãšåæ§ãããã¯å人ã®åªå äºé ã®åé¡ã§ãã ãã¹ãŠã®äŸ¡å€ããã€ãããŒã·ã§ã³ãšåæ§ããã®èšèªããã§ã«æ®éçãªåŠå®ãã倧è¡ã«åãå ¥ãããããŸã§é·ãéã®ããæ©ãã§ããŸããã ãã®èšèªã¯ãã®ã·ã³ãã«ãã«ãããŠç¬åµçã§ããããåç¥ã®ãšãããç¬åµçãªãã®ã¯ãã¹ãŠã·ã³ãã«ã§ãã
åºæïŒ habr.com