ישנם הפרוייקטים שאנחנו עושים בעבודה, והם בד”כ מעניינים, אבל יש להם כל מיני תופעות לוואי כמו הצורך לעמוד בזמנים, ולהתמודד עם בקשות משתנות של לקוחות באמצע הפרוייקט, ועוד כל מיני דברים שעלולים להעיב על הכיף היסודי של כתיבת קוד.
אבל אז פתאום מזדמנים לחיינו אתגרי קוד בלתי קשורים לעבודה, ובהם יש כיף מצד עצמו, בלי תופעות לוואי ועם עידודים להתקדמות (כמו נקודות ודרגות). אז לאחרונה התאספו אצלי כמה כאלה, ורציתי לשתף אתכם בהם.
הראשון שנתקלתי בו היה משהו קצר וכיפי: You can’t JavaScript Under Pressure. זה משחק, שבו ניתנים תרגילים בקוד JS, כל פעם בדרגת קושי מעט יותר גבוהה, ובאופן ממש-לא-מלחיץ יש שעון-שניות שרץ ומודד כמה זמן לוקח לך לסיים כל תרגיל. התרגילים לא מסובכים, אבל בפעם הראשונה שעשיתי את זה, באחד התרגילים מישהו נכנס למשרד שלי ורצה את תשומת לבי, מה שכמובן גרם לשעון להמשיך לתקתק אך לי לא לסיים את התרגילים בזמן סביר. לכן אחרי שוהא יצא, התחלתי את המשחק מההתחלה, ולפי הכלל הידוע – בפעם השניה זה הרבה יותר מהיר – הצלחתי להגיע למהירות גבוהה ביותר 🙂 זה לא נחשב רמאות, נכון? 😉
השני הוא משהו הרבה יותר ארוך-טווח – Codewars. זה מתחיל בזה שכדי ליצור חשבון באתר הזה, צריך להצליח לפתור שני תרגילי JavaScript. רק אחרי זה מקבלים טופס הרשמה לאתר. כשנכנסים, יש עוד ועוד תרגילים. התרגילים עולים ועולים ברמת הקושי שלהם, וכך גם מתקדמים בדרגות. הדרגות מקבילות לדרגות בג’ודו – קודם יש 8 kyu שצריך לעבור – 2 kyu בכל צבע (לבן, צהוב, כחול, סגול), ואחרי זה מגיעים ל-8 רמות דאן (4 באפור ו-4 באדום). פה זה לא משחק שנמדד בשניות, אלא דבר שצריך בשבילו הרבה זמן פנוי. כשהגעתי לאתר הזה בדיוק הייתי בהפוגה בין פרוייקטים, אז יכולתי לשבת ולפתור תרגילי קוד, שהלכו והתארכו ככל שעליתי ברמות. הגעתי לרמת 4kyu ואז הגיעו כמה פרוייקטים, ולכן לא התקדמתי מאז. מה שמאד נהניתי ממנו זה כמה למדתי על JavaScript מהתרגילים האלה: גם מזה שהייתי צריכה למצוא פתרונות יצריתיים לתרגילים, וגם מזה שלאחר סיום כל תרגיל, אתה זוכה לראות את כל שאר הפתרונות שאנשים הגישו, מדורגים לפי הצבעות, כך שהמעניינים והיפים ביותר נמצאים בראש הרשימה. כמובן שקריאת קוד של אחרים היא דרך מצויינת ללמוד.
האתר הבא מלמד משהו שנחשב קשה ובלתי מובן: ביטויים רגולריים. האתר תשבץ רגולרי מציג את התרגילים בצורת תשבץ, כאשר יש ביטויים רגולריים ממצד שמאל, ובמאונך, לתשבץ שבאמצע, וצריך להכניס למשבצות התשבץ תוים שיענו על ההגדרות של הביטויים הרגולריים הן במאונך והן במאוזן. גם כאן זה מתחיל בדברים קלים והולך ומתגבר. יש להם שם עזרה, שמפנה אותך לאתר שבודק ביטויים רגולריים. האתר לא אומר לך איזה רצף תוים יענה על ההגדרה (אחרת כל כיף של המשחק היה נהרס), אבל הוא מאפשר להכניס את הביטוי הרגולרי, ולהכניס רצף תוים, והוא מראה לך אילו מהתוים עונים על הביטוי. זה מאד עוזר. בסה”כ האתר הזה מאד כיף, והצלחתי להבין איתו קונספטים שעד עכשיו לא הבנתי (למשל לוכסן עם מספר), ויש לו רק שני חסרונות: הראשון, שאפשר להרשם רק באמצעות חשבון הפייסבוק (אפשר גם לא להרשם, ולשחק בלי הרשמה, אבל אז ההישגים שלך הולכים לאיבוד ברגע שהדפדפן נסגר), והשני שכשבודקים את הצלחתנו תשבץ, מקבלים רק תשובה חיוביות או שלילית, בלי חיווי איפה הטעות. קצת יותר מאתגר ככה, אבל עדיין אפשרי, תודות לאתר שהם מציעים בעזרה.
במאמר מוסגר: ואם כבר בביטויים רגולריים עסקינן, אז בנוסף לאתרים שדיברתי עליהם פעם מזמן, יש כמה אתרים חדשים שעוזרים לבנות ולהבין: האתר הזה מאפשר לבנות ביטוי רגולרי ולבדוק אותו, אבל הוא נותן עוד כלי עזר, כמו דיבאגר, פירוק והסברה של ביטויים רגולריים, ועוד.
גם לאה ורו בנתה כלי בדיקת Regex, וכדרכה, הוא עם פונטים גדולים, ונעים מאד מבחינה ויזואלית. שווה.
ובחזרה לקוד בכיף.
חושבים שאתם מכירים שפות תכנות רבות? האתר הזה מאתגר אתכם ע”י הצגת קוד שכותב Hello World בשפה כלשהי, ועליכם לדעת באיזו שפה זה. מאחר שיש שם שפות אזוטריות רבות (ידעתם שיש שפה שקוראים לה שייקספיר???), השאלות הן רבות-ברירה ולא פתוחות (כלומר, נותנים לכם 3 אפשרויות לבחור מתוכן). אני מוכרחה לומר שזה לא היה קל בכלל. מקסימום הנקודות שהשגתי היה 1000, וראיתי אחרי זה שיש אנשים עם אלפי נקודות. יש לי בהחלט לאן לשאוף 🙂 .
ב-programmr יש תרגילים בשפות שונות. די קשה להרשם לשם, אז לא יכולה להמליץ עליו…
ב-Request Quest יש שאלות בזו אחרי זו. בכל שאלה יש קוד שונה, אבל אותה שאלה: האם הדפדפן יעשה request לשרת. זה ממש מגניב, כי זו שאלה אף פעם לא שאלתי את עצמי. כלומר, כולם יודעים שכל תמונה, כל סקריפט (css או js) מחייבים את הדפדפן לגשת לשרת, אבל מה קורה במקרים יוצאי דופן? למשל, כשתמונה מוגדרת כרקע של אלמנט, אבל האלמנט הוא ב-display: none. האם הדפדפן מספיק חכם לדעת שלא צריך להביא את התמונה במקרה כזה? או למשל, אם תגית הסקריפט כתובה לא נכון – האם הדפדפן עדיין מזהה אותה מספיק כדי להביא את הסקריפט? ועוד כהנה וכהנה.
אחרון חביב, מבחן CSS. המבחן חמוד בזה שהוא מראה כלל CSS, ובלוק של קוד HTML, ועל הנבחן ללחוץ על אלמנטי ה-HTML שעונים על הכלל. זה מאד כיף 🙂
עדכון 16/02/2016: http://adventofcode.com
עדכון 02/2020: js.CheckiO – אתר עם הרבה תרגילי JavaScript.
עדכון 04/2020:
- פוסט עם קישורים לאתרי תרגול JS משחקיים.
- תעלומת רצח שיש לפתור עם SQL. משחק קצר וחמוד שמתרגל SQL.
- The Unix Game הוא משחק תחרותי וקל ללמידה שבו פותרים אתגרי תכנות באמצעות יצירת Pipeline של פקודות UNIX.
עדכון 05/2020: ללמוד לקודד באמצעות משחקים בשפות האלה: JAVA, JavaScript, Python, VIM, PHP, Ruby ועוד.
