לדלג לתוכן

האם שווה ללמוד אסמבלי היום - תשובה כנה, בלי למכור לכם חלומות

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

בואו נתחיל מהאמת הפחות נעימה

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

אז מתי זה כן שווה, ובגדול

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

  • הנדסה לאחור וחקר חולשות. אם אתם רוצים להבין תוכנה שאין לכם את הקוד המקור שלה, למצוא חולשות, או לעסוק בפיתוח ניצולים, exploit development, אסמבלי היא כמעט תנאי סף, לא תוספת נחמדה.
  • דיבוג באגים עמוקים ברמה הנמוכה. כשקוד C מתנהג בצורה שלא מסתדרת עם מה שכתבתם, היכולת לפתוח דיבאגר ולראות בדיוק לאיזה קוד מכונה הקוד שלכם תורגם היא ההבדל בין ניחוש לבין ידיעה.
  • שאלות ביצועים שמפסיקות להיות ניחוש. למה הלולאה הזאת איטית מהאחרת, כשלכאורה הן עושות אותו דבר? כשאתם יכולים לראות את קוד המכונה בפועל, זו כבר לא שאלה פתוחה.
  • עבודה בעולם המוטבע, Embedded ו-Firmware. בסביבות שבהן משאבים מוגבלים וכל הוראה נספרת, ההבנה הזאת עוברת ממותרות לצורך ממשי.

למה זה עוזר גם כשאתם רק כותבים C

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

הזווית הישראלית - יחידות הסייבר של צה"ל

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

מה קורה גם אם לא תשתמשו בזה יום יום

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

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

הצטרפו לקהילה בדיסקורד

לסיכום

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