Ростислав Дзинько
Размышления об идеальной архитектуре приложения. Часть 2: Развеиваем мифы?
Часть 2
Пролог
Прошло уже несколько дней с момента публикации первого поста по данной теме. Ух и наслышался я о себе за это время, ну, не так о себе, как о моей идее. К сожалению все "Фу..." не пошло в комментарии. Кто-то писал мне в скайп и джаббер, кто-то - плюнул в лицо при личной встрече. Подведя итог: все усомнились и поулыбались. Но... Многие, судя по комментариям так и не поняли, что я хочу донести, то есть неправильно поняли суть решаемой задачи, и сейчас я это хотел бы исправить. Это скорее моя ошибка, да еще терминатор подогрел.
И в конец пролога - угадайте, что же это за такой талантливый инженер изображен на фотке справа :)
Я не пытаюсь создать универсальное средство решения задач
Это коренное заблуждение, которое я увидел в комментариях к моему посту. Универсальное средство решение - есть наш мозг. Но самый занятный момент здесь в том, что он не предназначен напрямую решать задачи. Схему его работы скорее можно представить как: "научится решать" -> "решить". А в нашее время еще и создать средство для того, чтобы задачу, которую мы научились решать - решал кто-то другой. Например, арифметические операции прекрасно выполняет калькулятор.
К чему я веду?
Я веду к тому, что я хочу создать не фреймворк, который решает все задачи (то есть это не универсальная нейросеть, и никакой другой универсальный апарат решения задач), - это уже не будет фреймворк, а "кнопка" "Сделать зашибись". Я хочу создать фреймворк реализующий архитектуру (подход, методологию) приложения, которую можно применить для всех задач.
Привожу пример
практически все боьшие коммерческие компьютерные игры создаются на объектно-ориентированных языках (в основном это С++). Попытка сделать игру пользуясь только структурным подходом приведет сами понимаете к чему.
Но какой занимательный факт. Ведь имея, например, в своем распоряжении, грубо говоря, функцию main (рассмотрим вариант на С), мы можем написать любое приложение:
int main() {// Do any task in the worldreturn 0;}
То есть, по сути, вот оно! =) Отсутствие фреймворка, каких-либо архитектурных правил и ограничений и привело нас к цели. Пользуясь таким "фреймворком" можно сделать все.
Смешно, да?
Действительно, понаписывал про терминаторов, про всякую фигню и дошел до того, что фреймворки нафиг не нужны. Не совсем так.
Суть моих начинаний в том, что развивая код, приведенный выше таким образом, чтобы он упрощал жизнь разработчику и при этом не накладывал на него ограничений в решении какой бы то ни было задачи, мы получим то, что нам и нужно. Ну, а так как я все-таки упоминал, что пытаться выполнять реализацию будем на Python, то началом будет что? Правильно, - пустой Python-модуль.
То есть, каждый раз добавляя строчку кода в фреймворк стоит задумываться и доказывать, что такой подход не заставит разработчика, который находится в здравом уме и светлой памяти, втыкать костыли в программу.
Заключение
Дела с покорением мира обстоят немножко плохо, но, благодаря уверености Андрея Светлова в том, что задача более легкая и обозримая, как-нибудь к ней вернусь, может даже напишу о прогрессе здесь.
Надеюсь, что внес некоторую ясность в идею, изложенную в предыдущей публикации, если не запутал вас еще больше :)
- 21 Фев 09:22
