מבוא לתסריטאות

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

אחרי שהסטודנטים לומדים מספר שפות מחשב שימושיות, דוגמת C,‏ CPP,‏ Java ו־C#‎, מתקבל הרושם שהסטודנט שולט בכול השפות והידע שברשותו ישמש אותו שנים רבות. בפועל, קיימות שפות תכנות רבות נוספות אותם נדרשים מרבית עובדי התעשייה ללמוד על־מנת להתקבל למקומות עבודה מסוימים או כדי להטמיע בארגון טכנולוגיות חדשות. למעשה, בתחומים מסוימים שימוש בשפות שהזכרתי קודם כמעט לא מורגש בהשוואה לשפות אחרות; למשל מעטים הם אתרי האינטרנט שנכתבו בשפות כגון CPP ו־Java, לעומת שפות אחרות דוגמת PHP,‏ Perl,‏ Python ו־Ruby.

עבודה עם תסריטים אינה אופיינית רק עבור פיתוח וניהול אתרי אינטרנט; מדובר למשל בכלי חובה בארגז הכלים של כל מנהל רשת, כאשר הוא מעוניין לבצע התקנות ושדרוגי יישומים על פני מגוון רחב של תחנות עבודה בארגון, שינוי ססמאות ניהול על כל תחנה, שתילת קיצור דרך לאתר האינטרנט של הארגון על שולחנות העבודה של התחנות, ולמעשה כמעט כל פעולת ניהול אחרת. נכון, ישנם כלים מבוססי תפריטים שמאפשרים לנהל את התחנות ללא נגיעה בקוד, כמו כלי הניהול של Microsoft Active Directory, אבל כל אדם שהתעסק עם כלים אלו יותר ממספר דקות יודה שבשלב מסוים הוא מוצא את עצמו "יורד" לרמת כתיבת התסריטים עצמם, שכן הם הרבה יותר גמישים ופשוטים לתחזוקה מאשר הכלים הגרפיים.

בהרצאה שהוצע לי להעביר התבקשתי לדבר על אופן כתיבת התסריטים והיתרונות שיש בכתיבת תסריטים על־פני שפות תכנות "רגילות", שזה קצת טעות להציג כך את התחום, שהרי הכתיבה ושימוש בשפות תסריט התחילה בסמוך להופעתם של המחשבים הראשונים בשנות החמישים של המאה הקודמת, והתפתחה יחד עם שפות התכנות האחרות. התבקשתי להתמקד בשפת תכנות אחת בלבד, ולצערי אאלץ להימנע מהדגמות על לינוקס עקב הידע המינימלי של הסטודנטים במערכת הפעלה זו, ומאותה סיבה גם אאלץ להימנע מהצגת דוגמאות Bash וגם לדבר על יכולות ייעודיות ל־Shell Scripting כגון Pipes, Redirections והעברת מידע בפרמטרים בין יישומי שורת פקודה.

עקב מגבלות טכניות שונות, רצוי שאוותר על דוגמאות שדורשות הרשאות ניהול על המחשב, ולכן גם התקנת תוכנות בצורה שקטה ושינוי הגדרות המחשב די יורד מן הפרק, וגם עבודה מול שירותי רשת שונים ומשונים כדאי כנראה שאמנע מהם כי אינני בטוח ברמת ההבנה של הקהל במושגים כגון Rest API,‏ XML ו־JSON.

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

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

איך מסבירים על לינוקס לקהל של סטודנטים?

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

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

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

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

קוד המקור זמין ב־github. אשמח לקבל הצעות לשינויים ושיפורים הן פה בתגובות והן ישירות ב־github.