8 תשובות
שואל השאלה:
תשמע, אם אין לך משהו טוב להגיב, אל תגיב.
טוב סליחה אחי
אני לא בטוחה יותר מדי לגבי היעילות אבל אני חושבת שכן כיסית את כל האפשרויות, כל הכבוד .
אתה מתכנת מתחיל?
שואל השאלה:
מתכנת מתחיל לא, מתכנת c++ מתחיל כן.
חח יפה
לדעתי כיסית הכל.
וכשאתה אומר "יעיל" למה אתה מתכוון?
הרי יש יעילות מהבחינה של זמן ריצה באלגוריתמים ואצלך פה זה (o(1 כי אתה עושה כמות קבועה של פעולות לכל היותר.
ויש יעילות במובן שמדבר יותר למתכנתים באסמבלי לדוגמא, ששם את עושה כל מיני טריקים סופר יעילים בין היתר עם פעולות בינאריות ואם זה היה אסמבלי אז שימוש בכל מיני פקודות מיוחדות של המעבד שאת אולי אפילו לא יכולה להשתמש בהם כשאתה מתכנת בc או ב c++. אפילו כשאנחנו מדברים על בערך אותו זמן ריצה של האלגוריתם.
בשביל ליעל מהבחינה הזאת, צריך לדעת איך אתה מייצג את הנתונים במערך, צריך לדעת איזה סוג של מערך זה גם. ואולי אפשר לחשוב על דרך אחרת לייצג את הלוח על מנת שזה יהיה סופר יעיל..
אבל לדעתי, תכנית שעושה הדמייה לאיקס עיגול לא צריכה להיות סופר יעילה, ואין יותר מידי מה להסתבך שם מבחינת יעילות בכל מקרה... ואין סיבה להתעמק בזה בדרך כלל בתכניות האלה (אלא אם אתה יודע בדיוק מה אתה עושה ויש לך סיבה טובה לעשות את זה יעיל)
כשאתה כותב קוד, במיוחד כשאתה מתחיל, הכי חשוב לדעתי זה להשתדל לכתוב קוד מובן כמה שיותר וקריא כמה שיותר. לא לחשוב כמעט בכלל על יעילות. ואם אתה רוצה לחשוב על יעילות, תחשוב עליה יותר על דף נייר, ולא מול המחשב (אם אתה פותר תרגילים שבהם נדרש לעשות אלגוריתם יעיל, אז אתה יכול לכתוב את זה בפסאודו קוד, כי אם מתאמנים על משהו שהוא יותר רעיוני, אתה לא צריך ישר לממש את זה במחשב.)
אם תרצה אתה יכול ללמוד בעתיד על אלגורימתמים יעילים למיון, לגרפים, ללמוד מבני נתונים וטיפה ללמוד איך לחשב סיבוכיות זמן ריצה אם מעניין אותך לדעת לכתוב יעיל ולהבין גם מה זה אומר. לבינתיים, שוב פעם, אל תתרכז ביעילות, אלא בעיקר בכמה מה שאתה כותב קריא וברור.
שואל השאלה:
תקשיב, אני אוהב אותך. איזו תשובה! תודה. (אבל, אני זכר, למה פנית אליי בלשון נקבה?)
סליחה, שמתי לב לזה ובדקתי(בפרופיל) ותיקנתי.
ואני עורך את התשובות שלי די הרבה, אז יש סיכוי שזו כבר לא אותה תשובה במאה אחוז כפי שהייתה שקראתה אותה פעם ראשונה..