Waa maxay sababta Go ay ugu xun tahay barnaamijyada aan caqli-gal ahayn

Maqaalka waxa loo qoray jawaab celin hore loo daabacay article antipodean.

Waa maxay sababta Go ay ugu xun tahay barnaamijyada aan caqli-gal ahayn

Labadii sano ee lagu daray ee la soo dhaafay waxaan isticmaalayay Go si aan u hirgeliyo server RADIUS gaar ah oo leh nidaam qaansheegeed horumarsan. Jidka dhexdiisa, waxaan baranayaa qallafsanaanta luqadda lafteeda. Barnaamijyada laftoodu waa kuwo aad u fudud oo aan ahayn ujeeddada maqaalkan, laakiin waayo-aragnimada isticmaalka Go lafteeda ayaa u qalantaa dhawr eray oo difaac ah. Go waxa ay noqonaysaa luqad si isa soo taraysa loogu isticmaalo kood halis ah oo la cabbiri karo. Luqada waxaa sameeyay Google, halkaas oo si firfircoon loo isticmaalo. Guntii iyo gabagabadii, waxaan si daacad ah u maleynayaa in naqshadeynta luqadda Go ay u xun tahay barnaamijyada aan caqliga lahayn.

Naqshadeeyay barnaamijyada daciifka ah?

Kuwa daciifka ahi waxay ka hadlaan dhibaatooyinka. Hadalka xooggan ee ku saabsan fikradaha iyo riyooyinka...

Go aad bay u fududahay in wax la barto, aad bay u fududahay in aad akhrin karto koodka iyada oo aan haba yaraatee wax tababar ah lahayn. Habkan luqadda waxaa loo adeegsadaa shirkado badan oo caalami ah marka koodhka lala akhriyo khubarada aan asaasiga ahayn (maareeyayaasha, macaamiisha, iwm.). Tani waxay aad ugu habboon tahay hababka sida Horumarinta Naqshadeynta.
Xataa barnaamijyada cusubi waxay bilaabaan inay soo saaraan kood wanaagsan toddobaad ama laba ka dib. Buugga aan ka bartay waa "Go Programming" (waxaa qoray Mark Summerfield). Buuggu aad buu u wanaagsan yahay, wuxuu taabanayaa nuancesyo badan oo luqadda ah. Ka dib luqadaha adag ee aan loo baahnayn sida Java, PHP, la'aanta sixirku waa soo kicin. Laakin hadhow ama hadhow, barmaamijyo badan oo xadidan ayaa leh fikradda isticmaalka habab hore ee goob cusub. Tani runtii lagama maarmaan ma tahay?

Rob Pike (fikirka ugu weyn ee luqadda) wuxuu abuuray luqadda Go sida luqad warshadeed oo ay fududahay in la fahmo oo waxtar leh in la isticmaalo. Luqada waxaa loogu talagalay wax soo saarka ugu badan ee kooxaha waaweyn shakina kuma jiro. Barnaamij-yaqaano badan ayaa ka cawda inay jiraan astaamo badan oo ay ka maqan yihiin. Rabitaankan fududaynta ayaa ahayd go'aan miyir leh oo ay sameeyeen naqshadeeyayaasha luqadda, iyo si aan si buuxda u fahamno sababta loogu baahan yahay, waa inaan fahamnaa dhiirigelinta horumariyeyaasha iyo waxa ay isku dayayeen inay ku gaaraan Go.

Haddaba maxaa looga dhigay mid fudud? Waa kuwan dhowr oraah oo ka timid Rob Pike:

Qodobka ugu muhiimsan ee halkan waa in barnaamij-sameeyayaashu aysan ahayn cilmi-baarayaal. Iyagu, sida caadiga ah, aad bay u da'yar yihiin, noo yimaaddaan markay wax bartaan, laga yaabee inay bartay Java, ama C/C++, ama Python. Ma fahmi karaan luqad weyn, laakiin isla markaa waxaan rabnaa inay abuuraan software wanaagsan. Taasi waa sababta luqaddu ay tahay in si fudud loo fahmo oo loo barto.

