Откуда взялась UNIX?

Приветствую всех 🙂 в эти недели я был очень развлечен, читая несколько книг по программированию, правда в том, что лучший способ научиться программировать всегда с книгой, любая статья, учебник, руководство, которое можно найти (включая мое), просто контрольные точки при сравнении их с реальной книгой по этой теме. Теперь мы должны определить, что такое «настоящая» книга, поскольку не все книги обычно хороши, а многие из них могут даже стоить больше, чем они действительно стоят, и тратить время впустую.

За все эти годы список книг, которые я прочитал, и список книг, которые я могу порекомендовать, сильно разошлись, но, без сомнения, среди некоторых из моих любимых у нас есть (без определенного порядка):

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

Я мог бы высоко отзываться о каждой из этих книг, но сегодня мы возьмем некоторые отрывки из последней в списке, так как многие из этих анектозов захватили меня и помогли мне лучше понять некоторые сложные секреты C и программирования в целом. 🙂

Unix и C

Когда мы говорим о UNIX, история переплетается с происхождением этой системы и развитием языка, который по сей день является одним из наиболее часто используемых при разработке этой системы и ее производных (включая Linux). И что любопытно, эти двое родились из «ошибки».

Multrics Это был мегапроект, который объединил Bell Laboratories, General Electric и сам MIT для создания операционной системы. В этой системе было много ошибок, и среди одного из самых важных - сбои производительности, которые сделали систему практически непригодной для использования. Мы говорим о 1969 году, поэтому оборудование того времени не могло поддерживать то количество программного обеспечения, которое требовалось для работы самой системы.

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

Ранний C

Спустя годы (1972-3) термин C начал использоваться по мере того, как новый язык начал формироваться, и примерно в это время родился еще один любопытный факт, многие программисты и программисты шутят:

Программисты знают, что вы начинаете считать с 0 вместо 1.

Что ж, это не совсем так настоящая причина, по которой это считается так и по сей день, заключается в том, что при его создании для авторов компилятора было проще вычислить массив, используя смещения, они указывают расстояние, которое существует от исходной точки до желаемой цели, поэтому:

array[8]=2;

Это говорит нам, что элемент of array определяется как 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 (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.

  1.   Хуан сказал

    Ваша статья мне очень понравилась. Большое спасибо.

  2.   HO2Gi сказал

    Как всегда очень интересно.

  3.   Хосе Рафаэль сказал

    Очень интересно разъяснения хорошие.

  4.   Alex сказал

    Отличный

  5.   Danielga сказал

    Интересно !!! Большое спасибо.

  6.   второй сказал

    мультирик? не будет мультика (https://en.wikipedia.org/wiki/Multics)

    языки с индексами от 1 - изобретение сатаны ...

    1.    ChrisADR сказал

      Интересное примечание 🙂 Я полагаю, что когда-то в истории использовались оба термина:

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

      и, видимо, та самая книга, которая написана в середине 90-х.

      Спасибо за разъяснения 🙂 привет

      1.    второй сказал

        уа, какая странная вещь, вы заставили меня усомниться, я заглянул в "купленную" копию Expert C Programming: Deep секреты, и там много мультикам, я впервые слышу эти мультики. Как любопытно, это немного напоминает кролика трикс

        1.    ChrisADR сказал

          хахаха, конечно, любопытно, я проверил свою английскую копию глубоких секретов, там также написано Multrics (потому что вы тоже заставили меня усомниться) ... может это было выражение того времени

          привет

  7.   ED774 сказал

    Большой вклад

  8.   анонимный сказал

    Интересно, но несомненно, что Multrics возникла из-за опечатки, поскольку оригинальное название этой операционной системы было Multics, а Unix, первоначально называвшаяся Unics, в точности относилась к этой великой операционной системе, в конечном итоге и по фонетике Unics se преобразованный в Unix, теперь вам нужно было только указать имя того, кто считается автором Unix; Кен Томпсон, легенда гласит, что и Томпсон, и Ричи были в кафетерии Bell Labs, комментируя свои проекты, и именно Ричи предложил Томпсону переписать свой Unics с помощью программы C, языка, который он написал ... и всего остального. , это история. 😉

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

    1.    ChrisADR сказал

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

      А что касается второго ... еще одна легенда, искажающая реальность, поскольку до C были B, A, pascal, Ada, algol-60, PL / 1 и еще несколько, которые были правильно языками программирования (сильно отличающимися от Assembly и его диалекты по архитектуре, которые зависят от аппаратного обеспечения процессора), поэтому Си не стал "вводить новшества" в этом смысле, он просто принял решения, которые уже существовали на других языках, и в конце концов он стал популярным быстрее и лучше, чем эти ... Единственная часть Правда в том, что Java была основана на этой концепции переносимости для последующего создания своей виртуальной машины, но она не только полагалась для этого на C, но и следовала другим моделям, иначе у нас не было бы парадигмы объектно-ориентированного программирования в java ...

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

  9.   Игнасио Эскивель сказал

    Как всегда, статья очень интересная, спасибо за вклад.