ב-1970 כתב טד נלסון את הספר Computer Lib: You Can and Must Understand Computers Now. הספר של נלסון שהפך לספר נדיר שהסתובב לאורך שנות השבעים בחוגים מחתרתיים של האקרים, היה קריאת תיגר כנגד "כוהני המחשוב" וקריאה לכל אדם להפוך להפסיק להיות מתוכנת, להפסיק לקבל את המדיה והממשק שלה באופן פסיבי ובמקום זאת להפוך למתכנת מדיה. הקריאה שלו הייתה חד משמעית ובלתי מתפשרת: כל אחד יכול לתכנת וכל אחד חייב ללמוד לתכנת.
את הספר של נלסון קראתי לפני מספר שנים, אבל בחודשים האחרונים התוודעתי על בשרי לקבוצה מעניינת של אנשים בתרבות שלנו. זו קבוצה שרק עתה גיליתי שאני נמנה עליה ושהמטרה שלה הופכת קרובה לליבי מיום ליום. מדובר באנשים שמשאלת ליבם היא להיות למתכנתים. לא בגלל הכסף. בגלל האידאל.
קצת רקע קודם. זה לא שלא ניסיתי להיות מתכנת. בבית הספר למדתי במגמת מחשבים את כל השפות הכי לא רלבנטיות של לימודי המחשבים בתיכון: שפת מכונה, אסמבלר, שפה פיקטיבית שהומצאה לצורך לימודי המחשבים ושאיני זוכר את שמה (אם מישהו זוכר איך קראו לשפה הזו שהמציאו במשרד החינוך, אשמח אם הוא יזכיר אותו פה), והשפה המתקדמת ביותר שלמדנו: טורבו פסקל. אבל אף פעם לא הרגשתי שהתכנות בא לי בטבעיות. זה היה נתקע, ובניגוד לכל שאר המקצועות חשתי שם בבעיה להפנים את החומר.
גם מאוחר יותר הנסיונות הצנועים שלי לעסוק בתכנות העלו חרס. כשהייתי בן 18 תיכנתתי קצת ב-HTML אבל HTML, כמו שיודע כל מי שהתעסק איתה קצת, זה לא ממש שפת תכנות אלא יותר שפת תיוג (אם אני מבין נכון, וההבנה שלי כאן מאוד מוגבלת, אז הרגישו חופשי לתקן אותי). בכל מקרה מה שקרה הוא שגעתי למסקנה המעציבה שאני ותכנות זה שני דברים שלא הולכים ביחד וזנחתי את הנסיונות הללו לחלוטין מתישהו בסוף גילאי העשרה.
תכנות – זכות יסוד לאדם
וכאן אני חוזר לאותה קבוצה שאני נמנה עליה ושאל חבריה התוודעתי לאחרונה. הקבוצה של מי שרוצים להיות מתכנתים היא תת קבוצה לעומת הקבוצה של Wannabe Geeks, שגם עליה אני נמנה, אם כי במידה חלקית בלבד, ושראויה להתייחסות בהזדמנות אחרת. זוהי קבוצה של אנשים שרואים בתכנות ערך תיאורטי ואידאולוגי ומרגישה לכן מעין דיסוננס קוגנטיבי עם העובדה שהיא אינה עוסקת בתכנות. בערך כמו שמאלנים רדיקליים ששוללים את זכות קיומה של ישראל אבל חיים בה.
תכנות נתפס אצלנו (בעצם אני לא יכול לדבר על אצלנו, כי אני לא יכול לדבר בשם אף אחד. אבל אני אקרא לזה כרגע אצלנו, כלומר, כפי שאני מדמיין לעצמי את הקבוצה הזו) כמשהו משחרר, משהו שהוא תהליך של שמחה. יש כאן מעין תכנות אידאולוגי, תפיסה שבה תכנות אינה מטרה אלא מעין אידאל חיים.

