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

נוספו 2,396 בתים ,  לפני 9 שנים
הרחבה - תרגום מאנגלית
מ (r2.7.2+) (בוט משנה: de:Smalltalk (Programmiersprache))
(הרחבה - תרגום מאנגלית)
'''סמולטוק''' ('''Smalltalk''',) היא [[שפת תכנות]] [[תכנות מונחה-עצמים|מונחית-עצמים]] טהורה - השפה הראשונה שמימשה את רוב המאפיינים המקובלים של תכנות מונחה-עצמים. בנוסף, סמולטוק היא בעלת [[טיפוסיות]] דינמית ויכולת [[התבוננות פנימה]] (Reflective). פיתוח בשפה מבוצע לרוב בסביבת עבודה בעלת ממשק גרפי, אליה תוכננה השפה מלכתחילה.
 
השפהסמולטוק פותחה במהלך [[שנות השבעים]] על ידי [[אלן קיי]], [[דן אינגולס]], [[טד קלר]], [[אדל גולדברג]] ואחרים, כחלק מעבודתם ב-[[Xerox PARC]]. חלק מיעודה המקורי של Smalltalkסמולטוק היה כשפה ללימוד [[תכנות]], ומכאן ככל הנראה מקור שמה הלא יומרני. Smalltalkסמולטוק הושפעה רבות מהחידושים המהפכניים שבאו לעולם לראשונה בתוכנה [[Sketchpad]] ובשפת ה[[תכנות]] [[Simula]], ומאפיינים רבים של השפה הם המשך ישיר למאפיינים המצויים בהן. הגרסה הפופולרית הראשונה של השפה נקראה Smalltalk-80, והיא קנתה לה קהילה של משתמשים נאמנים הממשיכים לפתח אותה באופן פעיל גם בימים אלה.
 
שיא השימוש ב-Smalltalkבסמולטוק היה מסוף [[שנות השמונים]] ועד אמצע [[שנות התשעים]]. בתקופה זו דרך כוכבה של השפה והיאהשפיעה ריכזהרבות סביבהעל קהילת מפתחים ערה ושוקקת. מתוך קהילה זו צמחו חידושים רבים בתחומי התכנות מונחה העצמים,פיתוח [[שפת תבנית|שפות תבנית]], [[תבניות עיצוב]] ו[[תבנית ארכיטקטורה|ארכיטקטורה]], [[הידור]] דינאמי, [[מכונה וירטואלית|מכונות וירטואליות]] ועוד. רבים מהמובילים של תחום [[הנדסת תוכנה|הנדסת התוכנה]] ב[[המאה העשרים ואחת|מאה העשרים ואחת]] צמחו בקהילה זו.
 
הטרמינולוגיה של סמולטוק שונה מעט מזו המקובלת כיום בשפות מונחות-עצמים המקובלות בתעשיה (למעט שפת [[Ruby]], שירשה חלק מהטרמינולוגיה הזאת), בשל הבדלים מהותיים בין השפות בהתנהגות של אובייקטים. אובייקט בסמולטוק יכול לבצע בדיוק שלושה דברים:
Smalltalk היא שפה מונחית-עצמים טהורה, בשונה מחלק ממתחרותיה שהן היברידיות (תוספות מוכוונות עצמים לשפה שאינה כזו). לאחר יצירת שפת התכנות [[Java]], תפסה ג'אווה את מקומה של Smalltalk כשפה מונחית-עצמים מובילה.
# להחזיק '''מצב''' (אוסף של התייחסויות לאובייקטים אחרים - "שדות" או "משתני מופע").
# לקבל '''הודעה''' מאובייקט אחר.
# במהלך עיבוד של הודעה, לשלוח הודעה לאובייקט אחר.
המצב שאובייקט מחזיק הוא תמיד פרטי לאובייקט. אובייקטים אחרים יכולים לתשאל או לשנות את המצב הזה אך ורק באמצעות שליחה של בקשות (הודעות) לאובייקט לעשות זאת. כל הודעה עשויה להישלח לכל אובייקט: כאשר מתקבלת הודעה, האובייקט המקבל מחליט האם ההודעה הזאת היא ראויה, וכיצד להגיב לה.
 
סמולטוק היא שפת תכנות מונחית-עצמים "טהורה". משמעות הדבר היא כי, בניגוד לשפת ג'אווה או ++C, אין כל הבדל בין [[ערך (מדעי המחשב)|ערכים]] שהם אובייקטים לבין ערכים שהם טיפוסים פרימיטיביים, בסיסיים. בסמולטוק, ערכים פרימיטיביים כגון מספרים שלמים, ערכי-אמת או תווים, גם הם אובייקטים, במובן שהם '''מופעים''' (Instance) של מחלקות מתאימות, ופעולות עליהם מבוצעות באמצעות שליחה של הודעות. מתכנת יכול לשנות את המחלקות שמממשות את הערכים הפרימיטיביים, כך שתוגדר התנהגות חדשה עבור מופעים שלהן. למשל, על מנת לממש מבנה בקרת-זרימה או לשנות את התנהגותם של המבנים הקיימים (בסמולטוק גם פקודות תנאי או לולאות ממומשות כאובייקטים). נפוץ לסכם עובדה זאת במשפט "בסמולטוק '''כל דבר''' הוא אובייקט", אם כי מדויק יותר לומר כי כל ה'''ערכים''' הם אובייקטים.
 
כיוון שכל ערך הוא אובייקט, מחלקות גם הן אובייקטים, והן מופעים של מטה-מחלקות. מטה-מחלקות גם הן אובייקטים, והן מופע של המחלקה Metaclass. בלוקים של פקודות וביטויים גם הם אובייקטים.
== קישורים חיצוניים ==
* [http://www.smalltalk.org/ Smalltalk.org] קידום השפה