Термины IT для «блондинок»
Заголовок придумал не я, а моя подруга; она же и явилась причиной написания этого материала. Так сложились обстоятельства, что ей, человеку, далекому от мира 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 архитектура процессоров развивалась, и сейчас в маленьком квадратике размеров с упаковку от презерватива вмещаются сотни миллионов транзисторов. В общем, главные части процессора — регистры (грубо говоря, переменные), АЛУ (арифметическо-логические устройства), кэш разных уровней. В многоядерных процессорах эти наборы дублируются, позволяя одновременно выполнять несколько задач. В одноядерных системах мнимая одновременность (музыку воспроизводить и в браузере вкладки одновременно открывать) реализуются с помощью квантования процессорного времени. Это значит, что каждая задача выполняется по кусочкам, а не полностью, и задачи постоянно чередуются. Таким образом, выполнение каждой отдельной задачи происходит медленнее, зато выполняются они как будто одновременно.Кэш Очень быстрая, но небольшая по объему область памяти. Используются для быстрого доступа к частым данным. Если нужных данных в кэше нет, процессору приходится обращаться к оперативной памяти через шину, а это долго (по сравнению с кэшем, который располагается непосредственно в процессоре).Оперативная память (RAM: random access memory) Достаточно быстрая область памяти, характеризующаяся тем, что время доступа к конкретному блоку не зависит от его расположения (в отличие от жесткого диска, в котором считывающая головка должна подъехать к определенному сектору на определенной дорожке). Плата за скорость — зависимость от энергопотребления. То есть при выключении компа содержимое оперативной памяти теряется. При включении режима гибернации в винде содержимое памяти записывается на жесткий диск, и при возобновлении работы состояние системы восстанавливается.Видеокарта Устройство, предназначенное для вычислений, требуемых для обработки и создания изображения, отправляемого на монитор. Работает гораздо быстрее, чем основной процессор, за счет того, что узкоспециализировано. Особо требовательны к видеокарте игры (всякие тени/отражения/лучи света требуют геометрических и математических преобразований в очень большом количестве).Материнская плата Связующее звено между всеми компонентами компьютера. На ней располагаются всякие разъемчики.СКВ (система контроля версий) Программа, предназначенная для контроля изменений файлов и хранящая историю версий. В разных СКВ по-разному поддерживается ветвление и объединение разных веток. Ветки нужны для параллельной работы нескольких программистов над одной создаваемой программой либо для параллельного развития нескольких версий одной и той же программы.Git (гит) Одна из СКВ. Распределенная, т.е. данные хранятся не только на центральном сервере, но и на компьютере каждого из разработчиков. Позволяет и поощряет легкое создание веток и последующего их объединения (есть СКВ, в которых ветвление происходит сложнее).deploy (развертывание) Процесс запуска приложения на сервере, а именно: копирование самого приложения, генерация необходимых конфигурационных файлов, остановка старой версии и запуск новой. В больших сервисах может быть очень сложным процессом.Сервер 1. Компьютер, на котором запущен какой-либо сервис (программа), к которой имеет доступ другие компьютеры. Одна машина может выполнять сразу несколько задач: быть почтовым сервером, файловым хранилищем и еще чем-нибудь.1. Постоянно работающая программа, принимающая входящие соединения, как-либо обрабатывающая входные данные и что-либо возвращающая. Например, почтовый сервер: в ответ на логин/пароль выдает почту пользователя.База данных Программа, реализующая хранение данных и их извлечение.SQL (Structured Query Language) Язык запросов, с помощью которого можно извлекать какие-то конкретные требуемые данные из БД. Например, посты блога, автором которых является Вася Пупкин, а дата публикации — от 2000 до 2010 года.Консоль В сфере IT — черненькое окошко. Предоставляет примитивный интерфейс для программ, которые не требуют сложного GUI (graphic user interface).bash Одна из консолей, а также одноименный язык, на котором можно под эту консоль писать программы.MVC Способ организации структуры приложений: Model-View-Controller. Модель отвечает за хранение и логику обработки данных, view (представление) — за их (внезапно) представление, а контроллер описывает реакцию модели на внешние воздействия. Я создаю сайты на Ruby on Rails, этот инструмент использует MVC. Например, есть модель Post, у которой есть атрибуты автор, время создания, опубликованность и т.д. Представление — это, грубя говоря, HTML код, который служит для создания страниц с этим постом (отображения, редактирования, создания). А контроллер служит для взаимодействия внешнего мира с моделью: в зависимости от пути в адресной строки он вызывает разные методы модели и вызывает генерацию разных представлений.HTML HyperText Markup Language — язык разметки гипертекста. Содержимое сайтов без их внешнего оформления: таблицы, контейнеры, параграфы, переносы строк и ссылки.CSS Cascade StyleSheets — каскадные таблицы стилей. Описывают внешнее оформление сайтов.JS Javascript. Язык, на котором описывается реакция страницы на действия пользователя.HTTP HyperText Transfer Protocol — протокол передачи гипертекста. Набор правил, по которым страницы сайтов передаются от сервера к клиенту (браузеру).HTTPS S for Secure. Защищенная версия HTTP, при которой все передаваемые данные шифруются, делая практически бессмысленным прослушивание канала. Поэтому сидя в интернете через макдаковский вайфай лучше набирать адрес не vk.com (который преобразуется к виду vk.com), а vk.com. Кстати, в андроидовском приложении есть возможность передачи данных через безопасное соединение, очень полезная штука при использовании публичных wifi. Например, если подключаться в Макдаке к vk.com, а не vk.com, то любой желающий может перехватить авторизационные данные от твоего профиля, и использовать ВК от твоего имени.Ruby on Rails Фреймворк (набор классов) для построения сайтов. Обладает обширными возможностями, достаточно сложный в освоении, но легкий в использовании. Использует архитектура MVC. Написан на Ruby.Граф Структура данных, представляемая в виде набора объектов и связей между ними. Объекты также называются вершинами графа. Существуют различные алгоритмы на графах, например, реализующие поиск кратчайшего пути в графе между заданными точками.Сложность алгоритма Зависимость времени работы алгоритмы от размера набора входных данных. К примеру, если магазины расположены в ряд, и у тебя уходит _t_ времени на посещение каждого магазина, то при размере торгового ряда в _n_ у тебя будет уходить _nt_ времени на посещение всех магазинов. Но у каждого человека своя константа _t_, главное, что j, общее время зависит от _n_ линейно. То есть время обхода магазинов является величиной, сравнимой с _n_: `T — O (n)`.Если бы магазины были расположены на площади квадрата со стороной _n_, то `T — O (n^2)`
Linux Открытая операционная система, изначально которую создал Линус Торвальдс (он же создал git). Состоит из ядра и набора пакетов (пакет — это программа). Дистрибутив Linux — это опреленный набор пакетов, поставляемый вместе с ядром. Так как эта операционная система открыта, создавать дистрибутивы могут все, кому не лень, но у наиболее известных дистрибутивов есть сформировавшиеся команды, их разрабатывающие. Популярные дистрибутивы: — Ubuntu— Debian— Mint— RedHat (эта платный корпоративный дистрибутив, отличается хорошей безопасностью и стабильностью, а также круглосуточной техподдержкой)— Gentoo (очень сложный в настройке, но быстрый)P.S. В этих объяснениях упор был сделан на доступность и понятность, поэтому могут быть некоторые неточности. Да и сам я не претендую на истину в последней инстанции, так что если найдутся какие-то косяки — с готовностью исправлю.