לדלג לתוכן

מבוא לתכנות של קבוצת בטא

מתוך ויקיספר, אוסף הספרים והמדריכים החופשי

בטא ספר!

[עריכה]

ככה אנחנו קוראים לספר הזה בבטא.

ברוכים הבאים לבטא

[עריכה]

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

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

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

הננו מוכנים ומזומנים להיות נינג'ה, איך מצטרפים?

[עריכה]

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

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

קדימה! מי ילמד אותנו לינוקס וC?

[עריכה]

אתם.

בעזרת המדריך הזה.

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

שאלות נפוצות על שלב הלימוד הראשוני

[עריכה]

עדיין יש שאלות? תבדקו אם כבר ענו עליהן!

ומה אחרי השלב הראשוני? איך אני אלמד דברים בבטא?

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

טוב, אז קדימה שלב ראשוני! מה זה ה"סביבת עבודה" הזה?

[עריכה]

לסביבת העבודה שלנו יש שלושה חלקים עיקריים: מערכת ההפעלה, הקומפיילר ועורך הטקסט.

מה?! מה זה בכלל קומפיילר?
אם לא הבנתם את המושגים האלו, לא נורא, פשוט תמשיכו לקרוא, אתם תבינו בהמשך. ככה זה עובד בבטא.


  • מערכת ההפעלה המועדפת בבטא היא לינוקס, ובעיקר הפצת הלינוקס שנקראת דביאן. בדרך כלל לומדים להשתמש בה תוך כדי עבודה, לנו יש מדריך מסודר.
  • הקומפיילר (מה שמייצר לנו תוכנות עובדות) שמשתמשים בו בבטא הוא gcc, מאחר שמדובר בקומפיילר חופשי שמקובל גם בתעשיה.
  • עורכי הטקסט שמשתמשים בהם בבטא הם Emacs או vim. על windows נהוג להשתמש בnotepad++.

לינוקס! יופי, מה הסיפור של לינוקס.

[עריכה]

מערכת ההפעלה העיקרית בה משתמשים בבטא היא GNU\Linux, הידועה גם פשוט בשם "לינוקס" (כמו שם הגרעין שלה). גנו\לינוקס היא מערכת הפעלה חופשית. הכוונה במילה "חופשית" היא שהיא מכבדת את החופש של המשתמשים, במקרה היא גם חינמית (אבל ניתן גם לרכוש אותה בכסף אם ממש רוצים). מערכת ההפעלה הזו היא גם "קוד פתוח", שזה אומר שהיא שומרת על שקיפות מלאה וכל אדם יכול לראות את הקוד שלה ולשנות אותו. זה בניגוד למערכות נפוצות כמו Windows של מיקרוסופט או IOS ו OSX של אפל. אנדרואיד, אגב, נחשבת סוג של לינוקס.

ישנן כמה דרכים אפשריות לארגן לעצמך מערכת לינוקס:

התקנה רגילה

[עריכה]

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

מכונה וירטואלית

[עריכה]

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

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

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

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

טוב, מה מזה אנחנו אמורים לבחור?

[עריכה]

אופציה 0: מכונת לינוקס אמיתית

[עריכה]

מתאים אם אין לכם בעיה למחוק כל מה שיש לכם על המחשב, ולשים במקום זה לינוקס.

הוראות למי שבחר את האופציה הזאת

אז ככה:

  1. הורידו אימג' של דיסק ההתקנה של דביאן לינוקס, צרבו אותו על דיסק אמיתי, אתחלו את המחשב מהCD, ותתקינו.
  2. שחקו סנייק. יש בלינוקס אחלה סנייק.

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

אופציה 1: וירטואליזציה

[עריכה]

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

הוראות למי שבחר את האופציה הזאת

