Звідки походить UNIX?

Вітаю всіх! На цих тижнях я був дуже розважений, читаючи деякі книги з програмування, правда, найкращий спосіб навчитися програмувати - це завжди книга, будь-яка стаття, навчальний посібник, посібник, який можна знайти (включаючи мій) - це просто еталони при порівнянні їх із справжньою книгою з даної теми. Тепер ми повинні визначити, що таке "справжня" книга, оскільки не всі книги, як правило, хороші, і багато з них можуть навіть коштувати дорожче, ніж вони дійсно варті, і витрачати час.

Протягом усіх цих років список книг, які я прочитав, і список книг, які я можу порекомендувати, досить сильно розходились, але без сумніву серед деяких моїх улюблених, які ми маємо (без певного порядку):

  • Сертифікований етичний хакер CEH від Метта Уокера.
  • Початок Python: від початківця до професіонала Магнуса Лі Гетьлянда.
  • Злом: мистецтво експлуатації Джона Еріксона.
  • Початок роботи з Arduino від Массімо Банзі.
  • Вивчення баш-оболонки Камерон Ньюбам і Білл Розенблат.
  • Вивчення редакторів vi і vim Арнольда Роббінса, Елберта Ханни та Лінди Лемб.
  • Ядро Linux в двох словах Грега Кроах-Хартмана (розробник Gentoo теж).
  • «Сучасний С» Єнса Густедта
  • Довідник Shellcoder Кріса Енлі, Джона Хізмана, Фелікса «FX» Ліндера та Херардо Річарте.
  • Мова програмування C Брайан В. Керніган та Денніс М. Річі (творці C)
  • Налагодження за допомогою GDB Річардом Столлманом, Роландом Пешем, Стен Шебсом та ін.
  • Злом Linux Exposed: секрети та рішення безпеки Linux від великої групи дослідників ISECOM, включаючи Піта Герцога, Марга Барсело, Ріка Таккера, Андреа Барісані (ще один колишній розробник Gentoo), Томас Бадер, Саймон Білз, Колбі Кларк, Рауль К'єза , Пабло Ендрес, Річард Фейст, Андреа Гірардіні, Джуліан "HammerJammer" Хо, Марко Івалді, Дру Лавін, Стефан Ло Престі, Крістофер Лоу, Тай Міллер, Арманд Пучкетті та ін.
  • Операційні системи: підхід, заснований на концепції, Дхананджай М. Дхамдхере
  • Pro Git від Скотта Чейкона та Бена Штрауба
  • Програмування експерта C: Глибокі секрети Пітера Ван Дер Ліндена.

Я міг би високо оцінити кожну з цих книг, але сьогодні ми візьмемо деякі уривки з останнього зі списку, оскільки багато з цих анектод захопили мене і допомогли мені краще зрозуміти деякі складні секрети С та програмування загалом. 🙂

Unix та C

Коли ми говоримо про UNIX, історія переплітається з походженням цієї системи та розвитком мови, яка на сьогоднішній день є однією з найбільш використовуваних при розробці її та її похідних (включаючи Linux). І що цікаво, ці двоє народжуються з "помилки".

Мультиплікація Це був мега проект, який об’єднав Bell Laboratories, General Electric та саму MIT, щоб створити операційну систему, зазначивши, що система призводить до багатьох помилок, а серед найважливіших - збоїв у роботі, які практично роблять систему непридатною. Мова йде про 1969 рік, тому обладнання того часу не могло підтримувати обсяг програмного забезпечення, необхідного для запуску самої системи.

Лише в 1970 році кілька інженерів Bell почали працювати над простою, швидкою та легкою операційною системою для PDP-7. Вся система була написана на Асемблер і був покликаний UNIX як пародія на Мультиплікація оскільки він хотів зробити лише кілька речей, але зробити їх добре замість тієї величезної марної роботи, яку означала друга. Тепер ви можете зрозуміти, чому Епоха починається 1 січня, 1970. 🙂 Для мене досить курйозний факт. Тоді ще не було мови про саму С, а про а Нова Б оскільки ідеї Річі виходили з уже використовуваної мови Б того часу.

