- PVSM.RU - https://www.pvsm.ru -
Заголовок придумал не я, а моя подруга; она же и явилась причиной написания этого материала. Так сложились обстоятельства, что ей, человеку, далекому от мира IT, пришлось ежедневно сталкиваться с различными специфичными терминами, и она в них терялась; не могла сообразить, что такое сервер, и почему в одних случаях он «экологически чистый в Германии», а в другом — запускается у кого-то на ноутбуке. Также сложно было объяснить ей, что такое консоль. В общем, для облегчения процесса общения я решил написать объяснение некоторых терминов на более-менее доступном языке (надеюсь), и она предложила поделиться написанным с сообществом Хабра.
Вдруг кому-то еще понадобится донести до кого-то те же самые понятия. Чтобы не искать каждый раз доступные объяснения/аналогии, можно просто дать ссылку на готовый материал.
Языки программирования, инструкции которых являются инструкциями процессоров. Максимально низкоуровневые языки, позволяющие сильно оптимизировать выполнение программы, но на них тяжело писать. Так как разных процессоров много, то и ассемблеров много разных бывает.
Программа, принимающая на вход текст другой программы на каком-либо языке и построчно его исполняющая.
Программа, принимающая на вход текст другой программы на каком-либо языке и преобразовывающая его в ассемблер.
Программа, принимающая на вход текст другой программы на каком-либо языке и переводящая его в текст эквивалентной программы на другом языке.
Объектно-Ориентированное программирование. Принцип, при котором данные представляются в виде объектов (структур данных), объединяемых в классы. Класс — это семейство объектов, обладающих схожим поведением. Например, можно представить класс Array, все экземпляры которого будут массивами, их можно будет сортировать, разбивать и т.д., но при этом содержимое каждого объекта будет своим. ООП объявляет три главных свойства: наследование, инкапсуляция, полиморфизм.
Принцип ООП, реализация которого дает возможность создавать классы-потомки каких-то классов предков. При этом по умолчанию наследуются все их свойства и функции, но, при этом можно добавлять новые либо заменять старые. Пример: класс Автомобиль и класс Самосвал. Самосвал наследует от Автомобиля 4 колеса, двери и т.п., и ко всему этому добавляет откидной кузов.
Применительно к программированию: У нас есть класс String ('this is a string'). Мы можем создать класс-потомок NameString ('John Black'), который может использовать точно так же, как и предок, но добавлять возможность извлечения имени и фамилии. Что-то вроде такого:
full_name - NameString.new("John Black")
full_name.first_name # John
full_name.last_name # Black
Принцип ООП, реализация которого скрывает детали внутренней реализации класса извне, давая лишь интерфейс. К примеру, у автомобилей есть коробка передач, педали и спидометр. Это позволяет нам управлять им, не задумываясь о том, внутри него установлен двигатель внутреннего сгорания или электродвигатель, используется бензин либо дизельное топливо. Такое умышленное «незнание» позволяет сильно облегчить использование класса.
Пример из программирования: сортировка может быть реализована разными способами. Пузырьком, быстрая, пирамидальная, море всяких разных. А ты знай себе пишешь
`array.sort()` и не паришься.
Еще один принцип ООП, позволяющий использовать единообразно все классы, являющиеся потомками одного родителя. К примеру, принцип управления машинами с уже упомянутыми электродвигателями и ДВС особо не отличается. Поэтому, научившись использовать один класс, можно легко использовать и остальные.
Пример:
if params['login'].like_name?
login - NameString.new(params['login'])
else
login - params['login'] # просто String
# Здесь можно login использовать как обычную строку, независимо от того,
# является ли она экземпляром String либо его потомка NameString
Класс, служащий лишь для того, чтобы быть предком других классов, объекты самого абстрактного класс создавать нельзя. Например, класс «Средство передвижения». Это слишком общий класс и у него нет объектов, но есть потомки: «Автомобиль», «Мотоцикл», «Самолет» и т.д.
Минимальный элемент на мониторе, способный изменять свой цвет.
Количество пикселей по вертикали и горизонтали диспеля. От величины этого показателя зависит четкость изображения. В хваленой ретине разрешение такое высокое, что считается, что человеческий глаз не способен различить отдельные пиксели, настолько они мелкие.
Сердце компьютера. На нем производятся основные вычисления (а вся работа компа — это вычисления). В процессе развития IT архитектура процессоров развивалась, и сейчас в маленьком квадратике размеров с упаковку от презерватива вмещаются сотни миллионов транзисторов. В общем, главные части процессора — регистры (грубо говоря, переменные), АЛУ (арифметическо-логические устройства), кэш разных уровней. В многоядерных процессорах эти наборы дублируются, позволяя одновременно выполнять несколько задач. В одноядерных системах мнимая одновременность (музыку воспроизводить и в браузере вкладки одновременно открывать) реализуются с помощью квантования процессорного времени. Это значит, что каждая задача выполняется по кусочкам, а не полностью, и задачи постоянно чередуются. Таким образом, выполнение каждой отдельной задачи происходит медленнее, зато выполняются они как будто одновременно.
Очень быстрая, но небольшая по объему область памяти. Используются для быстрого доступа к частым данным. Если нужных данных в кэше нет, процессору приходится обращаться к оперативной памяти через шину, а это долго (по сравнению с кэшем, который располагается непосредственно в процессоре).
Достаточно быстрая область памяти, характеризующаяся тем, что время доступа к конкретному блоку не зависит от его расположения (в отличие от жесткого диска, в котором считывающая головка должна подъехать к определенному сектору на определенной дорожке). Плата за скорость — зависимость от энергопотребления. То есть при выключении компа содержимое оперативной памяти теряется. При включении режима гибернации в винде содержимое памяти записывается на жесткий диск, и при возобновлении работы состояние системы восстанавливается.
Устройство, предназначенное для вычислений, требуемых для обработки и создания изображения, отправляемого на монитор. Работает гораздо быстрее, чем основной процессор, за счет того, что узкоспециализировано. Особо требовательны к видеокарте игры (всякие тени/отражения/лучи света требуют геометрических и математических преобразований в очень большом количестве).
Связующее звено между всеми компонентами компьютера. На ней располагаются всякие разъемчики.
Программа, предназначенная для контроля изменений файлов и хранящая историю версий. В разных СКВ по-разному поддерживается ветвление и объединение разных веток. Ветки нужны для параллельной работы нескольких программистов над одной создаваемой программой либо для параллельного развития нескольких версий одной и той же программы.
Одна из СКВ. Распределенная, т.е. данные хранятся не только на центральном сервере, но и на компьютере каждого из разработчиков. Позволяет и поощряет легкое создание веток и последующего их объединения (есть СКВ, в которых ветвление происходит сложнее).
Процесс запуска приложения на сервере, а именно: копирование самого приложения, генерация необходимых конфигурационных файлов, остановка старой версии и запуск новой. В больших сервисах может быть очень сложным процессом.
1. Компьютер, на котором запущен какой-либо сервис (программа), к которой имеет доступ другие компьютеры. Одна машина может выполнять сразу несколько задач: быть почтовым сервером, файловым хранилищем и еще чем-нибудь.
1. Постоянно работающая программа, принимающая входящие соединения, как-либо обрабатывающая входные данные и что-либо возвращающая. Например, почтовый сервер: в ответ на логин/пароль выдает почту пользователя.
Программа, реализующая хранение данных и их извлечение.
Язык запросов, с помощью которого можно извлекать какие-то конкретные требуемые данные из БД. Например, посты блога, автором которых является Вася Пупкин, а дата публикации — от 2000 до 2010 года.
В сфере IT — черненькое окошко. Предоставляет примитивный интерфейс для программ, которые не требуют сложного GUI (graphic user interface).
Одна из консолей, а также одноименный язык, на котором можно под эту консоль писать программы.
Способ организации структуры приложений: Model-View-Controller. Модель отвечает за хранение и логику обработки данных, view (представление) — за их (внезапно) представление, а контроллер описывает реакцию модели на внешние воздействия. Я создаю сайты на Ruby on Rails, этот инструмент использует MVC. Например, есть модель Post, у которой есть атрибуты автор, время создания, опубликованность и т.д. Представление — это, грубя говоря, HTML код, который служит для создания страниц с этим постом (отображения, редактирования, создания). А контроллер служит для взаимодействия внешнего мира с моделью: в зависимости от пути в адресной строки он вызывает разные методы модели и вызывает генерацию разных представлений.
HyperText Markup Language — язык разметки гипертекста. Содержимое сайтов без их внешнего оформления: таблицы, контейнеры, параграфы, переносы строк и ссылки.
Cascade StyleSheets — каскадные таблицы стилей. Описывают внешнее оформление сайтов.
Javascript. Язык, на котором описывается реакция страницы на действия пользователя.
HyperText Transfer Protocol — протокол передачи гипертекста. Набор правил, по которым страницы сайтов передаются от сервера к клиенту (браузеру).
S for Secure. Защищенная версия HTTP, при которой все передаваемые данные шифруются, делая практически бессмысленным прослушивание канала. Поэтому сидя в интернете через макдаковский вайфай лучше набирать адрес не vk.com (который преобразуется к виду vk.com [1]), а vk.com [2]. Кстати, в андроидовском приложении есть возможность передачи данных через безопасное соединение, очень полезная штука при использовании публичных wifi. Например, если подключаться в Макдаке к vk.com [1], а не vk.com [2], то любой желающий может перехватить авторизационные данные от твоего профиля, и использовать ВК от твоего имени.
Фреймворк (набор классов) для построения сайтов. Обладает обширными возможностями, достаточно сложный в освоении, но легкий в использовании. Использует архитектура MVC. Написан на Ruby.
Структура данных, представляемая в виде набора объектов и связей между ними. Объекты также называются вершинами графа. Существуют различные алгоритмы на графах, например, реализующие поиск кратчайшего пути в графе между заданными точками.
Зависимость времени работы алгоритмы от размера набора входных данных. К примеру, если магазины расположены в ряд, и у тебя уходит _t_ времени на посещение каждого магазина, то при размере торгового ряда в _n_ у тебя будет уходить _nt_ времени на посещение всех магазинов. Но у каждого человека своя константа _t_, главное, что j, общее время зависит от _n_ линейно. То есть время обхода магазинов является величиной, сравнимой с _n_: `T — O(n)`.
Если бы магазины были расположены на площади квадрата со стороной _n_, то `T — O(n^2)`
Открытая операционная система, изначально которую создал Линус Торвальдс (он же создал git). Состоит из ядра и набора пакетов (пакет — это программа). Дистрибутив Linux — это опреленный набор пакетов, поставляемый вместе с ядром. Так как эта операционная система открыта, создавать дистрибутивы могут все, кому не лень, но у наиболее известных дистрибутивов есть сформировавшиеся команды, их разрабатывающие. Популярные дистрибутивы:
— Ubuntu
— Debian
— Mint
— RedHat (эта платный корпоративный дистрибутив, отличается хорошей безопасностью и стабильностью, а также круглосуточной техподдержкой)
— Gentoo (очень сложный в настройке, но быстрый)
P.S. В этих объяснениях упор был сделан на доступность и понятность, поэтому могут быть некоторые неточности. Да и сам я не претендую на истину в последней инстанции, так что если найдутся какие-то косяки — с готовностью исправлю.
Автор: HedgeSky
Источник [3]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/uchebny-j-protsess-v-it/63314
Ссылки в тексте:
[1] vk.com: http://vk.com
[2] vk.com: https://vk.com
[3] Источник: http://habrahabr.ru/post/227503/
Нажмите здесь для печати.