יום שלישי, 30 באוגוסט 2011

1. על הספר.

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

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

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

2. הקדמה.

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

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

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

אז כתבתי.

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

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

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

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

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

טיפים למורים

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

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

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

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

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

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

הכרת תודה

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

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

יום ראשון, 28 באוגוסט 2011

3. מתחילים.

כאשר מתכנתים מחשב חייבים "לדבר" בשפה שהמחשב מבין, שפת תכנות.

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

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

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

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

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

קופסה לבנה,

וכל דבר שהתוכנית כותבת למסך יופיע בתוך

קופסה כחולה.

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

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

התקנת רובי על מערכת הפעלה חלונות

ההתקנה על חלונות היא קלי קלות. ראשית הורידו למחשב את Ruby installer. סביר להניח שקימות מספר גרסאות לבחירתכם, מדריך זה משתמש בגרסה 1.8.4 אז וודאו שאתם מורידים לפחות את גרסה 1.8.4, (מומלץ פשוט להוריד את הגרסה היציבה החדשה ביותר - בזמן כתיבת שורות אלו זו גרסה 1.8.6-27) לאחר שהורדתם פשוט התקינו למחשב, במהלך ההתקנה תישאלו לאן להתקין את הקבצים? אם אין לכם סיבה טובה לשנות את המיקום המופיע כברירת מחדל, פשוט התקינו כפי שמצויין בהתקנה.

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

ההתקנה של רובי כוללת עורך טקסט מצויין שנקרא SciTe - the Scintilla Text Editor ניתן להפעיל את העורך מתפריט ההתחל => תוכניות => Ruby => SciTe . באפשרותכם לצבוע את הקוד שלכם בצבעים  - הורידו את הקבצים הבאים ושמרו אותם בתוך התיקיה של העורך.

c://ruby/scite

בנוסף כדאי ליצור לעצמכם תיקית עבודה אליה תשמרו את התוכניות שתכתבו. וודאו כאשר אתם שומרים תוכנית שאתם שומרים לתוך תיקית העבודה שיצרתם.
כדי לפתוח את שורת הפקודה, הקליקו על "שורת הפקודה" שנמצאת ב"כל התוכניות" - "עזרים". משם נווטו לתיקית העבודה שלכם ע"י הפקודות הבאות:
עליה תיקיה אחת למעלה:
cd ..
כניסה לתוך תיקיה שנקראת foldername:
cd foldername
כדי להציג את רשימת התיקיות אשר נמצאות במיקום שלכם:
dir /ad

זה הכל! אתם מוכנים ללמוד לתכנת.

התקנת רובי על מקינטוש

במידה ומערכת ההפעלה שלכם היא Mac OS X 10.2 או גרסה חדשה יותר, אז רובי כבר מותקנת במחשב שלכם!, יותר קל מזה לא יכול להיות, למרבה הצער בגרסאות ישנות יותר מ 10.1 לא ניתן להתקין רובי.

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

שורת הפקודה זמינה עבורכם דרך הטרמינל שנמצא ב - Applications/Utilities.

לגבי עורך טקסט השתמשו בכל עורך טקסט שנוח לכם. אך הקפידו לעבוד רק במצב של text-only אחרת התוכניות שתכתבו לא יעבדו. אופציות אחרות הם עורכי טקסט הזמינים דרך הטרמינל כגון: emacs, vi, pico

זה הכל! אתם מוכנים ללמוד לתכנת.

התקנת רובי על לינוקס

ראשית כדאי לכם לבדוק אם רובי כבר מותקנת על המחשב שלכם, לשם כך פתחו את הטרמינל והקלידו:

which ruby

אם קיבלתם משהו כזה:

/user/bin/which: no ruby in (...)

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

ruby -v

כדי להתקין רובי עליכם להיות בעלי הרשאות משתמש ה root, פתחו את הטרמינל וכתבו את הפקודה הבאה:

sudo aptitude install ruby

זה הכל! אתם מוכנים ללמוד לתכנת.


יום שישי, 26 באוגוסט 2011

4. מספרים.

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

puts 1+2

שמרו את התוכנית (כן, זו תוכנית!) בשם:

calc.rb

(הסיומת rb היא מה שנכתוב בדרך כלל בתוכניות הכתובות ברובי). עכשיו הריצו את התוכנית על ידי כתיבת הפקודה הבאה בשורת הפקודה:

ruby calc.rb

התוצאה על המסך צריכה להיות:

3

אתם רואים, תכנות זה לא כזה קשה, נכון?


הכירו את הפקודה PUTS

אז מה בעצם קורא בתוכנית הזו? אני בטוח שאתם מבינים מה עושה 1+2, התוכנית שלנו היא בעצם כמו :

puts 3

puts פשוט כותבת למסך כל מה שבא אחריה.

מספר שלם ומספר מעורב

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

הנה כמה מספרים שלמים:

5

-205

999999999999999999999

0

הנה כמה מספרים מעורבים:

54.321

0.001

-205.3884

0.0

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


חשבון פשוט

עד כה, יש לנו את המרכיבים ליצירת מחשבון פשוט. (מחשבונים תמיד משתמשים במספרים מעורבים אז אם אתם רוצים שהמחשב שלכם יתנהג כמו מחשבון עליכם להשתמש גם במספרים מעורבים) לחיבור וחיסור נשתמש ב + ו -, כפי שראינו. לכפל נשתמש ב *, ולחילוק נשתמש ב /, ברוב המקלדות תמצאו מקשים אלו בצד הימני הרחוק. במידה ואתם משתמשים במחשב נייד או במקלדת קטנה ניתן להעזר במקש ה shift ובשורת המספרים העליונה. בואו ננסה להרחיב את תוכניתנו calc.rb. כתבו את הפקודות הבאות לתוכנית והריצו אותה:

