Raksts tika uzrakstÄ«ts kÄ atbilde uz iepriekÅ” publicÄtu
PÄdÄjo divu gadu laikÄ esmu izmantojis Go, lai ieviestu specializÄtu RADIUS serveri ar izstrÄdÄtu norÄÄ·inu sistÄmu. Pa ceļam es mÄcos paÅ”as valodas smalkumus. PaÅ”as programmas ir ļoti vienkÄrÅ”as un nav Ŕī raksta mÄrÄ·is, taÄu pati Go lietoÅ”anas pieredze ir pelnÄ«jusi dažus vÄrdus aizstÄvÄ«bai. Go kļūst par arvien populÄrÄku valodu nopietnam, mÄrogojamam kodam. Valodu izveidoja Google, kur tÄ tiek aktÄ«vi izmantota. SecinÄjums, es godÄ«gi domÄju, ka Go valodas dizains ir slikts UNintelligent programmÄtÄjiem.
ParedzÄts vÄjiem programmÄtÄjiem?
VÄji runÄ par problÄmÄm. SpÄcÄ«gÄ runa par idejÄm un sapÅiem...
Go ir ļoti viegli iemÄcÄ«ties, tik vienkÄrÅ”i, ka varat izlasÄ«t kodu praktiski bez apmÄcÄ«bas. Å Ä« valodas funkcija tiek izmantota daudzos globÄlos uzÅÄmumos, kad kods tiek lasÄ«ts kopÄ ar speciÄlistiem, kas nav pamata speciÄlisti (vadÄ«tÄji, klienti utt.). Tas ir ļoti Ärti tÄdÄm metodoloÄ£ijÄm kÄ dizaina virzÄ«ta izstrÄde.
Pat iesÄcÄju programmÄtÄji pÄc nedÄļas vai divÄm sÄk ražot diezgan pienÄcÄ«gu kodu. GrÄmata, no kuras es mÄcÄ«jos, ir āGo Programmingā (autors Marks SamerfÄ«lds). GrÄmata ir ļoti laba, skar daudzas valodas nianses. PÄc nevajadzÄ«gi sarežģītÄm valodÄm, piemÄram, Java, PHP, maÄ£ijas trÅ«kums ir atsvaidzinoÅ”s. Bet agrÄk vai vÄlÄk daudziem ierobežotiem programmÄtÄjiem rodas doma izmantot vecÄs metodes jaunÄ jomÄ. Vai tas tieÅ”Äm ir vajadzÄ«gs?
Robs Paiks (valodas galvenais ideologs) izveidoja Go valodu kÄ industriÄlu valodu, kas ir viegli saprotama un efektÄ«va lietoÅ”anÄ. Valoda ir paredzÄta maksimÄlai produktivitÄtei lielÄs komandÄs, un par to nav Å”aubu. Daudzi iesÄcÄju programmÄtÄji sÅ«dzas, ka viÅiem trÅ«kst daudz funkciju. Å Ä« vÄlme pÄc vienkÄrŔības bija apzinÄts valodas dizaineru lÄmums, un, lai pilnÄ«bÄ saprastu, kÄpÄc tas bija vajadzÄ«gs, mums ir jÄsaprot izstrÄdÄtÄju motivÄcija un tas, ko viÅi mÄÄ£inÄja sasniegt Go.
TÄtad, kÄpÄc tas tika izveidots tik vienkÄrÅ”i? Å eit ir daži citÄti no Roba Paika:
Galvenais Å”eit ir tas, ka mÅ«su programmÄtÄji nav pÄtnieki. ViÅi, kÄ likums, ir diezgan jauni, nÄk pie mums pÄc studijÄm, iespÄjams, viÅi ir apguvuÅ”i Java, C/C++ vai Python. ViÅi nevar saprast lielisku valodu, bet tajÄ paÅ”Ä laikÄ mÄs vÄlamies, lai viÅi izveidotu labu programmatÅ«ru. TÄpÄc valodai jÄbÅ«t viegli saprotamai un apgÅ«stamai.
ViÅam vajadzÄtu bÅ«t pazÄ«stamam, rupji runÄjot, lÄ«dzÄ«gi kÄ C. ProgrammÄtÄji, kas strÄdÄ Google, sÄk savu karjeru agri un pÄrsvarÄ pÄrzina procesuÄlÄs valodas, jo Ä«paÅ”i C saimi. PrasÄ«ba pÄc Ätras produktivitÄtes jaunÄ programmÄÅ”anas valodÄ nozÄ«mÄ, ka valodai nevajadzÄtu bÅ«t pÄrÄk radikÄlai.
Gudri vÄrdi, vai ne?
VienkÄrŔības artefakti
VienkÄrŔība ir nepiecieÅ”ams skaistuma nosacÄ«jums. Ä»evs Tolstojs.
VienkÄrŔība ir viens no svarÄ«gÄkajiem mÄrÄ·iem jebkurÄ dizainÄ. KÄ zinÄms, ideÄls projekts ir nevis projekts, kuram nav ko pievienot, bet gan tÄds, no kura nav ko izÅemt. Daudzi cilvÄki uzskata, ka, lai atrisinÄtu (vai pat izteiktu) sarežģītas problÄmas, ir nepiecieÅ”ams sarežģīts instruments. TomÄr tÄ nav. Å emsim, piemÄram, PERL valodu. Valodas ideologi uzskatÄ«ja, ka programmÄtÄjam ir jÄbÅ«t vismaz trÄ«s dažÄdiem veidiem, kÄ atrisinÄt vienu problÄmu. Go valodas ideologi izvÄlÄjÄs citu ceļu, viÅi nolÄma, ka mÄrÄ·a sasniegÅ”anai pietiek ar vienu, bet patieÅ”Äm labu ceļu. Å ai pieejai ir nopietns pamats: vienÄ«gais veids ir vieglÄk mÄcÄ«ties un grÅ«tÄk aizmirst.
Daudzi migranti sÅ«dzas, ka valodÄ nav elegantu abstrakciju. JÄ, tÄ ir taisnÄ«ba, taÄu tÄ ir viena no galvenajÄm valodas priekÅ”rocÄ«bÄm. Valoda satur maÄ£ijas minimumu - tÄpÄc programmas lasÄ«Å”anai nav nepiecieÅ”amas dziļas zinÄÅ”anas. Kas attiecas uz koda daudznozÄ«mÄ«gumu, tÄ nemaz nav problÄma. Labi uzrakstÄ«ta Golang programma lasa vertikÄli, ar nelielu struktÅ«ru vai bez tÄs. TurklÄt programmas lasÄ«Å”anas Ätrums ir vismaz par kÄrtu lielÄks nekÄ tÄs rakstÄ«Å”anas Ätrums. Ja uzskatÄt, ka visam kodam ir vienots formatÄjums (kas tiek darÄ«ts, izmantojot iebÅ«vÄto komandu gofmt), tad dažu papildu rindiÅu lasÄ«Å”ana nemaz nav problÄma.
Ne pÄrÄk izteiksmÄ«gs
MÄksla nepanes, kad tÄs brÄ«vÄ«ba ir ierobežota. PrecizitÄte nav viÅa atbildÄ«ba.
VienkÄrŔības tieksmes dÄļ Go trÅ«kst konstrukciju, ko citÄs valodÄs pieraduÅ”ie uztver kÄ kaut ko dabisku. SÄkumÄ tas var bÅ«t nedaudz neÄrti, bet pÄc tam pamanÄt, ka programmu ir daudz vieglÄk un nepÄrprotamÄk lasÄ«t.
PiemÄram, konsoles utilÄ«ta, kas nolasa stdin vai failu no komandrindas argumentiem, izskatÄ«tos Å”Ädi:
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)
}
TÄs paÅ”as problÄmas risinÄjums D, lai gan tas izskatÄs nedaudz Ä«sÄks, nav vieglÄk lasÄms
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);
}
}
KopÄÅ”anas elle
CilvÄks sevÄ« nes elli. MÄrtiÅÅ” Luters.
IesÄcÄji pastÄvÄ«gi sÅ«dzas par Go, jo trÅ«kst Ä£enÄrisko zÄļu. Lai atrisinÄtu Å”o problÄmu, lielÄkÄ daļa no tiem izmanto tieÅ”o koda kopÄÅ”anu. PiemÄram, veselu skaitļu saraksta summÄÅ”anas funkcija, tÄdi potenciÄlie profesionÄļi uzskata, ka funkcionalitÄti nevar ieviest citÄdi, kÄ vien ar vienkÄrÅ”u kopÄÅ”anu-ielÄ«mÄÅ”anu katram datu tipam.
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))
}
Valodai ir pietiekami lÄ«dzekļi Å”Ädu konstrukciju Ä«stenoÅ”anai. PiemÄram, vispÄrÄja programmÄÅ”ana bÅ«tu piemÄrota.
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))
}
Un, lai gan mÅ«su kods izrÄdÄ«jÄs nedaudz garÄks nekÄ iepriekÅ”ÄjÄ gadÄ«jumÄ, tas ir kļuvis vispÄrinÄts. TÄpÄc mums nebÅ«s grÅ«ti Ä«stenot visas aritmÄtiskÄs darbÄ«bas.
Daudzi teiks, ka programma D izskatÄs ievÄrojami Ä«sÄka, un viÅiem bÅ«s taisnÄ«ba.
import std.stdio;
import std.algorithm;
void main(string[] args)
{
[1, 2, 3, 4, 5].reduce!((a, b) => a + b).writeln;
}
TomÄr tas ir tikai Ä«sÄks, bet ne pareizÄks, jo D ievieÅ”ana pilnÄ«bÄ ignorÄ kļūdu apstrÄdes problÄmu.
ReÄlajÄ dzÄ«vÄ, pieaugot loÄ£ikas sarežģītÄ«bai, plaisa strauji samazinÄs. Plaisa samazinÄs vÄl ÄtrÄk, ja jums ir jÄveic darbÄ«ba, ko nevar veikt, izmantojot standarta valodas operatorus.
UzturamÄ«bas, paplaÅ”inÄÅ”anas un lasÄmÄ«bas ziÅÄ, manuprÄt, Go valoda uzvar, lai gan tÄ zaudÄ daudzvÄrdÄ«bÄ.
Ä¢eneralizÄta programmÄÅ”ana dažos gadÄ«jumos sniedz mums nenoliedzamas priekÅ”rocÄ«bas. To skaidri parÄda ŔķiroÅ”anas pakotne. TÄtad, lai sakÄrtotu jebkuru sarakstu, mums vienkÄrÅ”i jÄievieÅ” sort.Interface interfeiss.
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)
}
Ja izmantojat jebkuru atvÄrtÄ pirmkoda projektu un palaižat komandu grep "interfeiss{}" -R, jÅ«s redzÄsit, cik bieži tiek izmantotas mulsinoÅ”as saskarnes. PietuvinÄti biedri uzreiz teiks, ka tas viss ir Ä£enÄrisko lÄ«dzekļu trÅ«kuma dÄļ. TomÄr tas ne vienmÄr notiek. Å emsim par piemÄru DELPHI. Neskatoties uz Å”o paÅ”u vispÄrÄ«go datu klÄtbÅ«tni, tajÄ ir Ä«paÅ”s VARIANT tips darbÄ«bÄm ar patvaļīgiem datu tipiem. Go valoda dara to paÅ”u.
No lielgabala līdz zvirbuļiem
Un Å”auruma jakai ir jÄatbilst neprÄta izmÄram. StaÅislavs Lec.
Daudzi ekstrÄmu cienÄ«tÄji var apgalvot, ka Go ir vÄl viens Ä£enÄrisko zÄļu radÄ«Å”anas mehÄnisms - refleksija. Un viÅiem bÅ«s taisnÄ«ba... bet tikai retos gadÄ«jumos.
Robs Paiks mūs brīdina:
Å is ir spÄcÄ«gs rÄ«ks, kas jÄizmanto piesardzÄ«gi. No tÄ jÄizvairÄs, ja vien tas nav absolÅ«ti nepiecieÅ”ams.
Wikipedia stÄsta mums sekojoÅ”o:
Refleksija attiecas uz procesu, kura laikÄ programma izpildes laikÄ var uzraudzÄ«t un modificÄt savu struktÅ«ru un uzvedÄ«bu. ProgrammÄÅ”anas paradigmu, kas ir refleksijas pamatÄ, sauc par reflektÄ«vo programmÄÅ”anu. Å is ir metaprogrammÄÅ”anas veids.
TomÄr, kÄ zinÄms, par visu ir jÄmaksÄ. Å ajÄ gadÄ«jumÄ tas ir:
- grūtības rakstīt programmas
- programmas izpildes Ätrums
TÄpÄc refleksija ir jÄizmanto piesardzÄ«gi, piemÄram, liela kalibra ierocis. NepÄrdomÄta refleksijas izmantoÅ”ana noved pie nelasÄmÄm programmÄm, pastÄvÄ«gÄm kļūdÄm un zema Ätruma. TieÅ”i tÄ, lai snobs programmÄtÄjs varÄtu parÄdÄ«t savu kodu citu, pragmatiskÄku un pieticÄ«gÄku kolÄÄ£u priekÅ”Ä.
KultÅ«ras bagÄža no Sji? NÄ, no vairÄkÄm valodÄm!
LÄ«dz ar bagÄtÄ«bu mantiniekiem tiek atstÄti arÄ« parÄdi.
Neskatoties uz to, ka daudzi uzskata, ka valoda pilnÄ«bÄ balstÄs uz C mantojumu, tas tÄ nav. Valoda ietver daudzus labÄko programmÄÅ”anas valodu aspektus.
sintakse
PirmkÄrt, gramatisko struktÅ«ru sintakse balstÄs uz C valodas sintakse. TomÄr arÄ« DELPHI valodai bija bÅ«tiska ietekme. TÄdÄjÄdi mÄs redzam, ka liekÄs iekavas, kas ievÄrojami samazina programmas lasÄmÄ«bu, ir pilnÄ«bÄ noÅemtas. Valoda satur arÄ« DELPHI valodai raksturÄ«go operatoru ā:=ā. PakeÅ”u jÄdziens ir aizgÅ«ts no tÄdÄm valodÄm kÄ ADA. Neizmantoto entÄ«tiju deklarÄcija ir aizgÅ«ta no PROLOG valodas.
Semantika
PakotÅu pamatÄ bija DELPHI valodas semantika. Katra pakotne iekapsulÄ datus un kodu un satur privÄtas un publiskas personas. Tas ļauj samazinÄt pakotnes saskarni lÄ«dz minimumam.
ÄŖstenoÅ”anas darbÄ«ba ar deleÄ£ÄÅ”anas metodi tika aizgÅ«ta no DELPHI valodas.
KompilÄcija
Ne velti ir kÄds joks: Go tika izstrÄdÄts, kamÄr tika kompilÄta C programma. Viena no valodas stiprajÄm pusÄm ir tÄs Ä«paÅ”i Ätra apkopoÅ”ana. Ideja tika aizgÅ«ta no DELPHI valodas. Katra Go pakotne atbilst DELPHI modulim. Å Ä«s paketes tiek pÄrkompilÄtas tikai tad, kad tas patieÅ”Äm ir nepiecieÅ”ams. TÄpÄc pÄc nÄkamÄs rediÄ£ÄÅ”anas jums nav jÄkompilÄ visa programma, bet gan jÄpÄrkompilÄ tikai mainÄ«tÄs pakotnes un pakotnes, kas ir atkarÄ«gas no Ŕīm mainÄ«tajÄm pakotnÄm (un pat tad, tikai tad, ja ir mainÄ«juÅ”ies pakotÅu saskarnes).
Augsta lÄ«meÅa konstrukcijas
Valoda satur daudz dažÄdu augsta lÄ«meÅa konstrukciju, kas nekÄdÄ veidÄ nav saistÄ«tas ar zema lÄ«meÅa valodÄm, piemÄram, C.
- Stīgas
- Hash tabulas
- Å Ä·Äles
- Pīļu rakstÄ«Å”ana ir aizgÅ«ta no tÄdÄm valodÄm kÄ RUBY (kuru diemžÄl daudzi nesaprot vai neizmanto pilnÄ«bÄ).
AtmiÅas pÄrvaldÄ«ba
AtmiÅas pÄrvaldÄ«ba parasti ir pelnÄ«jusi atseviŔķu rakstu. Ja tÄdÄs valodÄs kÄ C++ vadÄ«ba ir pilnÄ«bÄ atstÄta izstrÄdÄtÄja ziÅÄ, tad vÄlÄkÄs valodÄs, piemÄram, DELPHI, tika izmantots atsauces skaitÄ«Å”anas modelis. Izmantojot Å”o pieeju, cikliskas atsauces nebija atļautas, jo tika izveidotas bezsaimnieka kopas, tad Go ir iebÅ«vÄta Å”Ädu klasteru noteikÅ”ana (piemÄram, C#). TurklÄt atkritumu savÄcÄjs ir efektÄ«vÄks nekÄ lielÄkÄ daļa paÅ”laik zinÄmo implementÄciju, un to jau var izmantot daudziem reÄllaika uzdevumiem. Valoda pati atpazÄ«st situÄcijas, kad kaudzÄ var pieŔķirt vÄrtÄ«bu mainÄ«gÄ glabÄÅ”anai. Tas samazina atmiÅas pÄrvaldnieka slodzi un palielina programmas Ätrumu.
Vienlaicība un vienlaicība
Valodas paralÄlisms un konkurÄtspÄja ir neslavÄjama. Neviena zema lÄ«meÅa valoda nevar pat attÄlinÄti konkurÄt ar Go. TaisnÄ«bas labad gan jÄatzÄ«mÄ, ka modeli nav izgudrojuÅ”i valodas autori, bet gan vienkÄrÅ”i aizgÅ«ts no vecÄs labÄs ADA valodas. Valoda spÄj apstrÄdÄt miljoniem paralÄlu savienojumu, izmantojot visus CPU, vienlaikus tai ir daudz mazÄk sarežģītas problÄmas ar strupceļiem un sacensÄ«bu apstÄkļiem, kas raksturÄ«gi daudzpavedienu kodam.
Papildu priekŔrocības
Ja tas ir izdevīgi, visi kļūs nesavtīgi.
Valoda sniedz mums arÄ« vairÄkas neapÅ”aubÄmas priekÅ”rocÄ«bas:
- Viens izpildÄms fails pÄc projekta izveides ievÄrojami vienkÄrÅ”o lietojumprogrammu izvietoÅ”anu.
- StatiskÄ rakstÄ«Å”ana un veida secinÄjumi var ievÄrojami samazinÄt kļūdu skaitu jÅ«su kodÄ, pat ja neraksta testus. Zinu dažus programmÄtÄjus, kuri vispÄr iztiek bez testu rakstÄ«Å”anas un viÅu koda kvalitÄte bÅ«tiski necieÅ”.
- Ä»oti vienkÄrÅ”a standarta bibliotÄkas savstarpÄja kompilÄcija un lieliska pÄrnesamÄ«ba, kas ievÄrojami vienkÄrÅ”o starpplatformu lietojumprogrammu izstrÄdi.
- RE2 regulÄrÄs izteiksmes ir droÅ”as pavedieniem, un tÄm ir paredzams izpildes laiks.
- JaudÄ«ga standarta bibliotÄka, kas ļauj lielÄkajai daļai projektu iztikt bez treÅ”Äs puses ietvariem.
- Valoda ir pietiekami spÄcÄ«ga, lai koncentrÄtos uz problÄmu, nevis uz to, kÄ to atrisinÄt, tomÄr pietiekami zema lÄ«meÅa, lai problÄmu varÄtu atrisinÄt efektÄ«vi.
- Go eco sistÄma jau satur izstrÄdÄtus rÄ«kus visiem gadÄ«jumiem: testi, dokumentÄcija, pakotÅu pÄrvaldÄ«ba, jaudÄ«gi ieliktÅi, kodu Ä£enerÄÅ”ana, sacensÄ«bu apstÄkļu detektors utt.
- Go versija 1.11 ieviesa iebÅ«vÄtu semantiskÄs atkarÄ«bas pÄrvaldÄ«bu, kas izveidota, izmantojot populÄro VCS mitinÄÅ”anu. Visi rÄ«ki, kas veido Go ekosistÄmu, izmanto Å”os pakalpojumus, lai vienÄ rÄvienÄ lejupielÄdÄtu, izveidotu un instalÄtu kodu no tiem. Un tas ir lieliski. LÄ«dz ar versijas 1.11 ienÄkÅ”anu pilnÄ«bÄ tika atrisinÄta arÄ« problÄma ar pakotÅu versiju izveidi.
- TÄ kÄ valodas galvenÄ ideja ir samazinÄt maÄ£iju, valoda mudina izstrÄdÄtÄjus nepÄrprotami rÄ«koties ar kļūdÄm. Un tas ir pareizi, jo pretÄjÄ gadÄ«jumÄ tas vienkÄrÅ”i aizmirsÄ«s par kļūdu apstrÄdi. VÄl viena lieta ir tÄda, ka lielÄkÄ daļa izstrÄdÄtÄju apzinÄti ignorÄ kļūdu apstrÄdi, nevis tos apstrÄdÄtu, lai vienkÄrÅ”i pÄrsÅ«tÄ«tu kļūdu uz augÅ”u.
- Valoda neÄ«steno klasisko OOP metodoloÄ£iju, jo tÄs tÄ«rÄ veidÄ Go nav virtualitÄtes. TomÄr, izmantojot saskarnes, tÄ nav problÄma. OOP neesamÄ«ba ievÄrojami samazina iesÄcÄju ienÄkÅ”anas barjeru.
VienkÄrŔība sabiedrÄ«bas labÄ
To ir viegli sarežģīt, grÅ«ti vienkÄrÅ”ot.
Go tika izstrÄdÄts tÄ, lai tas bÅ«tu vienkÄrÅ”s, un tas izdodas sasniegt Å”o mÄrÄ·i. Tas tika rakstÄ«ts gudriem programmÄtÄjiem, kuri saprot komandas darba priekÅ”rocÄ«bas un ir noguruÅ”i no uzÅÄmuma lÄ«meÅa valodu bezgalÄ«gÄs mainÄ«guma. TÄ kÄ arsenÄlÄ ir salÄ«dzinoÅ”i neliels sintaktisko struktÅ«ru kopums, tas laika gaitÄ praktiski nav pakļauts izmaiÅÄm, tÄpÄc izstrÄdÄtÄjiem ir daudz laika, kas tiek atbrÄ«vots attÄ«stÄ«bai, nevis bezgalÄ«gai valodas jauninÄjumu izpÄtei.
UzÅÄmumi saÅem arÄ« vairÄkas priekÅ”rocÄ«bas: zemÄ ienÄkÅ”anas barjera ļauj Ätri atrast speciÄlistu, un valodas nemainÄ«gums ļauj izmantot vienu un to paÅ”u kodu arÄ« pÄc 10 gadiem.
SecinÄjums
Lielais smadzeÅu izmÄrs nekad nevienu ziloni nav padarÄ«jis par Nobela prÄmijas laureÄtu.
Tiem programmÄtÄjiem, kuru personÄ«gais ego ir svarÄ«gÄks par komandas garu, kÄ arÄ« teorÄtiÄ·iem, kuriem patÄ«k akadÄmiskie izaicinÄjumi un nebeidzama "paÅ”pilnveidoÅ”anÄs", valoda ir patieÅ”Äm slikta, jo tÄ ir vispÄrÄjas nozÄ«mes amatniecÄ«bas valoda, kas neļauj iegÅ«t estÄtisku baudu no sava darba rezultÄta un parÄdiet sevi profesionÄlu kolÄÄ£u priekÅ”Ä (ja mÄs mÄram intelektu pÄc Å”iem kritÄrijiem, nevis pÄc IQ). TÄpat kÄ viss dzÄ«vÄ, tas ir personÄ«go prioritÄÅ”u jautÄjums. TÄpat kÄ visas vÄrtÄ«gÄs inovÄcijas, valoda jau ir nogÄjusi garu ceļu no vispÄrÄja nolieguma lÄ«dz masveida pieÅemÅ”anai. Valoda ir Ä£eniÄla savÄ vienkÄrŔībÄ, un, kÄ zinÄms, viss Ä£eniÄlais ir vienkÄrÅ”s!
Avots: www.habr.com