Ранні C

З роками (1972-3) термін С почали використовувати, коли нова мова почала формуватися, і приблизно в цей час народився ще один цікавий факт, багато програмісти та жарти програмістів кажуть:

Програмісти знають, що ви починаєте рахувати від 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 🙂 звичайно цікаво.

Почніть читати

Я не можу розповісти вам усі подробиці книги, тим більше, що багато хто з них вже є темами програмування, що вимагає попереднього досвіду для розуміння, але я думав, що поділюся з вами деякими цікавими анекдотами, які я знайшов по дорозі. Час попрацювати над деякими елементами, які входили до списку справ, тому що ці останні кілька книжок просто застали мене, і я насолоджуюся ними щодня, і перш за все намагаюся зрозуміти їх у повній мірі. Привіт і незабаром я зможу поділитися з вами ще темами, привітаннями.


Залиште свій коментар

Ваша електронна адреса не буде опублікований. Обов'язкові для заповнення поля позначені *

*

*

  1. Відповідальний за дані: Мігель Анхель Гатон
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.

  1.   Джон - сказав він

    Ваша стаття була для мене дуже цікавою. Дуже дякую.

  2.   HO2Gi - сказав він

    Дуже цікаво як завжди.

  3.   Хосе Рафаель - сказав він

    Дуже цікаві роз'яснення хороші.

  4.   Alex - сказав він

    Відмінно

  5.   Даніельга - сказав він

    Цікаво !!! Дуже дякую.

  6.   друга - сказав він

    мультики? це не буде мультик (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 трансформувався в Unix, зараз , вам потрібно було лише згадати ім’я того, кого вважають автором Unix; Кен Томпсон, за легендою, і Томпсон, і Річі були в їдальні в Bell Labs, коментуючи свої проекти, і саме Річі запропонував Томпосону переписати свою програму Unics на C, мовою, яку він написав ... і відпочинок, це історія. 😉

    До речі, раніше всі програми писалися з інструкціями машини, що робило їх повністю залежними від апаратного забезпечення, інновація C, крім спрощення написання програм, полягала в тому, що мова не залежала від обладнання, що реалізує компілятори, філософія, яка багато років потому піде на Java, в тому сенсі, що програми не залежать від операційної системи, додаючи відому віртуальну машину Java.

    1.    ChrisADR - сказав він

      Погано в легендах те, що вони спотворюють історію різними способами ... і вони можуть змусити вас думати, що щось трапляється тоді, коли цього не відбувається ... як факт існуючої розмови Томпсона та Річі (яку я пропустив за бажанням), оскільки це призводить до історичних та технічних помилок (C не був раніше UNIX) ...

      А що стосується другої ... ще однієї легенди, яка спотворює реальність, оскільки до C існували B, A, pascal, Ada, algol-60, PL / 1 та ще декілька, які були належним чином мовами програмування (дуже відрізняються від Асамблеї і його діалекти за архітектурою, які залежать від апаратного забезпечення процесора), тому C не "впроваджував" у цьому сенсі, він просто прийняв рішення, які вже існували в інших мовах, і врешті-решт він став популярним швидше і кращий за ... Єдина частина Істина полягає в тому, що Java базувалася на цій концепції переносимості, щоб пізніше створити свою віртуальну машину, але вона не тільки покладалася на C для цього, але й наслідувала інші моделі, інакше у нас не було б об'єкта- парадигма орієнтованого програмування в Java ...

      Я відчував, що повинен прояснити ситуацію, тому що хтось з гіршими знаннями може сприйняти це як правду, а потім повірити, що це сталося так ... привіт et

  9.   Ігнасіо Есківель - сказав він

    Як завжди, стаття дуже цікава, дякую за внесок.