עידו123456
New member
הקשר
הקשר הוא שזה בדיוק מה שוירוס עושה - הוא מתייחס לקוד שלו עצמו בשביל ליצור עותקים של עצמו. אני לא יודע VB אז כך שאני לא יכול ליצור תוכנה כזאת אבל הינה הדרך הכללית ליצור תוכנה שמדפיסה את עצמה כפי שרואים ממשפט הרקורסיה:
סימונים: אם X תוכנה אזי <X> הוא התיאור של התוכנה נגדיר תוכנה Q שלכל קלט w מדפיסה את <Pw> כאשר Pw היא תוכנה המדפיסה את w ועוצרת. <Pw> היא התיאור של התוכנה. Q תפעל כך: לכל קלט w נבנה תוכנה Pw אשר: - מוחקת את הקלט - כותבת את w - עוצרת Q תחזיר את <Pw> כעת נגדיר את SELF, ל SELF שתי פרוצדורות: A,B כאשר קודם A רצה ואז B. A תדפיס את התיאור של B B תדפיס את התיאור של A A מקבלת מראש את התיאור של B וכל מה שהיא עושה זה פשוט להדפיס את התיאור הנ"ל (A היא בעצם התוכנה P<.B> B תקרא את התיאור של עצמה מהפלט של A ואז תריץ את Q על תיאור זה בשביל לקבל את הקוד של <.P<.B וכפי שראינו בסעיף הקודם <.A=P<.B. בנוסף B תכניס גם הוראות כלליות לקוד כמו "תריץ את A ואז את B" לסיכום, SELF פועלת כך: 1) היא מריצה את הפרצ' A שכותבת את התיאור של B 2) מריצה את B שקוראת את הפלט <B.> מהפרוצדורה הקודמת וכותבת לפני פלט זה את
הקשר הוא שזה בדיוק מה שוירוס עושה - הוא מתייחס לקוד שלו עצמו בשביל ליצור עותקים של עצמו. אני לא יודע VB אז כך שאני לא יכול ליצור תוכנה כזאת אבל הינה הדרך הכללית ליצור תוכנה שמדפיסה את עצמה כפי שרואים ממשפט הרקורסיה:
<P<.B>> = <.A.>
בנוסף, B מוסיפה הוראות של להריץ את A ואח"כ את B. אני לא חושב שיש כאן משהו שמונע מאיזשהי שפת תכנות בסיסית לממש את הפסאודו-קוד הזה. כל מה שצריך זה יכולת קריאה/כתיבה וקריאה לפרוצדורות.