let's go

הצגתי למאיר בעיה שאני צריך ליצור עבורה פרוייקט, הוא אמר כי שפת go בנוייה (לפחות על הנייר) להתמודד עם מה שאני זקוק לו.

אז הקדשתי שעה (פלוס) להבין קצת יותר לעומק את השפה.

go היא שפת תכנות שבמקור תוכננה על ידי מהנדסי גוגל בשעה החופשית שלהם, והפכה להיות שייכת לחברה.
היא משוחררת בקוד פתוח, ורצה על מגוון מערכות הפעלה, אך בלינוקס היא דורשת קרנל עדכני (יחסית), וגם libc עדכני, מה שאומר שהפצות עם קרנל נמוך מ2.6.23 יהיו בבעיה.

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

הנה משהו אחד כזה – משפט if אשר מאוד בעייתי בעיני:

if a := UserAge(); a < 12 {
 ...
}

ניתן (במידה ורוצים) להציב ולבצע מספר פעולות במשפט הif. ד"א לא ניתן לשים סוגריים ל if.

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

לעומת זאת, אחד הדברים המעניינים בשפה (שלמדתי, ישנם דברים שעדיין לא למדתי ושעה זה פחות מידי זמן ללימוד), הוא הלולאה – for. בgo יש רק סוג לולאה אחת, וזו לולאת for כאמור.
למי שאינו יודע, ברוב השפות, לולאת for היא בעצם לולאה הזהה בגישה שלה ללולאת while, רק בלולאת while ניתן לספק תנאי עצירה (ובשפות מסויימות התנאי גם יכול להיות הצבה כתנאי – תתביישו לכם), בgo מראש הבינו את זה, ולכן יש לולאה שתיאורטית מאוד דומה ל c, אבל היא מכילה הרבה יותר יכולות וכוח ממנה, ובעוד אשר משתמשי c או כאלו הרגילים לתחביר מבוסס C יוכלו לתכנת בה באותה צורה (רק בלי סוגריים), חלק מהדברים אינם מחייבים את אותה הגישה.

לשפה יש מצביעים, אבל בניגוד למצביעי C, המצביעים האלו שומרים את כתובת הזיכרון של משתנה, או תוצאה (של פונקציה) בלבד, עד כמה שאני מבין.

לחרדת הקורא צפריר, go מהודרת סטטית לelf (בלינוקס) את קבצי הריצה שלה (אלא אם משתמשים ב gccgo), מה שאומר שהם יכולים לרוץ על כל מערכת המתאימה להם. כלומר גם אם קימפלתם אותם על debian stable, תוכלו להריץ אותם על arch ללא צורך למקפל מחדש.
ואם זה לא מספיק להחריד את צפריר, אז יש לשפה גם מנהל חבילות משל עצמה במקום לסמוך על הפצה כזו או אחרת …

התחלתי ללמוד את השפה באמצעות מערכת הנקראת go-tour, והגעתי שם לשקופית 27.
מעניין מה אחשוב על השפה אחרי מספר ימים או שבועות של שימוש בה, ולא אחרי שעה אחת.

סה"כ שעה אחת אינה מספיקה באמת להתרשם משפה, אבל היה קל מידי להבין את השפה, או אולי זה הניסיון שלי בללמוד שפות תכנות שהקל עלי מאוד. בכל מקרה, אנסה להמשיך ללמוד אותה כשיהיה לי זמן.

4 מחשבות על “let's go

  1. פינגבק: גו – השלמתה של שפה | לראות שונה

כתיבת תגובה

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

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s