יום שני, 29 באוגוסט 2011

2. הקדמה.

המקום להתחיל עבור המתכנת לעתיד.

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

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

אז כתבתי.

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

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

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

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

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

טיפים למורים

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

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

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

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

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

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

הכרת תודה

לבסוף, אני רוצה להודות לכולם ברשימת הדוא"ל-  ruby-talk עבור הדעות והתמיכה שלהם, לכל המבקרים הנפלאים עבור העזרה שלהם בהפיכת הספר הזה לטוב יותר ממה שאני הייתי עושה לבד, לאישתי היקרה שהיתה המבקרת / בודקת / מוזה הראשית שלי, למץ שיצר את השפה המדהימה הזו ול Pragmatic Programers שהוציאו לאור את הספר.

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

אין תגובות:

הוסף רשומת תגובה