Waa in uu yaqaan, oo qiyaas ahaan u hadlaya sida C. Barmaamijyada ka shaqeeya Google waxay bilaabaan shaqooyinkooda goor hore waxayna inta badan yaqaanaan luqadaha nidaamka, gaar ahaan qoyska C. Shuruudda wax-soo-saarka degdega ah ee luqadda barmaamijka cusub waxay la macno tahay in afku aanu noqon mid xag-jir ah.

Hadal xikmad leh sow maaha?

Farshaxanka Fududeynta

Fududnimadu waa shuruud lagama maarmaan u ah quruxda. Lev Tolstoy.

In la fududeeyo waa mid ka mid ah yoolalka ugu muhiimsan ee naqshad kasta. Sidaad ogtahay, mashruuc kaamil ah maaha mashruuc aan waxba lagu kordhin, laakiin waa mid aan waxba laga saarin. Dad badan ayaa aaminsan in si loo xalliyo (ama xitaa loo muujiyo) dhibaatooyinka adag, loo baahan yahay qalab adag. Si kastaba ha ahaatee, ma aha. Aynu soo qaadano tusaale ahaan luqadda PERL. Fikirka luqadda ayaa aaminsanaa in barnaamij-sameeyaha uu leeyahay ugu yaraan saddex siyaabood oo kala duwan oo uu ku xalliyo hal dhibaato. Fikirka Af-googu wuxuu qaaday waddo kale, waxay go’aansadeen in hal waddo, laakiin dhab ahaantii wanaagsan, ay ku filan tahay in la gaaro yoolka. Habkani wuxuu leeyahay aasaas culus: dariiqa kaliya ayaa fudud in la barto oo ay adagtahay in la iloobo.

Muhaajiriin badan ayaa ka cawda in luqadda aysan ku jirin waxyaabo qurux badan. Haa, tani waa run, laakiin tani waa mid ka mid ah faa'iidooyinka ugu muhiimsan ee luqadda. Luqadda waxaa ku jira ugu yaraan sixir - sidaas darteed aqoon qoto dheer looma baahna si loo akhriyo barnaamijka. Marka laga hadlayo hadalka koodka, tani wax dhib ah maaha. Barnaamijka Golang oo si wanaagsan loo qoray ayaa si toos ah wax u akhriya, iyada oo aan wax dhisme ah lahayn ama aan lahayn. Waxa intaa dheer in xawaaraha akhriska barnaamijku uu ugu yaraan ka weyn yahay xawaaraha qorista. Haddii aad tixgeliso in dhammaan koodka uu leeyahay qaabaynta lebbiska ah (lagu sameeyay iyadoo la adeegsanayo amarka gofmt-ku-dhismay), ka dibna akhrinta dhowr xariiq oo dheeraad ah maahan dhibaato.

Aad uma muujin

Fanku uma dulqaadan karo marka xoriyadiisa la xaddido. Saxnimadu maaha masuuliyadiisa.

Sababtoo ah rabitaanka fududaynta, Go ayaa ka maqan dhismayaal luqadaha kale loo arko inay yihiin wax dabiici ah oo ay dadku caadeysteen. Marka hore waxa laga yaabaa in ay yara dhib yaraato, laakiin markaas waxa aad arkaysaa in barnaamijku aad u fudud yahay oo aan mugdi ku jirin in la akhriyo.

Tusaale ahaan, utility console ee akhriya stdin ama fayl laga soo qaatay dooda khadka taliska ayaa u ekaan doona sidan:

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)
}

Xalka isla dhibaatada D, in kasta oo ay u muuqato mid gaaban, ma fududa in la akhriyo

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);
    }
}

Jahannamo koobiyeynta

Ninku naarta ayuu naftiisa ku sitaa. Martin Luther.

