Smalltalk – הבדלי גרסאות

מתוך ויקיפדיה, האנציקלופדיה החופשית
תוכן שנמחק תוכן שנוסף
הרחבה - תרגום מאנגלית
עריכה
שורה 1: שורה 1:
'''סמולטוק''' ('''Smalltalk''') היא [[שפת תכנות]] [[תכנות מונחה-עצמים|מונחית-עצמים]] טהורה - השפה הראשונה שמימשה את רוב המאפיינים המקובלים של תכנות מונחה-עצמים. בנוסף, סמולטוק היא בעלת [[טיפוסיות]] דינמית ויכולת [[התבוננות פנימה]] (Reflective). פיתוח בשפה מבוצע לרוב בסביבת עבודה בעלת ממשק גרפי, אליה תוכננה השפה מלכתחילה.
'''סמולטוק''' ('''Smalltalk''') היא [[שפת תכנות]] [[תכנות מונחה-עצמים|מונחית-עצמים]] טהורה - השפה הראשונה שמימשה את רוב המאפיינים המקובלים של תכנות מונחה-עצמים. בנוסף, סמולטוק היא בעלת [[טיפוסיות]] דינמית ויכולת [[התבוננות פנימה]] (Reflective). פיתוח בשפה מבוצע לרוב בסביבת עבודה בעלת ממשק גרפי, אליה תוכננה השפה מלכתחילה.


תוכנות בסמולטוק על פי רוב עוברות [[הידור]] ל-Bytecode, מעין שפת-מכונה אבסטרקטית, המפורשת בזמן-ריצה על ידי [[מכונה וירטואלית]]. מגנון זה נקרא "הידור Just-In-Time" {{כ}}(JIT), והוא נפוץ בשפות מודרניות רבות (כגון [[ג'אווה (שפת תכנות)|ג'אווה]] ו-[[C#|#C]]).
== היסטוריה ==
סמולטוק פותחה במהלך [[שנות השבעים]] על ידי [[אלן קיי]], [[דן אינגולס]], [[טד קלר]], [[אדל גולדברג]] ואחרים, כחלק מעבודתם ב-[[Xerox PARC]]. חלק מיעודה המקורי של סמולטוק היה כשפה ללימוד [[תכנות]], ומכאן ככל הנראה מקור שמה הלא יומרני. סמולטוק הושפעה רבות מהחידושים המהפכניים שבאו לעולם לראשונה בתוכנה [[Sketchpad]] ובשפת ה[[תכנות]] [[Simula]], ומאפיינים רבים של השפה הם המשך ישיר למאפיינים המצויים בהן. הגרסה הפופולרית הראשונה של השפה נקראה Smalltalk-80, והיא קנתה לה קהילה של משתמשים הממשיכים לפתח אותה באופן פעיל גם בימים אלה.
סמולטוק פותחה במהלך [[שנות השבעים]] על ידי [[אלן קיי]], [[דן אינגולס]], [[טד קלר]], [[אדל גולדברג]] ואחרים, כחלק מעבודתם ב-[[Xerox PARC]]. חלק מיעודה המקורי של סמולטוק היה כשפה ללימוד [[תכנות]], ומכאן ככל הנראה מקור שמה הלא יומרני. סמולטוק הושפעה רבות מהחידושים המהפכניים שבאו לעולם לראשונה בתוכנה [[Sketchpad]] ובשפת ה[[תכנות]] [[Simula]], ומאפיינים רבים של השפה הם המשך ישיר למאפיינים המצויים בהן. הגרסה הפופולרית הראשונה של השפה נקראה Smalltalk-80, והיא קנתה לה קהילה של משתמשים הממשיכים לפתח אותה באופן פעיל גם בימים אלה.


שיא השימוש בסמולטוק היה מסוף [[שנות השמונים]] ועד אמצע [[שנות התשעים]]. השפה השפיעה רבות על פיתוח [[שפת תבנית|שפות תבנית]], [[תבניות עיצוב]] ו[[תבנית ארכיטקטורה|ארכיטקטורה]], [[הידור]] דינאמי, [[מכונה וירטואלית|מכונות וירטואליות]] ועוד.
שיא השימוש בסמולטוק היה מסוף [[שנות השמונים]] ועד אמצע [[שנות התשעים]]. השפה השפיעה רבות על פיתוח [[שפת תבנית|שפות תבנית]], [[תבניות עיצוב]] ו[[תבנית ארכיטקטורה|ארכיטקטורה]], [[הידור]] דינאמי, [[מכונה וירטואלית|מכונות וירטואליות]] ועוד.


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

אובייקט בסמולטוק יכול לבצע בדיוק שלושה דברים:
# להחזיק '''מצב''' (אוסף של התייחסויות לאובייקטים אחרים - "שדות" או "משתני מופע").
# להחזיק '''מצב''' (אוסף של התייחסויות לאובייקטים אחרים - "שדות" או "משתני מופע").
# לקבל '''הודעה''' מאובייקט אחר.
# לקבל '''הודעה''' מאובייקט אחר.
שורה 14: שורה 19:


כיוון שכל ערך הוא אובייקט, מחלקות גם הן אובייקטים, והן מופעים של מטה-מחלקות. מטה-מחלקות גם הן אובייקטים, והן מופע של המחלקה Metaclass. בלוקים של פקודות וביטויים גם הם אובייקטים.
כיוון שכל ערך הוא אובייקט, מחלקות גם הן אובייקטים, והן מופעים של מטה-מחלקות. מטה-מחלקות גם הן אובייקטים, והן מופע של המחלקה Metaclass. בלוקים של פקודות וביטויים גם הם אובייקטים.

== קישורים חיצוניים ==
== קישורים חיצוניים ==
* [http://www.smalltalk.org/ Smalltalk.org] קידום השפה
* [http://www.smalltalk.org/ Smalltalk.org] קידום השפה

גרסה מ־00:47, 6 באפריל 2012

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

תוכנות בסמולטוק על פי רוב עוברות הידור ל-Bytecode, מעין שפת-מכונה אבסטרקטית, המפורשת בזמן-ריצה על ידי מכונה וירטואלית. מגנון זה נקרא "הידור Just-In-Time" ‏(JIT), והוא נפוץ בשפות מודרניות רבות (כגון ג'אווה ו-#C).

היסטוריה

סמולטוק פותחה במהלך שנות השבעים על ידי אלן קיי, דן אינגולס, טד קלר, אדל גולדברג ואחרים, כחלק מעבודתם ב-Xerox PARC. חלק מיעודה המקורי של סמולטוק היה כשפה ללימוד תכנות, ומכאן ככל הנראה מקור שמה הלא יומרני. סמולטוק הושפעה רבות מהחידושים המהפכניים שבאו לעולם לראשונה בתוכנה Sketchpad ובשפת התכנות Simula, ומאפיינים רבים של השפה הם המשך ישיר למאפיינים המצויים בהן. הגרסה הפופולרית הראשונה של השפה נקראה Smalltalk-80, והיא קנתה לה קהילה של משתמשים הממשיכים לפתח אותה באופן פעיל גם בימים אלה.

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

תכנות מונחה עצמים

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

אובייקט בסמולטוק יכול לבצע בדיוק שלושה דברים:

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

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

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

כיוון שכל ערך הוא אובייקט, מחלקות גם הן אובייקטים, והן מופעים של מטה-מחלקות. מטה-מחלקות גם הן אובייקטים, והן מופע של המחלקה Metaclass. בלוקים של פקודות וביטויים גם הם אובייקטים.

קישורים חיצוניים