Pull to refresh

Сетевые технологии. Аппаратное и программное обеспечение. Для маленьких. Часть 1

Широкими мазками хочу рассказать с самых азов про то направление, которое сейчас изучаю, чтобы самому лучше запомнить материал и с вами поделиться, интересной (надеюсь) и структурированной инфой ?

Будем разбирать Аппаратное и программное обеспечение, немного капнем в историю и пробежимся по основным парадигмам и ЯП (языкам программирования).

АППАРАТНОЕ ОБЕСПЕЧЕНИЕ

Основные элементы, из которых состоит ПК:

1. Блок питания. Отвечает за перераспределение напряжения.

2. Процессор (CPU). Основной мозг, который занимается вычислениями/совершает операции).

3. Память:
- оперативной память (ОЗУ или RAM);
- жесткий диск.

4. Видеокарта.
 Видеокарта- предназначена чтобы выводить на монитор картинку и отвечает за специализированные вычислительные задачи. Бывают они двух видов:— интегрированная (встроенная в материнскую плату или процессор);— дискретная (подключается как отдельное устройство к материнской плате или процессору).

Думаю все, даже очень далекие от IT люди хоть раз слышали, что компьютер понимает только язык единиц и нулей, но откуда же берутся?

Самое простое объяснение звучит так: в современном процессоре огромное количество транзисторов и каждый транзистор управляет течением тока в процессоре, т.е по факту управляет нулями и единицами. Лампочка горит — 1, не горит — 0. Число 2 — это вторая лампочка горит, а первая не горит, число 3-обе лампочки горят. И дальше в том же духе. Суть простая: ток есть — единица, нет — ноль.

Но где-то же эти единички и нули должны храниться. Существует 3 типа памяти:

1. Постоянная память (не стирается при отключении от электричества):
- HDD жесткий магнитный диск. На HDD нули и единицы хранятся, как намагниченные и размагниченные участки. Когда диск крутится считывающая магнитная головка сканирует эти участки.
- SSD твердотельный накопитель. SSD более быстрый накопитель, т.к. в нем нет магнитных дисков и там нечему вращаться. А сохраняется все в специальных транзисторах, которые могут сохранять свои состояния без питания. SSD меньше подвержены внешним воздействиям — вибрациям, ударам и тд. Но они и более дорогие.Если в двух словах: SSD там где скорость, HDD там где объём, если нет много денег.

2. Оперативная память. Нужна для того, чтобы временно хранить данные, в случае, если это нужно сделать оперативно, а на HDD и SSD долго записывать.

3. Сверхоперативная. Память внутри процессора, эта память максимально быстрая.

C железяками вкратце разобрались, давайте теперь перейдем к тому, как с этими железяками можно взаимодействовать.

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ

Что такое программы в целом? По сути, это просто инструкции для ПК.

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

Следующей ступенью эволюции в IT стал терминальный доступ, по сути ‘папа’ современного терминала в ОС. Он появился, чтобы как раз, чтобы решить проблему очередей, позволяя разделять время между программами. Также он позволял подключаться к нему сразу нескольким клиентам через разные терминалы (т.е. у каждого пользователя был свой терминал) и процессор разделял свое время между ними.

По мере развития IT росли и слои абстракции — это по прослойки между человеком и ПК, которые создают юзабилити, но уменьшают скорость работы / «понимания» между человеком и ПК. Т.е. когда писали код физически в перфокарту, слоев абстракции по сути не было, затем появился терминал, потом ОС и программы с интерфейсом. И каждый из этих уровней требует ресурсов, и создавая дополнительную прослойку, уменьшает скорость работы программ.

З.Ы. итого существует 2 способа взаимодействия людей с ПК:

  • Терминал.

  • GUI graphical user Interface — через отрисованный интерфейс программ.

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

Давайте теперь посмотрим, как появлялись парадигмы ЯП и как в целом шло развивались отношения и понимание между человеком и ПК.

Парадигмы программирования / стили программирования.

Парадигма программирования или подход к программированию — совокупность идей и правил, определяющих стиль написания программ.