Bilaabayaashu waxay si joogto ah uga cawdaan Go marka la eego la'aanta generics. Si arrintan loo xalliyo, intooda badan waxay isticmaalaan koobiyeynta tooska ah. Tusaale ahaan, shaqada lagu soo koobayo liiska isku-darka, xirfadlayaasha noocan oo kale ah waxay aaminsan yihiin in shaqeyntu aan loo hirgelin karin si kale oo aan ahayn nuqul-ku-dhejinta fudud ee nooc kasta oo xog ah.

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))
}

Afku wuxuu leeyahay habab ku filan oo lagu hirgeliyo dhismooyinkan oo kale. Tusaale ahaan, barnaamijka guud ayaa fiicnaan lahaa.

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))
}

Iyo, in kasta oo koodkeennu noqday mid ka dheer kiiskii hore, haddana waxa uu noqday mid guud. Sidaa darteed, naguma adkaan doonto inaan hirgelinno dhammaan hawlgallada xisaabta.

Qaar badan ayaa odhan doona barnaamijka D wuxuu u muuqdaa mid gaaban, wayna saxmi doonaan.

import std.stdio;
import std.algorithm;

void main(string[] args)
{
    [1, 2, 3, 4, 5].reduce!((a, b) => a + b).writeln;
}

Si kastaba ha ahaatee, way ka gaaban tahay, laakiin maaha mid sax ah, maadaama hirgelinta D ay gebi ahaanba iska indhatirtay dhibaatada maaraynta khaladka.

Nolosha dhabta ah, marka kakanaanta caqli-galku korodho, farqiga ayaa si degdeg ah u cidhiidhya. Farqiga udhaxeeya xitaa si dhakhso leh ayuu u xiraa markaad u baahan tahay inaad sameyso ficil aan la samayn karin iyadoo la adeegsanayo hawlwadeenada luqadaha caadiga ah.

Xagga joogteynta, dheeraynta, iyo akhriska, fikradayda, luqadda Go ayaa guulaysata, inkasta oo ay ku guuldarreysato hadal ahaan.

Barnaamijyada guud ee xaaladaha qaarkood waxay ina siinayaa faa'iidooyin aan la dafiri karin. Tan waxaa si cad u qeexay xirmada kala-soocidda. Marka, si loo kala saaro liis kasta, waxaan kaliya u baahanahay inaan hirgelino nooca.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)
}

Haddii aad qaadato mashruuc kasta oo il furan oo aad maamusho grep β€œinterface{}” -R amarka, waxaad arki doontaa inta jeer ee la istcimaallo is dhexyaacyo jahawareer leh. Saaxiibada isku dhow ayaa isla markiiba odhan doona waxaas oo dhan waxaa sabab u ah la'aanta generics. Si kastaba ha ahaatee, tani mar walba ma aha kiiska. Aan tusaale u soo qaadano DELPHI. In kasta oo ay jiraan noocyo badan oo isku mid ah, waxa ay ka kooban tahay nooc VARIANT gaar ah oo loogu talagalay hawlgallada leh noocyada xogta aan sabab lahayn. Luuqada Go ayaa sidaas oo kale qabta.

Laga soo bilaabo madfac ilaa shimbirro

Oo jaakad cidhiidhi ah waa in ay ku haboon tahay xajmiga waalida. Stanislav Lec.

Taageerayaal badan oo aad u daran ayaa laga yaabaa inay sheeganayaan in Go uu leeyahay hannaan kale oo lagu abuuro generics - milicsiga. Oo waxay noqon doonaan kuwo sax ah ... laakiin kaliya xaalado dhif ah.

Rob Pike ayaa nooga digay:

Tani waa qalab awood leh oo ay tahay in si taxadar leh loo isticmaalo. Waa in laga fogaadaa ilaa aan loo baahnayn.

Wikipedia ayaa noo sheegaysa kuwa soo socda:

