gzhegow
@gzhegow
aka "ОбнимиБизнесмена"

Как разобраться в этой терминологии?

Господа, прошу меня сразу извинить за неадекватность, я прекрасно знаю, что программисты любят общаться только с теми, кто говорит с ними на одном языке - это у нас в качестве проверки на вшивость и рекламность.

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

Вот например:
design-pattern.ru/patterns/service-layer.html

Шлюзы, интерфейсы (которые в PHP между прочим конструкции языка, а в жизни - что-то другое под ними понимается), слой сервисов, бизнес-логика...

В общем, я долгое время убеждал себя, что это напридумано специально для того, чтобы было о чем поговорить (пруф: lurkmore.to/%D0%94%D0%B8%D0%B0%D0%BB%D0%BE%D0%B3_%..., https://www.youtube.com/watch?v=LJwmsAV96SU) - но похоже, мне все равно не удается найти человека, так что моя теория сломалась и ее стоит выбросить.

Вывод надо учить язык. Есть кто, кто может уделить ну какое-то время, чтобы ввести в курс дела человека, который вроде как уже пару лет работает в ООП, но современных стандартов по книгам понять не может?
  • Вопрос задан
  • 766 просмотров
Решения вопроса 1
pi314
@pi314
Президент Солнечной системы и окрестностей
Благодаря тому, что программирование, это не идеология, не мифология, а вполне себе прекладная научная дисциплина, вся терминология в нем изначально предельно точная и информативная. В любом термине (кроме некоторых маркетинговых мемов) обычно содержится почти полный ответ на вопрос: "а что это такое", для понимания которого не нужно ничего запоминать - достаточно анализировать слова и синтезировать смысл абстракции по аналогии с предметами реального мира :) Однако, есть два момента.

Первый: терминология исторически англоязычная и всяческие попытки переводов чаще вредят, чем помогают понять суть. (Мне, например, пришлось напрячь Гугл, чтоб удостовериться, что под "шлюзом" Вы действительно подразумеваете "pattern gateway", а не что-то там еще).
Второй: термины часто обозначают не конкретные сущности, а абстракции. (Если вдруг значения последних двух слов понятны только на уровне смутного ощущения, разберитесь, что они конкретно означают... абстракция - это не "нечто туманное и заумное", а совсем другое :) ) Соответственно, для толкования этих терминов нужно использовать абстрактное мышление. Как?

Например, для того же шлюза... шлюз бывает между двумя реками с разным уровнем... да, там есть выше - ниже. Однако, бывает между двумя отсеками космического корабля (хорошо - там все еще может быть разное давление), а бывает между толпой пассажиров в аэропорту и выходом к самолету (давление толпы?)... или, между локальной сетью и внешней, и т.д. Если задуматься, почему все это называют таким словом, легко понять, что суть понятия не столько в перепаде (уровней, давлений и т.д.), а, наверное, в том, что "это такое нечто, только через которое можно попасть/выйти из одного в другое". .. оно же, кстати, соответствует буквальному переводу слова "gateway" - "выход наружу"...

И - сюрприз(!) - именно в этом и заключается суть паттерна. А вот, для сравнения, его формальное определение: "Объект, который инкапсулирует доступ к внешней системе и ресурсу." Решайте для себя сами, что лучше - знать английский, запоминать такие определения или один раз понять смысл аналогии, только учтите, что у всех слов в определениях тоже есть совершенно конкретный, точный смысл, который нужно знать или уметь находить - иначе определение ничего не объяснит, а только еще больше запутает :)

Далее... как его "сделать в коде"? А фиг его знает! Как удобнее для проектируемой системы, так и делайте. Может, это будет один класс, может микросервис, а может вообще железяка на FPGA. Паттерн не дает никаких готовых рецептов (типа, взять три грузовика бетона, выкопать яму глубиной 5 метров и пр.) - он просто говорит, что чем всем частям системы "лазить наружу" как попало, лучше это дело сконцентрировать в одном месте. И, кстати, патерн не является "современным стандартом" и, вообще, стандартом! Это просто обобщенный опыт поколений разработчиков систем. Не более, чем соображение мыть руки перед едой... если зачем-то нужно, можно и не мыть, но если нет какой-то осознанной мотивации, то мыть в большинстве случаев - лучше :)

Идем дальше... интерфейс. Что это такое? Формочка с кнопочками и чекбоксиками? А может, разъем USB? А может, код на каком-нибудь ЯП? Что между всем этим общего? Да очень просто! Интерфейс, это набор правил и соглашений о том, как пользоваться какими-то функциями того, что предоставляет этот интерфейс :)

Вот и все! В ИТ-шной терминологии нет никакой магии и никакого сакрального смысла. Для понимания достаточно знать ТОЧНОЕ значение довольно небольшого количества слов и для любого непонятного термина всегда задавать два простых вопроса: "что это значит" и "почему", и находить на них ответы. И все туманное и странное быстро становится простым и понятным :)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Jump
@Jump
Системный администратор со стажем.
я прекрасно знаю, что программисты любят общаться только с теми, кто говорит с ними на одном языке
А вот тут явная ошибка.
Если общаешься с профессионалом, то удобнее конечно использовать сленг.
Если общаешься не с профессионалом, то удобнее разговаривать на нормальном русском языке.

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

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы