Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GoLang

Avatar for Mohsen Mohsen
January 27, 2013

 GoLang

golang persian peresentasion

Avatar for Mohsen

Mohsen

January 27, 2013

Other Decks in Programming

Transcript

  1. یسیون همانرب نابز یفرعم Go golang.org - یرداق اضرریما نابآ

    ۱۳۹۱ هخسن 1.1 [email protected] یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  2. !ددرگ یم زین هیصوت هکلب ،تسا دازآ اهنت هن .تسا

    دازآ هدنسیون مان ظفح اب دنس نیا یراذگک ‌گ ارتشا هب ای شخپ زاب قیرط زا ارنآ ،دیراد نآ شراگن ندش رتهب یارب ییا هیصوت رگا ای و (… ،یموهفم ،ییانعم ،ییلما) دیدرک ادیپ بلطم نیا رد یلاکشا رگا هک موش یم لاحشوخ .دیراذگب نایم رد نم اب لیمیا . .دییامن مادقا رت دیدج یه ‌گ خسن تفایرد یارب یهاگدنچ زا ره دیناوتی ‌گ م نیاربانب .دش دهاوخ یناسرزورب یلبق ع لطا نودب هتشون نیا یه ‌گ خسن ۱.۰ :دینک دولناد ریز سردآ زا دیناوتی ‌گ م ار دنس نیا https://www.dropbox.com/s/rntxj5dyqlui6ff/golang-persian-intro.zip یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  3. :هتشون نتم هرابرد حیضوت اما ،دوش نایب هداس تروص هب

    بلاطم هک هدوب نیا رب یعس مامت هکنیا اب .دنشابی ‌گ م هبرجت اب ناسیونه ‌گ مانرب هتشون نیا یلصا نابطاخم نابز اجنیا رد تسین رارق امش .تسا هدش هتشون «ییانشآ» یارب .تسا هدشن هتشون «شزومآ» یارب هتشون نیا Go دیوش انشآ نآ اب تسا رارق هکلب ،دیریگب دای ار سکتنیس یاج هب هدنناوخ رظن هدش یعس و درادن دوجو هتشون نیا رد یدایز یاهدک ور نیمه زا .دینک مادقا نآ یریگدای یارب ،هقلع ندمآ دوجوب تروص رد ات نیا .دوب دهاوخ دیفم مه رگید یاهن ‌گ ابز ناسیونه ‌گ مانرب یارب یتح ،میهافم نیا زا یلیخ اب ییانشآ .دوش بلج دراد دوجو نآ رد هک ییاهت ‌گ یلباق و میهافم هب ،نابز هتشون بلاق رد را امش هب «دیلسا» کی ا ،تسا هدش هئ و یه ‌گ مانرب تسا رتهب) .تفرگ دهاوخن امش زا یدایز تقو نآ ندناوخ PDF دینک میظنت یروط ار دوخ ناوخ تلاح رد ار هتشون نیا هک Fullscreen (.دهد شیامن رد دوجوم یاهه ‌گ ژاو زا یرایسب یسراف ینعم !تسین یرتویپماک مولع رد هدافتسا یارب یبسانم یلیخ ی هنیزگ ،تسا رکش یتسارب هک یسراف نابز ،نینچمه نیا رد دوجوم یسراف ب ‌گ تک مه شاه ‌گ نومن .درادن هارمه هب یرگید زیچ هدنناوخ یارب یمگردرس زج و دنکی ‌گ من هیارا هژاو نآ زا یتسرد کرد ،یرتویپماک ثحابم اهه ‌گ ژاو نیا زا یلیخ هک تسا نیا هلاسم ،تسین یسراف نابز زا لکشم هتبلا .دنهاگآ اهن ‌گ آ رد دوجوم تاهبش هب ل ً ب ماک رتویپماک مولع ناصصختم هک تسا هنیمز !دنرادن ار ناشدوخ هب صوصخم ینعم مه یسیلگنا نابز رد یتح رگا هک ارچ ،دوش یم مگردرس ل ً ب ماک دناوخب ار رتویپماک یصصخت نوتم مه یسیلگنا دنورهش کی : یسیون همانرب نابز نیمه مان شا هنومن).تسا توافتم رایسب اهن ‌گ آ لومعم دربراک اب نوتم نیا رد اهه ‌گ ژاو ینعم Go ات هدش یعس هتشون نیا رد رطاخ نیمه هب ( زیهرپ اهن ‌گ آ یارب یسراف یزاس لداعم ای ینعم زا و هدرک هدافتسا یسیلگنا یلصا یاهه ‌گ ژاو زا تسا نکمم هک ییاج دوش . یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  4. » نم یرایسب دوجوم یاهه ‌گ دیا زا رد زا

    مگب هرتهب ،عقاو رد .مراد تسود ور نابز نیا ی همه دایم مشوخ اهه ‌گ دیا نیا « Martin Odersky یسیون همانرب نابز قلاخ Scala ) اواج رلیاپماک یلعف لسن ی هدنزاس و javac ( یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  5. package main import "fmt" func main() { fmt.Printf("Hello, World! \n")

    } یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  6. هاتوک یا هچخیرات لاس ربماتپس رد 2007 ، Ken Thompson

    و Rob Pike هکرازفام ‌گ رن یایند یاهه ‌گ رهچ نیرتس ‌گ انشرس زا نت ود ، زاین ی یفرعم هب ناش‌گ ن تسی اب ار دیدج یمتسیس یسیون همانرب نابز کی تخاس ی هدیا ، Robert Griesemer ، رد لوغشم نیسدنهم زا رگید یکی Google .دنتشاذگ نایم رد نوچمه ناشناراکمه زا یرگید دادعت تدم نیا رد و دندرک ع ورش ار دیدج نابز نیا یور رب راک اهن ‌گ آ Russ Cox و Brad Fitzpatrick و Andrew Gerrand .دندش قحلم اهن ‌گ آ میت هب (!دینک لگوگ ار یماسا نیا رگا دشابن دب دیاش) لاس ربماون رد 2009 ناسیون همانرب مومع هب زاب نتم تروص هب لگوگ ینابیتشپ اب نابز یشیامزآ ی هخسن نیلوا ، زا شیب نونک ات نامز نآ زا .دش هضرع ۳۰۰ هتشاد تکرش هژورپ نیا یه ‌گ عسوت رد بلطواد ناسیون همانرب زا رفن !دنا یاه تکرش ،نابز نیا راشتنا هام نیلوا زا Startup هخسن رد نابز هکنیا اب .دندرک ع ورش ار نآ زا هدافتسا یدایز مان دوجو اه یلیخ یارب اما ،دربی ‌گ م رس هب یشیامزآ ی Ken Thompson و Rob Pike تیفیک زا ات دوب یفاک .دننک لصاح نانیمطا نابز یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  7. لاس سرام هام رد هکنیا ات .دندنام نابز رادیاپ ی

    هخسن رظتنم ،اما رتگ ‌گ رزب یاه تکرش 2012 ی هخسن ، 1.0 زا یسیون همانرب نابز Go .دش رشتنم رادیاپ تروص هب طقف اهنت هکنیا دوجو اب ،هتشون نیا شراگن نامز رد ۸ تکرش ،تسا هتشذگ نابز رادیاپ ی هخسن راشتنا زا هام زا ناشتلوصحم رد یدایز گرزب یاه Go رورم مه اب ار اهن ‌گ آ زا یدادعت یماسا ،ریز تسیل رد .دنا هدرک هدافتسا :مینکیم Google Youtube BBC Canonical Nokia Siemens bitly Heroku CloudFlare SmugMug Feedbooks iron.io moovweb Airbrake swirl.us SoundCloud یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  8. زا ،لاب یماسا مامت رد ا ً ببیرقت Go یارب

    م ‌گ تسیس یحارط یاه Back-end هک ییاج .تسا هدش هدافتسا یاهن ‌گ ابز بسانم تردق یتپیرکسا ار لومعم و دنرادن زا JVM هب ندیسر یارب مه عقاوم زا یلیخ رد ؛دوشی ‌گ م هدافتسا یاهدک یاپ ،رتلاب تعرس C ++ و C نایم هب یآی ‌گ م .د تشذگ اب طقف دشاب هتسناوت هک هدوب ینابز یسیون همانرب یاهن ‌گ ابز خیرات رد منکی ‌گ من رکف ۷ نیلوا راشتنا زا هام .دوش وربور یتیلوبقم نینچ اب ،شرادیاپ ی هخسن هک تسا ملسم Go ++ لثم ییاهن ‌گ ابز هاگیاج هب ندیسر یارب و ،تسا هار لوا رد زونه C و Java و Python ... و دراد شیپ رد یزارد هار ، دسری ‌گ م رظن هب اما هک .تسا هدرک لمع قفوم رایسب «ع ورش» یارب یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  9. Go تسا هروظنم همه و نردم نابز کی Go دنناوتب

    هک هدوب نیا رب ناحارط یعس مامت .هدش یحارط ناسیون همانرب زورما یاهزاین یارب هک تسا ینابز نیب یبسانت تردق ، تعرس و ، یگداس باختنا یدایز ساوسو و تقد اب هتفر راکب نآ رد هک ییاهه ‌گ دیا .دننک داجیا رظن لدابت و ثحب لاس کی ات نابز یاهت ‌گ یلباق زا یضعب رس رب ،هعسوت میت ی هتفگ قبط .دناه ‌گ دش یزاسه ‌گ دایپ و !تسا هتفرگ تروص Rob Pike یارب یبسانم نیزگیاج دناوتب هک دوب یمتسیس نابز کی تخاس اهنآ هیلوا ی هدیا هک دنکیم ناونع ++ C مه هژورپ تیاس یتح ،لوا یاهزور رد .دشاب Go یم یفرعم متسیس یسیون همانرب یارب ینابز ناونع هب ار حطس یاهن ‌گ ابز ناسیون همانرب رظن هدش ثعاب ،یگداس رب اهن ‌گ آ دیکأت هک دندش هجوتم نامز تشذگ ا ‌گ ب اما .درک لثم یرتلاب Python ای Ruby هب مه Go !دوب بلاج مه هعسوت میت یارب هیضق نیا ؛دوش بلج هک تفگ ناوتی ‌گ م عقاور ‌گ د Go لثم ینابز تعرس و تردق ناوارف تفارظ اب C لثم ینابز یگداس و تلوهس اب ار Python بیکرت هدرک یاهه ‌گ مانرب زا ،دهد ششوپ ار اهه ‌گ مانرب زا یعیسو رایسب فیط تسا رداق لیلد نیمه هب . .یطخ دنچ ی هداس یاهه ‌گ مانرب ات هتفرگ یمتسیس دشاب تخس دیاب ا ً بمتح ،یمتسیس نابز کی هک هتفگ یسک هچ ؟ یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  10. Go تسا زاب نتم و «دازآ» نابز کی هکنیا اب

    Go چیه لرتنک تحت و تسا دازآ ل ً ب ماک نابز کی یلو ،دوش یم ینابیتشپ لگوگ فرط زا ا ً بمیقتسم .تسین یتکرش Pike تیاس رد ار لگوگ تکرش زا یا وگول چیه دصق زا ،ع وضوم نیا تابثا یارب هک هدرک ملعا !دنا هدادن رارق نابز نیا :ینعی نیا  .تشاذگ دهاوخن ریثأت نابز ی هدنیآ رب یتکرش چیه یراجت و یراک تسایس  .دوش یم ماجنا یرتشیب تعرس اب نابز یزاسهب و هعسوت  .دننک لابند ار هعسوت لحارم مامت فافش روط هب دنناوتی ‌گ م همه  .تشاد دهاوخ دوجو نابز یارب یرتشیب زاب نتم یاه کرو میرف و اهه ‌گ ناخباتک  ...… یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  11. Go تسا هدنوش لیاپماک نابز کی رد هدش هتشون یاهه

    ‌گ مانرب یارجا یارب Go ار اهن ‌گ آ دیاب ، Compile ،لیاپماک تایلمع یجورخ .دییامن نیشام دک هب زاین نودب .تسا VM هب زاین نودب ، JIT .ریسفت هب زاین نودب و ، دننامه C .دوب دهاوخ نیشام یاهدک ا ً بمیقتسم امش ی همانرب لصاح ، رلیاپماک رضاح لاح رد Go نابز رد شدوخ هک C یاه مرفتلپ یارب تسا رداق ،هدش هتشون x86 و x64 و arm لیاپماک تعرس .دنک دیلوت نیشام دک ندش رد اهه ‌گ مانرب Go رایسب رایسب !تسلاب چیه یاج هنیمز نیا رد و ++ دننام یرلیاپماک یاهن ‌گ ابز رگید یارب ار یتباقر C و Java # و C .تسا هتشاذگن یقاب … و یاه لماع م ‌گ تسیس یارب یمسر تروص هب زین رلیاپماک دوخ Linux و Mac و FreeBSD و Windows یم رشتنم لثم یرگید یاهم ‌گ تسیس یور هک دناه ‌گ درک شرازگ ناربراک ،یمسر ریغ لکش هب اما .دوش Android و Plane9 و هیقب BSD .دنا هدش نآ یارجا هب قفوم مه اه یه ‌گ خسن) ۱.۱ (تسا هتشاد یدایز تفرشیپ هنیمز نیا رد نابز یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  12. رد Go هیبش ییاهزیچ هب زاین makefile لثم هژورپ تیریدم

    یاهه ‌گ مانرب ای و اه Maven رلیاپماک .تسین Go زا عبات هک یلیاف main !دیامن یم کنیل و ییاسانش ار زاین دروم یاهدک هیقب شدوخ و هدرک ع ورش دراد رارق نآ رد هداس روتسد طخ کی طقف ،دیشاب هتشاد لیاف سروس یدایز دادعت اب یطخ رازه دص دنچ یه ‌گ مانرب کی رگا یتح .دوش لیاپماک امش ی همانرب لک ات تسیفاک لانیمرت رد رلیاپماک هک تسا رکذ هب مزل Go لکش هب ار امش یاهدک Static لیاپماک لصاح هک ینعم نیا هب .دیامنی ‌گ م کنیل یدایز دادعت زا امش یه ‌گ مانرب هک تسین مهم ؛دوب دهاوخ «هکتک ‌گ ی» ییارجا لیاف «کی» تیاهن رد امش یه ‌گ مانرب ای و لیاف Package یاه یبناج هدش لیکشت لیاف کی دش دهاوخ هداد لیوحت امش هب تیاهن رد هک یزیچ ، لباق یتحار هب و درادن مزل یزاینش ‌گ یپ چیه ندش ارجا یارب هک تسا هداس ییارجا لاقتنا هاگتسد هب رگید یاه‌گ .تسا (یرتشم هاگتسد ،لاثم یارب) رلیاپماک Go ثعاب رگید یاهن ‌گ ابز رد هک ییاهزیچ !درادن یخوش یسک اب Warning رد یگمه ،دنوش یم Go هب ناونع Error ،دیشاب هدرکن هدافتسا نآ زا اما دیشاب هدرک فیرعت ریغتم کی رگا ل ً ب ثم .دناه ‌گ دش هتفرگ رظن رد کی یاج هب رلیاپماک Warning ماغیپ کی اب ،یحطس Error رد !دنکیم فقوتم ار لیاپماک تایلمع لک Go نینچ !تسین یتفریذپ یتاهابتشا یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  13. Go و Syntax انشآ Go یه ‌گ داوناخ زا تسا

    ی ‌گ نابز C اب هک یناسیونه ‌گ مانرب لیلد نیمه هب و C ++ و C و Java # و C و PHP و Javascript تحار رایسب ،دنراد ییانشآ ...و Syntax ،ریز دک رد تقد یمک اب لاثم یارب .تفرگ دنهاوخ دای ار نابز نیا :دش دیهاوخ نآ روظنم هجوتم یتحارب package main import "fmt" func main () { a := []int{11, 22, 33, 44, 55} s := 0 for i := range a { s += a[i] } fmt.Printf("%d \n", s) //output: 165 } یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  14. Syntax یتقو .دراد نآ تفرشیپ رد یدایز ریثأت نابز کی

    Syntax ار نآ رتت ‌گ حار ناسیونه ‌گ مانرب ،دشاب انشآ نابز .تفر دهاوخ رتلاب نابز تیبوبحم تبسن نیمه هب و تفرگ دنهاوخ دای نتفر لاب اب اب نابز ناگدنزاس ،تیبوبحم .دنوشی ‌گ م لوغشم هعسوت راک هب یرتشیب تعرس و قایتشا رتلاب نابز هب ناسیونه ‌گ مانرب دامتعا بیرض تلاح نیا رد دوری ‌گ م .دوشی ‌گ م دیلوت نابز یارب یرتشیب یاهرازبا و اهه ‌گ ناخباتک و هک ینامز ات .دنال ‌گ وغشم یناوخدک هب ،دننک یسیوندک هکنیا زا رتشیب ناسیونه ‌گ مانرب Syntax همانرب طسوت نابز کی یاهن ‌گ ابز لاثم یارب .دنک ادیپ ینادنچ تیبوبحم دناوتی ‌گ من دوشن هتفریذپ ناسیون Functional همه نآ اب نتشاد لیلد هب طقف تاقوا رثکا رد ،دنراد هک یدرف هب رصحنم یاهت ‌گ یلباق Syntax بذج اب هطبار رد انشآ ان .دنوشی ‌گ م هجاوم لکشم اب ناسیونه ‌گ مانرب Syntax نابز Go زا یبیکرت ناوتی ‌گ م ار Syntax یاهن ‌گ ابز C و Python و Pascal ات هدش یعس .دروآ باسح هب Syntax رد هقلح راتخاس لاثم یارب .دشاب مهف لباق و ،زیمت ،کچوک نابز Go اب طقف for و هدش یزاسه ‌گ دایپ یاه هقلح while ای do .دناه ‌گ دش فذح نآ زا دروم رد یرگید بلاج یه ‌گ تکن Syntax نابز Go نآ رمارگ هک تسا نیا Regular شزادرپ لیلد نیمه هب و !تسا یاهدک Go لثم یبناج یاهرازبا یارب IDE نینچمه .دوب دهاوخ ناسآ رایسب اه Coding سروس مامت ضرفش ‌گ یپ اهل ‌گ یاف UTF-8 !تسا هک ارچ ) Ken Thompson و Rob Pike قلاخ ناشدوخ UTF-8 ( !!دناه ‌گ دوب یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  15. Go ) تسا یا هیور نابز کی Procedural ( ایآ

    هک تسا نیا دیآی ‌گ م شیپ قاتشم ناسیونه ‌گ مانرب زا یدایز دادعت یارب هک یلاؤس Go ؟تسارگی ‌گ ش نابز کی :تسا نیا باوج !! ریخ ، ‌گ هناتخبشوخ .دیتسه انشآ نآ اب ارگی ‌گ ش فورعم یاهن ‌گ ابز رد هک یلکش هب هن لقادح : حیضوت !«تیلباق» کی هن ،تسا «موهفم» کی ییارگ یش هتشادن دوجو یرگید نابز رد و دشاب ینابز رد هک تسین روطنیا !دشابن لاثم یارب م ینابز رد دننا C تسین ارگ یش هک مه .درک هدافتسا ییارگ یش میهافم زا ناوتی ‌گ م رد یتح نابز کی Functional دننام ‌گ Lisp !درب هرهب ییارگی ‌گ ش زا ناوتی ‌گ م مه دننام) دشاب روظنم نیا یارب یصاخ «رمارگ» یاراد نابز کی رگا هک تسا ملسم هتبلا Java یاهدک یزاسه ‌گ دایپ ( .دوب دهاوخ رتن ‌گ اسآ نآ رد ارگ یش تخاس تیفیک رب ینیمضت ناونع چیه هب ،نابز کی ندوب ارگ یش هک تسا نیا دوش کرد دیاب هک یاه ‌گ تکن نیلوا !تسین مه دنوشی ‌گ م هتشون نابز نآ رد هک ییاهدک تیفیک رب ینیمضت یتح !تسین نابز نآ یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  16. و لوح هک یتاغیلبت و دیناوخی ‌گ م شاه ‌گ

    رابرد اهب ‌گ اتک رد هک یزیچ سکع رب ،ییارگ یش هک تسا نیا هتکن نیمود یاراد ،دوش یم نآ شوح نافلاخم !تسا یدایز یمن هتشون نیا رد ییارگ یش هب تبسن یفنم و تبثم تارظن دروم رد تبحص ‌ رد ناتدوخ دیناوتی ‌گ م امش .دجنگ هب ار یدارفا یماسا زا یکچوک تسیل ، ‌گ ع وضوم نیا هب امش رتشیب هچره هجوت بلج یارب اما .دینک قیقحت هرابن ‌گ یا :دنیآ یم باسح هب ییارگ یش فورعم نافلاخم زا هک مهدیم ناشن امش Ken Thompson لماع متسیس قلاخ) Unix یسیون همانرب نابز قلاخ ، B هدنهده ‌گ عسوت نیلوا ، Regular expressions ، گنیدک قلاخ UTF-8 یسیون همانرب نابز قلاخ ، Go ( .… Dennis Ritchie لماع متسیس قلخ رد مود رفن) Unix یسیون همانرب نابز قلاخ ، C ( .… ، Rob Pike لماع متسیس هعسوت میت وضع) Unix لماع متسیس و Plan9 گنیدک قلاخ ، UTF-8 یسیون همانرب نابز قلاخ ، Limbo یسیون همانرب نابز قلاخ ، Go ( .… ، یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  17. Richard Stallman هژورپ قلاخ) GNU یاهرلیاپماک هعومجم هیلوا ناگدنهد هعسوت

    زا ، GCC هیلوا ناگدنهد هعسوت زا ، Emacs، GDB، Gmake ( .… و Linus Torvalds لماع متسیس قلاخ) Linux قلاخ ، Git ( .… ، Rich Hickey یسیون همانرب نابز قلاخ) Clojure ( .… ، Joe Armstrong یسیون همانرب نابز قلاخ) Erlang مرفتلپ ناحارط زا ، OTP ( .… ، Simon Peyton-Jones یسیون همانرب نابز یلصا ناحارط زا) Haskell رلیاپماک یلصا ی هدنهده ‌گ عسوت ، GHC (.… ، Paul Graham یسیون همانرب نابز قلاخ) Arc تکرش سسؤم ، Y Combinator لثم ییاهت ‌گ یاس دلوم هک یتکرش – Scribd, reddit, Dropbox, Disqus ( .…تسا یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  18. Edsger Dijkstra ( .… «ارتسکیاد» فورعم متیروگلا لثم یراذگ ریثأت

    یاه متیروگلا ی هدننک ادباو رتویپماک یایند ناققحم نیرتگرزب زا) Alexander Stepanov هناخباتک هیلوا حارط) STL ++ نابز رد C ( .… ، Luca Cardelli یسیون همانرب نابز رلیاپماک نیلوا هدنسیون) ML نابز – ML یاهن ‌گ ابز یلصا ی هشیر OCaml، Haskell # و F یسیون همانرب نابز ناحارط زا ،دشاب یم Modula-3 ( .… ، .دیریگب سامت نم لیمیا اب دیناوتی ‌گ م ،یماسا نیا زا مادک ره یارب عبنم تساوخرد تروص رد رظن دارفا نیا زا مادکچیه رگا ؛دنتسه یسیونه ‌گ مانرب یایند رد دارفا نیرتس ‌گ انشرس اهن ‌گ یا هک تفگ ناوتی ‌گ م یلیخ صاصتخا هطبار نیا رد قیقحت هب ار دوخ تقو زا یمک هک دشابن دب دیاش سپ ،دنرادن ییارگی ‌گ ش هب تبسن یتبثم !دیهد یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  19. یا هیور راتخاس Go ییارگ یش ربارب رد ناحارط Go

    لثم ییاهن ‌گ ابز رد ییارگ یش لدم هک دنرواب نیا رب Java # و C ++ و C یدایز یاه یگدیچیپ .دش دهاوخ هدیچیپ یاهدک دیلوت ثعاب ،نابز رد یگدیچیپ نیا و .دراد Go ) تسا یا هیور نابز کی Procedural دننام کیسلک ییا هیور نابز کی هن اما ،( C . ناحارط Go ات دناه ‌گ درک داجیا ییا هیور یاه نابز کیسلک راتخاس رد یبلاج یاه یروآون Go هیور نابز کی هب ار !دننک لیدبت «نردم» یا سح رگید یاهن ‌گ ابز رد موسرم ییارگی ‌گ ش نآ هب ینادنچ زاین ،نردم ییا هیور راتخاس نیا کمک اب ناسیون همانرب دیدج یاهه ‌گ دیا زا یدادعت اب همادا رد .درک دنهاوخن Go ....دیوش یم انشآ هنیمز نیا رد یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  20. : ایشا و اهس ‌ها لک هرابرد هداس حیضوت کی

    ادتبا کی دناوتی ‌گ م نآ کمک هب سیون همانرب هک دراد دوجو یشور یسیون همانرب یاهن ‌گ ابز رتشیب رد Data Type .دنک داجیا دیدج Data Type راصتخا هب هک Type «هداد» کی دنکیم نییعت هک تسا ییوگلا ،دوش یم هدناوخ .داد ماجنا نآ یور ناوتیم یتایلمع هچ و تشاد دهاوخ هظفاح رد یراتخاس هچ کی تخاس یارب یفلتخم یاهش ‌گ ور ،فلتخم یاهن ‌گ ابز Type نابز رد ل ً ب ثم .دنا هدرک هیارا C زا struct نیا یارب یهارمه اب) .دوش یم هدافتسا روظنم typedef مان هب دراد دوجو یراتخاس مه ارگ یش یاهن ‌گ ابز رثکا رد ( Class کی تخاس ناکما سیون همانرب هب هک Type .دهدیم ار دیدج کی ،ارگ یش یاهن ‌گ ابز رد Type ی هدننک نییعت بیترت هب هک دوش لیکشت دتم و دلیف یدادعت زا دناوتی ‌گ م » تایصوصخ » و « راتفر نآ « Type .دنتسه کی زا هدافتسا یارب Type » کی دیاب ، هنومن نآ زا « Type نیا ارگ یش یاه نابز رد .دینک داجیا هظفاح رد ار احلطصا ار «اهه ‌گ نومن» Object .دنمان یم «یش» ای یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  21. Go یاج هب Class زا struct :دنکیم هدافتسا Go لثم

    مه C زا struct کی تخاس یارب اه Type هک توافت نیا اب .دنکیم هدافتسا دیدج struct یاه Go هب تبسن C کی .دنرت هتفرشیپ struct رد Go .دشاب مه دتم یاراد ،دلیف نتشاد رب هولع دناوتی ‌گ م رد اه دتم Go لخاد یتح .دنتسه یلومعم عباوت نامه struct کی اب تسا مزل طقف .دنوش یمن هتشون مه اه هب ار اهن ‌گ آ ،ناشفیرعت ماگنه هب کچوک رییغت struct اه تبسن میهد . نینچ نتشاد دوجو اب عقاو ر ‌گ د struct نابز رد ییاه Go لثم یزیچ نتشاد هب یزاین امش ، Class نامه !دیرادن اب هک ییاهراک Class نیا اب ،تسا ماجنا لباق اه struct دهاوخ ماجنا لباق رتک ‌گ بس و رتت ‌گ حار یلیخ دیدج یاه .دوب یسیونه ‌گ مانرب نابز Rust فرط زا هعسوت لاح رد هک مه Mozilla یاراد دوخ هیلوا یاهه ‌گ خسن رد هکنیا اب ،تسا راتخاس Class ی هخسن رد اما ،دوب 0.4 راتخاس ، Class اب ار نآ و درک فذح نابز زا ار struct هباشم ییاه رد هک یزیچ Go .دومن نیزگیاج دراد دوجو یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  22. Go زا Composition :دنکیم هدافتسا «تثارو» یاج هب Java ++

    رد هک «هناگدنچ تثارو» تیلباق فذح اب درک یعس C رد تثارو مزیناکم ندش هداس ثعاب ،تشاد دوجو .دوش نابز Go ،تثارو فذح اب ل ً ب ک و تفر رتولج مدق کی Composition .درک نیزگیاج نآ یاج هب ار Composition ود دینک ضرف ؟تسیچ struct یاه مان هب A و B .میا هدرک فیرعت B دناوتی ‌گ م A کی دننام ار رد یلومعم دلیف struct رد دوجوم یاضعا هب ات دهد رارق دوخ A .دشاب هتشاد یسرتسد ی هویش دننامه struct نابز رد وت رد وت یاه C ثحبم یاه یگدیچیپ اب ندش ریگرد نودب بیترت نیا هب . .میشاب هتشاد نامیاهدک رد ار نآ هیبش یمزیناکم میناوتی ‌گ م ،تثارو .دنرب یم هرهب ءایشا اب راک یارب ییا هبترم هلسلس متسیس کی زا ارگ یش یاهن ‌گ ابز زا یلیخ هک دینادی ‌گ م ا ً بمتح یش کی ،اه نآ رتشیب رد ل ً ب ثم Object .دنرب یم ثرا نآ زا یقیرط هب یگمه ءایشا هیقب و دراد دوجو رد Go ره .درادن دوجو یزیچ نینچ Type لیاپماک لمع ره رد رلیاپماک تسین یزاین .تسا لقتسم شدوخ یارب نیب تثارو ی هطبار Type رلیاپماک تعرس یلصا لیلد زا یکی .دنک کچ ار اه Go .تسا هلاسم نیمه زین یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  23. رد یزاسب ‌گ یکرت تیلباق زا هدافتسا اب مه ناتدوخ

    هک دیشاب هتشاد نانیمطا Go تثارو هب تبسن نآ تیزم هجوتم ، .دش دیهاوخ باتک رد یتح Design Patterns: Elements of Reusable Object-Oriented Software یکی هک ،دشاب یم ییارگ یش هنیمز رد عجرم ب ‌گ تک نیرت فورعم زا ناونع :هک هدش » دیهد حیجرت تثارو هب ار ءایشا یزاسب ‌گ یکرت « "Favor 'object composition' over 'class inheritance'." .پ ی هژاو یارب متسناوت هک دوب یا ینعم نیرتک ‌گ یدزن یزاسب ‌گ یکرت :ن composition .مریگب رظن رد یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  24. Go :دنک نییعت یسرتسد قح اضعا یارب دناوتی ‌ها م

    لثم) دوش ع ورش کچوک فرح اب وضع کی مان رگا hello لخاد یاضعا یارب طقف وضع نآ ،( Package رد .تسا سرتسد لثم) دوش ع ورش گرزب فرح اب وضع کی مان رگا Hello زا جراخ طیحم رد دناوتی ‌گ م وضع نآ ،( Package رد زین .دریگ رارق سرتسد .درب یپ نآ یسرتسد حطس هب ناوتی ‌گ م ،وضع نآ مان هب هاگن کی اب طقف تلاح نیا رد رلیاپماک هک ینعم نیا هب ،تسا «نوناق» کی نیا .تسین «یراذگ مان لیاتسا» کی طقف شور نیا هک دینک تقد .دنک یم کچ ار یسرتسد حوطس نیا لیاپماک نامز رد اعقاو یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  25. Go راتخاس یاراد interface :تسا interface رد ارگی ‌گ ش

    یاهن ‌گ ابز طسوت هدش یفرعم یاهت ‌گ یلباق نیرتهب زا یکی ناونع هب Go .دنراد روظح ناسیونه ‌گ مانرب Java # و C اب interface .دنراد ییانشآ ل ً ب ماک اه کی ،هداس نابز هب interface هباشم مامت .تسا «دادرارق دنس» کی Type کی هب هک ییاه interface هتسباو نآ طسوت هک ییاهدادرارق زا دناف ‌گ ظوم دنتسه interface نآ تروص نیدب .دننک تیعبت هدش فیرعت interface مامت زا تلاکو هب ،فلتخم یاهت ‌گ یعقوم رد دناوتی ‌گ م Type یاج هب) .دریگب رارق هدافتسا دروم نآ هب هتسباو یاه ن ‌گ آ کتک ‌گ ت هکنیا Type (.دینک راظحا هناگادج ار اه رد Go کی نیب دادرارق ، Interface و Type .دوشی ‌گ م اهدتم فیراعت لماش طقف ،نآ هب هتسباو یاه Interface نابز یلصا شرگن اه Go ثحبم هب Polymorphism مهم یاهت ‌گ یلباق زا یکی ناونع هب اهن ‌گ آ ؛دنشابی ‌گ م تخاس ماگنه هب و هدش یقلت نابز API دارفا یارب اهن ‌گ آ یریگدای و هعلاطم .دنریگی ‌گ م رارق هدافتسا دروم رایسب اه نابز هب دنمه ‌گ قلع Go .دوشی ‌گ م هیصوت یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  26. هک تسا تسرد Go ناونع تحت یزیچ Class زا ا

    ً بمتح ارگی ‌گ ش یاهدک نتشون یارب هک تسین یرابجا اما ،درادن Class .دینک هدافتسا اه .دینک یحارط ارگی ‌گ ش تروص هب ار دوخ یاهه ‌گ مانرب ا ً بمتح هک تسین مه یرابجا نیا لثم ییاهن ‌گ ابز لاثما هک تسا یام ‌گ هوت Java # و C ++ و C .دناه ‌گ درک نیقلت امش هب Go مامت یاهت ‌گ یلباق هک تفگ ناوتی ‌گ م یتح .تسا هداد رارق امش رایتخا رد ار ارگی ‌گ ش یسیونه ‌گ مانرب یارب مزل رد ییارگی ‌گ ش Go .تسا رتت ‌گ حار و رته ‌گ داس رگید یاهن ‌گ ابز زا یلیخ تبسن هب هاگدید هک تسا نیا هلاسم Go لثم ییاهن ‌گ ابز رد هک یهاگدید اب ،اهه ‌گ مانرب تخاس هب تبسن Java # ای C نآ اب .دراد قرف رگیدکی اب ناشراک شور اما ،تسا یکی اهن ‌گ آ فده .تسا توافتم دیتسه انشآ رد یسیونه ‌گ مانرب Go یانبم رب Type عباوت و اه هن ،دریگی ‌گ م تروص Class اهدتم و اه ... ناگدنزاس Go ییارگی ‌گ ش هب دیاب ا ً بمتح ،عیسو داعبا رد هتفایت ‌گ خاس یاهه ‌گ مانرب نتشون یارب هک دننکی ‌گ من رکف هک تسا یشرگن نامه هیبش هاگدید نیا .دشاب هتشاد دوجو مه یرتب ‌گ سانم و رته ‌گ داس یاهه ‌گ ار دیاش ؛دش لسوتم یاهن ‌گ ابز Functional .دننکی ‌گ م ناونع ار نآ هک تساهت ‌گ دم ارگی ‌گ ش یاهن ‌گ ابز فلاخم بطق ناونع هب یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  27. Go نابز کی Static-Type تسا یاهن ‌گ ابز Static یاهن

    ‌گ ابز هب تبسن Dynamic :دنرادروخرب هدمع تیزم هس زا  !تعرس یاهن ‌گ ابز رد نوچ Static بتارم هب همانرب یارجا تعرس ،دوشی ‌گ م صخشم لبق زا اهه ‌گ داد مامت ع ون یاهن ‌گ ابز زا رتلاب Dynamic یاهن ‌گ ابز رد .دوب دهاوخ Dynamic دهاوخ صخشم ارجا ماگنه هب اه هداد ع ون .دش  !تینما یاهن ‌گ ابز رد Static هب سیون همانرب رگا ات دنک کچ ار اهرتماراپ و اهه ‌گ داد مامت تسا رداق رلیاپماک .دوش هداد رادشه وا هب همانرب لیاپماک زا لبق ،دوب هدرب راک هب یهابتشا یاج رد ار یریغتم یوهس تروص  !تادنتسم یاهن ‌گ ابز رد اهدک یزاسدنتسم Dynamic ع ون دیاب لاثم یارب .دراد ییلاب تقد هب زاین ییا هداد ع ون هچ تسا رارق هک دننادب رگید ناسیونه ‌گ مانرب ات مینک رکذ تادنتسم رد ار عبات کی یاهرتماراپ یاهن ‌گ ابز رد اما .دننک لاسرا عبات هب ار Static کی اب سیون همانرب و تسا دک دوخ زا ییزج رتماراپ ره ع ون .دروآ تسدب نآ یه ‌گ رابرد یدایز تاعلطا دناوتی ‌گ م عبات فیرعت یه ‌گ وحن هب هداس هاگن یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  28. یاهن ‌گ ابز هک ییایازم زا یادج Static هکنیا :دنراد

    زین گرزب بیع کی ،دننکی ‌گ م هئارا Static !!دنتسه ،تسا تسرد Static .تسا نآ بیع نامه ،نآ یلصا تیزم .تسا هبلود یوقاچ هیبش نابز کی ندوب اب مادم دیاب اهن ‌گ ابز نیا رد Type یاهن ‌گ ابز ناسیون همانرب .دینزب هلک و رس اه Dynamic هک دننادی ‌گ م یبوخ هب Dynamic .دراد ریثأت ناشی ‌گ سیوندک تعرس رد ینازیم هچ ات ،ناشهاوخلد نابز ندوب هناتخبشوخ Go دناوتی ‌گ م Type رگا ل ً ب ثم .دهد صیخشت میهدی ‌گ م تبسن نآ هب هک یرادقم یور زا ار ریغتم کی ددع 12 ریغتم رد ار A ،میزیرب Go ریغتم A ع ون زا ار int متسیس هیبش تیلباق نیا .درک دهاوخ ضرف Type inference نابز رد Haskell .تسا صیخشت متسیس نینچ یتقو Type هک دیوشی ‌گ م هجوتم ،دینک ماغدا اهه ‌گ مانرب لیاپماک عیرس و ه ‌گ داس لدم اب ار یا یاهن ‌گ ابز رد یسیوندک تعرس اب تباقر لباق امش یسیوندک تعرس Dynamic .دوب دهاوخ یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  29. » نابز) نیا منکیم رکف نم Go تنس هب (

    Unix و C یاه دوبمک و -- یرلیاپماک و یاه ‌گ یاپ یاهن ‌گ ابز هب یتشگرب -- هتشگرب C ناربج ور هک منکیمن رکف نم ،هدرک ++ C هک مدقتعم اما ،هشاب هدوب هنیمز نیا رد تفرشیپ کی Go نابز یارب تفرشیپ کی ا ً بعطق C زا و .دایم باسح هب لثم ییاه مدآ اب هتشذگ رد دارفا نیا مه یفرط Kernighan تخاس رد ییلاب رایسب ی هبرجت هک مراد نانیمطا و ندرکیم راک نوا لاثما و یتح .هراد دوجو نوا رد دیراد جایتحا هک ییاهرازبا زا یلیخ لوا زا و هدش یسدنهم هنافیرظ یلیخ نابز نیا .نراد یسیون همانرب یاهن ‌گ ابز یلیخ نابز هک مگب هصلخ .هدوب هعسوت لاح رد اهل ‌گ اس راگنا هک تشاد رارق لماکت زا یحطس رد دش رشتنم شزا هک مه ییا هخسن نیلوا ...هیبلاج « Joe Armstrong یسیون همانرب نابز قلاخ Erlang مرفتلپ و OTP یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  30. Go و Concurrency لباق و تسرد فیرعت ،عبانم و اهت

    ‌گ یاس زا یلیخ هنافسأتم .مینک فیرعت ار میهافم نیا میراد زاین ،زیچ ره زا لبق زا یمهف Concurrency و Parallelism لکشم ناسیون همانرب زا یلیخ یارب ار میهافم نیا کرد و دنا هدرکن هیارا .دنا هتخاس فیرعت اب همادا رد Rob Pike :میوشی ‌گ م انشآ میهافم نیا زا Concurrency زا یا هعومجم یانبم رب یسیون همانرب : ،لقتسم ییارجا یاهدحاو .دنراد یکرتشم فده هک Parallelism نیدنچ یارجا ییاناوت : شزادرپ تروص هب یزاوم هب یبایتسد فده اب ، رتلاب یتعرس . Concurrency یارب یلدم تخاس اما ،تسا همانرب کی Parallelism یارب یلدم یارجا .تساه همانرب Concurrency زاف رد تخاس اما ،دوش یم لامعا همانرب Parallelism نامز رد یارجا .دتفا یم قافتا همانرب رد Concurrency .دنراد یکرتشم فده یلو ،دنرگیدکی زا لقتسم ییارجا یاهدحاو رد Parallelism (هناگادج یه ‌گ مانرب ود ش ِ زادرپ لثم) .دنشاب هتشادن مه هب یطبر چیه تسا نکمم اه شزادرپ یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  31. Concurrency یارجا Parallel نیمضت ار ییارجا یاهدحاو یمن ‌ !دنک

    امش ی همانرب تسا نکمم Concurrent روط هب شیازجا اما دشاب Parallel لثم ) دنوشن ارجا Concurrency رد Python راتخاس هک تسا نیا مهم .( تروص هب همانرب Concurrent .دشاب هدش هتشون Concurrency هک دنکی ‌گ م ایحم همانرب یارب ار یراتخاس یرازفا مرن و یرازفا تخس رتسب دوجو تروص رد بسانم لکش هب دنناوتب همانرب فلتخم یازجا ، Parallel .دنوش شزادرپ تروص هب یا همانرب رگا ،رگید ترابع هب Concurrent تروص هب ،دوشن هتخاس Parallel !دش دهاوخن ارجا هتبلا Load شزادرپ ماجنا یارب هظفاح رد همانرب کی زا هنومن نیدنچ ندرک Parallel .درادن یلعف ثحب هب یطبر هک تسیا هناگادج ثحبم یتوافتم ی هویش هب تسا نکمم مه سیون همانرب ره Concurrency نوناق .دنک لامعا شاه ‌گ‌گ مانرب راتخاس رد ار یاهه ‌گ مانرب یحارط یارب یتباث Concurrent .درادن دوجو شزادرپ هب یبایتسد یارب هک تسا رکذ هب مزل Parallel ی هتسه کی زا شیب دیاب ا ً بمتح ، CPU دشاب سرتسد رد شزادرپ ات Parallel .دتفیب قافتا یعقاو لکش هب یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  32. بو زاین و ،هدش عیزوت یاهم ‌گ تسیس ،ییا هتسه

    دنچ یاه هدنزادرپ زا هدافتسا شرتسگ اب ریخا یاهل ‌گ اس رد یسیون همانرب یارب بسانم یرتسب دوجو ،اه تساوخرد زا ییلاب دادعت هب ندوب وگخ ‌گ ساپ یارب اه سیورس ) «دنورمه» Concurrent .تسا ساسحا لباق ل ً ب ماک ( ) «ارگع ‌گ بات» یاهن ‌گ ابز ،نیب نیا رد Functional یسیون همانرب یتاذ روط هب هک ( Concurrent یم نیقلت امش هب ار رب زور ره و دنا هداتفا شیپ هنیمز نیا رد ،(تسا هتشون نیا ثحب زا جراخ هراب نیا رد حیضوت ) دننک لثم ییاهن ‌گ ابز .دوش یم هدوزفا ناشت ‌گ یبوبحم Erlang و Haskell و Clojure .… و ) «یروتسد» یاهن ‌گ ابز Imperative هب مه زونه اهن ‌گ آ رثکا اما ،دنا هدرک ییاهش ‌گ لت اتسار نیا رد مادک ره مه ( زا میقتسم روط Thread و اه Process .دننکیم هدافتسا اه ی هیاپ رب تیاهنرد اه شزادرپ یه ‌گ مه راک یانبم هک تسا تسرد Thread و اه Process اهن ‌گ یا اما ،دوب دهاوخ اه یزاسه ‌گ دایپ یارب اهن ‌گ آ زا میقتسم ی هدافتسا و دنوشی ‌گ م بوسحم لماع متسیس کی نییاپ حطس میهافم وزج Concurrency .درادن ار مزل یگنیهب لمع رد و تسا راوشد رایسب رایسب یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  33. کینکت زا هدافتسا دسری ‌گ م رظن هب ماگمهان تایلمع

    ) Asynchronous یاهه ‌گ مانرب تخاس دنور هب یدودح ات ( Concurrent .تسا هدومن مهارف نانآ یارب ار مزل یگنیهب و هدرک کمک اهن ‌گ ابز نیا رد لثم ییاهه ‌گ ناخباتک gevent رد Python نوچمه یاه طیحم ای node.js یارب Javascript رد قفوم یاهه ‌گ نومن زا تایلمع کینکت یریگراکب Asynchronous یبوخ رایسب لابقتسا زا ییاه کرو میرف نینچ هکنیا اب .دنشاب یم یسیون همانرب یارب یعماج لح هار اما ،دنا هدش رادروخرب Concurrent .دیآ یمن باسح هب تایلمع هک تسا نیا تقیقح Asynchronous یاهدادخر هک اهه ‌گ مانرب زا یصاخ ی هنوگ یارب I/O لاب سایقم رد نیگنس یاه شزادرپ زا تبحص یتقو اما (اهرورس بو لثم) دنکیم لمع بوخ رایسب دنتفای ‌گ م قافتا اهن ‌گ آ رد لدم ،دوشی ‌گ م Asynchronous .دنک یمن هیارا یبسانم لح هار لدم رد Asynchronous رظتنم دیاب ازجا هیقب ،دشاب هتشاد تدم ینلوط شزادرپ هب زاین همانرب زا یتمسق رگا «کی» رد طقف همانرب یازجا مامت هک ارچ ؛دوش مامت تمسق نآ راک ات دننامب Thread نیمه زا .دوش یم شزادرپ .دنوش فیرعت ارذگ و کچوک رایسب دیاب اه شزادرپ ور یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  34. تیلباق زا بسانم یزاسه ‌گ ایپ کی دسری ‌گ م

    رظن هب لاب تاحیضوت اب Concurrency :دشاب ریز تایصوصخ یاراد دیاب  یزاسه ‌گ دایپ Concurrency .دشاب ناسآ و هداس دیاب  یزاسه ‌گ دایپ Concurrency .دشاب کبس و هنیهب دیاب  یزاسه ‌گ دایپ Concurrency .دشاب هروظنم همه تسا نکمم هک ییاج ات دیاب نابز تخاس یلصا لیلد زا یکی هناتخبشوخ Go یسیونه ‌گ مانرب زا دنمتردق ینابیتشپ Concurrent نیا .تسا هدوب زا ینورد تروص هب هکلب ،یبناج تیلباق کی تروص هب هن و «هناخباتک» کی تروص هب هن نابز Concurrency !تسا راک نیا یارب صوصخم سکتنیس کی یاراد یتح .دنکی ‌گ م ینابیتشپ Go ی هلاس یس ی هبرجت نویدم ار یرتسب نینچ Rob Pike یاه نابز و اه لماع متسیس یحارط ی هینمز رد Concurrent .تسا ره چ ، ‌گ دشاب ه .تسا هدوب لماع متسیس یحارط و تخاس (لاح رد و) هتشذگ رد دارفا نیا راک یسیونه ‌گ مانرب هک ییاجنآ زا Concurrent رد Go ار درف هبرصحنم تیلباق کی نابز ناحارط ،دراد یدایز تیمها .....دنا هدرک یزاساج نابز رد روظنم نیا یارب یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  35. هک میتفگ دشاب ناتدای رگا Concurrency زا یا هعومجم یانبم

    رب یسیون همانرب ینعی ییارجا یاهدحاو ،لقتسم عقاو ر ‌گ د .تسیچ «لقتسم ییارجا دحاو» زا نامروظنم میتفگن اما ، هب ار شدوخ صاخ هاگدید ینابز ره .دراد موهفم نیا نابز رد Go مسا هب یراتخاس goroutine .تسا لقتسم ییارجا دحاو نیا رگنایب کی goroutine کی دننامه عقاو ر ‌گ د Coroutine ،زیچ ره زا لبق اما .تسین لیلد یب اهن ‌گ آ یمسا هباشت و تسا اب هک یدارفا یارب میشاب هتشاد یهاتوک حیضوت Coroutine :دنرادن ییانشآ اه نایاپ هب لماک روط هب شراک هک ینامز ات عبات نآ یارجا ،دوشی ‌گ م ارجا عبات کی یتقو یسیون همانرب یاهن ‌گ ابز رد .تشاد دهاوخ همادا هدشن هداد تشگرب نآ زا یرادقم ای و هدیسرن Coroutine ار شیارجا دناوت یم هک تسا یعبات تلاح هب و دنک فقوتم هار ی هنایم رد Standby !دورب نیا .دنک یم ادیپ همادا دوب هدش فقوتم ل ً ب بق هک ییاج زا عبات یارجا ،میتشگزاب عبات نیا هب هرابود رگا اه دعب ات دزاسی ‌گ م رداق ار سیون همانرب تیلباق Coroutine .دنک چییوس اهن ‌گ آ نیب ای و دیامن یدنبنامز ار اه یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  36. کی نتشاد رب هولع هک تسا نیا رد راک زمر

    Stack ره یارب ،همانرب یلک تیعضو یراده ‌گ گن یارب یرسارس Coroutine کی زین Stack ات دوشی ‌گ م هتخاس هناگادج Coroutine چییوس ماگنه هب ار دوخ یلعف تیعضو دناوتب .دنک هریخذ نآ رد ندش کی Coroutine کی هیبش رایسب Thread .تسا کی زا لماع متسیس یتقو Thread هب Thread چییوس یرگید ،دنک یم Thread تلاح هب ار یلبق Standby نآ تشگرب نآ هب هرابود یتقو ات دربی ‌گ م ورف Thread همادا هب رداق یهاگ هک تسا نیمه یارب .دشاب شیارجا ی Coroutine مان اب ار اه Green Thread هک ارچ دننزی ‌گ م ادص مه هیبش رایسب اهن ‌گ آ راتفر Thread .تساه Coroutine لثم ییاهن ‌گ ابز رد اه Python , Ruby, Lua, Perl, Scheme, Haskell, Erlang یاهن ‌گ ابز یلیخ و .دنوش رهاظ یتوافتم مسا اب تسا نکمم هک دنچره ،دنراد دوجو رگید رد لاثم یارب Python مان اب Greenlet رد ، Ruby مان اب Fiber رد ای و ، Erlang مان اب Lightweight Process یزاسه ‌گ دایپ رد ار ناشدوخ صاخ یه ‌گ قیلس اهن ‌گ ابز نیا زا مادک ره هتبلا .دنوش یم هتخانش Coroutine لامعا اه .دنا هدرک یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  37. Coroutine اب یساسا قرف نیدنچ اه Thread :دنراد اه 

    نیب ندرک چییوس و یدنبنامز لمع Thread .دوش یم ماجنا لماع متسیس طسوت و کیتاموتا تروص هب اه دروم رد اما Coroutine یارجا لرتنک و یدنبنامز یتسد تروص هب دیاب سیون همانرب دوخ اه Coroutine .دنک تیریدم ار اه  هک ییاجنآ زا Coroutine «کی» لخاد رد ابلاق ،دنتسه عباوت زا یعون عقاو ر ‌گ د اه Thread و دوشی ‌گ م ارجا اما .دننک هدافتسا هدنزادرپ یه ‌گ تسه نیدنچ زا دنتسین رداق رطاخ نیمه هب Thread یتحارب دنناوتی ‌گ م اه .دنوش شخپ فلتخم یاهه ‌گ تسه یور  Coroutine هیل رد اه ی‌گ متسیس لثم یسیون همانرب نابز دوخ یراک Runtime ای VM و ارجا نابز نآ اما .دنوش یم تیریدم Thread هیل رد اه ی‌گ .دوشی ‌گ م تیریدم و ارجا لماع متسیس یراک  نوچ Coroutine هیل رد و دنتسه یلومعم عباوت زا یعون اه ی‌گ ،دنوش یم ارجا یسیون همانرب نابز یراک زا رته ‌گ نیهب و رتعیرس ربارب اهدص مه دیاش و اهه ‌گ د اهن ‌گ آ نیب ندرک چییوس ای و هظفاح رد اهن ‌گ آ یارجا سپ Thread !تساه یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  38. کی goroutine نابز درف هب رصحنم یزاسه ‌گ دایپ عقاو

    ر ‌گ د Go زا Coroutine یلصا دحاو ناونع هب هک تساه Concurrency تایصوصخ اب همادا رد .تسا هدش یزاساج نابز نیا رد goroutine :دیوشی ‌گ م انشآ اه  یارجا goroutine هیل رد اه ی‌گ هیل رد و دریگی ‌گ من تروص لماع متسیس ی‌گ متسیس) نابز دوخ Runtime ( .دوش یم تیریدم یارجا یه ‌گ فیظو هتبلا ) grotoutine ه ‌گ یل رد اه ی‌گ یه ‌گ دهع هب لماع متسیس Thread (تساه  یدنبنامز goroutine متسیس طسوت کیتاموتا روط هب اه Runtime زا تیلوئسم نیا و دوشی ‌گ م ماجنا نابز .تسا هدش هتشادرب سیون همانرب شود یدنبنامز) ابیرقت Preemptive (  متسیس Runtime دناوتی ‌گ م goroutine نیدنچ یور ار اه Thread نوچ و دنک شخپ Thread زین اه فلتخم یاهه ‌گ تسه یور دنناوتی ‌گ م CPU یعقاو یارجا سپ ،دنوش شخپ Parallel .دتفای ‌گ م قافتا  متسیس Runtime رد Go لرتنک لوئسم طقف goroutine اب نیشام کی ینعی .تسا نیشام کی رد اه دنچ CPU کی ای ، CPU یاهش ‌گ زادرپ .یا هتسه دنچ Distributed یحارط سیونه ‌گ مانرب دوخ طسوت دیاب .دوش یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  39.  goroutine داجیا اب تسا نکمم هک یرتویپماک رد .دنتسه

    هنیهب و کبس رایسب اه 1000 ددع Thread ناوتی ‌گ م ،دنک شرک 1,000,000 ددع goroutine ضرفش ‌گ یپ زیاس !درک ارجا ار Stack ره یارب goroutine طقف 4kB !تسا  goroutine کی رد رگا .دنوش یمن کلب اه goroutine ی هدنوش کلب تایلمع I/O هیقب ،دریگب تروص goroutine رد اه Thread .دنهد یم همادا ناشدوخ یارجا هب یرگید  متسیس ،دشاب نکمم هک مه ییاج رد Runtime تایلمع زا دوخ هب دوخ Asynchronous یاهدادخر یارب I/O یسیونه ‌گ مانرب لدم اب تسین زاین امش !!!دنکیم هدافتسا Asynchronous !!دیوش ریگرد  goroutine یانبم رب اه مایپ لاقتنا متسیس ) Message Passing دنرداق هویش نیا هب و دننکی ‌گ م راک ( رد .دنشاب طابترا رد رگیدکی اب Go طسوت اهم ‌گ ایپ channel نیب یطابترا یاه لاناک نامه عقاو رد هک اه goroutine .دنوشی ‌گ م لدب و در دنتسه اه یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  40.  رد مایپ لاقتنا لمع ، ‌گ ضرفش ‌گ یپ

    تروص هب Go لکش هب Synchronous ینامز طقف مایپ ینعی .دتفای ‌گ م قافتا یم یسیونه ‌گ مانرب ندش رته ‌گ داس ثعاب هیضق نیا .دنشاب هدامآ ود ره هدنریگ و هدنتسرف هک دوشی ‌گ م هداتسرف لکش هب ار مایپ لاقتنا لمع دیناوتی ‌گ م موزل تروص رد هتبلا .دوش Asynchronous .دیهد ماجنا زین  Channel یاه Go نابز دوخ دننام Static Type کی رگا .دنتسه channel طقف تسا رارق هک دنک نییعت یاهه ‌گ داد int .تشذگ دهاوخن نآ زا یرگید یه ‌گ داد ،دنک لدب ودر ار یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  41. تهابش هجوتم ل ً ب امتحا goroutine یاه Go و

    Lightweight Process یاه Erlang ود نیا هتبلا .دیا هدش .دنراد رگیدکی اب یرایسب یاه ‌گ یاپ یاهت ‌گ وافت ،یرهاظ تهابش زا یادج goroutine لدم یانبم رب اه CSP هک یلاح رد دناه ‌گ دش یزاسه ‌گ دایپ Lightweight Process لدم یانبم رب اه Actor .دناه ‌گ درک ادیپ هعسوت لدم توافت نیرتمهم CSP لدم و Actor :تسا ریز حرش هب  لدم رد CSP لدم رد یلاح رد دنتسه مان یب ییارجا یاهدحاو Actor .دنشابی ‌گ م هسانش یاراد  لدم رد م ‌گ ایپ لاسرا CSP لکش هب Synchronous لدم رد هک یلاح رد دریگی ‌گ م ماجنا Actor لکش هب Asynchronous .دتفای ‌گ م قافتا  لدم رد مایپ لاسرا CSP کمک هب Channel لدم رد یلو دریگی ‌گ م ماجنا اه Actor هطساو نودب و میقتسم .تسا هک تشاد تقد دیاب نینچمه .دنراد ار ناشدوخ بیاعم و ایازم اهل ‌گ دم نیا زا مادک ره Go دننام Erlang نابز کی Functional یاهراتخاس زا و تسین Immutable رد رتشیب یمک سیون همانرب تسا مزل سپ ،دنک یمن هدافتسا یاهه ‌گ مانرب تخاس Concurrent !دشاب طاتحم یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  42. Rob Pike رد یشزومآ ویدیو کی رد Youtube مان هب

    Go Concurrency Patterns لاثم ی ییاناوت زا بلاج goroutine هک دوب هتشون یدک وا .داد ناشن ناگمه هب ار اه رازهدص goroutine .درکیم داجیا هظفاح رد ار ددع کی سپس int نیا نیب goroutine ره و دیخرچی ‌گ م تسده ‌گ بت ‌گ سد اه goroutine ددع نآ هب دحاو کی مه .درکی ‌گ م هفاضا یتقو نیاربانب .دوب هدشن لیاپماک همانرب هک دینک تقد Pike یه ‌گ مکد Run لیاپماک دیاب همانرب ،دادیم راشف ار طقف هسورپ نیا لک ....دشیم هداد تشگرب ارجا باوج و ،دشیم ارجا هظفاح رد ،دشیم کنیل ،دشیم هیناث کی هب !!!دیماجنا لوط یه ‌گ مانرب کی یارجا ل ً ب امتحا Hello World رد Java # ای C رتشیب تسا نکمم ،دشاب هدش لیاپماک مه لبق زا هک اد یخوش یه ‌گ بنج فرح نیا !دماجنا لوط هب هیناث کی زا تش .دنکی ‌گ من تباث ار یزیچ یملع رظن زا و (-; یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  43. Go یاهت ‌ه یلباق و Functional یاهن ‌گ ابز ریخا

    اهل ‌گ اس رد Functional .دناه ‌گ درک اپ و ت ‌گ سد دوخ یارب یبوخ تیبوبحم و دناه ‌گ دمآ نوریب هیاس زا لدم یفرعم زا دعب ا ً بصوصخم MapReduce یاهن ‌گ ابز زا یریگ ماهلا اب هک لگوگ فرط زا Functional هتفرگ لکش ندش جیار نینچمه و ،دوب CPU یارب بسانم یرتسب هب زاین و ییاه ‌گ تسه دنچ یاه Concurrency ندوب ورشیپ و یاهن ‌گ ابز Functional .تسا هدش فوطعم اهن ‌گ آ هب همه هجوت ،هنیمز نیا رد () عباوت map () و reduce یاهن ‌گ ابز یساسا عباوت زا Functional یاهن ‌گ ابز مامت رد ا ً ببیرقت و دنشابی ‌گ م Functional .دنراد روظح ریغ یاهن ‌گ ابز یتح Functional لثم Python و Ruby و Javascript یاهن ‌گ ابز وزج هکنیا اب مه … و Functional یاهن ‌گ ابز یاهی ‌گ گژیو زا یضعب ات هدماین ناشلد اما دنیآی ‌گ من باسح هب Functional .دننکن هیارا ار Go دننامه دیاب ،دشاب هداس هک مه ردقچره ینعی ؛تسا یمتسیس نابز کی C ار دوخ نییاپ حطس یاهه ‌گ بنج شیارگ ینابز نینچ هک تشاد راظتنا دیابن .دنک ظفح Functional ناحارط اما .دشاب هتشاد Go دناه ‌گ داد حیجرت ینشاچ مه یمک هک Functional .دننک هفاضا نابز هب یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  44. رد Go ، عباوت ) دنیآی ‌گ م باسح هب

    نابز لوا هجرد یاضعا وزج First-Class :ناوتی ‌گ م ینعی .(  ،درک لاسرا رگید عباوت هب ناموگرآ ناونع هب یلومعم ریداقم دننامه ار عبات کی  ،داد تشگرب رگید عبات زا یجورخ باوج ناونع هب ار عبات کی  ریغتم کی هب ار ددع کی هک یتروص نامه هب ؛داد تبسن ریغتم کی هب ار عبات کی int .میهدیم تبسن Go ) مانی ‌گ ب عباوت زا هدافتسا تیلباق یاراد نینچمه Anonymous functions عباوت .تسا ( Anonymous یعباوت دننام هک تسین یزاین ینعی ؛دنریگب رارق هدافتسا دروم و دنوش دیلوت «یاه ‌گ ظحل» تروص هب دنناوتی ‌گ م هک دنتسه اب راک ماگنه اصوصخ عباوت نیا .دیشاب هدرک فیرعت ناتیاهدک زا ییاج رد ار اهن ‌گ آ لبق زا یلومعم عباوت goroutine .دنوشی ‌گ م عقاو دیفم رایسب اه عباوت یاراد ینابز یتقو First-Class عباوت فیرعت ناکما و ،دشاب Anonymous ینعی ،دشاب هتشاد مه ار Closure راک .دنراد روظح نابز نآ رد زین اه Closure یناسیونه ‌گ مانرب تسا نکمم .تسا راوتسا وت رد وت عباوت یانبم رب اه یاهن ‌گ ابز اب رتمک هک Functional اب دنراد ییانشآ Closure هرابرد یمک تسا رتهب سپ .دنشابن انشآ اه Closure ...میهد حیضوت اه یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  45. هرابرد حیضوت Closure : اه رد .دنوری ‌گ م نیب

    زا عبات نآ یارجا مامتا زا سپ دنوشی ‌گ م فیرعت عبات کی لخاد هک ییاهدلیف لومعم تلاح هب اهن ‌گ آ رد عباوت هک ییاهن ‌گ ابز First-Class یتروص نامه هب ؛دشاب رگید عبات کی دناوتی ‌گ م عبات کی یجورخ ،دنتسه ددع کی تسا نکمم هک int .دوش هتفرگ رظن رد یجورخ ناونع هب مان هب میراد یعبات مینک ضرف Outer مسا هب عباتریز کی هک Inner املسم .دهدی ‌گ م تشگرب یجورخ ناونع هب ار عبات هک یتقو Outer عبات Inner عبات یارجا ،دهدی ‌گ م تشگرب ار Outer نینچ رد .ددرگی ‌گ م دادملق هدش مامت عبات تاعلطا و اهدلیف مامت دیاب یتلاح Outer .دورب نیب زا عبات رگا اما Inner عبات یاهدلیف زا ،هدش هداد تشگرب یجورخ ناونع هب هک Outer نآ ،دشاب هدرک هدافتسا عبات ندوب هدنز نامز ات اهدلیف Inner عبات نیاربانب !تفر دنهاوخن نیب زا Inner راک مامتا زا دعب یتح دناوتی ‌گ م عبات Outer دننام یعبات .دنک هدافتسا نآ یاهدلیف زا مه Inner ،شدوخ یلخاد یه ‌گ دافتسا یارب دناوتی ‌گ م هک ،دزاس هتسباو دوخ هب ار جراخ زا ییاهه ‌گ داد Closure .دوشی ‌گ م هدیمان رتهب کرد Closure لثم ییاه ‌گ ناخباتک اب رگا هک دینادب اما ؛دراد زاین نیرمت و نامز یمک هب اه jQuery راک زا دیوش هجوتم ناتدوخ هکنیا نودب راب اهه ‌گ د ل ً ب امتحا ،دینکی ‌گ م Closure !دیاه ‌گ درک هدافتسا اه یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  46. اهرازبا ،تادنتسم ،درادناتسا هناخباتک درادناتسا یه ‌گ ناخباتک Go زا

    .تسا یسیونه ‌گ مانرب یاهن ‌گ ابز مامت نیب رد دوجوم یاهه ‌گ ناخباتک نیرتع ‌گ ماج زا یکی نوچ یفرط Go .دراد رارق یاه ‌گ چراپکی و زیمت رایسب تلاح رد ه ‌گ ناخباتک یحارط ،تسا روهظون نابز کی Package :یزاس هدرشف و ویشرآ یارب ییاه tar, zip, bzip2, flate, gzip, lzw, zlib, . . . . Package :شه تایلمع و یراگنزمر یارب ییاه aes, cipher, des, dsa, rc4, rsa, md5, sha1, sha256, sha512, tls, x509, . . . . Package :فلتخم اهل ‌گ یاف اب راک یارب ییاه base32, base64, binary, csv, gob, hex, pem, json, xml, . . . . Package :یدعب ود کیفارگ اب راک یارب ییاه color, draw, gif, jpeg, png, . . . . Package :هکبش ثحابم اب راک یارب ییاه http, cgi, fcgi, mail, url, jsonrpc, . . . . یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  47. نابز یمتسیس تاذ Go مامت .دوشی ‌گ م صخشم اجنیا

    رد Package رد لاب یاه Go نتشاد یارب .دناه ‌گ دش هتشون نیا زا یلیخ Package نابز رد هدش هتشون یاهه ‌گ ناخباتک هب لسوتم دیاب ،رگید یاهن ‌گ ابز رد اه C .میدشی ‌گ م یبوخ Go هب یزاین رگید نییاپ حطس لامعا یارب هک تسا نیا رد C تسین . Go نامه عقاو ر ‌گ د C زا ،تسا نردم یزور هک یناسک نامه فرط C و Unix !دندوب هدرک یفرعم امش هب ار یه ‌گ مه Package اب دینک هارمه ار لاب یاه Package متسیس طیحم ،خیرات و نامز ،یضایر تایلمع یارب ییاه و شزادرپ ،اهه ‌گ تشر ،یجورخ و یدورو ،هداد هاگیاپ ،لماع Parse . . . . و نتم ندرک کی اب درادناتسا یه ‌گ ناخباتک ،نمض رد HTTP Server اب ار نآ ناوتی ‌گ م یتحار هب هک تسا هارمه یلخاد Nginx ای Node.js نیمه زا مه دش هراشا اهن ‌گ آ هب هتشون نیا یادتبا رد هک ییاهت ‌گ یاس رثکا ،عقاو رد .درک هسیاقم Server .دننکی ‌گ م هدافتسا ناشن ‌گ اربراک هب یناسر تامدخ یارب یلخاد درادناتسا یه ‌گ ناخباتک رد نینچمه Go متسیس کی Template Engine امش یارب ار بو یسیونه ‌گ مانرب ات هدش هیارا رد بو یسیونه ‌گ مانرب یارب هک دیاه ‌گ دش هجوتم ل ً ب امتحا ،باسح نیا اب .دنک رتن ‌گ اسآ Go هب ینادنچ زاین ، درادناتسا یه ‌گ ناخباتک .تشاد دیهاوخن رگید یاهن ‌گ ابز رد موسرم یاهک ‌گ روم ‌گ یرف Go ایهم ناتیارب لبق زا ار زیچ همه !تسا هدرک یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  48. ،تادنتسم رظن زا Go :یارب یبوخ تادنتسم نابز تیاس رد

    .دراد رارق یبوخ رایسب هاگیاج رد • ،نابز یریگدای ع ورش • ،نابز رد دوجوم یاهرازبا هرابرد حیضوت • ،نآ یاهت ‌گ یلباق اب راک یگنوگچ و نابز درکلمع حیضوت • ،یشزومآ یاه ویدیو و اهدیلسا • . . . . مامت نینچمه .درک دیهاوخ ادیپ Package یزاس تدنتسم لماک روط هب ناشی ‌گ اهرتماراپ و عباوت کت کت و اه .دناه ‌گ دش سیونه ‌گ مانرب کی ناونع هب هک) دراد رارق یبولطم دح رد امش یسیلگنا نابز رگا دیاب رد (!!!دشاب نینچنیا مه یریگدای هنیمز Go ارچ ؛تشاد دیهاوخن یصاخ عبنم و باتک چیه هب زاین و دش دیهاوخن هجاوم یلکشم چیه اب .تسا بسانم و لماک یفاک یه ‌گ زادنا هب نابز تیاس رد دوجوم تادنتسم هک یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  49. اما ،درذگی ‌گ من نابز رادیاپ یه ‌گ خسن راشتنا

    زا یدایز نامز هکنیا اب Go :دراد رایتخا رد یلماک ا ً بتبسن یبناج یاهرازبا رازبا go بصن و لیاپماک راک هک Package هک دراد ار نیا تیلباق یتح رازبا نیا .تسا هدرک ناسآ ار Package اه لثم ییاهت ‌گ یاس زا کیتاموتا تروص هب ار github !دیامن بصن و تفایرد رازبا godoc تیاس تسا رداق golang.org یلصا تیاس !دنک ارجا امش رتویپماک رد یلحم تروص هب ار golang.org نینچمه .تسارجا لاح رد رازبا نیمه کمک هب مه godoc هب طوبرم تادنتسم دناوتی ‌گ م Package .دهد شیامن لانیمرت رد ا ً بمیقتسم ار اهن ‌گ آ عباوت و اه رازبا gofmt لیاتسا دنناوتی ‌گ م میت یاضعا زا مادک ره لاثم یارب .دنکی ‌گ م تیریدم ار امش یسیوندک لیاتسا زا تیاهن رد اما ،دنشاب هتشاد ار ناشدوخ یسیوندک gofmt هدافتسا هژورپ یاهدک لیاتسا ندرک هچراپکی یارب .دننک رازبا gocode و اهروتیدا هب کمک یارب مه IDE دوجوم تاعلطا امش یاهدک یسررب اب رازبا نیا .هدش یحارط اه و اهروتیدا رایتخا رد و هدرک جارختسا ار اهن ‌گ آ رد IDE یارب تاعلطا نیا زا دنناوتی ‌گ م مه اهن ‌گ آ .دراذگی ‌گ م اه تیلباق یزاسه ‌گ دایپ Autocompletion .دنیامن هدافتسا یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  50. هناتخبشوخ .تسا نتم رگشیاریو سیونه ‌گ مانرب ره راک رازبا

    نیرتمهم Go رادروخرب هنیمز نیا رد یبوخ ینابیتشپ زا ،کبس و هداس یاهرگشیاریو اب هطبار رد .تسا Go زا Kate و ++ Notepad و BBEdit و Gedit تروص هب … و .دنکی ‌گ م ینابیتشپ یمسر ،دننکی ‌گ م یسیوندک یاه ‌گ فرح یاهرگشاریو اب هک یناسک یارب Go یاهرگشاریو یارب ار یلماک و یمسر ینابیتشپ بیقر یب Vim و Emacs ناگدنزاس میت هک ییاجنآ زا عقاو ر ‌گ د .تسا هدرک هئارا Go زین نآ یربراک یه ‌گ عماج رثکا و .تسا رادروخرب ییلاب رایسب تیولوا زا ود نیا زا ینابیتشپ ،دننکی ‌گ م یسیوندک اهرازبا نیمه اب رد Go دوجو هب یصاخ زاین یرلیاپماک یاهن ‌گ ابز رگید دننامه IDE اب راک هک یناسک یارب اما ؛درک دیهاوخن سح IDE ،دنهدی ‌گ م حیجرت ار اه Go یارب یبسانم ینابیتشپ زا IDE یاه Eclipse و IntelliJ .تسا رادروخرب یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  51. » Go ] زا هک یروطنومه و ،هیباذج نابز هتشون

    نیا ،نیشی ‌گ م هجوتم [ Go و Rust اب تباقر لاح رد ام و نراد هناگادج ل ً ب ماک فده ود Go هک ینابز .میتسین Rob Pike یور یدایز ریثأت هتخاس Rust .هتشاد « pcwalton نابز یسیونه ‌گ مانرب میت یاضعا زا Rust هدش هراشا نآ هب لاب نتم رد هک ییاه ‌گ تشون طوبرم یصخش گلبو یاهت ‌گ سپ زا یکی هب Rob Pike هک تسا Pike و یگداس یلیلد هچ هب هداد حیضوت نآ رد ندوب لامینیم Go رد ار رگید یاهن ‌گ ابز رد جیار یاهت ‌گ یلباق زا یلیخ ارچ و هدوب مهم شارب Go .هدادن رارق http://commandcenter.blogspot.com.com/2012/06/less-is-exponentially-more.html یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  52. نابز یلصا تیلباق ،هتشادن یاهت ‌ه یلباق Go ناسیونه ‌گ

    مانرب ع امتجا رد Go :دراد دوجو یبلاج لثملاب ‌گ رض تیلباق نیرتمهم » Go « !درادن ار اهت ‌گ یلباق زا یلیخ هک تسا نیا ناحارط Go رد اهن ‌گ آ عضوم .دناه ‌گ دادن رارق نابز نیا رد ار رگید یاهن ‌گ ابز رد دوجوم یاهت ‌گ یلباق زا یدایز دادعت یه ‌گ فسلف اهن ‌گ آ !دنرادن فراعت یسک اب و تسا لاکیدار رایسب هرابن ‌گ یا C دنراد دیکأت تدش هب و دناه ‌گ تفرگ شیپ رد ار هب ار یزیچ ،دشابن زاین دروم «اعقاو» تیلباق کی هک ینامز ات Go .درک دنهاوخن هفاضا زا هک یدیدج یه ‌گ خسن ره رد ،رگید یاهن ‌گ ابز دننام هک دیشاب هتشادن راظتنا ینعی نیا Go اب دوشی ‌گ م رشتنم یایند زا دارفا نیا .دیوش هجاوم دیدج یاهت ‌گ یلباق زا یهوبنا Unix و C ؟دیتشاد اهن ‌گ آ زا یرگید راظتنا ایآ ،دناه ‌گ دمآ ناحارط Go نآ هب هام دنچ زا ره هک ییاهت ‌گ یلباق هن دشاب نابز دوخ هب دیاب ناسیونه ‌گ مانرب زکرمت هک دندقتعم !دوشی ‌گ م هفاضا هک تسا رکذ هب مزل رد یدایز یاهی ‌گ زاسه ‌گ نیهب زور ره یتخاسریز رظن زا Go .دریگی ‌گ م تروص هک دشاب ناتدای Go نابز کی Native نابز یاهرلیاپماک یتح .تسا C تشذگ زا دعب ۴۰ لاح رد زونه لاس !دنتسه هعسوت یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  53. رد هک ییاهت ‌ها یلباق زا یتسیل Go :دنرادن دوجو

    ناگه ‌گ دنزاس هک دینک تقد Go زا دصق ناشراک یارب مه یبسانم لیلد و دنا هدرکن هفاضا نابز هب ار اهت ‌گ یلباق ن ‌گ یا .دنراد ای ل ً ب وصا رد یسیونه ‌گ مانرب هویش هکنیا ای دناه ‌گ درک هئارا ار یرتهب و رته ‌گ داس یاهش ‌گ ور اهن ‌گ آ یاج هب Go هب :درادن زاین اهت ‌گ یلباق نیا هب هک تسا یقیرط  اهس ‌گ لک  تثارو  ) اه برخم و اهه ‌گ دنزاس Constructors & Destructors (  ) اهرگه ‌گ راشا تابساحم Pointer Arithmetic (  ع اجرا this  ) اهت ‌گ لپمت Templates (  ) اهانثتسا Exceptions (  ) اهدتم یراذگرابرس Method Overloading (  ) رگلمع یراذگرابرس Operator Overloading (  ....رگید تشرد و زیر ت ‌گ یلباق نیدنچ و یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  54. یاهی ‌گ بوخ دروم رد طقف نلا ات Go یفعض

    هطقن چیه نابز کی هک تسا نکمم ا ً بعقاو ایآ اما ؛میدرک تبحص ...ریخ ا ً بملسم ؟دشاب هتشادن یاهف ‌گ عض هطقن Go ل ً ب ماک نابز ناگه ‌گ دنزاس هک دنتسه ییاهف ‌گ عض هطقن لوا هیواز رد .تسا یسررب لباق هیواز ود زا هک دنتسه ییاهف ‌گ عض هطقن مود هیواز رد .دوش راک اهن ‌گ آ یور رتشیب دیاب هک دنراد لوبق و هتشاد یهاگآ اهن ‌گ آ هب یربراک یه ‌گ عماج رد Go زا ترجاهم دصق هک یناسیونه ‌گ مانرب اما !دوشی ‌گ م هتسیرگن نآ هب توق طاقن ناونع هب .دننک ادیپ لکشم اهن ‌گ آ اب تسا نکمم ،دنراد ار رگید یاهن ‌گ ابز تعرس توافت لوا صقن Go نابز اب C !تسا Go متسیس نتشاد تلع هب Runtime متسیس و Garbage Collector اب یربارب ییاناوت تقوچ ‌گ یه یروئت تروص هب لقادح ، C ارچ هکنیا .تشاد دهاوخن ار C هزادنا نیا ات .دراد ییاه ‌گ ناگادج ثحب هب زاین دوخ ،تسا عیرس رلیاپماک رضاح لاح رد Go هک ینعم نیا هب !«عیرس» یاهدک هن ،دنک دیلوت «بسانم» یاهدک تسا رداق طقف رلیاپماک Go دیلوت هک دینک هجوت هتبلا .دهدی ‌گ من ماجنا ییاهن یاهدک یور ار یصاخ ی ‌گ زاسه ‌گ نیهب یلعف یه ‌گ خسن رد نابز کی یارب فلتخم مرفتلپ نیدنچ یور نیشام دک Native دننام Go هنیمز نیا رد .تسین یتحار راک ل ً ب صا .داد نابز یاهه ‌گ دنهده ‌گ عسوت هب یرتشیب تصرف و درک ربص یمک دیاب یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  55. هک دینکن شومارف Go میهاوخب رگا .دوشی ‌گ م بوسحم

    عیرس نابز کی مه رضاح لاح رد Go دننام ییاهن ‌گ ابز اب ار Python ای Ruby ای PHP هک تسا هدرک تباث هبرجت ،مینک هسیاقم اهن ‌گ آ لاثما ای و Go نیب 20 ات 50 ربارب !دنکی ‌گ م لمع رتع ‌گ یرس هدش هدید هک دراد دوجو یدایز دراوم هتبلا Go نئمطم ،یتلاح نینچ رد .دنک لمع رتدنک اهن ‌گ ابز نیا تبسن هب یاهدک طسوت هنحص تشپ رد تایلمع نآ هک دیشاب C لکشم لح یارب ییاهن ‌گ ابز نینچ رد .تسا هدش ارجا رد ار اهل ‌گ وژام زا یرایسب ،تعرس C .دنهدی ‌گ م هعسوت میهاوخب رگا Go لثم ییاهن ‌گ ابز اب ار Java # ای C .مییامن حرطم ار یرظن تیعطق اب میناوتی ‌گ من ،مینک هسیاقم Microsoft و Oracle نامه) SUN یه ‌گ عسوت یارب ار دوخ هیامرس زا رلد اهن ‌گ ویلیم و تقو زا یدایز نازیم (قباس .دنا هدرک فرص نابز ود نیا یزاجم نیشام یتح Java یاهم ‌گ رفتلپ نیرتع ‌گ یرس زا یکی عقاو ر ‌گ د ،دوشی ‌گ م یفرعم دنک نابز کی ناونع هب یخوش هب هشیمه هک دراوم زا یلیخ رد .تسا یسیونه ‌گ مانرب یایند رد دوجوم Go مه دراوم زا یلیخ رد و ،هدوب مرفتلپ ود نیا زا رتعیرس زا هک تفگ ناوتی ‌گ م تأرج اب اما .درک رظن زاربا اهن ‌گ آ تعرس هرابرد قلطم تروص هب ناوتی ‌گ من ا ً بعقاو .اهن ‌گ آ زا رتدنک ،هظفاح یفرصم نازیم رظن Go ات یتح تسا نکمم هک هدرک تباث 10 !!!دنک لمع اهم ‌گ رفتلپ نیا زا رته ‌گ نیهب ربارب یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  56. هک تسا نیا مهم بلطم Go لامعا نآ رد یدایز

    یاه یزاسه ‌گ نیهب زور ره ا ً ببیرقت و تسا هعسوت لاح رد تدش هب هک لاح .دوشی ‌گ م Go ع ورش نابز یزاسه ‌گ نیهب هنیمز رد ار دوخ راک هعسوت میت هزات ،تسا هدیسر تابث تیعضو هب لاثم یارب .هدرک ، Pike یاهدک ا ً بصوصخم) اهدک زا یضعب هک هدرک ملعا Concurrent نابز یه ‌گ دنیآ یه ‌گ خسن رد ( ) Go1.1 ات ( ۵۰ !تشاد دنهاوخ یرتهب درکل ‌گ مع دصرد یکی هک ،دشاب راذگ ریثأت ه ‌گ مانرب تعرس رب تسا نکمم لیاسم زا یلیخ .تسین قلطم رایعم کی تعرس ،یفرط زا باختنا ماگنه هب مه امش .دنکی ‌گ م باختنا هک تسا ییاهم ‌گ تیروگلا و اهش ‌گ ور و سیونه ‌گ مانرب دوخ اهن ‌گ آ نیرتمهم زا Go .دینکن ریگرد تعرس رصنع اب ار دوخ نهذ دایز ،دوخ یه ‌گ دنیآ نابز ناونع هب Go تعرس اب تسا ینابز رایسب ی میت هب و تشاد ربص یمک دیاب طقف ؛تسا هنیمز نیا رد تفرشیپ لاح رد زین زور هب زور هک بسانم Go تصرف .دنهد ماجنا ار ناشراک ات داد یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  57. متسیس ،رگید صقن Garbage Collector .تسا Go یرامعم یارب ادتبا

    رد x64 ) دوب هدش یحارط ۶۴ لیلد .(تیب یاهم ‌گ رفتلپ نوچ هک دوب نیا مه نآ ۳۲ یاهم ‌گ رفتلپ اب ندش نیزگیاج لاح رد مک مک یتیب ۶۴ میت ،دنتسه یتیب یاهم ‌گ رفتلپ هب ار دوخ هجوت مامت هعسوت ۶۴ .دوب هدرک فوطعم یتیب متسیس رضاح رد هنافساتم Garbage Collector یرامعم یور x86 ) تسا وربور ینف صقن کی اب ۳۲ هک (تیب رد یدودعم دراوم یرامعم یارب طقف لکشم نیا هتبلا !دوش همانرب ندرک شرک ثعاب دناوتی ‌گ م x86 رگا و تسا یرامعم یور ار اهه ‌گ مانرب x64 نامز ات تسا هدش هیصوت ور نیمه زا .دش دیهاوخن هجاوم یلکشم اب دینک ارجا یاهم ‌گ تسیس یور طقف ار دوخ یاهه ‌گ مانرب ،لکشم نیا ندرک فرطرب ۶۴ .دینک ارجا یتیب متسیس رظاح لاح رد هک تسا نیا یدعب یه ‌گ تکن Runtime یاهم ‌گ رفتلپ یور ۶۴ زا هدافتسا ییاناوت طقف ،یتیب ۱۶ دراد ار هظفاح تیاباگیگ (یلاوتم روط هب) هب هتسویپ تروص هب هک ییاهه ‌گ مانرب دنا ردان یلیخ . ۱۶ هظفاح تیاباگیگ دنشاب هتشاد زاین اما ، نیا ات دینک میسقت یرتک ‌گ چوک یاهت ‌گ مسق هب ار دوخ یه ‌گ مانرب دیاب ،زاین تروص رد .دینزب رود ار تیدودحم یه ‌گ عسوت نزخم رد Go ه ‌گ یحلصا ، ه لکشم عفر یارب ییا GC یاهم ‌گ تسیس رد ۳۲ نازیم و ،دراد دوجو یتیب متسیس یارب هظفاح شرتسگ Runtime زین هب ۱۲۸ نیا دایز رایسب لامتحا هب .تسا هدش هداد شیازفا تیاباگیگ یه ‌گ خسن رد اه هیحلصا ۱.۱ نابز .تفرگ دنهاوخ رارق یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  58. :دینک تقد نابز نیا نیا مسا هب یمک !!تسا زاس

    لکشم یناریا ناسیونه ‌گ مانرب یارب اصوصخ یدعب صقن Go (-: !!!!دروآ نابز هب ار نآ مسا تحار یلیخ ناوتن دیاش و !!تسا زادنا طلغ یمک نابز نیا مسا تسا نیا هلاسم .دنراد لکشم نابز نیا مان اب یاه ‌گ نوگ هب زین اهروشک رگید ناسیونه ‌گ مانرب ،هنافساتم ای هناتخبشوخ یه ‌گ ملک هک Go مان ندرک وجتسج هک یلکش هب دراد یسیلگنا نابز رد یدایز یناعم Go وجتسج یاهروتوم رد .تسا راوشد رایسب نابز یه ‌گ رابرد تاعلطا ندرک ادیپ ور نیمه زا و هتشادن هارمه هب ار هاوخلد یه ‌گ جیتن ییاج رد رگا هک دراد دوجو ینوناق ،یجراخ هچ و یناریا هچ ،نابز نیا ناسیونه ‌گ مانرب یه ‌گ عماج رد ،لیلد نیمه هب رتهب ،دوشی ‌گ م یهارمگ داجیا ثعاب نآ یمسر مان هک دیدادی ‌گ م لامتحا و دیتشاد ار نابز نیا یه ‌گ رابرد تبحص دصق یه ‌گ ژاو زا تسا Golang .دینک هدافتسا نابز مان ناونع هب هک یلکش نامه هب) Erlang (دینکی ‌گ م ظفلت ار یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  59. یریگدای اب هطبار رد یدعب صقن Go هک دینک تقد

    .تسا Go نامه اب تلاح نیا رد .تسا یمتسیس نابز کی نابز رد هک دیوشی ‌گ م وربور یتیعضو C اب یسیونه ‌گ مانرب ینعی .دش دیهاوخ وربور نآ اب زین Go یلوبق لباق حطس هب .دراد زاین یرتویپماک مولع رد صصخت و هبرجت زا لثم ییاهن ‌گ ابز رد Go ای C راک زرط اب ل ً ب ماک هک ینامز ات ، CPU ، هظفاح ، I/O هب طوبرم نییاپ حطس ثحابم و ، ار نآ نابز یگداس لیلد هب دیناوتب دیاش .دینک رارقرب طابترا نابز اب یتحارب دیناوتی ‌گ من ،دیشابن انشآ مادکره سیونه ‌گ مانرب کی هک یلاح رد .تشاد دهاوخ رارق ینییاپ دح رد هشیمه نابز زا امش یهاگآ اما ،دیریگب دای یتحارب Ruby زا ات دشاب هتشادن زاین تقوچ ‌گ یه تسا نکمم Register !دروایب رد رس اه یاهت ‌گ یلباق زا هدافتسا یارب ا ً بصوصخ Concurrency تسین روطنیا .دیشاب رادروخرب یبسانم ی هنیمزش ‌گ یپ زا دیاب کی یور امش یه ‌گ مانرب هک دینک ادیپ نانیمطا ،نابز نیا رد یسیونه ‌گ مانرب فرص هب هک CPU ییاه ‌گ تسه هدزناش یسیونه ‌گ مانرب !دش دهاوخ ارجا رتع ‌گ یرس ربارب هدزناش Concurrent .تسا یفاک یه ‌گ برجت و دایز یه ‌گ علاطم دنمزاین Go !دنکی ‌گ من هزجعم امش یارب یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  60. ناربراک ع امتجا هب هک دنتسه مه یرگید ثحابم Go

    هک دراد دوجو ع امتجا نیا رد یتارکفت .دنوشی ‌گ م طوبرم .دشاب بیجع یمک دنیآی ‌گ م رگید یاهن ‌گ ابز زا هک یناسیونه ‌گ مانرب یارب تسا نکمم یه ‌گ عسوت میت ،لاثم یارب Go زا ،هداس یاهه ‌گ ناخباتک زا هدافتسا هک دناه ‌گ درک ناونع هشیمه نآ یربراک ع امتجا و هدیچیپ رد یلصا لماوع زا یکی اهک ‌گ روم ‌گ یرف هکنیا و ؛تسا رادروخرب اهک ‌گ‌گ روم ‌گ یرف هب تبسن یرتلاب رایسب تیولوا هکنیا ای و !تسا رتهب دینک هدافتسا اهن ‌گ آ زا رتمک هچ ره و دنشابی ‌گ م هژورپ ندش Andrew Gerrand زا یکی هکنیا زا ردقچ دنکی ‌گ م ملعا دوخ رتیوت تناکا رد هعسوت میت یلصا یاضعا Go لثم ییاه کروم ‌گ یرف Django ای Rails !!!دشاب هتشادن مه تقوچ ‌گ یه هک تسا راودیما و تسا لاحشوخ درادن یمک یتارظن نینچ دناه ‌گ درک تداع اهک ‌گ روم ‌گ یرف اب راک هب هک رگید یاهن ‌گ ابز ناسیونه ‌گ مانرب زا یلیخ یارب ا ً بملسم رد !تسا بیرغ و بیجع Go یه ‌گ فسلف Unix ناشدوخ دارفا نیا نوچ ،درادن مه یبجعت یاج .تسا امرف مکح قلاخ Unix !دنتسه هفسلف رد Unix زاین تروص رد ؛دنهدی ‌گ م ماجنا یصخشم راک مادک ره هک درک هدافتسا یکچوک یاهرازبا زا دیاب ناونع هب اه کروم ‌گ یرف .درک داجیا ار یرتگرزب رازبا ،کچوک یاهت ‌گ مسق نیا نداد رارق مه رانک اب ناوتی ‌گ م یه ‌گ فسلف فلاخم ههبج رد ل ً ب مع ،دننکی ‌گ م هیصوت ار ه ‌گ یزجت لباقریغ و هچراپکی یاهرازبا هک یمتسیس Unix رارق .دنراد یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  61. ارچ هک دنوشی ‌گ من هجوتم دراو هزات ناسیونه ‌گ

    مانرب زا یلیخ Go اب راک Type نیزگیاج ار عباوت و Class اهدتم و اه نابز نیا ارچ ...هدرک فذح نابز زا ار تثارو ارچ ...هدرک Exception ینابیتشپ عباوت یراذگرابرس زا ارچ ...درادن ...رگید لاؤس اهه ‌گ د و ...دنکی ‌گ من اب هک یتدم زا دعب اهن ‌گ آ ‌گ رثکا ا ً ببیرقت اما Go دننام مه اهن ‌گ آ ‌گ نیشیپ نابز شاک یا هک دناه ‌گ درک ناونع ،دناه ‌گ درک راک Go رد دیابن ناسیونه ‌گ مانرب !دوب هدش یزاسه ‌گ دایپ Go یه ‌گ ویش هب Java یه ‌گ ویش هب دیابن ...دننک یسیوندک Python ...یرگید نابز ره ای و ...دننک یسیوندک رد Go یه ‌ها ویش هب دیاب Go !درک یسیونه ‌ها مانرب یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  62. ؟منک عورش اجک زا تیاس هب میقتسم golang.org یارب .دییامن

    بصن و دولناد ار دوخ لماع متسیس هب طوبرم جیکپ ادتبا .دیورب تمسق هب مه تادنتسم ندناوخ Documents یارب .تسا هدش یدنبه ‌گ تسد بلاج رایسب تمسق نیا .دیورب تیاس اب ییانشآ Go تیاعر هک دینک تقد .دینک هعلاطم نییاپ هب لاب زا ار هحفص نیا یاهک ‌گ نیل بیترت هب تسا یفاک .درک دهاوخ کمک امش هب رایسب اهک ‌گ نیل ندناوخ رد بیترت :دینک ادیپ ع لطا دتفای ‌گ م قافتا نآ رد هنازور هک یرابخا و ثحب زا ات دیوش نابز یربراک هورگ وضع ا ً بمتح https://groups.google.com/group/golang-nuts هب صوصخم گت هک دورن ناتدای ،نمض رد golang :دینک لابند رتیوت رد ار https://twitter.com/#!/search/realtime/%23golang هب طوبرم گت نینچمه و golang :سلپل ‌گ گوگ رد https://plus.google.com/s/%23golang یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  63. :دینزب رس نابز یمسر گلبو هب مه یهاگ دنچ زا

    ره blog.golang.org/ هاگرد هب طوبرم بلاطم golang تیاس رد reddit :دیربن دای زا مه ار reddit.com/r/golang/ یسیون همانرب نابز یفرعم Go – یرداق اضرریما
  64. .میاه ‌گ دیسر هتشون نیا نایاپ هب ،بوخ نابز یریگدای

    یارب ار یبسانم یه ‌گ نیمزش ‌گ یپ مشاب هتسناوت هک مراودیما Go .منک مهارف .دیتفرگ رظن رد هتشون نیا ندناوخ یارب هک یتقو زا رکشت اب «یرداق اضرریما» یسیون همانرب نابز یفرعم Go – یرداق اضرریما