Milicsiga waxa loola jeedaa habka uu barnaamijku ula socon karo waxna uga beddeli karo qaab-dhismeedkiisa iyo hab-dhaqankiisa marka la fulinayo. Barmaamijka barmaamijka ee ka tarjumaya waxa loo yaqaan barmaamij milicsi. Kani waa nooc ka mid ah borogaraamka.

Si kastaba ha noqotee, sida aad ogtahay, waa inaad wax walba bixisaa. Xaaladdan oo kale waa:

  • dhibaato qorista barnaamijyada
  • xawaaraha fulinta barnaamijka

Sidaa darteed, milicsiga waa in si taxadar leh loo isticmaalo, sida hub baaxad weyn. Isticmaalka feker la'aanta ee milicsiga waxay keenaysaa barnaamijyo aan la akhrin karin, khaladaad joogto ah iyo xawaare hooseeya. Kaliya waxa loogu talagalay barnaamij-sameeyaha snob si uu u awoodo inuu tuso koodkiisa hortiisa saaxiibo kale, aad u macquulsan oo xishood badan.

Shandad dhaqameed ka timid Xi? Maya, laga soo bilaabo tiro luuqado ah!

Hantida, deynta ayaa sidoo kale loo daayaa kuwa dhaxlaya.

In kasta oo xaqiiqda ah in dad badani aaminsan yihiin in luqaddu ay ku salaysan tahay dhaxalka C, tani maahan kiiska. Luqadda ayaa ka mid ah dhinacyo badan oo ka mid ah luuqadaha barnaamijka ugu fiican.

Saan

Ugu horrayn, hal-abuurka hab-dhismeedka naxwaha waxa uu ku salaysan yahay hal-abuurka afka C. Si kastaba ha ahaatee, luqadda DELPHI waxay sidoo kale lahayd saameyn weyn. Sidaa darteed, waxaan aragnaa in jaangooyooyinkii caadiga ahaa, oo aad u yareynaya akhrinta barnaamijka, gebi ahaanba meesha laga saaray. Luqadda ayaa sidoo kale ka kooban ":=" hawlwadeenka ku jira luqadda DELPHI. Fikradda xirmooyinka waxaa laga soo amaahday luqadaha sida ADA. Ku dhawaaqida hay'adaha aan la isticmaalin waxaa laga soo amaahday luqadda PROLOG.

Semantics

Xirmooyinka waxay ku salaysnaayeen semantiga luqadda DELPHI. Xirmado kastaa waxa uu koobayaa xogta iyo koodka waxana uu ka kooban yahay hay'ado gaar loo leeyahay iyo kuwa guud. Tani waxay kuu ogolaaneysaa inaad hoos u dhigto xirmada xirmada ugu yaraan.

Hawlgalka hirgelinta habka ergada waxaa laga soo amaahday luqadda DELPHI.

Isugeynta

Sabab la'aan maaha in ay jirto kaftan: Go waxa la sameeyay markii barnaamijka C la diyaarinayey. Mid ka mid ah awoodaha afku waa ururintiisa aadka u degdega ah. Fikradda waxaa laga soo amaahday luqadda DELPHI. Xirmado kasta oo Go waxa ay u dhigantaa moduleka DELPHI. Xirmooyinkan waxa dib loo ururiyaa marka loo baahdo oo keliya. Sidaa darteed, ka dib tafatirka soo socda, uma baahnid inaad ururiso barnaamijka oo dhan, laakiin halkii aad ku soo celin lahayd baakadaha la beddelay iyo baakadaha kuwaas oo ku xiran xirmooyinkan la beddelay (iyo xitaa markaa, kaliya haddii xirmooyinka xirmooyinka is beddeleen).

Dhismayaasha heerka sare ah

Luuqadu waxay ka kooban tahay dhismooyin heer sare ah oo kala duwan oo aan sinaba ula xiriirin luqadaha hoose sida C.

  • Xargaha
  • Miisaska xashiishka
  • Qaybo
  • Ku qorista duck waxaa laga soo amaahday luqadaha sida RUBY (taas oo, nasiib daro, qaar badani ma fahmaan ama isticmaalaan si buuxda).

