סמולטוק (Smalltalk) היא שפת תכנות מונחית-עצמים טהורה. "טהורה" כאן אומרת שרוב המאפיינים של תכנות מונחה-עצמים מיושמים בה במלואם. יש לה טיפוסיות דינמית, כלומר סוגי הערכים נקבעים בזמן ריצה, ויכולת התבוננות פנימה (Reflective), כלומר התוכנית יכולה לבחון ולשנות את מבנה התוכנית בזמן ריצה.
פיתוח בסמולטוק נעשה בדרך כלל בסביבת פיתוח משולבת עם ממשק משתמש גרפי, אליה השפה תוכננה מלכתחילה. תוכנות בסמולטוק עובדות לעיתים קרובות על ידי הידור ל-Bytecode, מעין שפת-מכונה אבסטרקטית. ה-Bytecode מפורש בזמן ריצה על ידי מכונה וירטואלית (Virtual Machine), ולעתים משתמשים גם בהידור Just-In-Time (JIT), שממירה קטעי Bytecode לקוד מהיר בזמן ריצה. מנגנון זה נפוץ גם בשפות מודרניות כמו ג'אווה ו-#C.
סמולטוק פותחה בשנות ה-70 בצוות של Xerox PARC. אחד הייעודים שלה היה ללמד תכנות, ומשם ככל הנראה השם הצנוע. השפה הושפעה מהחידושים שבאו קודם לכן, בעיקר מהתוכנה Sketchpad ומהשפה Simula. הגרסה המפורסמת הראשונה נקראת Smalltalk-80. השימוש בשפה הגיע לשיא מסוף שנות ה-80 ועד אמצע שנות ה-90. השפה השפיעה רבות על שפות אחרות, על תבניות עיצוב (design patterns), על ארכיטקטורות תוכנה, על הידור דינמי ומכונות וירטואליות.
הטרמינולוגיה בסמולטוק שונה מעט ממה שמקובל בשפות מונחות-עצמים אחרות. אובייקט בסמולטוק יכול לעשות שלושה דברים עיקריים:
1. להחזיק מצב, אוסף התייחסויות לאובייקטים אחרים, שנקראים גם שדות או משתני מופע (instance variables).
2. לקבל הודעה מאובייקט אחר, הודעה = קריאה לביצוע פעולה.
3. בעת עיבוד הודעה, לשלוח הודעה לאובייקט אחר.
המצב של אובייקט הוא פרטי לו. אחרים יכולים לשאול אותו או לשנות אותו רק על ידי שליחת הודעות. כל הודעה עשויה להישלח לכל אובייקט; האובייקט המקבל מחליט אם להגיב ואיך.
בסמולטוק אין הפרדה בין "אובייקטים" לבין ערכים פרימיטיביים. מספרים שלמים, ערכי אמת ותווים הם גם הם אובייקטים, מופעים של מחלקות מתאימות, ופעולות עליהם נעשות באמצעות שליחת הודעות. מתכנתים יכולים לשנות מחלקות אלה כדי להגדיר התנהגויות חדשות. גם מבני בקרה כמו תנאים ולולאות ממומשים כאובייקטים.
מחלקות עצמן הן גם אובייקטים. הן מופעים של מטה-מחלקות (metaclasses). מטה-מחלקות גם הן אובייקטים, והמופעים שלהן משתייכים למחלקה מיוחדת בשם Metaclass. לבסוף, בלוקים של פקודות וביטויים הם גם הם אובייקטים.
סמולטוק היא שפת תכנות שבה הרבה דברים מיוחדים עובדים כאובייקטים. אובייקט, משהו שיש לו נתונים ופעולות. כל ערך הוא אובייקט, גם מספרים ותשובות אמת.
סמולטוק נוצרה בשנות ה-70 ב-Xerox PARC. שיקומתה הייתה גם ללימוד תכנות. הגרסה המפורסמת נקראת Smalltalk-80. הכי הרבה אנשים השתמשו בה מסוף שנות ה-80 עד אמצע שנות ה-90. היא השפיעה על שפות ותוכנות רבות אחר כך.
באובייקט בסמולטוק יש בדרך כלל מצב. מצב = מידע שהוא שומר בתוך עצמו. אובייקט יכול לקבל הודעות. הודעה = בקשה לעשות משהו. כשמגיעות הודעות, האובייקט מחליט כיצד להגיב. כדי לשנות אובייקט או לשאול אותו על המצב, שולחים לו הודעות.
גם מספרים, אותיות וערכי אמת הם אובייקטים. גם מחלקות, התבניות שבונות אובייקטים, הן בעצמן אובייקטים. אפילו בלוקים של פקודות נחשבים לאובייקטים.
תגובות גולשים