בתשובה לגדי אלכסנדרוביץ', 15/06/07 19:44
התחלת ולכן תסיים? 447177
יצא לך לכתוב משהו ב-smalltalk ? אם כן, איך Ruby בהשוואה אליה?
התחלת ולכן תסיים? 447178
לא יצא לי, אבל אולי כן אפשר לבצע השוואה כלשהי: התחלתי בעבר ללמוד smalltalk ונשברתי די מהר - עד כמה ש-if שהוא אובייקט הוא דבר מגניב, זה בעיקר מרגיש מסורבל - ואילו ברובי התאהבתי מהרגע הראשון. אני מניח שעכשיו אני כבר מוכן ל"סיבוב שני" עם smalltalk, ואנסה לדווח בעתיד על התוצאות.
התחלת ולכן תסיים? 447182
ב-smalltalk זה לא ש-if הוא אובייקט אלא שהוא מתודה (הודעה) של כל מחלקה. הבלוק שיש לבצע (שהוא בעצם פונקציה אנונימית), הוא האובייקט. כל המושג של בלוקים/פונקציות אנונימיות היה קשה לי להבנה בתחילה, כמו ב-Lisp. אחר כך התרגלתי. אולי הגיע הזמן שאקח את רובי לסיבוב (אולי אפילו On Rails!).
התחלת ולכן תסיים? 447183
איך קרה שדיון בשבוע הספר הפך לדיון ב-ruby?

ערן - ממליץ בחום לקחת את רובי לסיבוב, אבל בזהירות. אני נדבקתי בחידק, מה שגרם לי בסופו של דבר לעזוב את העבודה כי לא יכולתי יותר לראות java מול העיניים, ולהקים סטארט-אפ בין היתר כדי שאוכל לקודד בכיף ב-ruby...
אתה יכול לחשוב עליה כמשהו קרוב מספיק ל-lisp כדי להיות מוצלח, אבל עם סיכוי טוב להצלחה מסחרית.
התחלת ולכן תסיים? 447184
מה שיפה בדיונים באייל זו האסוציאטיביות הזו, שבה אתה יודע איפה דיון מתחיל, אבל לא יודע לאן הוא יכול להגיע :)
התחלת ולכן תסיים? 447197
You mentioned associations... Look for Topic Maps.

התחלת ולכן תסיים? 447188
הממ, לא זכרתי טוב, ועכשיו בלבלת אותי עוד יותר - אתה בטוח שהאובייקט הוא לא ערך ה-true/false, והבלוק הוא הפרמטר לפונקציה?

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

הנה דוגמה שאני מחבב לקוד ברובי, במקרה הזה שמדפיסה את 1,000 מספרי פיבונאצ'י הראשונים:

x=y=1
1000.times {x,y=y,x+y; puts x}

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

y=x.collect {|x_value| f(x_value)}

אין לי ספק שגם בשפות אחרות יש מבנים דומים, אבל אני תוהה בכמה מהשפות שהן לא ב-Cluster של רובי (כדוגמת פייתון וסמולטוק) זה קריא ואלגנטי בצורה דומה.
התחלת ולכן תסיים? 447194
הלכתי לבדוק. אם אני מבין נכון את מה שמצאתי כאן:
אז האובייקט הוא מופע (יחיד) של תת-מחלקה של Boolean - או True או False. כל אחת מהן מממשת את ההודעות ifTrue ו-IfFalse ושילובים של השתיים (אשר מוצהרות כבר ב-Boolean), כשכל הודעה מקבלת כפרמטר בלוק (או שניים). הנה דוגמה לתחביר (מתוך הערך בוויקיפדיה):
result := a > b
ifTrue:[ 'greater' ]
ifFalse:[ 'less' ]
התחלת ולכן תסיים? 447195
טוב, עשית לי חשק, ועוד לא גמרתי ללמוד פייתון. תתבייש לך.
התחלת ולכן תסיים? 447196
נו, ואני אפילו עוד לא התחלתי ללמוד פייתון. בוש והיכלם.

חזרה לעמוד הראשי המאמר המלא

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