Maamulka xusuusta

Maareynta xusuusta guud ahaan waxay u qalantaa maqaal gaar ah. Haddii luqadaha sida C ++, xakamaynta ayaa si buuxda looga tagay horumariyaha, ka dibna luqadaha dambe sida DELPHI, qaabka tirinta tixraaca ayaa la isticmaalay. Habkan, tixraacyo wareeg ah lama ogola, mar haddii kooxaha agoonta la sameeyay, ka dibna Go waxay dhistay ogaanshaha kooxeedyadaas (sida C #). Intaa waxaa dheer, qashin ururiyaha ayaa ka waxtar badan inta badan ee hadda la yaqaan ee fulinta waxaana mar hore loo isticmaali karaa hawlo badan oo wakhtiga dhabta ah. Luqadda lafteedu waxay aqoonsan tahay xaaladaha marka qiimaha lagu kaydiyo doorsoomayaasha loo qoondayn karo xidhmada. Tani waxay yaraynaysaa culayska saaran maamulaha xusuusta waxayna kordhisaa xawaaraha barnaamijka.

Concurrency iyo Concurrency

Is-barbar yaaca iyo tartanka afku waa mid aan ammaan ahayn. Ma jiro luqad hoose oo xitaa meel fog kula tartami karta Go. Si xaq ah, waxaa xusid mudan in qaabkani aanay curin qorayaasha afku, balse si fudud looga soo amaahday afkii hore ee ADA ee wacnaa. Luqadda ayaa awood u leh inay socodsiiso malaayiin isku-xirno isbarbar socda iyadoo la adeegsanayo dhammaan CPU-yada, iyadoo leh nidaam baaxad leh oo dhib yar oo ka adag dhibaatooyinka qufulka iyo xaaladaha jinsiyadeed ee caadiga u ah koodka fidsan.

Faa'iidooyin dheeraad ah

Haddii ay faa'iido leedahay, qof kastaa wuxuu noqonayaa mid aan naf lahayn.

Luuqadu waxay sidoo kale ina siinaysaa faa'iidooyin badan oo aan shaki ku jirin:

  • Hal fayl oo la fulin karo ka dib marka la dhiso mashruuca ayaa si weyn u fududeynaya dejinta codsiyada.
  • Ku qorista joogtada ah iyo nooca garashada waxay si weyn u dhimi kartaa tirada khaladaadka ku jira koodka, xitaa iyada oo aan la qorin imtixaano. Waan ogahay qaar ka mid ah barnaamijyada sameeya iyaga oo aan wax qorin imtixaanada oo dhan oo tayada code-kooda aan si weyn u dhibin.
  • Iskudubbarid aad u fudud oo iskutallaab ah iyo qaadis heer sare ah oo maktabadda caadiga ah, taas oo si weyn u fududaynaysa horumarinta codsiyada iskutallaabta.
  • Tibaaxaha caadiga ah ee RE2 waa dun-ammaan oo waxay leeyihiin waqtiyo fulin la saadaalin karo.
  • Maktabad awood leh oo heerkeedu sarreeyo oo u oggolaanaysa mashaariicda intooda badan inay sameeyaan qaab-dhismeedka qolo saddexaad la'aanteed.
  • Afku waa awood ku filan in uu diiradda saaro dhibaatada halkii uu ka ahaan lahaa sidii loo xalin lahaa, haddana heer hoose oo ku filan in dhibaatada si hufan loo xalliyo.
  • Nidaamka Go eco waxa uu ka kooban yahay qalab la soo saaray oo ka baxsan sanduuqa dhammaan munaasabadaha: imtixaanada, dukumeentiyada, maaraynta xirmada, liinta awood leh, soo saarista koodhka, ogaanshaha xaaladaha jinsiyadda, iwm.
  • Go nooca 1.11 wuxuu soo bandhigay maaraynta ku-tiirsanaanta semantic-ku-dhisan, oo lagu dhisay dusha sare ee martigelinta VCS ee caanka ah. Dhammaan qalabyada ka kooban Go-ecosystem waxay adeegsadeen adeegyadan si ay u soo dejiyaan, u dhisaan, ugana rakibaan kood iyaga hal mar. Taasina waa wax weyn. Imaatinka nooca 1.11, dhibaatada ku saabsan nooca xirmada ayaa sidoo kale si buuxda loo xalliyay.
  • Sababtoo ah fikradda asaasiga ah ee luqaddu waa in la yareeyo sixirka, luqaddu waxay ku dhiirigelisaa horumariyeyaasha inay si cad u maareeyaan khaladaadka. Tanina waa sax, sababtoo ah haddii kale, waxay si fudud u illoobi doontaa maaraynta qaladka gebi ahaanba. Arrin kale ayaa ah in horumariyayaashu ay si badheedh ah iskaga indhatiraan maaraynta khaladka, iyaga oo door bidaaya in ay si fudud u sii gudbiyaan khaladka kor.
  • Luqadda ma hirgeliso habka OOP ee qadiimiga ah, maadaama qaabkeeda saafiga ah aysan jirin wax macquul ah oo ku yaal Go. Si kastaba ha ahaatee, tani ma aha dhibaato marka la isticmaalayo interfaces. Maqnaanshaha OOP waxay si weyn u yaraynaysaa xannibaadda gelitaanka bilawga.

Fududeynta faa'iidada bulshada

Way fududahay in la adkeeyo, way adagtahay in la fududeeyo.

Go waxaa loo qaabeeyey inay noqoto mid fudud waxayna ku guulaysatay hadafkaas. Waxaa loo qoray barmaamijyo caqli badan kuwaas oo fahma faa'iidooyinka shaqada kooxeed oo ka daalay kala duwanaanshiyaha aan dhammaadka lahayn ee luqadaha heerka ganacsiga. Haysashada qaab-dhismeedyo yar oo isku dhafan oo ku jira arsenal, ficil ahaan maaha wax isbeddel ah waqti ka dib, sidaas darteed horumariyayaashu waxay leeyihiin waqti badan oo loo sii daayo horumarinta, oo aan dhammaadka lahayn barashada hal-abuurka luqadda.

Shirkaduhu waxay sidoo kale helayaan faa'iidooyin dhowr ah: xannibaadda gelitaanka hoose waxay u oggolaanaysaa inay si dhakhso ah u helaan takhasusle, iyo isbeddella'aanta luqadda ayaa u oggolaanaysa inay isticmaalaan kood isku mid ah xitaa 10 sano ka dib.

gunaanad

Cabbirka maskaxeed ee weyn waligiis kamay dhigin maroodi ku guulaysta abaalmarinta Nobel Prize.

Barnaamij-yaqaannada kuwaas oo ay maskaxdooda shakhsi ahaaneed ka horraysiiyaan ruuxa kooxeed, iyo sidoo kale aragtiyaha jecel caqabadaha tacliinta iyo "horumarka nafta" ee aan dhammaadka lahayn, luqaddu runtii aad bay u xun tahay, maadaama ay tahay luqad farshaxan-gacmeed oo guud oo aan kuu oggolaanaynin inaad hesho Raalli ahaanshaha bilicda ee natiijada shaqadaada oo muuji naftaada xirfadle horteeda asxaabtaada (waa haddii aan ku cabbirno garaadka shuruudahan, oo aan ku cabbirno IQ). Sida wax kasta oo nolosha ah, waa arrin ku saabsan mudnaanta shakhsi ahaaneed. Sida dhammaan hal-abuurnimada qiimaha leh, luqaddu waxay mar hore ka timid waddo dheer laga bilaabo diidmada caalamiga ah ilaa aqbalaadda guud. Afku waa mid xariif ah oo fudud, iyo, sida aad ogtahay, wax kasta oo xariif ah waa sahlan yihiin!

Source: www.habr.com

Add a comment