שאלות נפוצות
ציר זמן
צ'אט
פרספקטיבה

Smalltalk

שפת תכנות מוויקיפדיה, האנציקלופדיה החופשית

Remove ads

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

עובדות מהירות פרדיגמות, תאריך השקה ...
Remove ads

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

Remove ads

היסטוריה

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

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

Remove ads

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

סכם
פרספקטיבה

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

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

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

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

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

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

Remove ads

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

ויקישיתוף מדיה וקבצים בנושא Smalltalk בוויקישיתוף
Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads