מאיפה יוניקס?

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

לאורך כל השנים אלה, רשימת הספרים שקראתי ורשימת הספרים שאני יכול להמליץ ​​עליהם סטו לא מעט, אך ללא ספק בין כמה מהאהובים עלי (ללא סדר ספציפי):

  • CEH האקר מוסרי מאת מאט ווקר.
  • פיתון מתחיל: מתחיל למקצוען מאת מגנוס Lie הטלנד.
  • פריצה: אמנות הניצול על ידי ג'ון אריקסון.
  • תחילת העבודה עם ארדואינו מאת מאסימו באנזי.
  • לימוד המעטפת הבושית מאת קמרון ניובאם וביל רוזנבלט.
  • לימוד עורכי ה- vi ו- vim מאת ארנולד רובינס, אלברט האנה ולינדה לאמב.
  • גרעין לינוקס בקליפת אגוז מאת גרג קרואה-הרטמן (גם מפתח ג'נטו).
  • מודרני C מאת ג'נס גוסטדט
  • המדריך של Shellcoder מאת כריס אנלי, ג'ון היסמן, פליקס «FX» לינדר וג'רארדו ריצארטה.
  • שפת התכנות C מאת בריאן וו.קרניגן ודניס מ.ריצ'י (יוצרי C)
  • ניפוי באגים עם GDB מאת ריצ'רד סטולמן, רולאן פש, סטן שבס, ואח '.
  • פריצה לחשיפה של לינוקס: סודות אבטחה ופתרונות של לינוקס מקבוצה גדולה של חוקרי ISECOM, ביניהם פיט הרצוג, מרגה ברסלו, ריק טאקר, אנדראה באריסאני (עוד מפתח ג'נטו לשעבר), תומאס באדר, סימון ביילס, קולבי קלארק, ראול צ'יזה. , פבלו אנדרס, ריצ'רד פייסט, אנדראה ג'יארארדיני, ג'וליאן "האמר ג'אמר" הו, מרקו איוואלי, דרו לאבין, סטפן לו פרסטי, כריסטופר לואו, טיי מילר, ארמנד פוצ'טי ואח '.
  • מערכות הפעלה: גישה מבוססת-מושג מאת Dhananjay M. Dhamdhere
  • פרו גיט מאת סקוט צ'אקון ובן שטראוב
  • תכנות מומחה ג ': סודות עמוקים מאת פיטר ואן דר לינדן.

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

יוניקס ו- C

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

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

רק בשנת 1970, כמה מהנדסי בל החלו לעבוד על מערכת הפעלה פשוטה, מהירה וקלת משקל עבור ה- PDP-7. המערכת כולה נכתבה אסמבלר ונקראו UNIX כפרודיה על ריבוי רב מכיוון שרצה לעשות רק כמה דברים, אלא לעשות אותם טוב במקום העבודה העצומה והבזבזנית שהמשמעות היא השנייה. עכשיו אתה יכול להבין מדוע תקופה מתחיל ב -1 בינואר, 1970. עובדה די מוזרה מבחינתי. באותה תקופה עדיין לא דובר על C עצמו, אלא על א ב 'חדש מכיוון שרעיונותיו של ריצ'י הגיעו משפת ה- B שכבר הייתה בשימוש באותה תקופה.

מוקדם ג

לאורך השנים (1972-3) החל להשתמש במונח C מאז שהשפה החדשה החלה להתגבש, ובסביבות הזמן הזה נולדת עובדה מוזרה נוספת, מתכנתים רבים ובדיחות מתכנתים אומרים:

מתכנתים יודעים שאתה מתחיל לספור מ- 0 במקום 1.

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

array[8]=2;

זה אומר לנו שהאלמנט של מערך מוגדר כ- 2, מכיוון שמערך נוסף 8 יחידות כדי להגיע למרחב הזיכרון בו יאוחסן אלמנט 2. לפני C, שפות רבות החלו לספור מ- 1, הודות ל- C, כמעט כולן מתחילות ב- 0 🙂 אז זו לא אשמת המתכנתים, אלא אשמת כותבי המהדר שזה כך.

קליפת בורן

זהו נושא שלמרות שאינו קשור ישירות ל- C, יכול לעזור ליותר מאחד להבין מדוע תכנות Shell הוא כל כך מוזר, וזה בהחלט סקרן לדעת. סטיב בורן כתב מהדר ל- Algol-68 באותה עונה, זו שפה בה המקשים ( {} ) מוחלפות במילים, כך שנוכל להגדיר זאת באופן הבא ב- C:

#define IF if(

#define THEN ){

#define ELSE }else{

#define FI };

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

התחל לקרוא

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


13 תגובות, השאר את שלך

השאירו את התגובה שלכם

כתובת הדוא"ל שלך לא תפורסם. שדות חובה מסומנים *

*

*

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

  1.   ג'ון דיג'ו

    המאמר שלך מאוד מעניין אותי. תודה רבה.

  2.   HO2Gi דיג'ו

    מאוד מעניין כמו תמיד.

  3.   חוסה רפאל דיג'ו

    מעניין מאוד ההבהרות טובות.

  4.   אלכס דיג'ו

    מצוין

  5.   דניאלגה דיג'ו

    מעניין !!! תודה רבה.

  6.   סגונדו דיג'ו

    multrics? זה לא יהיה מולטימדיה (https://en.wikipedia.org/wiki/Multics)

    שפות עם אינדקסים מ -1 הן המצאה של שטן ...

    1.    ChrisADR דיג'ו

      הערה מעניינת 🙂 אני מניח שבשלב מסוים בהיסטוריה נעשה שימוש בשני המונחים:

      https://www.landley.net/history/mirror/collate/unix.htm

      וברור שאותו ספר שנכתב באמצע שנות ה -90.

      תודה על ההבהרה 🙂 ברכות

      1.    סגונדו דיג'ו

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

        1.    ChrisADR דיג'ו

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

          לגבי

  7.   ED774 דיג'ו

    תרומה נהדרת

  8.   אנונימי דיג'ו

    מעניין, אם כי בוודאי, Multrics נובע מטעות שגויה, שכן השם המקורי של אותה מערכת הפעלה היה Multics, ו- Unix נקראה במקור Unics, בדיוק בהתייחס למערכת ההפעלה הנהדרת ההיא, בסופו של דבר ובפי פונטיקה, Unics se. שהפך לאוניקס, היית צריך רק להזכיר את השם מי שנחשב למחבר יוניקס; קן תומפסון, האגדה מספרת כי גם תומפסון וגם ריצ'י היו בקפיטריה של מעבדות בל והגיבו על הפרויקטים שלהם, וזה היה שריצ'י הציע לתומפסון שהוא יכתוב מחדש את תוכנית יוניקס עם C, את השפה שכתב ... והשאר , היא היסטוריה. 😉

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

    1.    ChrisADR דיג'ו

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

      ובאשר לשנייה ... אגדה נוספת שמעוותת את המציאות, שכן לפני C היו B, A, פסקל, עדה, algol-60, PL / 1 ועוד כמה שהיו שפות תכנות כהלכה (שונות מאוד מהאסיפה והניבים שלהם לפי ארכיטקטורה שתלויים בחומרת המעבד) אז C לא "חידש" במובן הזה, הוא פשוט אימץ פתרונות שכבר היו קיימים בשפות אחרות ובסופו של דבר הוא הפך פופולרי יותר ויותר טוב מאלה ... החלק היחיד האמת היא שג'אווה התבססה על מושג זה של ניידות כדי ליצור מאוחר יותר את המכונה הווירטואלית שלה, אך לא רק שהיא הסתמכה על C לשם כך, אלא היא עקבה אחר מודלים אחרים, אחרת לא תהיה לנו פרדיגמת התכנות מונחה האובייקטים בג'אווה ...

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

  9.   איגנסיו אסקוויבל דיג'ו

    כמו תמיד, המאמר מעניין מאוד, תודה על התרומה.