Первым появилось Императивное программирование. От слова императив - команда.Это когда есть команды, которые выполняются строго последовательно. По сути все языки в какой то степени являются императивными. А суть первых программ заключалась как раз в строгом и последовательном выполнении голых машинных инструкций.___Процедурное программирование появилось как эволюция императивного программирования, объединяя одинаковые куски кода, чтобы не дублировать их по 100 раз. Парадигма позволяющая писать процедуры.Отличие процедуры от функции в том, что процедура может иметь входные данные, но не может иметь выходных.Функциональное программирование (входит в группу декларативной парадигмы, основное отличие которой от императивной парадигмы в том, что ставит акцент на ЧТО, а не КАК).Появилось наряду с процедурным программированием в конце 50-х годов.Тут выход одной функции является входом для другой.Чтобы это было возможным функциональный язык создает ограничения для функций. Они:— должны быть чистыми;— не должны изменять состояний;— должны принимать аргументы и возвращать результат;— должны быть изолированными конструкциями, которые не меняют ничего в других частях программы.Основной инструмент функционального программирования (ФП) — математические функции.Также к основным идеям функционального программирования можно отнести:

  • функции высшего порядка — могут принимать другие функции в качестве аргумента или возвращать их;

  • рекурсию;

  • лямбда-выражения.

Структурное программирование. Появилось в конце 60х годов. Процедурное и функциональное программирование упростило жизнь программистам, но сложность программ росла и программистам нужно было больше абстракций, так и появилось структурное программирование.

Тут суть в особом структурировании программ, с использованием следующих механизмов:

  • последовательность;

  • ветвление;

  • цикл;

  • подпрограммы в виде процедур и функций;

  • блоки кода.

Один из постулатов структурного программирование-вред оператора GOTO, который позволял прыгать от одного блока кода к другому и создавал спагетти код. Это было до структурного программирования.

Самый яркий представитель — язык С, GO.

Объектно-ориентированное программирование ООП появилось в конце 60х годов, также как и структурное. ООП стало ответом на растущую сложность программ.Вводит определения классов и объектов, каждый из которых является экземпляром класса, а также важнейшие понятия:

  • инкапсуляция;

  • наследование;

  • полиморфизм.

ООП позволяет решать проблемы по сути любых масштабов.

К основным языкам ООП можно отнести: Python, Java, JS, С++, C#

Мы рассмотрели основные парадигмы ЯП и основной постулат тут в том, что большинство языков являются мультипарадигмальными.


Теперь давайте разберемся, что такое компилируемые и интерпретируемые языки.

По формату обработки кода и взаимодействию с ПК, языки можно разделить на компилируемые/низкоуровневые (C, C+ , GO, RUST и т.д.) и интерпретируемые/скриптовые/высокоуровневые (Python, PHP, JS, Rubi и т.д.).

Как работает компилятор? Он читает текстовый файл, валидирует (проверяет все ли ок с синтаксисом), оптимизирует, если необходимо конструкции, компилирует этот документ и на выходе выдает исполнимый файл, который можно смело запускать в ОС . Для этого уже не нужен ни компилятор ни исходный код программы, т.е. мы получаем финальную, готовую к запуску программу.

В случае с интерпретатором схема отличается — он читает файл, также проводит валидацию, как и компилятор плюс по ходу выполняет еще какие-то действия и сам же начинает выполнять инструкции которые написаны в исходном коде, построчно!

Основная разница компилируемых и интерпретируемых языков в сложности обучения ими, написании кода и скорости работы программ, написанных на них. Если в двух словах: компилируемые языке ближе к процессору и лучше его понимают, за счет чего быстрее работают, но обычно сложнее в изучении и написании кода.
В то время, как интерпретируемые более просты в изучении, на них можно быстро сварганить какой-то код, MVP так сказать, протестить спрос и далее уже если есть деньги — переписать, к примеру, на низкоуровневом языке код целиком или часть блоков которые под максимальной нагрузкой.

На сегодня все! See u later alligator ??

Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.