עכשיו אומרים בטח חלק מהקוראים, היי אבל זה לא בדיוק האידאל של האקרים? ובכן כן! הפילוסופיה של ההאקרים הדגישה תמיד את התכנות החופשי, הפתוח שנעשה מתוך תשוקה, הנאה ומשחק על פני צורת התכנות הסטרוקטוראלית. "אתה יכול ליצור אמנות ויופי על גבי המחשב" אומר הדיבר החמישי מבין ששת הדיברים של האתיקה ההאקרית
ההבדל בינינו לבין ההאקרים היא שאנחנו לא יודעים לתכנת. האקרים הם Tinkerers מלידה ואנחנו לא מהמתעסקים. או אולי בעצם כן. אולי יש בעצם סיבה אחרת שאנחנו לא האקרים של תוכנה. אנחנו Tinkerers של משהו אחר. אנחנו האקרים של רעיונות. (אולי אני האקר טוב ואולי גרוע – אבל בכל מקרה כך אני תופס את מהות התפקיד שלי כאדם שמבקש לחשוב, להבין ולתכנת מציאות)
משום שאני לא יודע תכנות אני מרגיש לעיתים כמו אנלפבתית. ובאמת הקריאה של נלסון מהדהדת כל כך. נלסון הבין שתכנות היא טכנולוגיה מעצימה. לדעת תכנות זה הלדעת קרוא וכתב של זמננו. האוריינות של שפת מחשב היא רמת אוריינות חדשה וגבוהה הרבה יותר שהיא זכות יסוד של כל אדם בתקופתנו.
מי שיודע תכנות יכול לשלוט בעולם ברמה גבוהה הרבה יותר. הוא כמו אדם מצורה חדשה ומפותחת יותר. אני נזהר מלהשתמש פה בביטויים מכוערים ולא רלבנטים אבל מה שאני מנסה לומר הוא שמהותו של הבריה האבולוציונית הקרויה אדם היא השימוש בכלים (ואני לא מתאפק מלצטט כאן את מקלוהן: We shape our tools and then our tools shape us). אנחנו השתמשנו בכלים על מנת לעצב את המציאות סביבנו מאז שחר הופעתנו, וזה היה המכשיר שאפשר לנו להפוך לאדוני הכוכב הזה ולהגיע למקום שאליו הגענו טוב ורע – עץ הדעת טוב ורע.
מי שיודע לתכנת מתעסק בכלים בעזרת בטכניקה שונה לחלוטין. הוא עוקף את התהליך המסורבל שבה אנחנו נאבקים בחומר של העולם על מנת לגלף ממנו כלים חדשים. הוא מתכנן ישירות על הקוד. זהו המעשה האלוהי. שהרי כדברי המדרש ברא אלוהים את העולם במאמרות. עכשיו אני אסביר לכם למה אני מעריץ מתכנתים. אני מעריץ מתכנתים כשאני קורא על אנשים כמו סטיב ווזניאק או האקרים אחרים שכשהם צריכים לעשות משהו הם מתכנתים לעצמם איזה תוכנה קטנה ברגע שתעשה להם את הדבר הזה.
האם זהו לא מעשה הבריאה שמתואר בספר יצירה, שבו דרך המילים נוצרים חיים?
אני לא אומר שמתכנתים יודעים תמיד לתכנת את המציאות. יש הרבה אנשים שיודעים לתכנת במחשב ולא יודעים לתכנת את המציאות כמו שיש הרבה אנשים שיודעים לתכנת את המציאות אבל לא יודעים לתכנת מחשב. אני אגלה לכם סוד. אני מעריץ את שניהם.
קבוצה ללימודי תכנות
לא כל מתכנת הוא האקר. האקר הוא מיוחד של מתכנת. הוא לא מתכנת מתוך חיוב במובן החיצוני אלא מתוך חיוב פנימי, מתוך תשוקה. ההאקר מתכנת מתוך אהבה. לעומת ההאקר יש הרבה מתכנתים שקבורים באולמות ריכוזיים על ידי תאגידים שאומרים להם מה לתכנת ועושים את זה ככופאם שד. אני לא יודע מה היחסים בין האקרים למתכנתים תאגידיים ואני משער שיש מגוון גדול למדי באמצע בין שני האידאלים הללו.
אני יודע שיש לי חברים מתכנתים שנהנים מלתכנת ויש כאלו שאוהבים את זה פחות, אבל רובם לא עושה לזה אידאליזציה כמוני. במחשבה שניה, אף אחד מלבד אחת. גיזלה, האקרית גרמניה שהכרתי בחודשים האחרונים של שהותי בגרמניה, הייתה אנרכיסטית, טרוריסטית חובבת, אמנית והאקרית גאונה בצורה בלתי רגילה שלמדה אותי פעם ראשונה שתכנות זה מגניב. זה שהיא הייתה האקרית רק מדגים שוב את הטענה שחדוות המחשבים שמורה להאקרים.
אז לא מזמן יצא לי להתקל בכנס בפקאצת הלינוקס וכשאלתי אותה איך הולך, היא סיפר לי שהיא קימפלה אתמול בלילה קרנל. שתי המילים הללו ירדו לי לגרון כמו לגימה של וודקה טובה. הם נשמעו לי כמו שיר. אמרתי לעצמי: כן, גם אני רוצה להיות בנאדם שמקמפל לעצמו קרנלים בלילה. זה נשמע כיף: לקמפל איזה קרנל.
אז השאלה אם אני יכול. אם אנחנו כקבוצה יכולים לעשות את זה. האם כל אחד יכול באמת לתכנת. היה לי מורה למחשבים שטען שאי אפשר לתת מחשבים כמקצוע חובה בבגרות כי לא כל אחד יכול לתכנת. זה דורש סוג מסוים של מחשבה הוא טען, שלא לכל אחד יש אותו. אולי הוא צודק. ומצד שני עומד טד נלסון: עם הצו הקטגורי שלו. נראה לי שאני מעדיף אותו.
שמעתי לא מזמן ראיון מדהים עם סטיב ווזניאק ששואלים אותו איך לפי דעתו צריך ללמד ילדים לתכנת. הוא אמר שם שמה שחשוב כשמלמדים ילדים לתכנת הוא שהחוויה הכללית שלהם תהיה כזו של כיף, שהם יקבלו תחושה שהם עושים משהו, שהם מבינים אותו ויכולים להיות יצירתיים. הוא אמר שעדיף להתחיל איתם עם תוכניות קטנות וללמוד אותם לעשות דברים קטנים ולהביע את עצמם.
זה היה נשמע מצוין. אז רציתי להעלות רעיון לשאר חברי הקבוצה שלנו, בתקווה שחלק מהקוראים מרגישים שהם נמנים עליה. בואו נקים קבוצת תכנות. אנחנו צריכים למצוא מתנדב שיסכים ללמד אותנו בשם האידאולוגיה והכיף והרעיון יהיה ללמוד לתכנת מתוך שמחה, הנאה ואהבה. אם יש עוד מישהו שזה מעניין אותו אנחנו יכולים להפגש פעם בשבוע וללמוד ביחד תכנות באופנים תרבותיים, תיאורטיים ופרקטיים. בכל מקרה, אם ההצעה הזו נוגעת ללב של מישהו, אתם מוזמנים להשאיר פה הודעה.
תגובות
גם אני אהבתי לתכנת פעם. זה התחיל במחשב הדראגון 64 שלי שקיבלתי לבר מצווה (ואמא אסרה על משחקי מחשב – והדבר היחיד שיכולתי זה לתכנת… אתם יכולים לנחש מה תכנתתי אז)….בכל מקרה…כדי לקצר…
אהבתי תכנות עד שהייתי צריך לדבג (כלומר לגלות את השגיאה ולתקן אותה) את הבאג המשמעותי הראשון. כלומר זה חזר שוב ושוב… יש לך רעיון, אתה מתלהב ומתחיל לקודד אותו למחשב… וזה נפלא ונהדר ונותן יופי של תחושות… ואז התוכנה לא רצה. לא נורא… מנסים, בודקים, מתקנים…מריצים שוב….עד שמגיע הבאג המשמעותי הראשון: זה שגורם לך להפסיק להנות ממה שכתבת. רצות לזרוק הכל וללכת לשחק כדורגל בחוץ.
אולי אני לא מתכנת מספיק מוכשר – אבל הרגע הזה תמיד קורה לפני שהתוכנה רצה כמו שצריך.
בכל מקרה – אני כבר התפכחתי…
מצד שני אני מכיר בדיוק את ההרגשה הזו שאתה מדבר עליה. אני יודע תכנות. אני אוהב לשתף ולשוחח עם אנשים. אם יש קבוצה – אני אשמח ללמד.
לא שאני חושבת שיש סיכוי שאהיה מתכננת באיזשהו שלב בחיי, אבל לנסות להבין מה לעזאזל עושים שם – יכול להיות רלוונטי עבורי.
קיבלתי עוד תגובות באימייל. תשלחו עוד תגובות ואולי באמת נארגן משהו……
🙂
שבת שלום,
טוב, אני שמח שיש קודם כל מישהו שמוכן ללמד. באיזה שפות אתה מתכנת?
חוץ מזה נראה לי שעצם החוויה לתכנת זה כבר מעולה. אני זוכר מהתיכון שהכל היה נורא פורמלי ולא היו מגיעים אף פעם ממש לתכנת.
מצד שני יש את התסכול. אז מה אני אגיד. ככה זה בחיים. נראה לי שמה שמאפיין האקרים זה שהם לא מוותרים, שהם נהנים מההתעסקות. הם מקבלים מזה את הסיפוק שלהם. נו, איך נהיים כזה.
יאללה, מקסימום אם לא ילך, נלך לשחק כדורגל בחוץ… 🙂
אם הייתי בארץ הייתי שמח לתת לכם כמה שעורים… בכל אופן, למרבה המזל יש ברשת חומר מעולה ובחינם.
הנה מדריך מצוין לפייתון (השפה שרוב הישומים של גוגל כתובים בה):
http://www.diveintopython.org/toc/index.html
והנה מדריך התכנות הכי מוזר שאני מכיר, אבל גם מהטובים שראיתי, לשפת רובי (שמפעילה את טוויטר ובייסקמפ, למשל):
http://poignantguide.net/ruby/
ופה מתחיל מדריך קצר ל
PHP
שהיא הבסיס ליאהו, פליקר, וויקיפדיה, פייסבוק וורדפרס ועוד. היא גם נחשבת לפשוטה ביותר משלושתן ואם אתה יודע הטמל יהיה לך קל להתחיל אתה. אגב, הפתוח של השפה הזו (קוד פתוח, כמו שתי האחרות) מובל ע"י חברה ישראלית מרמת גן:
http://php.net/manual/en/tutorial.firstpage.php
הייתי צריך לדעת שאתה תהיה בעניין. חבל באמת שאתה לא בארץ. אגב, אפשר לשאול איפה אתה?
וחוץ מזה המדריכים ששלחת נראים מאוד מעניינים. המדריך של Ruby נראה מוטרף לחלוטין – סוג הספר שהייתי רוצה ללמוד איתו תכנות. גם אהבתי איך שהם מתחילים את זה עם תמונה של תינוק ואומרים שאפילו תינוקות יכולים ללמד רובי.
עכשיו אולי תהיה מוכן לעשות קצת סדר. מה נותנת כל שפה? האם ללמוד ב-PHP נותן כישורים אחרים לחלוטין מאשר עם רובי או שזה פשוט שני דברים שונים לחלוטין. אם זה שני דברים שונים שאפשר לעשות – אז איך בוחרים איזה שפה ללמוד. אם זה אותו דבר – בשביל מה צריך את כל השפות השונות.
אני משער שהתשובה היא איפשהו במאמצע אבל אני אשמח לשמוע עוד על זה ולהבין.
ומעבר לזה, מה דעתך האישית? כל אחד יכול ללמוד לתכנת או שהלוקסוס הזה שמור לאליטה מיוחדת?
עידו
יש לי רעיון קצת לא שגרתי בשבילך: לא להתחיל עם שפה "רצינית" אלא עם שפה כיפית. אחרי שתעבור את המחסום הראשון של לתכנת כמה דברים, תוכל ללמוד שפות נוספות.
אני נהניתי מאוד מהעבודה במחולל המשחקים Game Maker שאפשר להוריד בחינם מהאתר http://www.yoyogames.com/gamemaker/ – בהתחלה אפילו לא תרגיש שמה שאתה עושה זה תכנות, ולאט-לאט תמצא את עצמך כותב קוד.
יש tutrials באתר של התוכנה, ויש מדריך לילדים שכתבתי בוויקיספר שלדעתי הוא יותר כיפי: http://he.wikibooks.org/wiki/Game_Maker
אני חושבת שמישהו כמוך יוכל להשלים אותו מהר מאוד. ובהנאה.
אם באמת תנסה, אשמח לשמוע איך הלך.
אני גר זמנית באי שבמרכז העולם 🙂
כל אחד יכול ללמוד לתכנת, ממש לא הייתי קורא למתכנתים "אליטה" (לחלקם יש עודפי אגו גם בלי זה). יש מי שילמד יותר בקלות ומי שפחות, אבל לדעתי שווה להשקיע את המאמץ, בלי קשר לשאיפותיך המקצועיות, כי תכנות, כמו אלגברה או קיברנטיקה או תנ"ך, מוסיף לך מטפורות שמושיות להבין את העולם.
לגבי שפות: תאורטית, כל שפה יכולה לעשות הכל. מצד שני שפה שמתאימה לבניית ישומי אינטרנט תהיה הרבה פחות טובה לכתיבת מערכות הפעלה, למשל, ושפות שונות מבטאות גם גישות שונות לתכנות וכמובן יש גם ענין של התקדמות בטכנולוגיה עם הזמן. שלושת השפות שהזכרתי הן בין הפופולריות היום אצל האקרים, ונחשבות יחסית קלות לשמוש (יחסית זה מושג יחסי, כמובן). שלושתן כאמור קוד פתוח וזה מתבטא גם באתרי ההדרכה שהבאתי – כולם נוצרו ע"י משתמשים שרצו לעזור לאחרים, וכולם משתווים בקלות לחומרים הטובים ביותר של מיקרוסופט או סאן או יבמ. המדריך של רובי בכלל מבריק.
אבל כיון שהרעיון הוא קודם כל להבין את יסודות התכנות, אני חושב שההצעה של יונת (שאני רוצה להביע את הערצתי לה ולפועלה בהזדמנות זו) טובה יותר – תתחיל משם ואם תרגיש שאתה רוצה להעמיק בתחום, לך על אחת משלוש השפות האלה. אגב האינסטינקט הראשון שלי היה לקשר לבלוג של יונת, אבל לא ידעתי אם זה לענין…
אני כל הזמן נתקל באנשים שעובדים כמתכנתים אבל לא אוהבים את זה. חלק הגיעו לעניין בגלל הכסף הגדול, חלק בגלל שזה נראה להם מקצוע מכובד וחלק סתם לא היה מושג מה הם רוצים לעשות עם עצמם. כמות האנשים האלה גדולה הרבה יותר מאנשים שאוהבים את התהליך. מפתיע ומאוד מהנה אותי לגלות שיש קבוצה (לפחות קבוצה פוטנציאלית) של אנשים הפוכים. כאלה שלא יודעים, אבל רוצים ללמוד מתוך אידיאולוגיה ולא מחומריות.
יש לי הרבה ניסיון בפיתוח וגם ניסיון בהדרכה, כולל לאנשים נטולי מושג. אני אשמח ללמד אם תווצר קבוצה כזאת. בתכנות, כמו בכל תחום עיסוק אחר, יש מידה של כשרון ומידה של מיומנות נרכשת. היכולת להגיע למיומנות תלויה במידה רבה ברצון וממנו כפי הנראה יש שפע.
הנקודה שממנה צריך להתחיל את הלימוד הוא המטרה הסופית. מה אתה (או אתם) רוצה לעשות עם הידע? האם אתה רוצה להבין איך דברים עובדים? ליצור דברים חדשים? יש לך רעיון לסטרטאפ שיהפוך את העולם לטוב יותר?
אגב, לקמפל קרנלים בלילה לא נחשב בדרך כלל לתכנות. וזה מביא אותי לנקודה נוספת. ייתכן שכלל לא מדובר ברצון ללמוד לתכנת, אלא ברצון להגיע לשליטה טובה יותר על המחשב. להבין טוב יותר את החומרה, את מערכת ההפעלה ואת התוכנות בשביל להוציא מהן את המיטב. יש הרבה מתכנתים, ביניהם אפילו טובים מאוד, שהשליטה שלהם על המחשב מבחינה אדמיניסטרטיבית משאירה הרבה מקום לשיפור.
חצי ממה שכתבו כאן הוא סינית בשבילי…
מסתבר שלתכנת הוא עולם רחב ורב תחומי, ויש הרבה סוגים של תכנות. ובאמת צריך לנסות להגדיר מה רוצים להשיג.
אצלי למשל, ההנאה מגיעה לא מ"מה המחשב עושה", אלא מ"איך המחשב עושה".
אתה באמת חושב שלידיעת שפת תכנות יש כזו השפעה מטורפת על בני אדם?
תראה, אני בסך-הכל בסמסטר השני שלי לקראת תואר במדעי המחשב, אבל לי זה מאוד ברור (מהסתכלות סביב) שעצם למידת השפה לא אומר שאתה לומד ומפנים את הקונספטים שמאחוריה, את התמצית שלה (שלא צריך לדעת לכתוב אפילו שורת קוד אחת עבורה – למרות שזה תמיד עוזר).
ללמוד שפת תכנות זה כמו ללמוד לדבר אנגלית – זה לא אומר שפתאום תהיה סופר גדול ומוכשר (לא באנגלית ולא בעברית) או אפילו מתרגם טוב… אלה כישורים שבאים רק מלנסות, לעשות, לחקות מישהו שכבר יודע, או ללמוד ממורה (טוב!).
ובקשר להאקרים, טוב, שיהיו בריאים – אני תמיד אעדיף לקרוא כמה בלוגים בזמן שיקח לי לתכנת תכנית שתבצע משהו שאני יכול לעשות ידנית, מהר יותר. 🙂 ברצינות, הם מתכנתים בשביל הכיף, אני בספק אם זה חוסך להם כמות משמעותית של זמן. 🙂
ציינת שתי קבוצות של אנשים שמתכנתים – הקרים ומתכנתים מקצועיים אפרוריים.
כדאי שתדע שמה שמאפיין את ההקרים, הוא שהם לא חיכו שמישהו יבוא וילמד אותם, אלא נתנו לעניין ולהתלהבות שלהם להוביל אותם, לחקור ולגלות לבד. וזאת אפילו בזמנים שלא היית יכול לזמן מדריכים ללימוד עצמי של כל שפה בחיפוש קצרצר בגוגל.
אם אתה רוצה באמתלהיות אחד מאותם אנשים – לך ותלמד לבד.
בסופו של דבר תכנות הוא התמודדות של אדם מול השפה והקוד שכתב, תוך חיפוש מידע במנואלים ולימוד עצמי מתמשך.
אם אין לך את היכולת והמוטיבציה לעבור את התהליך הזה בזמן שאתה לומד, כנראה שגם בהמשך לא תראה הרבה הצלחה כמתכנת.
לא חסרים ברשת מדריכים ללימוד עצמי החל מרמה אפס, והדרך הטובה ביותר היא להתחיל משם.
היי,
תודה רבה רבה על המדריכים. נראה לי שעכשיו עם המידע החדש מערדי וממך יהיה לנו התחלה קלה הרבה יותר. אני אתחיל לשבת על זה בקרוב.
תודה,
עידו
תודה,
עושה רושם שיש כבר בסיס לחברותת תיכנות. עכשיו צריך להתחיל לחשוב על דברים כמו איפה נפגשים וכאלה.
אני מציע שמי שמעוניין (ללמוד, ללמד או שניהם) ישלח לי אימייל ואני אנסה לארגן מפגש ברגע שתהיה לי דירה שזה יהיה עוד כשבועיים בערך. (כרגע אני נווד כבר חודשיים) 🙂
עידו
כן, אתה נוגע בנקודה כואבת ושנשמעת מדויקת למדי על פניה.
ובכן, אני מקווה שנוכל לשנות את הגישה.
זה כמו החיים. העניין הזה של להנות מהתהליך שחסר לכל כך הרבה אנשים. והוא האתגר הכי גדול בלחיות כנראה, שלא לחכות למטרה שתגיע – אלא להבין שהיצירה האמיתית היא בתוך התהליך בתוך העשיה. זה משהו שהיו צריכים לטפח במערכת החינוך שלנו. אני מקווה שנטפח את זה אצלנו.
ואולי אתה צודק אולי באופן עצמאי זה הדרך הקלאסית לעשות את זה, אבל אולי גם בקבוצה יש משהו שבסביבה מעודדת, במסגרת מסוימת וגם מקום שבו אפשר להתייעץ עם אנשים עם אותה התשוקה.
בכל מקרה, מי ייתן ונתגדל.
עידו
קנית אותי. בשבוע הבא אני יוצא לחופש. אם ישאר פנאי אחרי כל הדברים שהכנסתי לרשימת TODO לשבוע הקצר הזה, אני אתחיל ללמוד Ruby עם הספר של Why.
עוד כמה לינקים:
http://howto.wired.com/wiredhowtos/index.cgi?page_name=teach_a_kid_to_program;action=display;category=Live
http://scratch.media.mit.edu/
שתי "לומדות" לתכנות מחברה צרפתית – CeeBot ו-CoLoBot
http://www.ceebot.com/index.php
צריך לכתוב קוד שמפעיל רובוטים, והמורכבות של הקוד מתקדמת בהתאם להתקדמות בשלבים. השפה ייחודית למשחק, אבל דומה ל-C ו-Java. אני ניסיתי את CeeBot אבל נתקעתי בשלב שמתחיל להסתבך במתמטיקה, שזה בדרך הכלל המקום שאני נתקע בו.
נכון, ככל שלומדים יותר המיומנות עולה, אבל אין רגע שאתה הופך להיות "מתכנת מושלם" שלא צריך עזרה, ויכול לומר שהמטרה הושגה.
גם האתגרים עולים, המתחרים מוציאים תוכנות משופרות וסביבות הפיתוח מתעדכנות.
וגם אם כן קיימת איזושהי מטרה סופית, כשתשב לכתוב את הקוד הראשון שלך לבד, אחרי שהוסמכת ע"י המאסטר ל"מתכנת על", תמצא את עצמך תוך שעתיים יושב מול הקוד ומקלל, כמו תלמיד תכנות על התרגיל הראשון שלו.
זו הדרך. זה מה יש, ואתה יכול לקפוץ למים או לטייל על שפת הבריכה.
כל אחד מתקדם בקצב אחר בהתאם לכישרון האישי, אבל אל תחכה למישהו שיבוא ויראה לך קיצור דרך.
אתה צודק במאה אחוז.
לא מחכה
🙂
ואני בעד
כמה דברים:
1. מה שמלמדים בבצפר זה לא תכנות. זה סתם לכתוב דברים כמו שמשרד החינוך רוצה שתכתוב בבגרות. אין יותר מדיי קשר בין תכנות אמיתי לחומר הנלמד…
2. תכנות זה לא הכל בחיים! אתה יכול לקמפל קרנלים גם בלי לדעת תכנות! יש המון אנשים שנוהגים לחשוב שכדי באמת לדעת מחשבים אז צריך לדעת לתכנת, אבל לא כך הדבר! יש מספר תחומים במחשבים לדוגמה: תכנות, רשתות, מערכות הפעלה…לא חייבים לדעת תכנות.
3. איך שאני רואה את זה, הבעייה היא לא בללמוד את התחביר של השפת תכנות, אלא במחשבה על האלגוריתם עצמו. את זה אני חושבת שאי אפשר ללמוד…או שיש לך את זה, או שלא. (או שיש לך את זה קצת ואז זה קצת מתסכל).
4. אני בטוחה שהיה לי עוד משהו לכתוב אבל עד שהגעתי לסוף הפוסט שכחתי מה זה היה 😛
התכנות בשנות השיבעים – שנות האידיאולוגיה של הספר היה שונה מהותית מהתיכנות בן ימינו בו יש התמחויות ותת התמחויות. לא כל מתכנת בחסד שיודע לכתוב דרייברים למערכות הפעלה יודע גם לכתוב קוד אינטרנטי פשוט (אבל הוא בטח יכול ללמוד את זה על נקלה).
כבר העירו רבים לפני ש"לדעת" לתכנת כלומר לכתוב תוכנית שתרוץ ותעשה משהו זו יכולת שונה לחלוטין מ-לדעת- לתכנת כלומר להשתמש נכון באלגוריתמים ומבני נתונים ולכתוב קוד אלגנטי, יעיל וקומפקטי וזה גם שונה לחלוטין מפיתוח אלגוריתמים או מהבנה בשפות תכנות- יכולות שכלל לא מצריכות תכנות מעשי אלא הבנה מתמטית מעמיקה.
לגבי יכולת תיכנות בפועל – כמעט כל אחד עם אינטליגנציה סבירה יכול ללמוד לתכנת אבל זה לא משהו שאפר לעשות כלאחר יד. צריך להשקיע שעות רבות בלימוד ושעות רבות עוד יותר בתכנות ודיבוג על מנת להפנים את העקרונות ולעשות את זה טוב. זה דורש זמן. הרבה זמן. וגם יכולת מסויימת של הבנה מופשטת.
קודם כל אני רוצה להודות לכולם על הדיון הבאמת נורא מעניין. למדתי המון.
מעבר לזה, כמו שנראה לי שאני מציין בתדירויות הולכות ומתגברות בבלוג הזה, אני אוטוטו מתחתן. לכן אני לא אוכל לארגן פגישה בחודש הקרוב. אבל אח"כ בעזרת השם, כן.
קיבלתי גם כמה וכמה אימיילים מאנשים שמעוניינים להשתתף במפגש כזה. אז כל מי שעוד מעוניין יכול לשלוח לי אימייל ובעז"ה אני נארגן מפגש כזה בסוף ספטמבר/ תחילת אוקטובר.
ועוד הפעם תודה לכולם.
טוב!
ביום יום כתיקונו אני קדר. אבל קצת קוד בערב – אפשר.
כמובן, אם זה לא מאוחר. בקיצור גם אני מעוניין.
כמובן שחשוב לציין גם את האקרים האקטיביסטים, אלו שרגלם דרכה בעולם התאגידי וכעת, לאחר שהשחיזו את חניתותיהם הם משלחים אותם בעוצמה במפלצת.
בכל אופן, אני הייתי ממליץ בחום להתחיל דווקא בשפות כיפיות כמו
LOGO
ואח"כ
Action Script
אני אשמח ללמד
עידו, בקש את הפרטים שלי משלום
במילה אחת:
Flash
זה העתיד וזה הכוח.
יה!!!!
(וואלה, טוקבק ראשון שלי אצלך בבלוג).
אם יש משהו שלמדתי מה-26 שנה שאני בנושא (התחלתי עם Apple II עוד בישיבה. פעם הייתי חרדי..), למדתי משהו אחד: לאנשים מאוד רגישים ו/או מאוד רוחניים, אני ממש לא ממליץ לשבת וללמוד תכנות כדבר להתפרנס ממנו או לחרוש שעות עליו. עדיף להשקיע את האנרגיה של אותו אדם במשהו שהוא נמשך אליו ונהנה באמת ממנו.
אנשים רגישים צריכים פידבק חיובי שנותן להם את הדרייב לעלות ברמה ולהתקדם, ומה לעשות, מחשבים ובמיוחד שפות תכנות לא נותנים פידבק. יש לך שגיאה בקוד? תקבל את השגיאה בפרצוף בלי הנחות, בלי שום פידבק חיובי, בלי הנחות. ישר לפרצוף, לבן על גבי שחור, ועם זה תתמודד. אנשים מאוד רגישים לא לוקחים את זה טוב וראיתי מספיק דמעות שנשפכו וגם כמה לוחות מקשים שנשברו מעצבים -בגלל טעויות בתכנות והשגיאה העקשנית שהופיעה בעקבות הבאג.
לגבי קימפול הקרנל, זה באמת לא מסובך ואפשר לכתוב את ההוראות הבסיסיות בטוקבק אחד. אם אותה בחורה כזו "כלי", שתכתוב מכלום קרנל-מודול, ואז נדבר 🙂
מי שמעוניין באמת ללמוד תכנות והוא אדם רגיש, שישאל את עצמו שאלה פשוטה (ולא קשור באיזה שפת תכנות): איך אתה מתמודד מול אדם שלא נותן לך פידבק חיובי, שלא עוזר לך ממש מתי שיש לך תקלה, שלא מעודד אותך, בקיצור – איך אתה מתמודד מול רובוט?
על שם מחשב לימודי
אני הייתי שמחה ללמוד לתכנת
טרקבאקים
great post
usefull info