מאחורי הקוד: מה זה אלגוריתם ואיך מפתחים אותו?
יום חם, והחלטתם ללכת להתרענן בחוף הים. אתם מגיעים לחוף, שמים את החפצים שלכם בנקודה מסוימת ומיד נכנסים למים. אחרי ששחיתם והתרחקתם מהחוף, אתם חוזרים בחזרה ורוצים למצוא את החפצים שלכם אבל אז מבינים שיצאתם מהמים בנקודה אחרת מזו שנכנסתם אליה. בינתיים החוף התמלא באנשים. איך תמצאו את המקום שבו השארתם את החפצים שלכם?
את הפתרון לבעיה הזו אפשר למצוא על ידי פיתוח אלגוריתמים. אבל מה זה בעצם אלגוריתמים? איך מתכננים אלגוריתם, למה הוא כל כך חשוב, ואיך הוא משפיע על כל מה שאנחנו עושים? ד"ר יוסי שלוסברג, מרצה בתחומים אלגוריתמים, מודלים חישובים, פתרון בעיות לוגיות חישוביות וסיבוכיות, בפקולטה למדעי המחשב, צולל איתנו אל תוך העולם המרתק הזה.
"מדעי המחשב הוא תחום הדעת שמאופיין בבעיות בעלות אופי אלגוריתמי בהן יש קלט מסוים – אוסף נתונים, ויש יעד מסוים אליו רוצים להגיע. התהליך שהינו סדרת הפעולות שיוליכו אותנו מן הקלט ליעד זה הוא האלגוריתם".
ד"ר שלוסברג מסביר כי "בניגוד לשפה טבעית שהיא מעורפלת, ואינה חד משמעית וברורה, עם מחשב צריך לדבר בצורה ברורה על ידי סט של הוראות ברורות וחד משמעיות".
יתר על כך "אנחנו רוצים שהפתרון לא יהיה 'רק' נכון, זאת אומרת שסדרת הפעולות תוביל אותנו ליעד הנכסף, אנחנו גם רוצים בנוסף שאותה סדרת פעולות תהיה יעילה, חסכונית בזמן ובמקום". היעילות של הפתרון היא קריטית, זאת מכיוון שמדובר בבעיות מורכבות, לחלקן קלט גדול מאוד, וללא הקפדה על היעילות לא יתקבל פתרון בזמן סביר. הסטודנטים והסטודנטיות בקורסי אלגוריתמים נדרשים לפתרון יעיל, ולשם כך הם נחשפים למגוון משאבים וטכניקות מתאימות.
הצד היצירתי של האלגוריתמים
אם נראה לכם שמדובר בתחום משעמם ואפרורי, תחשבו שוב. "בהתמודדות עם כל בעיה אלגוריתמית יש מרכיב יצירתי", אומר ד"ר שלוסברג. "כל מי שלומדת ולומד פיתוח אלגוריתמים מתנסה במגוון של בעיות, וכדי להתמודד איתן נדרש מרכיב יצירתי. יש בעיות שדורשות יותר יצירתיות, ויש כאלו שפחות".
אלגוריתמים חכמים נמצאים היום בבסיס של מגוון רחב של שירותים שאנחנו עושים בהם שימוש, למשל האפליקציה Waze משתמשת באלגוריתמים חכמים כדי לנתח תנועה בזמן אמת ולהציע את הדרך המהירה ביותר ליעד שלנו. אותו הדבר קורה כשאנחנו גוללים בפיד של הרשתות החברתיות – האלגוריתם מחליט אילו פוסטים יוצגו לנו, בהתאם למה שכנראה יעניין אותנו. כך גם כשאנחנו עושים קניות באינטרנט, האלגוריתם מציע לנו מוצרים שמתאימים להעדפות שלנו, מה שחוסך זמן ועוזר לנו למצוא בדיוק את מה שאנחנו צריכים.
ד"ר שלוסברג מציין כי בקורסי אלגוריתמים לא לומדים שפות תכנות, מכיוון שהשפות משתנות לאורך השנים. "בלימודים אנחנו מתמקדים ברעיון – התכלית היא הצגת פתרון יעיל לבעיה מכל סוג שהוא. המטרה היא לאפשר לסטודנטים ולסטודנטיות להביע את הרעיון בכל שפה. כך, בקורס אלגוריתמים אנחנו נוהגים להציג את הפתרון בפסאודו קוד, זה מאפשר לנו להציג את הרעיון באופן תמציתי ואותו ניתן בקלות לתרגם לקוד בכל שפת תכנות".
לדבריו, הסטודנטים והסטודנטיות יוצאים מהקורס כך שהם מבינים בעיות בצורה עמוקה, יודעים לנתח אותן, להציע מספר פתרונות ולבחור את הפתרון היעיל מבין כמה אפשרויות. "בשוק העבודה ובחיים האמיתיים, כל תוכניתן הוא למעשה מפתח אלגוריתמים. אומנם מרבית התוכניתנים מפתחים אלגוריתמים פשוטים, אך גם אם בסופו של יהיו אלו 5% מהמתכנתים אשר יפתחו אלגוריתמים מתקדמים, מבוססי טכניקות סבוכות וכלים מתמטיים מורכבים, אלו הם אשר יובילו את כל השוק קדימה, ויניעו את קטר הצמיחה. אנחנו מקפידים אם כן ללמד ברמה כזו שמי שירצה להתקדם בתחום, בתעשיה ובמחקר – יהיה לו את הבסיס הטוב ביותר", הוא מסכם.
ד"ר יוסי שלוסברג, מרצה בפקולטה למדעי המחשב.