כל מה שחשוב לדעת על שפת התכנות GO

היא פשוטה ולכן גם מאוד פופולארית. הנה כל מה שצריך לדעת על העבר, ההווה והעתיד של שפת התכנות GO

מאת סרגיי לנצמן

 

ב-40 השנים האחרונות הופיעו הרבה שפות תכנות. השפות הנפוצות ביותר כיום בעולם הפיתוח, הן: C#, php, java , C/C++ , python , js ,ruby. למרות שעדיין ממשיכים לכתוב שפות תכנות חדשות, כתיבת שפת תכנות טובה עדיין מהווה משימה קשה ומפרכת. נכון לעכשיו, כל שנתיים מגיחה לה שפת תכנות חדשה, אך רוב השפות החדשות לא עוברות את הגרסה הראשונה ואף נשכחות בעולם ה-github.
ישנן מספר סיבות לכך ששפות התכנות מופיעות בשנים האחרונות כפטריות אחרי הגשם.

בשנים האחרונות, השוק עבר לעולם המובייל וה-IoT. מה שפעם היה יכול היה לשרת משתמשים שעושים כמה קליקים בדקה, הוחלף היום בדיבור (machine to machine (M2M, טכנולוגיה שמאפשרת למכשירים אלקטרוניים לדבר אחד עם השני. שזה כבר לא כמה קליקים בדקה אלא אלפי ״קליקים״ בשניות.

בנוסף מערכות המידע הפכו מסובכות יותר, כשפעם המערכות התבקשו לעשות תהליכים פשוטים כמו "תקבל בקשה","תמצא תשובה בסיס הנתונים" ,"ותחזיר תשובה ללקוח". כיום התהליכים יותר מורכבים בגלל שהמערכות פועלות בסביבת ענן, ויש התמקדות ושימוש ב-microservices ו-machine learning.
בחברות גדולות או בקהילות open source קיים קושי בהבנת קוד בפרויקטים גדולים עם הרבה משתתפים, הקוד הופך להיות מסורבל ולא קריא.

כמו כן, מהירות המעבד לא השתנתה משמעותית כבר כמעט 13 שנה, אולם במהלך אותן שנים הטכנולוגיה המשיכה לצמוח באופן אקספוננציאלי, נוצר רושם כי החומרה תקועה מאחור. לכן עולה השאלה "איך בכל זאת תוכנות או משחקים דורשים כיום יותר עוצמה ומהירות, ועדיין המחשב העכשווי מצליח לעמוד בקצב?", התשובה טמונה בעבודה המקבילית של המעבד ולא במהירות המעבד. כיום שפות התכנות השונות מוגבלות מבחינת עבודה עם מספר מרובה של ליבות, בכדי לעבוד ביעילות ובמהירות נדרשת שפת תכנות אשר תוכל לעבוד בקלות עם כמה ליבות במקביל ולמצות את יכולות החומרה. (להסבר נוסף ניתן להיכנס לכאן).

שינויים במאפייני המעבדים במהלך עשרות השנים האחרונות

אז מתי ואיך שפת Go נולדה?

בשנת 2007 גוגל זיהתה כי ישנה מגמה מסוימת של שינויים, והגיעה למסקנה כי הכלים שנמצאים ברשותם היום יהיו טובים לתקופה קצרה בלבד, ולא יתאימו לטווח הארוך עקב השינוי המתמיד במאפייני השוק. לכן, החליטו בגוגל לארגן צוות אנשים בעלי ניסיון וידע רב בתכנון שפות תכנות. בראש הצוות עמדו 3 אנשים: Robert Griesemer, Ken Thompson, Rob Pike.

לשלושתם הייתה נגיעה בהרבה תחומים שמהווים בסיס לעולם התוכנה הנוכחי:

Ken Thompson עבד יחד עם Dennis Ritchie על unix, שפת B וכן שפת C.

Robert Griesemer עבד על מנוע של JS V8 וקומפיילר Java HotSpot.

Rob Pike עבד על שפת תכנות Limbo, מערכת הפעלה plan 9, והיה אחד מיוצרי UTF-8 (יוצר שני הוא Ken Thompson). כמו כן, היה מיצרני הממשק הגרפי הראשונים למערכות unix.

צוות זה היה צריך לפתח שפת תכנות חדשה שתהיה רלוונטית בטווח הארוך, מטרתם הייתה לפתח שפה חלופית לשפת ++C/C שעדיין שומרת על רלוונטיות. כעבור שנתיים של עבודה מאומצת, בשנת 2009 הקבוצה הוציאה גרסה ראשונה של שפת Go. השפה נכתבה בפלטפורמת open source (קוד פתוח), ובכך בעצם אפשרו לכל אחד לעזור, ולתרום בתהליך.

תהליך הפיתוח של Go הינו מסודר וקבוע, ועל כן גרסה חדשה יוצאת כל חצי שנה.

commits ראשונים של Go כסמל להמשכיות שפת B ו-C

שפת Go בשימוש בחברות גדולות, בפרויקטי קוד פתוח

שפת Go היא שפה יעילה, פשוטה ומהירה לפיתוח, לכן חברות גדולות בעולם זיהו את הפוטנציאל שלה, ועברו לעבוד ב-Go או לפחות לעבוד בשפה באופן חלקי. חברות שרוב מערכותיהן או מערכות הליבה שלהן כתובות בשפה הן לדוגמה ,SoundCloud, Twitch, Dropbox, Disqus Cloudflare.

רוב החברות בתחום תפעול המוניות עובדות עם Go כשפה עיקרית או משנית: Gett, Uber, Juno, GrabTaxi, Hailo, Lyft. כמו כן, מספר פרויקטי open source בין הגדולים כתובים ב-Go והפכו לחלק בלתי נפרד מתשתיות backend, כמו: Docker, Grafana, Etcd, Consul, Hashicorp, Kubernetes.

מתי ואיפה רצוי להשתמש בשפת Go?

בעולם ה-backend, עולם הרשת ומערכות מבוזרות (rpc,http,grpc,tcp) לשפת Go יש יתרון מאחר והיא בעלת ספריות אשר מותאמות לעבודה מסיבית עם הרשת, No blocking IO וכמות גדולה של חיבורים לרשת שאפשר להחזיק במקביל.

כמו כן, עולם ה-cloud עובר להשתמש ב-Go, סיבה ראשונה לכך היא כמובן ה-docker, לאחר מכן עבודה עם רשת, זמן הפעלה מיידי (לא דורש הפעלת VM), זמן ריצה נמוך וצריכת משאבים נמוכה.

בעולם ה-microservices שבו שילוב של עבודה עם מערכות מבוזרות, עולם ה-cloud ועבודה יעילה עם רשת מהווים בסיס הכרחי. בעולם ה-IOT השפה מהווה יתרון בגלל פשטות ההתקנה, צריכת משאבים נמוכה ובין היתר ניתן לקמפל תוכנה כמעט לכל פלטפורמה בלי התקנות נוספות.

בעולם הסייבר ישנם מוצרים הדורשים התקנה באתר הלקוח אך לחברות גדולות או בנקים יש נהלים מאוד ברורים על החזקת קוד על שרתים. כמו לדוגמה הרבה חברות לא מאפשרות שיהיה קומפיילר על שרתים, עניין זה פוסל הרבה משפות הדינמיות. התקנת JVM על שרתים כאלה גם לא תמיד מתאפשרת, כמו גם התקנת ספריות שונות במערכות. כאן נכנסת Go ומפשטת תהליכים. חברת אבטחת מידע יכולה לכתוב מוצר, לבדוק באם עובד ואז להעביר קובץ אחד בינארי ישירות לשרת לקוח והקובץ יעבוד ללא צורך בהתקנות נוספות.

מתי ואיפה אין הרבה יתרון בשימוש ב-Go?

בעולם של machine learning שולטת python ו-R עם ספריות טובות כבר כמה שנים, בעולם של Big data ל-Scala/Java יש יתרון כבר שנים, וב-frontend ה-node.js מהווה את הכלי האופטימלי. בעולמות ה-devops ,סקריפטים, אב טיפוס וכדומה, כל שפה דינמית יכולה לתת עבודה טובה בפחות זמן פיתוח.

ניסויים מעניינים סביב Go

נכון לעכשיו מתנהלים שני ניסויים מעניינים, ניסיון הרצת Go ב-android/iphone. אם ניסוי זה יהיה יצליח וגוגל תחליט לקדם את המהלך, בעתיד נוכל לראות אפליקציות מובייל כתובות ב-Go. ניסוי נוסף לפתח python runtime ב-Go מתנהל על ידי Youtube.

אז מה קורה עם Go בהווה?

מהשקת הגרסה הראשונה ב-2009 עברו כבר 8 שנים,שבמהלכם שפת Go כבר נכנסה לתודעה ולמיינסטרים של שפות תכנות בעולם backend ביחד עם java, python ,ruby, js. כמובן לא באותו קנה מידה אבל בתחומים ספציפיים ה-Go שולט. יוצרי שפת Go רואים בה תחלופה לשפות C\C++ המזדקנות.
היום, הרבה חברות מבינות ש-Go היא לא עוד טרנד חולף, אלא כלי עבודה אפקטיבי שישמש אותן בטווח הרחוק. הוכחה לכך ניתן לראות בסקרים ובמחקרים השונים. למשל, Tiobe index שמהווה אינדקס המודד פופולאריות של שפות תכנות, הכריזה על Go כשפת השנה ל-2016 בזכות העלייה החדה על שימושו בתעשייה.

האם חברות Enterprise משתמשות היום ב-Go?

היום משתמשים ב-Go בחברות כמו SAP, IBM, HP, Akamai. חברת IBM תרמה לפיתוח השפה על מנת להריץ Go על מערכות IBM Zsystem.

מה עם Go בארץ?

לעומת סיליקון ואלי שבה השימוש בשפה הרבה יותר פופולרי, בארץ יש מספר חברות בודדות שמשתמשות ב-Go, אך שימוש זה נמצא בעלייה. הרבה חברות חדשות שמפתחות פתרונות בתחום ה-cyber ובתחום ה-cloud מפתחות ב-Go. מבין החברות הגדולות שעובדות כיום עם Go בארץ נמנות IronSource, YotPo ,Gett.

Go בעתיד

שפת Go צפויה להמשיך להתפתח ולגדול בשנים הבאות, וזה בזכות התמיכה של גוגל, חברות גדולות שמשתמשות בה וכן קהילת ה-open source. ההתפתחות והגדילה יהיו מלוות בעקרונות היסוד שהובילו לפיתוחה, שהן שמירה על פשטות, יעילות ומהירות.

לסיכום, שפת Go תהיה בשטח עוד שנים רבות, היא לא תחליף שפות אחרות אבל תתפוס נתח שוק רציני עקב שילוב של מהירות פיתוח של שפות דינמיות וזמן ריצה מאוד קרובה לזאת של C. אם אתם מפתחי backend אז כנראה תצטרכו לקרוא או לכתוב קוד Go בשנים הקרובות אם זה במסגרת עבודה או ב- open source.

הכותב הינו Golang tech lead ב-Gett

לקריאה נוספת על GO

כתב אורח

אנחנו מארחים מפעם לפעם כותבים טכנולוגים אורחים, המפרסמים כתבות בתחומי התמחות שלהם. במידה ואתם מעוניינים לפרסם פוסט בשמכם, פנו אלינו באמצעות טופס יצירת קשר באתר.

הגב

9 Comments on "כל מה שחשוב לדעת על שפת התכנות GO"

avatar
Photo and Image Files
 
 
 
Audio and Video Files
 
 
 
Other File Types
 
 
 
Sort by:   newest | oldest | most voted
developer
Guest
עוד טכנולוגיה שמתיימרת להיות "הדבר הבא", ועוד טכנולוגיה שמנסה לשלב כמה עולמות ומפסידה מכולם. גו היא אמנם שפה שמתקמפלת סטטית, אבל עדיין לא מגיעה למהירות של C או C++ (ובכלל, מה זה הקשקשוש הזה "שפת C/C++"? זה בערך טיפשי כמו להגיד Java/JavaScript ), והיא ג'אבג' קולקטד, מכאן שהיא לא מתאימה לפיתוחי low level או דברים שצריכים פרפורמנס, או פיתוחים שיהנו מניהול זיכרון ספציפי (כמו קרנל, קומפוננטות מרכזיות במערכות הפעלה, רילטיים , משחקי מחשב, דאטא בייסים, דרייברים וכו'.) מצד שני, היא מתיימרת להיות "הדבר הבא בעולם הווב" וכבר שמענו את הססמא הזאת כבר הרבה פעמים. טכנולוגיה חדשה צצה, כולם הולכים ללמוד… Read more »
best developer ever
Guest

איזה שטויות אתה מדבר. אני חולה על Go ואני חושב שזאת באמת השפה הכי טובה שיצאה עד היום. C/C++ זה ממש ממש דומה מלבד החלק של הפלוסים שהוא בעצם מה שהוסיפו. לפעמים אם אין לך ניסיון או שאתה לא מבין במשהו אולי עדיף לא להגיב…

Developer
Guest

יש לציין ש- c# זה ממש ממש דומה ל- c++ מלבד החלק של השארפ שהוא בעצם מה שהוסיפו. לפעמים אם אין לך ניסיון או שאתה לא מבין במשהו אולי עדיף לא להגיב…

אנונ
Guest

לא לא אל תדבר שטויות, לא רק הוסיפו את ה-#, גם הורידו את ה-++.
זה C++–#

אלמוג
Guest

מאמר מצויין!

Full stack ninja
Guest

כתבה ממש גרועה – לא ממצה ולא מדוייקת

אור
Guest

יופי של כתבה

שאול
Guest

כתבה כמעט מעמיקה…
אבל מה זה הציטוט הזה: "ב-frontend ה-node.js מהווה את הכלי האופטימלי."
הוא בטוח שהוא מבין מה זה פרונט? או שאולי הוא לא יודע מה זה node.js?

sergeylanz@gmail.com
Member

אתה צודק ניסוח לא הכי מוצלח. כוונה הייתה לזה שאם אתר צריך לבנות אתר יש בו יותר עבודה פרונט אז שווה לך לקחת כי שפת שרת node.js. שם יש הרבה יתרונות למשימות פרונט. אם זה קוד משותף, כלים שונים npm, וכמובן ecosystem דומה.
אין ספק ש-node,js זה לעבודות צד שרת, פשוט זה נתון הרבה יתרונות היום עם עבודה עם פרונט מורכב

wpDiscuz

תגיות לכתבה: