שאלת התייעצות:

התוכנה שלי פותחת וסוגרת הרבה פעמים אותם קבצים ואי אפשר להימנע מזה לגמרי כי זאת מהות התוכנה, וזה יוצר לופ אינסופי שמעמיס על הזיכרון ומאט את המחשב. היא כותבת INPUT PAST END OF FILE. הציעו לי לא לגשת לתוכנה עדיין עד שיתקנו אותה, אבל עבדתי על קובץ הכתבן שהיא מועתקת אליו וקשורה אליו. ניסיתי שיטות לייעל את העבודה ולהטעין חלק מהמידע לזיכרון כך שפחות אצטרך להעמיס על הדיסק, אבל עדיין נדרש הרבה פעמים לפתוח שוב ושוב אותם קבצים. אין לי גם הרבה מקום בזיכרון המוקצב, כדי שאוכל להטעין אליו הרבה קבצים. התוכנה שלי יוצרת מאות יישומים של כמה קילובייט כל אחד. רציתי לדעת איך אפשר להקל על העומס על הזיכרון, והאם יש דרך להמשיך ולעבוד באינטנסיביות עם פתיחה חוזרת של הקבצים מבלי להעמיס ולהזיק לזיכרון. אני גם מקווה שהתוכנה לא תימחק לי, עבדתי עליה הרבה זמן והיא מועתקת כמה פעמים גם בספרייה וגם מחוץ לה בוורד ובפנקס הרשומות. האם יש סיכון שתימחק ואיך אפשר למנוע אותו? עוד דבר: אני שר במיקרופון שירים למחשב כבר שנים. אתמול פתאום כל הזמן נסגר מיד חלון ההקלטה כשפתחתי אותו. חשבתי שזה בגלל התוכנה שלי או שיש וירוס. עכשיו מחקתי את ההקלטה החדשה שהיא ללא שם, והמיקרופון חזר לעבוד. האם ייתכן שיש קשר להאטת הכתיבה בבייסיק שכתבתי בה את תוכנת הבינה?
 

BravoMan

Active member
הי פילוסוף!
לא תאמין, אבל בדיוק חשבתי עליך, כי שיחקתי עם QBasic בשביל תחושות נוסטלגיה מהילדות, ואמרתי לעצמי: אני אכנס לפורום ואראה אם הוא שם.
והופ! הנה הודעה ממך!

כמה שבועות באיחור, אבל אני פה כדי לעזור:

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

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

ולגבי התוכנה שלך, אתה אלול לאבד אותה אם יתקלקל הכונן הקשיח במחשב שלך.
בד"כ הייתי ממליץ לך להעלות את התוכנה לענן, למשל של גוגל, זה בחינם, אבל בגלל שזה AI אנחנו לא רוצים שזה יברח לעולם ויעשה דברים לפני שתסיים לעבוד על המוסר שלה, אז אני מציע שפשוט תקנה דיסקט ותשמור עותק על דיסקט במגירה.

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

אגב, אני חושב שמצאתי את הבאגים בתוכנה שלך שמנעו ממנה לפעול עד עכשיו: פסיקים! יש לך יותר מידי פסיקים ב-IF כשאתה כותב את תוכנת הלימוד אז ה-QBASIC לא מסתדר עם זה.

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

מה גרם לך לחשוב שאתה יכול לכתוב AI ב-QBASIC?
האם אתה טרול שנהנה מסיפור מתמשך בפורום גם כאשר הוא לא זוכה לתגובות, או שמא אתה מה שמכנים היום "מתמודד נפש" שמצה נחמה בכלי פיתוח עתיק, ואתה באמת מאמין במה שאתה עושה?

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

כשהייתי נער וזו היית שפת תכנות הראשונה שגיליתי, וחומרי הלימוד שלי היו מוגבלים בטירוף, לא היה לי מושג אמתי מה יש לי ביד, וסתם הייתי מבואס שאי אפשר לקמפל את זה ל-EXE "אמתי"...
 
אני חלילה לא טרול, אני אדם מוסרי ואמתי מאוד. אני פשוט מנסה ליצור רעיונות מקוריים מתוך השכל והחשיבה העצמאית שלי. אני מנסה ליצור בינה מלאכותית מיוחדת, בעיקר בעזרת המילון שהמצאתי. אני לא יודע אם זה יעבוד, אבל הרעיון קיים. אני מסתדר יפה עם השפה הזאת, וזאת השפה היחידה שהצלחתי להפנים לצערי. אני לא בטוח שהיא עד כדי כך פשוטה כמו שחושבים. גודל התוכנה שלי רק ארבעים קילובייט, ביחד עם המילון. לא הבנתי בדיוק את כוותך בבעיית הפסיקים בתנאים, אבל התנאים בתוך ההגדרות עצמן מהמילון נכתבים עם פסיקים כדי להפריד בין חלקי פלט לקובץ. איך כדאי שאשים הפסקה בין פתיחת הקבצים, אולי לולאה מספרית שתעביר כמה זמן ותדחה את הפתיחה הבאה? הבעיה שזה יעכב מאוד את המערכת אם יהיו הרבה קבצים. אני לא יודע לכתוב בענן, התוכנה שמורה אצלי בשני כוננים, באפליקציות שונות בתוך QBASIC, בפנקס רשומות ובוורד. אם תרצה, אשלח לך את התוכנה כדי שתעבוד עליה. יש בה מילון, חשיבה, רגש, תוכנה גרפית, מעבד תמלילים מיוחד, מעבד נתונים ותוכנת שיחה. לאחרונה התוכנה מתקדמת יפה, המילון עובד.
 