אז ככה:

  1. הורידו והתקינו את התוכנה virtualbox של אורקל (זו המכונה הוירטואלית היחידה שעבדה לנו בלי יותר מדי התעסקות).
  2. צרו בvirtualbox מכונה וירטואלית חדשה עם גודל דיסק 15 ג'יגה ומעלה.
  3. הורידו מהאינטרנט את האימג' של דיסק ההתקנה של דביאן לינוקס (כמו באופציה 0), הגדירו את קובץ האימג' בתור הCDROM של המכונה הוירטואלית (ההוראות באנגלית כאן, בסרטון מאת revolution מופיעות הוראות בעיברית), ואתחלו את המכונה. הופ, מתחילה התקנת לינוקס. כשהוא שואל על חלוקת מחיצות בדיסק קחו ליתר בטחון את מה שהוא מציע (לא לחלק).
  4. שחקו סנייק. יש בלינוקס אחלה סנייק.

אופציה 2: WSL

[עריכה]

מתאים אם יש לכם windows ואתם משום מה לא יכולים להתקין מכונה וירטואלית.

הוראות למי שבחר את האופציה הזאת

אין הוראות בעברית עדיין. יש [https://learn.microsoft.com/en-us/windows/wsl/install הוראות של מייקרוסופט באנגלית. יום אחד חברי בטא יכתבו את ההוראות בעברית.

אופציה 3: אני בכיתת בטא, יש לי כבר לינוקס מותקן כאן

[עריכה]

מתאים למי שנמצא בכיתת בטא והתיישב על מחשב שיש בו כבר לינוקס.

הוראות למי שבחר את האופציה הזאת

אז ככה:

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

אופציה 4: לינוקס טרמינל אונליין

[עריכה]

מתאים אם אין שום לינוקס באיזור להתחבר אליו. רמז: כנראה יש.

הוראות למי שבחר את האופציה הזאת

אז ככה:

  1. היכנסו לhttp://webminal.org
  2. הירשמו עם מייל פיקטיבי
  3. עיבדו עם הטרמינל לינוקס שבאתר.


לתת פקודות לפינגוינים - איך עובדים בלינוקס

[עריכה]
טאקס - הסמל של לינוקס,
וגירסת "קריסטל 1" המטורללת יותר.
אייקון לתוכנת טרמינל בסביבה גרפית של לינוקס.

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

עם כל הכבוד לחלונות עם ציורים יפים, בטאים מדברים עם לינוקס דרך הטרמינל - מסך שחור עם טקסט שגורם לך להרגיש האקר. אז נא לפתוח חלון טרמינל ( בדביאן חפשו את konsole או xterm תחת system tools, בWSL זה המסך של הWSL). מרגישים האקרים? יופי, די לקפוץ משמחה, יש עוד מה לקרוא.

התוכנה שפועלת בטרמינל ובה כותבים את הפקודות נקראת shell ("קליפה"). אנחנו משתמשים בshell בשם bash, כי אין לה קריזות כמו לכמה shells אחרות.


כדאי לדעת:

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

בכל מערכות לינוקס (כמו קנופיקס ודביאן), הממשק הגרפי הוא רק עוד תוכנה שעובדת באחד הטרמינלים של מערכת ההפעלה. יש שם בדרך כלל בין 5 ל7 טרמינלים, והממשק הגרפי פועל בטרמינל האחרון. אם תלחצו Ctrl-Alt-F1 (קונטרול ואלט שמאליים!) תגלו שעברתם לטרמינל מספר 1 - זה שהמערכת הראתה בו את כל ההודעות כשהיא עלתה. Ctrl-Alt-F2 יביא אתכם לטרמינל 2. ככה אפשר לטייל בין הטרמינלים עד טרמינל 5 (או 7) שם תראו שוב את הסביבה הגרפית.

תנסו. מי שלא מנסה לא נינג'ה.

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


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



סיימתם את המדריך?

יודעים לעבוד עם לינוקס?


אני מקווה שעניתם כן. כי עכשיו מתחילים לתכנת.

ההתנסות הראשונית - איך כותבים תוכנה

[עריכה]

ישנם שני כלי תוכנה בהם נשתמש בכדי ליצור תוכנת מחשב:

  • עורך טקסט (Editor): עורך הטקסט מאפשר למשתמש ליצור קובץ המכיל קוד של תוכנית ולשמור אותו. דוגמאות לעורכי טקסט: Notepad, vi, vim, Emacs, Notepad++.
  • קומפיילר (Compiler): קומפיילר הוא תוכנת מחשב שיודעת לתרגם קובץ שכתוב בשפת תכנות לקובץ אחר שמכיל את אותה התוכנית בשפת תכנות אחרת. אנו נשתמש בקומפיילר שיתרגם קבצים בשפת התכנות C לקבצים בשפת מכונה. שפת מכונה (machine language, או binary) היא השפה היחידה שהמחשב מבין. כל שפה אחרת חייבת להיות מתורגמת לשפת מכונה על מנת שאפשר יהיה להריץ אותה. דוגמאות לקומפיילרים: gcc, Visual C++, turbo C.

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

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

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

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

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

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


התוכנה הראשונה: Hello World

[עריכה]

מבוסס על מדריך מתוך הקורס של אורי מוסנזון

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

רגע, איך מקבלים על זה נקודה?

[עריכה]

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

טוב, מה התכנית? מה צריך לעשות?

[עריכה]

זה מה שנעשה:

  1. כתיבת הקוד
  2. קימפול של הקוד שכתבנו
  3. הרצה של התוכנה שיצאה לנו

יאללה:

כתיבת הקוד

[עריכה]

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

#include <stdio.h>

int main() 
{
	printf("Hello World\n"); 
	return 0; 
}


(מספרי השורות אינם חלק מהתוכנית. הם נועדו רק להסברים, כדי שאפשר להתייחס לכל שורה לפי המספר שלה)

שימרו אותו כקובץ בשם hello.c. (שימו לב! לינוקס מבדיל בין אותיות גדולות לקטנות.) פקודת השמירה באימקס היא C-x C-s.

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

  • בשורה 1, אנו אומרים לתוכנה להשתמש בספריה stdio. ככה מאפשרים שימוש באמצעי קלט\פלט - מקלדת ומסך (פרטים - בהמשך). שימו לב, לא מדובר במילה "סטודיו" אלא בstdio - קיצור לSTandard Input Output.
  • שורה 2 ריקה וכל תפקידה הוא להפריד בין חלקי הקוד. הקומפיילר מתעלם ממנה וכל תפקידה הוא להפוך את הקוד לקריא יותר.
  • בשורה 3 אנו מצהירים על תחילתו של החלק הראשי של התוכנית שלנו - הפונקציה main.
  • שורה 4 פותחת את הבלוק של main.
  • שורה 5 היא פקודת הדפסה של המשפט "Hello World" על המסך. הסימון n\ מורה למחשב לעבור לשורה הבאה. שימו לב לסימן ה - ; שמופיע בסוף הפקודה. נקודה-פסיק (semicolon) הוא סימון שמופיע בסוף כל פקודה לביצוע ב- C. סימן זה מאפשר לקומפיילר להבחין ולהפריד בין פקודות.
  • שורה 6 מורה על סיום main ויציאה מהתוכנית - חזרה למערכת ההפעלה.
  • שורה 7 סוגרת את "בלוק" הקוד של - main. התוכן שנמצא בין סוגריים מסולסלים - {...} מהווה קטע קוד בעל משמעות מסויימת. המשמעות מושפעת מההקשר, כלומר מהקוד ש"עוטף" את הבלוק. במהלך הלימוד יופיעו דוגמאות שיבהירו את הכוונה.

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


כדאי לדעת:

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

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

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

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

קימפול (הידור)

[עריכה]
אייקון לתוכנת טרמינל בסביבה גרפית של לינוקס.

פיתחו חלון טרמינל (המסך השחור שמאפשר לכם לתקשר עם המערכת ומציג את הshell).

הקלידו בshell את הפקודה הבאה:

gcc hello.c -o hello

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

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


פקודת ה shell שכתבנו, מפעילה את התוכנה gcc ונותנת לה מספר פרמטרים. הפרמטר הראשון, hello.c הוא שם קובץ הקוד (בתוך התיקייה הנוכחית) שgcc צריך לתרגם.

הפרמטר השני o- אומר שלתוכנה שלנו יקראו... "hello"! כי זה מה שרשמנו לו. זה השם שיקבל קובץ ההרצה - הקובץ שכתוב בשפת המכונה. אם לא היינו מציינים את שם קובץ ההרצה וכותבים רק gcc hello.c השם של קובץ ההרצה היה - a.out, כי זה מה שgcc עושה אם נותנים לו להחליט לבד.


כדאי לדעת:

בהמשך נוסיף עוד פרמטר אחד לפקודת הקומפילציה שיגרום לקומפיילר להיות יותר קפדן מבחינת ההערות שייתן. הפרמטר Wall- הוא קיצור של all warnings כלומר, דרישה שהקומפיילר יתריע בפנינו בכל מקרה שהוא רואה בעיה, גם אם לא מדובר בשגיאה ממש. הדרישה הזאת תעזור לכם מאוד לאתר תקלות חמקמקות במיוחד. פקודת הקומפילציה בה השתמשנו תיראה כעת כך:
gcc -Wall hello.c -o hello

אגב, אם תקלידו את השורה:

man gcc

תקבלו את כל האופנים בהם ניתן להריץ את הקומפיילר.

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


אתגר:

(למעשה התנסות, לא נותן נקודות)

אל תאמינו לכל מה שאתם קוראים. נסו לפתוח את התוכנה שיצרתם באמצעות עורך טקסט!

אפשר גם להשתמש בתוכנה cat בטרמינל כדי להראות את התוכנה שיצרתם:

cat hello

בעצם, אם רוצים אפשר גם להשתמש בתוכנה cat בטרמינל כדי להראות את התוכנה cat:

cat /bin/cat

ומה יוצא?

cat fight.

הרצה

[עריכה]

הקובץ hello הוא קובץ ריצה, הוא כתוב בשפה שאותה המעבד שלנו יודע לבצע. בשביל להריץ את הקובץ hello אפשר ללחוץ עליו לחיצה כפולה בסייר קבצים (תוכנה גרפית כגון thunar או konqueror בלינוקס), אבל זה לחלשים.

אנחנו נעדיף להריץ אותו בטרמינל.

סתם כתיבה של השם בשורת הפקודה כנראה תיתן שגיאה, משיקולי אבטחה, שתיראה ככה:

hello: command not found

הלינוקס אומר שם שהוא לא מוצא תוכנה בשם hello. הוא פשוט לא מסתכל בתיקיה שאתם נמצאים בה.


כדאי לדעת:

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

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

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

כדי להריץ את הקובץ יש לציין את המסלול המפורש:

./hello

ואז נקבל את הפלט:

Hello World

זהו. ניצחון.

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



לאן עכשיו?

[עריכה]

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

אז איך עולים בדרגות? מה עושים עכשיו? מה המטרה הבאה?

מה שתבחרו. יש המון תחומים בבטא.

אנחנו ממליצים להתחיל בתור...

סמוראים של C!
עוד לא נולד המחשב שינצח סמוראי של C.
-- מתוך הבטא-ספר


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

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


כדאי לדעת:

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


מדריכי C בעברית
  • הספר העיקרי בבטא: ויקיספר שפת C הוא ספר מעולה שגם מכיל בתוכו תרגילים תוך כדי לימוד. יתרונות: מאוד מדוייק. חסרונות: לא מאוד משעשע. כשכתוב "שקול לדלג על נושא זה", מומלץ למתחילים אכן לדלג עליו.
  • למי שרוצה מדריך משעשע: יש בבטא תרגום (לא להפצה) של פרקים 4-8 מהמדריך של ביג' ("פונקציות", "פויינטרים", "structs"). דברו עם עופר לפרטים. אחרי כל פרק אפשר לעשות את התרגילים מתוך הפרק המתאים מויקיספר שפת C.
  • למי שרוצה ללמוד מהמדריך הכי ידוע בעולם: יש בבטא תרגום חלקי (לא להפצה) מתוך הtutorial של K&R - הספר שנכתב על ידי מי שהמציא את שפת C (כיום יש תרגום רק לחלקים 9 ו10, "משתנים חיצוניים" ו"strings"). דברו עם עופר לפרטים.
  • לחובבי מתימטיקה: הויקיספר מבוא לתכנות ולמדעי המחשב בשפת C של אורי מוסנזון הוא מקור טוב. חסרונות: לא מתאים למי שמתימטיקה לא עושה לו את זה, מעט לא תואם לסגנון כתיבת הקוד בבטא, ויש כמה שגיאות עריכה.
  • למי שצריך שיסדרו לו את החשיבה: קורס C המקוון של עיטם רובוטיקה גם מלמד וגם נותן בסיס טוב לעבודה נכונה. החסרון: חסרים התרגילים שיש בספר המודפס, מאוד לא תואם לסגנון כתיבת הקוד בבטא, לא ניתן לעריכה ולכן לא ניתן להכניס שם טיפים שיעזרו להבנה.


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


תוספות
  • מי שצריך קצת פירוט על עבודה עם gcc יוכל למצוא פרטים במדריך מlinuxguide.

כי C זה קשה. ומי שקשה לו עכשיו, יגלה שאחר כך הכל נראה קל וסבבה.

אבל ישנם גם הרבה תחומים נוספים. בשביל הרשימה המלאה של תחומי ההתמחות בבטא ואתגרים שיהפכו אתכם למומחים, אפשר להסתכל בויקיברסיטה של בטא

אפשר גם להציע אתגרים בדף הצעות האתגרים של בטא.

עם מי אפשר להתייעץ? איך מצטרפים לפרוייקטים הסודיים של בטא?

[עריכה]

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

נספח: שאלות נפוצות בחדר בטא

[עריכה]

קראו רק אם יש לכם שאלה.

יש לי משתמש במחשב אחר ואני לא מצליח להתחבר אליו מהמחשב שאני עליו

[עריכה]

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

אין לי משתמש על הלינוקס במתנ"ס

[עריכה]
  1. עברו מהמסך הגרפי לטרמינל עם CTRL+ALT+F1
  2. היכנסו בתור root עם הסיסמה הסודית של בטא. (תשאלו אם אתם לא יודעים מהי).
  3. כתבו את הפקודה adduser ואחריה את שם המשתמש שלכם. לא ללחוץ enter לפני שכתבתם את שם המשתמש.
  4. הוא יבקש סיסמה, תנו סיסמה שתצליחו לזכור.
  5. הוא יבקש שוב את הסיסמה, תכניסו אותה שוב.
  6. הוא יבקש כל מיני פרטים אישיים. אל תיתנו לו, זה מחשב ציבורי, עדיף שהוא ידע כמה שפחות.
  7. סיימתם והלינוקס לא צעק עליכם שהוא מעוצבן? מצוין, זה אומר שהוא לא מעוצבן.
  8. חיזרו למסך הגרפי בעזרת CTRL+ALT+F(something). אני לא הולך להגיד לכם איזה F, תגלו לבד.
  9. נסו להיכנס עם הסיסמה שהכנסתם. אם לא הצלחתם או ששכחתם את הסיסמה או שהכנסתם אותה עם המספרים שבצד ימין של המקלדת. לא יודע למה מערכת החינוך מלמדת להשתמש בהם, בסיסמאות של לינוקס תתרחקו מהם.
  10. הצלחתם? יופי. תפתחו lxterminal, תפתחו דפדפן וקדימה לפתור אתגרים.
  11. לא הצלחתם? חיזרו לטרמינל, היכנסו בתור root, כתבו passwd <username> עם שם המשתמש במקום username, ועדכנו את הסיסמה. וקדימה לטרמינל הגרפי לשלב 10.

איך מרימים לינוקס על מחשב במתנ"ס

[עריכה]
  1. מורידים virtualbox (כי היא נמחקת תמיד מהמחשב)
  2. מתקינים virtualbox.
  3. מייצרים מכונה וירטואלית של debian32 עם 2048 מגה זיכרון, ועם שם שכולל את המילה "beta" סתם בשביל הכיף.
  4. בוחרים בדיסק קיים, ובשבילו את הקובץ beta_amin_bkp שנמצא בדיסק D, בתיקיה beta_bat/VM.
  5. מריצים את המכונה הוירטואלית

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

[עריכה]

כאן, באלפא ספר.