ארכיון יומי: 20 יולי, 2009

הליכה לפתרון

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

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

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

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

נגיד וניקח את פרל כדוגמא. יש לפחות 3 דרכים שאני מכיר לסרוק את הספרייה. יש את File find Object של שלומי פיש, יש את File::Find שאותו שלומי החליף, אפשר להשתמש בכלל ב OpenDir וכמובן שאפשר להמשיך עם כמות הכלים למשימה זו. רק בשביל להתחיל לסרוק את הספריות, אנחנו צריכים להשקיע הרבה אנרגיה כאן (בשביל לדעת מה הרכיב המתאים לנו ביותר), ככה שהשפה למרות שמסוגלת לספק לנו את הכלים, אינה מתאימה למשימה שלנו כי היא מסבכת אותה יותר.

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