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

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

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

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

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

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

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

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

7 תגובות בנושא “מבוא לתסריטאות

  1. נעם

    להגיד שפייתון זו שפת סקריפטים זה כמעט חילול קודש…
    פייתון זו שפה מתקמפלת לBYTE CODE, כמו ג'אווה, C# ונוספות.
    בגלל האפקט של JUST IN TIME COMPILATION זה נראה , לפעמים, כשפת סקריפטים…
    אבל זו שפה נהדרת…

    1. תומר מאת

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

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

      1. נעם גרץ

        כמאמר נשיא המדינה… כן ולא.
        בדרך כלל שפות תסריט אינו מקומפלות (פרל, BASH וכו) לעומת שפות מקומפלות כמו C, JAVA ופייתון.
        הסיבה שפייתון נחשבת שפת "סקריפט" (בטעות) היא העדר ה STRONG TYPE CASTING שבדרך כלל משויך לשפות סקריפט.

        יש הבדלים מהותיים בים שפות סקריפט לשפות מקומפלות, וגם שפות סקריפט עם JIT הן עדיין שפות סקריפט…

        בשורה התחתונה, באמת, אין הבדל גדול – כל השפות הן כלים להשגת היעד – צריך לבחור מה שמתאים ו/או נוח, בלי קשר לתוויות

        1. תומר מאת

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

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

      1. מאיר

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

        Dynamic programming language is a term used broadly in computer science to describe a class of high-level programming languages that, at runtime, execute many common behaviors that other languages might perform during compilation. These behaviors could include extension of the program, by adding new code, by extending objects and definitions, or by modifying the type system, all during program execution. These behaviors can be emulated in nearly any language of sufficient complexity, but dynamic languages provide direct tools to make use of them. Many of these features were first implemented as native features in the Lisp programming language.

        Most dynamic languages are also dynamically typed, but not all are. Dynamic languages are also frequently referred to as "scripting languages", though that article narrowly refers to languages specific to a given environment.

        לערך המלא:
        http://en.wikipedia.org/wiki/Dynamic_programming_language

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

כתיבת תגובה