puts 1.0 + 2.0

puts 2.0 * 3.0

puts 5.0 - 8.0

puts 9.0 / 2.0

זה מה שהתוכנית מחזירה:

3.0

6.0

-3.0

4.5

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

puts 1+2

puts 2*3

puts 5-8

puts 9/2

זה מה שהתוכנית מחזירה:

3

6

-3

4


וואוו.... חוץ מהתוצאה הרביעית! אבל כאשר עושים חשבון עם מספרים שלמים מקבלים תוצאות עם מספרים שלמים. כאשר המחשב לא מסוגל לתת את התשובה ה"נכונה" הוא תמיד יעגל כלפי מטה (כמובן שהתוצאה 4 היא התוצאה הנכונה לתרגיל 9/2 בחשבון עם מספרים שלמים, למרות שאולי היא לא התוצאה שציפיתם לקבל.)

בטח אתם תוהים למה חלוקה של מספרים שלמים טובה. ובכן, בוא נגיד שאתם רוצים ללכת לסרט אבל יש לכם רק 9 שקלים. כאן בירושלים ניתן לראות סרט עבור 2 שקלים. כמה סרטים תוכלו לראות? 9/2....4 סרטים. כמובן ש 4.5 לא התשובה הנכונה במקרה זה, לא יתנו לכם לראות עוד חצי סרט או יתנו לחצי מכם לראות סרט שלם... דברים מסויימים פשוט לא ניתנים לחלוקה.

הגיע הזמן עבורכם להתנסות בכתיבת תוכניות בעצמכם! אם אתם רוצים לכתוב תוכניות מורכבות יותר באפשרותכם להשתמש בסוגריים. לדוגמא:

puts 5 * (10-8) + -15

puts 98 + (59872 / (13*8)) * -52

5

-29802

כמה דברים לנסות

כתבו תוכנית שאומרת לכם:

  • כמה שעות יש בשנה?
  • כמה דקות יש בעשור?
  • מה הגיל שלכם בשניות?
  • כמה שוקולד אתם מתכוונים לאכול בחייכם?
    הזהרה: החלק הזה של התוכנית יכול לקחת לכם הרבה זמן

הנה שאלה קצת קשה:

  • אם אני בן 1031 מיליון שניות, מה הגיל שלי?
אם סיימתם לשחק עם המספריםֿ בואו נבדוק מה ניתן לעשות עם מילים.

יום חמישי, 25 באוגוסט 2011

5. אותיות.

אז למדנו מספרים אבל מה עם אותיות? מילים? טקסט?

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

'Hello.'

'Ruby rocks.'

'5 is my favorite number... what is yours?'

'Snoopy says #%^&*@! when he stubs his toe.'

'           '

' '

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

עד כה השתמשנו בפקודה puts עם מספרים, בואו ננסה אותה עם כמה מחרוזות:

puts 'Hello, world!'

puts ''

puts 'Good-bye.'

hello, world!

 

Good-bye.

זה עובד מצויין. עכשיו נסו כמה מחרוזות משלכם.

חשבון במחרוזות

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

puts 'I like' + 'apple pie.'

I likeapple pie.

אופס! שכחתי לשים רווח בין 'I like' ל 'apple pie' . בדרך כלל אין משמעות לרווחים, אבל במחרוזות כן יש להם משמעות. (זה נכון מה שאומרים: מחשבים לא עושים מה שאתם רוצים שהם יעשו, אלה רק מה שאתם אומרים להם לעשות.) בואו ננסה שוב:

puts 'I like ' + 'apple pie.'

puts 'I like' + ' apple pie.'

I like apple pie.

p dir="ltr">I like apple pie.

(כמו שאתם רואים זה לא משנה באיזו מחרוזת הוספתי את הרווח.)

אז ראינו שניתן לחבר מחרוזות, אבל אפשר גם להכפיל מחרוזות! (בכל אופן במספר) שימו לב:

puts 'blink ' * 4

batting her eyes

סתם, אני צוחק, זה בעצם עושה את זה:

blink blink blink blink

כשחושבים על זה זה הגיוני לגמרי, אחרי הכל:

7*3 = 7+7+7

אז:

'moo' *3 = 'moo' + 'moo' + 'moo'

 

12 לעומת '12'

לפני שנמשיך הלאה, עלינו לוודא שאנו מבינים את ההבדל בין מספרים וספרות, 12 הוא מספר, אבל '12' הוא מחרוזת עם שני ספרות.

בואו נשחק עם זה קצת:

puts 12 + 12

puts '12' + '12'

puts '12 + 12'

24

1212

12 + 12

ומה דעתכם על זה:

puts 2 * 5

puts '2' * 5

puts '2 * 5'

10

22222

2 * 5

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

בעיות

יתכן וכבר ניסיתם כמה דברים שלא עבדו. אם לא בואו ננסה כמה:

puts '12' + 12

puts '2' * '5'

#<TypeError: can't convert Fixnum into String>

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

puts 'Betty' + 12

puts 'Fred' * 'John'

משהו נוסף שכדאי לשים לב אליו: ניתן לכתוב בתוכנית

'pig' *5

כיוון שזה אומר 5 סטים של המחרוזת 'pig' מחוברים ביחד. אל לא ניתן לכתוב:

5* 'pig'

כיוון שזה אומר 'pig' סטים של הספרה 5, שזה טיפשי.

לבסוף מה אם נרצה שהתוכנית תדפיס:

You're swell!

בואו ננסה את זה:

puts 'You're swell!'

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

puts 'You\'re swell!'

You're swell!

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

puts 'You\'re swell!'

puts 'backslash at the end of a string:   \\'

puts 'up\\down'

puts 'up\down'

You're swell!

backslash at the end of a string:   \

up\down

up\down

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

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