Все термины, приведенные ниже, уже раскрывали множество раз миллионами разных слов. Но у нас нет ни времени, ни возможностей обработать такое количество информации. По этой причине я поставила перед собой задачу раскрыть смысл каждого термина как можно проще и доступнее.
1. Иммутабельность (неизменяемый объект)
Иммутабельность — это то же самое, что и неизменяемый объект. Если состояние является immutable — это означает, что оно не может быть изменено после создания.
В JavaScript, const — это способ частично объявить immutable (неизменяемое) значение. Вы по-прежнему сможете изменить значение const, но для этого потребуется больше усилий, чем для let и var.
2. Класс
Класс — это структурированный блок кода, написанный определенным образом, чтобы обозначить набор или целую категорию вещей.
Люди используют классы, чтобы создавать больше вещей. Они создают новые классы, присваивают им значения и используют методы (также известные как функции) для работы с экземплярами класса.
3. Прототип
Он выглядит как класс. Пахнет как класс. Зачастую, люди принимают его за класс. Но это не класс.
Прототипом является сам экземпляр класса, но скопированный (replicated). То есть прототипом текущего объекта называют некий другой объект, из которого текущий объект черпает недостающие методы и свойства.
Если мы хотим, чтобы у всех экземпляров какого-то класса был некий метод, мы не должны добавлять этот метод к каждому экземпляру отдельно — достаточно добавить этот метод прототипу.
4. Функции первого класса
Функции первого класса рассматриваются как объекты.
Они могут быть переданы другим функциям и их можно вернуть из функций. Также данные функции могут быть назначены переменным.
5. Рекурсия
Рекурсия — это когда алгоритм или функция вызывает сама себя.
Например, цикл for является рекурсией. Обязательным условием рекурсии является условие, которое его завершает. Если его не указать, функция будет вызываться до тех пор, пока программа не выйдет из строя.
6. Инкапсуляция
Инкапсуляция — это механизм, который ограждает группу методов или данных от внешнего вмешательства или неправильного использования.
Инкапсуляция хранит код и данные внутри так называемого “черного ящика”.
7. Полиморфизм
Полиморфизм — это способность программы идентично использовать объекты с одинаковым интерфейсом без информации о конкретном типе этого объекта.
Например, объект является полиморфным, потому что он blueprint (шаблон проектного документа), в котором уникальные переменные можно задать для нескольких его экземпляров.
Кошки полиморфны. Каждая кошка остается кошкой, но у каждой из них разный внешний вид и характер. Однако броня штурмовиков из Звездных Войн не полиморфна, поскольку каждый экземпляр абсолютно одинаковый.
8. Наследование
Та же концепция, что и при наследования имущества или денег.
Ребенок наследует все, что есть у родителя/родителей. Наследование — это процесс, посредством которого ребенок наследует свойства и значения родителя.
В большинстве языков программирования наследование течет вовнутрь — это означает, что поток наследования идет от родителя к потомку, а не наоборот.
9. Тип данных
JavaScript — это слабо типизированный язык. Это означает, что мы просто создаем переменную, как пустой контейнер, а затем уже помещаем в него значение, которое может быть абсолютно любого типа. Это делается через var, let и const.
Java же, напротив, строго типизированный язык, потому что при создании переменной вы не просто задаете ей имя, а обязательно указываете, какой тип информации вы собираетесь хранить в этой переменной — boolean, char, short, int, long, float, double и т.д.
10. Живучесть (persistence)
Живучесть — это способность объекта сохранять работоспособность в условиях всех видов вредных воздействий.
Например, объявленная переменная и экземпляр объекта обладают живучестью, так как при их повторном вызове они будут на месте.
Заключительные слова
Если вы что-то не можете объяснить шестилетнему ребёнку, вы сами этого не понимаете — Альберт Эйнштейн
Со временем, все вышеперечисленные концепции обрастали все большим и большим количеством слов, дабы распространить и развить основную идею. В этом нет ничего плохого, но новичков в программировании это может отпугнуть и шокировать. Я знаю о чем говорю, потому что пять лет назад была на их месте.
Я надеюсь, что, сократив количество слов, смогла облегчить вам жизнь.
Перевод статьи Aphinya Dechalert: 10 Programming Terms in Normal Human Language