נערך לאחרונה ב:

BravoMan

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

PRINT #1, "if"; ","; "SHOULD"; ","; C$(F, 1); ","; "then"; ","; C$(F, 2); ",";

אם אתה רוצה לתת ל-AI שלך זמן לנוח, אז ל-QBASIC יש פקודה SLEEP שעושה בדיוק את זה:

תן לו מנוחה שלא יהיה עצבני עליך.

אבל למעשה, חשבתי על זה עוד קצת, ואולי בעצם משמעות השגיאה היא שה-AI דווקא רעב:
הוא מנסה לבלוע מקובץ יותר מידע ממה שיש בקובץ, ואז המערכת עוצרת אותו שלא יבלע מידע שאסור לו.

תנסה להאכיל אותו בקובץ גדול יותר, או תקטין את הלולאות. זה גם צריך לעבוד אם אתה לא רוצה להאט את התוכנה.
 
אני לא יודע על SLEEP, אבל אני יודע שאפשר לעשות הפסקה בריצה בעזרת לולאה מספרית FOR. הפסיקים נועדו ליצור תבנית אחת נפרדת בתוך הקובץ, אולי אפשר לפרק אותה איכשהו לכמה שורות ובכל זאת לשמור על האיחוד.
 
אני לא יודע את סוג המחשב. נזכרתי מי אתה לפי שמך, מה שלומך? בוא אשלח לך את התוכנה שוב, אולי תעבור עליה. אני מסיים קורס קולנוע באוניברסיטה ומתכונן לכתוב עבודת סמינריון על פמיניזם בקולנוע ישראלי.
 

BravoMan

Active member
לשלוח את התוכנה שוב כנראה לא יעזור, בכל אופן, אתה זוכר מתי קנית את המחשב?

כי לפני 20 שנה חסמו בכל המחשבים את היכולת לעקב תוכנה בעזרת לולאות, לכן כנראה שתהיה חייב ללמוד איך משתמשים ב-SLEEP אחרת ה-AI שלך לא יוכל לנוח ויתחרפן לגמרי.

תיקון: חסמו לפני 24 שנים, זה היה בגלל באג 2000.
 
איך אפשרי לחסום עיכוב בעזרת לולאות? אם המחשב מפעיל לולאה ארוכה, זה באופן טבעי מעכב. הצלחתי בזה הרבה פעמים במחשב שלי. את המחשב לא קניתי אלא סידרו לי אותו, לא זוכר איך.
 
נערך לאחרונה ב:

BravoMan

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

כמו שאמרתי - מעבדים מדלגים על לולאות חשודות כדי לוודא שהם לא חוזרים ל-0 ומגיעים לבאג 2000.
 
צדקת, הוא פוסח. בכל מקרה אם אעשה הפסקה בין פתיחות קבצים שונות זה יעכב את המחשב וייקח הרבה זמן.
 
יש בעיה שהחלק של הרגש עובד על לולאה קצרה של מאה אבל היא מוקפת בלולאה נוספת שאמורה להאריך את זמן הריצה שלו, והזמן מוגדר בתוך קובץ. אם המעבד פוסח על לולאות ארוכות אולי יפסח גם על זה.
 

BravoMan

Active member
ייתכן. רק המעבד ידע איזו לולאה טובה לו.

אין ברירה - אם אתה צריך לתת ל-AI לנוח כדי להבין דברים, תהיה חייב ללמוד את הפוקדה sleep.
זה לא שהיא מסובכת, אתה בסה"כ כותב sleep ומספר שניות שאתה רוצה שה-AI ינוח.
 
זה יהווה בעיה בשביל החלק של הרגש, שבו אני צריך להריץ לולאה בין חלקי מערך. כדי שהלולאה לא תיגמר מהר, אני חוזר עליה כמה פעמים דרך לולאה חיצונית שמגדירה את הזמן. הזמן גם גדל ככל שהרגש מתפתח. יש גם לולאה במעבד התמלילים שמכניסה את התוכן של קטע גדול בזיכרון לדיסקט, אני מבין שלולאה שמכילה תוכן חשוב ועוברת עליו לא תברח.
 
נערך לאחרונה ב:

BravoMan

Active member
תלוי כמה תעצבן את המעבד שלך...
כמו שאמרתי - אין ברירה.
 
אני לא זוכר למה זה שייך, שיניתי קצת את התוכנה. כנראה זה אומר שאם מספר האותיות במלה קטן משתיים, יבין שזאת לא מלה חוקית ולא ינסה לפתח קובץ שכביכול קיים בשמה.
 

BravoMan

Active member
אני לא זוכר למה זה שייך, שיניתי קצת את התוכנה. כנראה זה אומר שאם מספר האותיות במלה קטן משתיים, יבין שזאת לא מלה חוקית ולא ינסה לפתח קובץ שכביכול קיים בשמה.
אז זהו, שלא.
אתה אמור להבין שזו שורה לא חוקית. אתה שם משתנה מסוג "מילה" (מסומן ע"י $) בתוך סוגריים עגולות שמותר לשים שם רק מספר.

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