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

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

בטא ספר![עריכה]

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

ברוכים הבאים לבטא[עריכה]

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

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

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

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

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

השלב של למידת לינוקס ותכנות בסיסי נקרא שלב הלימוד הראשוני.

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

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

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

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

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

איך לומדים לינוקס ו C (וכל דבר אחר) בבטא?[עריכה]

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

סביבת העבודה בבטא[עריכה]

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

גנו\לינוקס[עריכה]

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

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

התקנה רגילה[עריכה]

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

וירטואליזציה[עריכה]

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

Live CD[עריכה]

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

יצירת סביבת עבודה של בטא[עריכה]

אופציה 0: מכונת לינוקס אמיתית[עריכה]

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

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

אז ככה:

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

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


אופציה 1: וירטואליזציה[עריכה]

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

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

אז ככה:

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


אופציה 2: קנופיקס[עריכה]

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

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

אז ככה:

  1. את הדיסק של קנופיקס אפשר להשיג מהאתר של קלאוס קנופר. צריך את הDVD, אחרת לא יהיו לכם את כל התוכנות שאתם צריכים, כמו למשל קומפיילר.
  2. אחרי שהורדתם את הקובץ image הענק, פשוט צורבים אותו (בתור אימג') על DVD.
  3. אם יש ברשותכם דיסק או DVD של קנופיקס, אין צורך להתקין כלום, כל הכלים כבר נמצאים שם. מכניסים את הדיסק, עושים reboot (איתחול) למחשב, מחכים שיעלה הממשק הגרפי, ומתחילים לעבוד.
  4. שימו לב ששינויים שעשיתם בשולחן העבודה לא יישמרו אחרי כיבוי המחשב (אלא אם יצרתם סקריפט שייצור אותם מחדש בפעם הבאה שאתם מעלים קנופיקס).
  5. גם קבצים לא יישמרו אחרי כיבוי המחשב, אלא אם נשמרו על הדיסק של המחשב (לא תמיד אפשרי), או על USB. אחת האופציה היא עם סיום העבודה לשמור את הקבצים בשירות אכסון ברשת או לשלוח לעצמכם במייל. ככה גם יהיה ניתן לגשת אליהם מכל מקום, ויהיה להם תמיד גיבוי.
  6. שחקו סנייק. יש בלינוקס אחלה סנייק.


אופציה 3: Cygwin[עריכה]

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

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

אז ככה:

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


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

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

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

אז ככה:

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


אופציה 5: התחברות לשרת לינוקס סודי של בטא[עריכה]

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

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

אז ככה:

  1. עדיין לא התקינו את השרת הסודי של בטא. כשיתקינו, יהיו הערות.


אופציה 6: לינוקס טרמינל אונליין[עריכה]

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

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

אז ככה:

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


לתת פקודות לפינגוינים - איך עובדים בלינוקס[עריכה]

Tux.png Crystal 128 penguin.png
טאקס - הסמל של לינוקס,
וגירסת "קריסטל 1" המטורללת יותר.
אייקון לתוכנת טרמינל בסביבה גרפית של לינוקס.

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

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

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


כדאי לדעת:

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

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

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

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


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

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



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

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

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

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

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

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

  • עורך טקסט (Editor): עורך הטקסט מאפשר למשתמש ליצור קובץ המכיל קוד של תוכנית ולשמור אותו. דוגמאות לעורכי טקסט: Notepad, Emacs, Notepad++.
  • קומפיילר (Compiler): קומפיילר הוא תוכנת מחשב שמאפשרת תרגום של קובץ הכתוב בשפה אחת לקובץ אחר המכיל את אותה התוכנית בשפה אחרת. אנו נשתמש בקומפיילר שיתרגם קבצים בשפת התכנות C לקבצים בשפת מכונה. שפת מכונה (machine language, או binary) היא השפה היחידה שהמחשב מבין. כל שפה אחרת חייבת להיות מתורגמת לשפת מכונה על מנת שאפשר יהיה להריץ אותה. דוגמאות לקומפיילרים: gcc, VC++, 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 לקובץ חדש בשפת מכונה.

Gcc.png


פקודת ה 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 זה קשה. ומי שקשה לו עכשיו, יגלה שאחר כך הכל נראה קל וסבבה.

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

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

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

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