Rust/שלום עולם!

Rust

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

התוכנית הראשונה

עריכה

פתחו את עורך הטקסטים המועדף עליכם (או את סביבת הפיתוח שלכם), וכתבו שם:

fn main()
{
    println!("Hello, world!");
}

מקוד זה ניתן לייצר תוכנית שתדפיס למסך את צמד המילים "Hello, world!" (ללא המרכאות).

הסבר הקוד

עריכה

שורה 1

עריכה
fn main()

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

שורה 2

עריכה
{

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

בהמשך נראה ששורה זו פותחת בלוק, כלומר אוסף הוראות או פקודות המהוות יחידת קוד אחת. במקרה זה הבלוק הוא של ההוראות השייכות לפונקציה main.

שורה 3

עריכה
println!("Hello, world!");

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

אז איך בעצם הדפסנו את המחרוזת הזו?

כל מי שיש לו ידע בסיסי בתכנות בשפה אחרת יגיד שבעצם קראנו לפונקציית הדפסה ושלחנו לה את הביטוי "Hello, world!" כדי שתדפיס אותו, אבל זו איננה קריאה לפונקציה רגילה אלא לפונקציית מאקרו. הדבר המבדיל בין פונקציות רגילות (כמו פונקציית ה-main) לפונקציות מאקרו (כמו ה-println!) הוא סימן הקריאה בסוף הפונקציה (!). למעשה, בדוגמה זו קראנו לפונקציית המאקרו println!() (קיצור של print line) שהיא פונקציית ההדפסה הבסיסית בראסט.

main(); // This is a regular function
println!(); // This is a macro function

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

שימו לב לכך שהשורה מסתיימת בנקודה פסיק (;). הדבר מסמל לקומפיילר שהפעולה שביקשנו לבצע הסתיימה ושאפשר לעבור לפעולה הבאה. יש לציין שרוב הפעולות בראסט מסתיימות בנקודה פסיק, אך לא כולן. פעולה שמסתיימת בנקודה פסיק מכונה "הצהרה" (statement).

שורה 4

עריכה
}

שורה זו מסמנת את סיום רצף הפקודות שאותו מבצעת התכנית.

בהמשך נראה ששורה זו סוגרת בלוק - במקרה זה, הבלוק של ההוראות השייכות לפונקציה main.

הידור

עריכה

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

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

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

המהדר של שפת ראסט הוא rustc (נגזר מההמילים Rust Compiler). כמו כן, לראסט יש מערכת מיוחדת לניהול הרחבות בשם Cargo (אשר ניכנס אליה בהמשך).

קמפול הקוד

עריכה

יופי, אז הבנו את פירוש המילה קומפיליציה ומה זה לקמפל, אבל איך עושים את זה בשפת ראסט?

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

כעת ובהנחה שהצלחנו להתקין את ראסט בהצלחה בשיעור הקודם, ניגש ל-cmd (במחשבי Windows) או ל-terminal (במחשבי Linux) ונכתוב את הפקודה הבאה:

rustc main.rs

כעת נראה שנוצר לנו קובץ חדש בשם "main.exe" (במחשבי Windows) או פשוט "main" (במחשבי Linux). נריץ את הקובץ הזה ונראה שמודפס לנו למסך הביטוי "Hello World!".

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


- שלום עולם! הפרק הבא:
משתנים