הבדלים בין גרסאות בדף "Smalltalk"

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