מבוא לתכנות של קבוצת בטא
בטא ספר!
[עריכה]ככה אנחנו קוראים לספר הזה בבטא.
ברוכים הבאים לבטא
[עריכה]בטא היא קבוצה של אנשים שמלמדים את עצמם תכנות, אבטחה, וכל מה שקשור למחשבים.
אנחנו גם עושים הדגמות של דברים מעניינים שקוד יכול לעשות, כדי לתת מושג על מה עושים בקבוצה. רוצים לראות הגנבה? בקשו מאחד מחברי בטא שיראה לכם.
מי שרוצה להיות חבר בטא לא חייב רקע בתכנות, אבל כן חייב להיות מסוגל ללמוד לבד. כי מי שלא מסוגל ללמוד לבד לעולם לא יהיה נינג'ה.
הננו מוכנים ומזומנים להיות נינג'ה, איך מצטרפים?
[עריכה]כדי שלכולנו יהיה בסיס משותף ושפה משותפת, כל מי שרוצים להצטרף לבטא צריכים ללמוד קצת על מערכת ההפעלה לינוקס, וקצת על שפת התכנות C לפני שהם מתחילים להשתתף בפרוייקטים. מרגע שחברי בטא מבינים לינוקס ותכנות בסיסי עם C, הם יוכלו להיחשף לתחומים נוספים בהם עוסקים בבטא, ולמצוא את התחומים שמעניינים אותם אישית.
השלב של למידת לינוקס ותכנות בסיסי נקרא שלב הלימוד הראשוני.
המדריך הזה יעזור לכם לעבור את שלב הלימוד הראשוני - הוא יסביר איך לארגן סביבת עבודה שמתאימה לחברי בטא, ואחר כך ידריך אתכם בפקודות בסיסיות ללינוקס ובכתיבת התוכנה הראשונה שלכם. לאחר מכן תוכלו להמשיך ללמוד לבד על לינוקס, C או כל תחום אחר שלומדים בבטא.
כשתסיימו את שלב הלימוד הראשוני, תוכלו לפנות לפעילי בטא להמשך הכוונה ולהתחלת עבודה על פרוייקטים של בטא.
גם במהלך שלב הלימוד הראשוני אפשר להיעזר בחברי בטא בקבוצת הווטסאפ beta camp, כדי לא להיתקע. הם באמת נחמדים (למי שנחמד אליהם). פנו לבטאי כלשהו כדי להצטרף לקבוצה.
שאלות נפוצות על שלב הלימוד הראשוני
[עריכה]עדיין יש שאלות? תבדקו אם כבר ענו עליהן!
איך לומדים לינוקס ו C (וכל דבר אחר) בבטא?
[עריכה]- מיד אחרי ההתנסות הראשונית בפקודות לינוקס ובכתיבת תוכנה (שנמצאים בהמשך המדריך הזה), הלימוד הוא עצמאי, מתוך מקורות מומלצים או מקורות שאתם מוצאים לעצמכם.
- בסוף הבטא ספר יש לינקים למקורות מומלצים שמצאנו.
- במהלך הלימוד נהוג לעשות אתגרים שנמצאים בויקיברסיטה של בטא, ולקבל נקודות מוניטין, כך שלכולם יהיה ברור מה אתם יודעים.
- אפשר גם להמציא לעצמכם אתגרים ולקבל עליהם נקודות.
- כדי שנקודות הנסיון יישמרו בטבלאות של בטא, תצטרכו כינוי. כינוי שלא קשור לשם שלכם (כי כבר היו לנו חמישה דניאל, שמות אמיתיים לא עובד), ושלא חושף פרטים אישיים (כי אולי תשתמשו בו במהשך באתרים שלא תרצו להיות מזוהים בהם). למי שממש לא מצליח למצוא כינוי, אפשר להשיג כינוי אונליין.
סביבת העבודה בבטא
[עריכה]- סביבת העבודה המועדפת בבטא היא לינוקס, בעיקר דביאן (וKnoppix אם צריך). השימוש בה נלמד תוך כדי עבודה, ובהמשך המדריך הזה יוזכרו גם מדריכים שיכולים לעזור. בשלב הראשוני ניתן להשתמש גם בסביבות Cygwin או MingW. (כל השמות הלא מוכרים יוסברו בהמשך).
- הקומפיילר שמשתמשים בו בבטא הוא gcc, מאחר שמדובר בקומפיילר חופשי שמקובל גם בתעשיה.
- עורך הטקסט שמשתמשים בו בבטא הוא Emacs. ניתן להשתמש גם בvi אם רוצים. על windows נהוג להשתמש בnotepad++.
גנו\לינוקס
[עריכה]מערכת ההפעלה העיקרית בה משתמשים בבטא היא GNU\Linux, הידועה גם פשוט בשם "לינוקס" (כמו שם הגרעין שלה). גנו\לינוקס היא מערכת הפעלה חופשית. הכוונה במילה "חופשית" היא שהיא מכבדת את החופש של המשתמשים, לאו דווקא שהיא חינמית (למעשה ניתן גם לרכוש אותה בכסף). מערכת הפעלה זו שומרת על שקיפות מלאה וכל אדם יכול לראות את הקוד שלה ולשנות אותו, מאחר שהיא מערכת בקוד פתוח. זאת בניגוד למערכות נפוצות כמו Windows של מיקרוסופט או IOS ו OSX של אפל. אנדרואיד, אגב, נחשבת סוג של לינוקס.
ישנן מספר דרכים לארגן לעצמך מערכת לינוקס:
התקנה רגילה
[עריכה]הצורה הפשוטה ביותר לעבוד עם לינוקס היא להתקין אותו על מחשב כמערכת ההפעלה היחידה. ההפצה המומלצת בבטא היא Debian שאת קובץ ההתקנה שלה ניתן להוריד מהאתר של פרוייקט דביאן. מצד שני, האופציה הזאת תכסח כל מערכת הפעלה שכבר מותקנת על המחשב. לא תמיד אפשרי להקדיש מחשב ללינוקס, ולכן ניתנות כאן אופציות נוספות.
וירטואליזציה
[עריכה]אפשרות נוספת היא להשתמש בוירטואליזציה - תוכנה שמתנהגת כאילו היא מחשב שלם, מחשב וירטואלי, שעליו מתקינים לינוקס. היתרונות: זה קל, וזה לא מכסח את מערכת ההפעלה שכבר מותקנת לכם על המחשב. החיסרון: זה יותר איטי מלינוקס שעובד על מחשב אמיתי (למרות שבמחשבים מודרנים זה לא בהכרח מורגש).
יצירת סביבת עבודה של בטא
[עריכה]אופציה 0: מכונת לינוקס אמיתית
[עריכה]מתאים אם אין לכם בעיה למחוק כל מה שיש לכם על המחשב, ולשים במקום זה לינוקס.
אז ככה:
- הורידו אימג' של דיסק ההתקנה של דביאן לינוקס, צרבו אותו על דיסק אמיתי, אתחלו את המחשב מהCD, ותתקינו.
- שחקו סנייק. יש בלינוקס אחלה סנייק.
אגב, אפשר להתקין לינוקס לצידה של מערכת קיימת (dual boot) ואז, כל פעם שמדליקים את המחשב אפשר להחליט אם רוצים שיפעיל את לינוקס או את המערכת שהיתה מותקנת במקור.
אופציה 1: וירטואליזציה
[עריכה]מתאים אם אין לכם יכולת להתקין מערכת הפעלה חדשה או נוספת על המכונה שלכם.
אז ככה:
- הורידו והתקינו את התוכנה virtualbox של אורקל (זו המכונה הוירטואלית היחידה שעבדה לנו בלי יותר מדי התעסקות).
- צרו בvirtualbox מכונה וירטואלית חדשה עם גודל דיסק 15 ג'יגה ומעלה.
- הורידו מהאינטרנט את האימג' של דיסק ההתקנה של דביאן לינוקס (כמו באופציה 0), הגדירו את קובץ האימג' בתור הCDROM של המכונה הוירטואלית (ההוראות באנגלית כאן, בסרטון מאת revolution מופיעות הוראות בעיברית), ואתחלו את המכונה. הופ, מתחילה התקנת לינוקס. כשהוא שואל על חלוקת מחיצות בדיסק קחו ליתר בטחון את מה שהוא מציע (לא לחלק).
- שחקו סנייק. יש בלינוקס אחלה סנייק.
אופציה 2: WSL
[עריכה]מערכת לינוקס שמשולבת בתוך חלונות. חביב אם אין לכם מערכת לינוקס אמיתית. לצרכי בטא בואו ננסה להיצמד למכוונה וירטואלית.
אופציה 3: Cygwin
[עריכה]רלוונטית את אתם נאלצים לעבוד תחת מערכת הפעלה חלונות עתיקה, לפני שמייקרוסופט שילבו לינוקס בתוך windows. מערכת cygwin עושה חיקוי מוצלח למדי של סביבת לינוקס בתוך windows, ונותנת את כל הכלים שהבטאים רגילים אליהם, אבל קצת קשה לנהל אותה.
אז ככה:
- הורידו את מערכת Cygwin, התקינו אותה, התקינו גם את החבילות gcc וEmacs.
- העבודה היא דרך Msys.
- פירוט של ההתקנה וצורת העבודה יתווספו בעתיד.
- אין לכם משחק סנייק. בלינוקס יש :)
אופציה 4: אני בכיתת בטא, יש לי כבר לינוקס מותקן כאן
[עריכה]מתאים למי שנמצא בכיתת בטא והתיישב על מחשב שיש בו כבר לינוקס.
אז ככה:
- קראו לאחד מחברי בטא שיעזור לכם ליצור חשבון משלכם על הלינוקס.
- מצד שני, כדאי שתבקשו ממנו שגם ילמד אתכם איך מתקינים לינוקס. התקנת לינוקס (אמיתית או במכונה וירטואלית) תיתן לכם נקודת נסיון בתחום לינוקס.
- נסו גם לארגן לעצמכם לינוקס בבית. זה לא דורש רשיונות, זה חינם, וזה יאפשר לכם להתאמן בבית עד פגישת בטא הבאה (ואולי אפילו להרויח כמה נקודות נסיון נוספות בתחום לינוקס עד אז).
- שחקו סנייק. יש בלינוקס אחלה סנייק.
אופציה 5: לינוקס טרמינל אונליין
[עריכה]מתאים אם אין שום לינוקס באיזור להתחבר אליו. רמז: כנראה יש.
אז ככה:
- היכנסו לhttp://webminal.org
- הירשמו עם מייל פיקטיבי
- עיבדו עם הטרמינל לינוקס שבאתר.
לתת פקודות לפינגוינים - איך עובדים בלינוקס
[עריכה]טאקס - הסמל של לינוקס, וגירסת "קריסטל 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 שבו כתוב הקוד של התוכנה החדשה שלכם.
את הקובץ הזה שלחו לעופר במייל, ואם קראתם את מה שכתוב כאן למטה והבנתם את הקוד, תקבלו בחזרה מייל שאומר שקיבלתם את הנקודה!
טוב, מה התכנית? מה צריך לעשות?
[עריכה]זה מה שנעשה:
- כתיבת הקוד
- קימפול של הקוד שכתבנו
- הרצה של התוכנה שיצאה לנו
יאללה:
כתיבת הקוד
[עריכה]כתבו את הקוד הבא בעורך טקסט (ממש לכתוב, לא להעתיק ולהדביק. אחרת לא לומדים כלום.):
#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
זהו. ניצחון.
לאן עכשיו?
[עריכה]כבר דיברתם עם הטרמינל באתגרים של המדריך המקוצר ללינוקס, וכתבתם תוכנת hello world בשפת C.
מזל טוב, סיימתם את השלב הראשוני בבטא!
ועם הנקודות שהרווחתם, אתם כבר עמוק בתוך הדרגה הראשונה.
אז איך עולים בדרגות? מה עושים עכשיו? מה המטרה הבאה?
מה שתבחרו. יש המון תחומים בבטא.
אנחנו ממליצים להתחיל בתור...
עוד לא נולד המחשב שינצח סמוראי של C. | ||
-- מתוך הבטא-ספר |
יש המון מקורות ללימוד C. הבעיה היא שהרבה מהם מתמטיים מדי, או שהם משתמשים בצורת כתיבה מאוד שונה מאוד ממה שמקובל בבטא, או שהם חלקיים, או שיש להם בעיות בתצוגה, או שהם מכילים שגיאות, או שהם עסוקים בלהיות צודקים והקורא לא מבין מה הם רוצים מהחיים שלו. באנגלית יש המון מדריכים מעולים, אבל לא כל מי שמצטרף לבטא יכול כבר בהתחלה להשתלט על טקסט טכני באנגלית.
יום אחד יהיה ויקיספר C בעברית שמתאים בדיוק לבטאים. אולי אתם תכתבו אותו. עד אז קראו מדריך לבחירתכם, ותחזרו לכאן כשאתם סמוראים.
כדאי לדעת: סגנון הכתיבה של בטא זהה לסגנון הכתיבה של לינוקס, מלבד העובדה שאנחנו תמיד שמים סוגריים, גם כשמדובר בהצהרה יחידה. אל תתפתו לכתוב בצורה אחרת שתואמת לספר שלמדתם ממנו, כי אחר כך תבלו חצי מהפגישות בויכוחים על זה שהקוד של אחרים מעצבן לכם את העיניים. עשו לעצמכם חיים קלים, כתבו קוד מהתחלה בסגנון בטא. |
- הספר העיקרי בבטא: ויקיספר שפת C הוא ספר מעולה שגם מכיל בתוכו תרגילים תוך כדי לימוד. יתרונות: מאוד מדוייק. חסרונות: לא מאוד משעשע. כשכתוב "שקול לדלג על נושא זה", מומלץ למתחילים אכן לדלג עליו.
- למי שרוצה מדריך משעשע: יש בבטא תרגום (לא להפצה) של פרקים 4-8 מהמדריך של ביג' ("פונקציות", "פויינטרים", "structs"). דברו עם עופר לפרטים. אחרי כל פרק אפשר לעשות את התרגילים מתוך הפרק המתאים מויקיספר שפת C.
- למי שרוצה ללמוד מהמדריך הכי ידוע בעולם: יש בבטא תרגום חלקי (לא להפצה) מתוך הtutorial של K&R - הספר שנכתב על ידי מי שהמציא את שפת C (כיום יש תרגום רק לחלקים 9 ו10, "משתנים חיצוניים" ו"strings"). דברו עם עופר לפרטים.
- לחובבי מתימטיקה: הויקיספר מבוא לתכנות ולמדעי המחשב בשפת C של אורי מוסנזון הוא מקור טוב. חסרונות: לא מתאים למי שמתימטיקה לא עושה לו את זה, מעט לא תואם לסגנון כתיבת הקוד בבטא, ויש כמה שגיאות עריכה.
- למי שצריך שיסדרו לו את החשיבה: קורס C המקוון של עיטם רובוטיקה גם מלמד וגם נותן בסיס טוב לעבודה נכונה. החסרון: חסרים התרגילים שיש בספר המודפס, מאוד לא תואם לסגנון כתיבת הקוד בבטא, לא ניתן לעריכה ולכן לא ניתן להכניס שם טיפים שיעזרו להבנה.
- למי שצריך וידאו הקורס המקוון של אינטרלקט (תודה לאיתמר).
- למי שרוצה להינות בזמן שהוא לומד: מדריך C של Beej הוא אחד המשעשעים.
- למי שרוצה לדעת את כל מה שיש לדעת בצורה הכי נכונה (אבל יצטרך הרבה סבלנות): הויקיספר האנגלי לתכנות C יספר לכם את ה-כ-ל, והוא נחשב גם ויקיספר איכותי.
- למי שצריך וידאו אתר The new boston
- אפשר גם לחפש בכל מנוע חיפוש "C tutorial". יש ה-מ-ו-ן מדריכים באנגלית ברשת.
- מי שצריך קצת פירוט על עבודה עם gcc יוכל למצוא פרטים במדריך מlinuxguide.
כי C זה קשה. ומי שקשה לו עכשיו, יגלה שאחר כך הכל נראה קל וסבבה.
אבל ישנם גם הרבה תחומים נוספים. בשביל הרשימה המלאה של תחומי ההתמחות בבטא ואתגרים שיהפכו אתכם למומחים, אפשר להסתכל בויקיברסיטה של בטא
אפשר גם להציע אתגרים בדף הצעות האתגרים של בטא.
עם מי אפשר להתייעץ? איך מצטרפים לפרוייקטים הסודיים של בטא?
[עריכה]יש הרבה פרוייקטים משוגעים שאנחנו רוצים להרים, וחברי בטא מוכנים לעזור לכל מי שעוזר להם.
דברו עם עופר או עם כל חבר בטא שאתם מכירים אם יש לכם שאלות או אם אתם צריכים פרטים.
נספח: שאלות נפוצות בחדר בטא
[עריכה]קראו רק אם יש לכם שאלה.
יש לי משתמש במחשב אחר ואני לא מצליח להתחבר אליו מהמחשב שאני עליו
[עריכה]אז אין לך משתמש. זה לא גוגל פה, אין משתמש אחד שעובד לכל הסביבות.
המחשבים לא מכירים אחד את השני, כל מחשב זה עולם בפני עצמו, אם יש לך משתמש באחד מהם, אין לך באחרים.
צרו לעצמכם משתמש.
אין לי משתמש על הלינוקס במתנ"ס
[עריכה]- עברו מהמסך הגרפי לטרמינל עם CTRL+ALT+F1
- היכנסו בתור root עם הסיסמה הסודית של בטא. (תשאלו אם אתם לא יודעים מהי).
- כתבו את הפקודה adduser ואחריה את שם המשתמש שלכם. לא ללחוץ enter לפני שכתבתם את שם המשתמש.
- הוא יבקש סיסמה, תנו סיסמה שתצליחו לזכור.
- הוא יבקש שוב את הסיסמה, תכניסו אותה שוב.
- הוא יבקש כל מיני פרטים אישיים. אל תיתנו לו, זה מחשב ציבורי, עדיף שהוא ידע כמה שפחות.
- סיימתם והלינוקס לא צעק עליכם שהוא מעוצבן? מצוין, זה אומר שהוא לא מעוצבן.
- חיזרו למסך הגרפי בעזרת CTRL+ALT+F(something). אני לא הולך להגיד לכם איזה F, תגלו לבד.
- נסו להיכנס עם הסיסמה שהכנסתם. אם לא הצלחתם או ששכחתם את הסיסמה או שהכנסתם אותה עם המספרים שבצד ימין של המקלדת. לא יודע למה מערכת החינוך מלמדת להשתמש בהם, בסיסמאות של לינוקס תתרחקו מהם.
- הצלחתם? יופי. תפתחו lxterminal, תפתחו דפדפן וקדימה לפתור אתגרים.
- לא הצלחתם? חיזרו לטרמינל, היכנסו בתור root, כתבו passwd <username> עם שם המשתמש במקום username, ועדכנו את הסיסמה. וקדימה לטרמינל הגרפי לשלב 10.
איך מרימים לינוקס על מחשב במתנ"ס
[עריכה]- מורידים virtualbox (כי היא נמחקת תמיד מהמחשב)
- מתקינים virtualbox.
- מייצרים מכונה וירטואלית של debian32 עם 2048 מגה זיכרון, ועם שם שכולל את המילה "beta" סתם בשביל הכיף.
- בוחרים בדיסק קיים, ובשבילו את הקובץ beta_amin_bkp שנמצא בדיסק D, בתיקיה beta_bat/VM.
- מריצים את המכונה הוירטואלית