בקשר לאופי העבודה...

Archer Inc

New member
בקשר לאופי העבודה...

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

vinney

Well-known member
מה זאת אומרת מי? אתה

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

selalerer

New member
../images/Emo32.gif רק מתכנת יכול לכתוב משפט עם

ראשון/שני ו/או מתמ'/פיז בלה בלה...
 

eshedr

New member
לא בהכרח

שהתחלתי ללמוד תיכנות כתבתי תוכנה שמקבלת קלט של שלושה ציונים ומחשבת את הממוצע שלהם. אם הממוצע הוא מתחת ל-70 התוכנה מודיעה למשתמש שהוא צריך להשתפר. אם הממוצע בין 71-89 התוכנה מודיעה למשתמש שהוא תלמיד טוב. אם הממוצע הוא 90 ומעלה התוכנה מודיעה למשתמש שהוא תלמיד מעולה. אם הממוצע הוא 100 התוכנה מודיעה למשתמש שהוא תלמיד מעולה+. כל שורות קוד של התוכנה הזאת הם לא אלגוריתם פשוט מאוד שאני המתכנת המתחיל המצאתי?
 

DadleFish

New member
כמה דקות אחרי שלומדים את מושג

האלגוריתם, מבינים רוב האנשים ש"אלגוריתם" בלשון העם הוא משהו ברמה של RSA, CRC, Motion compensation וכו'. אבל אתה, ארז, תמיד היית מיוחד
לאן נעלמת?
 

DadleFish

New member
(זה מה שקורה כשאפופים,

היית בטוח ש-erezsh כתב את ההודעה)
 

eshedr

New member
לא הבנתי את מה שאמרת...

מה שבניתי הוא אלגוריתם או לא?
 

neko

New member
בערך כמו שכניסה לג'נין עם שלט

"מוות לערבים" תלוי על הגב זה טקטיקה צבאית לזיהוי מחבלים. זה עובד, אבל לא ממש מתוחכם.
 

DadleFish

New member
רוב התוכניתנים בכלל לא מגיעים

לאלגוריתמיקה ברמה גבוהה. רוב התכנות הוא אפור ומשעמם מבחינה אלגוריתמית. רק אם אתה מפתח איזשהו אלגוריתם מורכב מאוד, ייצא לך להתעסק עם אלגוריתמיקה ברמה גבוהה - אחרת רוב האלגוריתמים כבר נכתבו ונוצרו בשבילך וכל שנותר לך הוא להשתמש בהם כאבני בניין לתוכנה גדולה יותר. קח למשל משחק מחשב, והתמקד נניח ביכולת הגרפית שלו. ברוב המכריע של העבודה אתה מסתמך על אלגוריתמים קיימים, כמו hidden surface removal, polygon culling, collision detection - דברים שקיימים כבר שנים, ואין צורך להמציא מחדש (כי רוב הסיכויים שמה שתמציא יהיה פחות יעיל). לפעמים יש צורך להמציא אלגוריתמים חדשים, אבל זה חלק מאוד קטן. אני אישית מאותגר גם מ-DESIGN טוב של המערכת, בלי קשר לאלגוריתמים מורכבים במיוחד. יישום אלגוריתמים, לעומת זאת, הוא משהו שאתה עשוי להיתקל בו. מדובר בתהליך סיזיפי ומדכא למדי שבו אתה לוקח פסאודו קוד והופך אותו לקוד אמיתי. די מעאפן אם אתה שואל אותי
 

Archer Inc

New member
ואם הייתי מעוניין לעסוק דווקא...

יותר באלגוריתמיקה ופחות בתכנות עצמו, עדיף ללכת לכיוון המתמטיקה ולא מדמ"ח?
 

voguemaster

New member
זה תלוי

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

vinney

Well-known member
בד"כ קבוצה גדולה

גם אם מישהו אחד היה אחראי על האלגוריתם (למרות שגם זה בד"כ נעשה בצוות), ישנו צוות שלם של אנשים שמתקילים את הממציא ודורשים הוכחות נכונות וסיבוכיות, ואחרי זה מתלהבים מכל שיפור של עשירית האחוז בסיבוכיות
 
התמונה הגדולה../images/Emo42.gif....../images/Emo26.gif

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