שאלה חשובה...

S h a y D u

New member
שאלה חשובה...

בהתחשב בצרכים המצויים בשוק הייטק כיום בתחום פיתוח התוכנה, האם ידע ומיומנויות באלגוריתמים ויכולת חשיבה אלגורתמית מאסיבית, הכרחית למתכנת העכשווי? מדוע המיומנויות האלה וההתעמקויות החשיבתיות-לוגיות בהן, שרוכשים בלימודים האקדמאים במדעי המחשב, כל כך חשובים אם כמעט בכל קומפיילר פופולרי כיום קיימת ספריית מערכת שאוגרת בתוכה את כל הפתרונות האלגורתמיים האפשריים? אני מודע לכך שיש בעיקר בתחום ה-embedded, חשיבות וקריטיות רבה בנוגע לזמן ריצה וליעילות של אלגוריתמים, או לחלופין, ליעילות בזיכרון שניתן לעשות ע"י bitwise manipulations, אך מה לגבי שאר סגנונות הפיתוח? כששאלתי על כך למפתח מחברה מסויימת, שמרבית המוצרים שהיא מפתחת ופיתחה עד כה הם דווקא בתחום ה-embedded, ועובד בה כבר יותר מעשר שנים בתור אחראי על פרוייקטים וראש צוות, הוא טען שכלל אינו נוהג לדרוש מאנשי הצוות שלו להקפיד על יעילות. לאילו סגנונות פיתוח ספציפיים (דוגמאות לסוגים שונים של פרוייקטים), קיימת ממש דרישה ליכולת של חשיבה אלגורתמית מאסיבית מהמתכנת? כלומר, שבלעדיה לא יוכל לבצע את מטלותיו כראוי... תודה מראש למגיבים.. :))
 

vinney

Well-known member
המם...

ספריית מערכת לא אוגרת את כל הפתרונות האלגוריתמיים האפשריים, ספריית מערכת (בד"כ) מורכבת ממימושים של פונקציות של ממשק למערכת הפעלה (קלט/פלט/גרפיקה/קבצים וכד') ואוסף של מבני נתונים, ומספר מימושים של אלגוריתמים סטנדרטיים על המבנים האלה. אלה אבני בניין, גם מאיטונג אפשר לבנות בניין לתפארת, ואפשר לבנות חורבה.
 

niro2003

New member
מהכרותי את השוק

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

choo

Active member
בתחומים ה"מעניינים" אלגוריתמית - צריך יכולת

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