בתשובה לאביב, אייל, 26/06/03 14:38
זירוקס? 154372
הראשונה? לא, כי שפת Simula היתה שם קודם. "אחת הבודדות עד היום"? גם לא, כי ישנן עשרות, ואולי אף מאות, שפות העונות לתואר.
זירוקס? 154451
name four.
זירוקס? 154462
אוסף מקרי של שפות מונחות העצמים מהיותר מוכרות והיותר "טהורות" (לכן C++ לא ברשימה):

Beta
Cecil
Dylan
Eiffel
Java
Python
Sather
Self
Simula
Smalltalk

ויש עוד המון.
זירוקס? 154561
מה עם עדה שפותחה כשפה מונחת העצמים של הDOD?
זירוקס? 154564
עדה אינה בדיוק מונחית עצמים. היא תומכת בטיפוסי נתונים אבסטרקטיים, אבל אין בה ירושה, אאז''נ.
זירוקס? 154565
ממתי ירושה היא תנאי לשפה מונחית עצמים?
לפי מה שלמדתי, השפה הראשונה שפותחה כמונחת עצמים ולא כמונחת תהליכים היא עדה שפותחה על ידי משרד ההגנה האמריקאי במשך כעשור בין 73 ל-‏83.
זירוקס? 154567
בתאוריה של שפות תכנות מבדילים בין Object based (מבוסס עצמים) לבין Object oriented (מונחה עצמים). ההבדל הוא בירושה. אינני מומחה בשפת Ada, אך שפה שאין בה ירושה היא לכל היותר Object based.

בתעשייה לא כ"כ מקפידים על ההבדל, וכמעט כל שפה (או מוצר) שיש לו מחלקות ומופעים זוכה לתואר "מונחה עצמים". כך למשל שפת Visual Basic, בגרסה 5 (לא שיחקתי עם גרסאות מתקדמות יותר) לא כללה ירושה, אך שווקה ע"י MS כ"מונחת עצמים".

ראה גם: http://www.cs.technion.ac.il/Courses/OOP/slides/expo... (מתוך שקפי הקורס בתכנות מונחה עצמים בטכניון). שים לב לדירוג: עצמים בלבד – שפה מודולרית; עצמים ומחלקות – שפה מבוססת עצמים; עצמים, מחלקות וירושה – שפה מונחת עצמים.
זירוקס? 154569
נראה שהחבר'ה האלו מסכימים איתנו, לפחות לגבי שפת עדה המקורית:
(חפשו: "is ada an object oriented language")
זירוקס? 154568
אני לא מספיק מכיר את שפת עדה כדי לקבוע באופן פסקני שהיא אינה מונחית עצמים. זו גם שאלה פילוסופית יחסית - היכן עובר הגבול בין שפות מונחות עצמים טהורות (Smalltalk למשל) לשפות שתומכות בפרדיגמה מונחית העצמים (כמו C++ למשל, שיתכן ועדה משתייכת אליהן). וכמובן, זה שמישהו אומר ששפת תיכנות היא מונחית עצמים לא אומר שהיא באמת כזו. "מונחה עצמים" היא buzzword מאד מקובלת בעולם המחשבים, שמנפנפים בה בקלות רבה מדי.

מקובל (במחוזות מהם אני מגיע לפחות, הפקולטה למדעי המחשב בטכניון) לראות בירושה את אחד מהמאפיינים החשובים ביותר של הפרדיגמה מונחית העצמים, אם לא החשוב ביותר. מישהו שמכיר את עדה (ולא ג'ון באבג'...) יכול לפרט יותר לגבי מידת מונחיות העצמים שלה?
זירוקס? 154573
לפי מה שאני מכיר את ADA מלימודים בקורס אחד באו"פ, היא פותחה על ידי משרד ההגנה האמריקאי והיתה שונה מכל שפות התכנות שלפניה בכך שהיתה מונחת עצמים, אני מניח שהם השתמשו במושג הזה כבר אז.
ככל הנראה מושג זה הורחב לאחר מכן.
זירוקס? 154590
תגובה 154567
מי שלימד אותך כנראה השתמש בהגדרה מאד מרחיבה של "מונחית עצמים".
זירוקס? 154593
לא דיברתי על מי שלימד אותי, דיברתי על משרד ההגנה האמריקאי בעת שפיתחו את השפה.
OOP לא הומצא כשהמציאו את smalltalk.
זירוקס? 154606
אכן, OOP לא הומצא כשהמציאו את smalltalk, אלא בערך כשהמציאו את simula, בשנת 1967. בכל מקרה, הנה מסמך הדרישות המקורי לשפת ADA: http://www.adahome.com/History/Steelman/steelman.htm
לא מופיע בו, לפי חיפוש שטחי, הצירוף Object Oriented.

נסה גם את זה:
לפי מה שקראתי (בזכותך) בינתיים על שפת עדה אז היא תומכת במספר פרדיגמות - הפרדיגמה מונחית עצמים והפרדיגמה האימפרטיבית, לפחות (ואולי עוד). אבל אי אפשר לסווג אותה כ"שפה מונחית עצמים", כמו שאי אפשר לסווג את C++ כשפה מונחית עצמים (ומי שלא מסכים, שישאל אפילו את ממציא השפה: http://www.research.att.com/~bs/bs_faq.html#Object-O...)
צורעס? 154607
טוב, אז כנראה שלעולם לא יצא לי לכתוב בשפה מונחית-עצמים. לא יודע אם זה הפסד גדול.
צורעס? 154609
זה דווקא נחמד. אם יצא לך, קח את הקורס בתכנות מונחה עצמים בטכניון ותוכל לכתוב בדיאלקט של Smalltalk. לוקח קצת זמן להבין ש"הכל פה זה עצמים", אפילו מספרים ואפילו בלוקים של קוד. אבל כשמבינים את זה אז זה הופך להיות מאד יצירתי, ואפילו אינטואיטיבי.
צורעס? 154612
או, לא-לא-לא. אני לא אקח מבחירתי החופשית קורס ב..ב..בתכנות.

אגב, יש הבדל עקרוני בין "הכל זה עצמים" לבין "הכל זה פונקציות," כמו שמתיימרים לעשות ב-ML וב-LISP?
צורעס? 154614
כן, בראשון הכל זה עצמים, ובשני הכל זה פונקציות. תטל"א?
צורעס? 154616
לחילופין, אולי שאלתי שטל"א?

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

חזרה לעמוד הראשי המאמר המלא

מערכת האייל הקורא אינה אחראית לתוכן תגובות שנכתבו בידי קוראים