Парадигма программирования: что-то вроде « Функциональное программирование », « Процедурное программирование » и « Объектно-ориентированное программирование ».Парадигма программирования и языки, на которых они используются, сообщают, как пишется код.Например, в объектно-ориентированном программировании код делится на классы (иногда это особенность языка, иногда нет (например, javascript)), и обычно поддерживает наследование и некоторый тип полиморфизма.Программист создает классы, а затем экземпляры классов (то есть объекты) для выполнения операций программы.В функциональных языках изменения состояния на компьютере очень сильно контролируются самим языком.Функции являются объектами первого класса, хотя не все языки, где функции являются объектами первого класса, являются функциональным языком программирования (эта тема является одной из хороших дискуссий).Код, написанный на функциональных языках, включает множество вложенных функций, почти каждый шаг программы - это вызов новой функции.Для процедурного программирования хорошими примерами являются программы на C и bash-скрипты, вы просто говорите, что делаете шаг 1, делаете шаг 2 и т. Д., без создания классов и прочего.
Шаблон проектирования: Шаблон проектированияполезная абстракция, которая может быть реализована на любом языке.Это «шаблон» для ведения дел.Например, если у вас есть несколько шагов, которые вы хотите реализовать, вы можете использовать шаблоны «составной» и «командный», чтобы сделать вашу реализацию более общей.Думайте о шаблоне как об установленном шаблоне для решения общей задачи кодирования общим способом.
Архитектура приложения: учитывает, как вы строите систему, чтобы делать что-то.Таким образом, для веб-приложения архитектура может включать x количество шлюзов за балансировщиком нагрузки, которые асинхронно подают очереди.Сообщения обрабатываются y процессами, работающими на z машинах, с 1 первичным дБ и резервным ведомым устройством.Архитектура приложения включает в себя выбор платформы, языков, используемых каркасов.Это отличается от архитектуры программного обеспечения, которая больше говорит о том, как на самом деле реализовать программу с учетом программного стека.