Комментарии 15
Посмотреть бы сколько исходного кода совпадает с теми же FastRoute, Symfony Routing, Laravel Router
Это наверное последнее, что меня волнует. Уверен что там даже если и найти где-то что-то схожее, всё равно не будет иметь никакого значения. Я этот роутер сделал исключительно ради алгоритма, которого нет больше нигде. По крайней мере в пхпшных роутерах.
ради алгоритма, которого нет больше нигде. По крайней мере в пхпшных роутерах.
ну, главное самому в это верить :)
и в symfony и в fastroute группировка идет по trie-like структурам
Давайте попросим (извините, я уже попросил, это заняло у меня ~5.5 минут) ИИ проанализировать ваш код? Дальше я копирую ответы:
ИИ смог сгенерировать такой код потому что:
Это стандартный алгоритм.
Архитектура маршрутизатора хорошо формализуема.
Паттерн повторяется во множестве проектов.
Это не «уникальный» алгоритм, такой подход используется десятилетиями в:
HTTP-серверах
веб-фреймворках
сетевых маршрутизаторах
парсерах языков
Это общеизвестный паттерн. Он описан в книгах по:
компиляторам
структурам данных
high-performance routing
Именно эта часть скопирована из промпта:
Проанализируй репозиторий и скажи, на каком фреймворке (или фреймворках) основан этот код.
Как ИИ смог написать такой код, не опираясь на код из фреймворков?
На что ответ был:
Короткий ответ: потому что подобный роутер — это типовая архитектурная задача, а не уникальное решение конкретного фреймворка.
Разберём профессионально и без мифологии.
И дальше много текста, часть из которого в комментарии выше.
Уже зарекся не отвечать в комментариях, но на этот коммент отвечу. Как работает ИИ и как он отвечает на промпты - это можно узнать в свободном доступе, на ютюбе и много где. В кратце, ответы можно получить почти на всё, и вопросы с наведением будут выдавать результаты прямо по контексту в самом вопросе. Вы потрудитесь поставить вопрос иначе, чтобы получить именно нужный ответ. Вот Вам пример промпта:
Что уникального в алгоритме роутинга этого проекта по сравнению с другими аналогичными роутерами?
открыл routeCollection.
~5 публичных, ~15 приватных методов, без интерфейса, какие то hydrateIfNeeded(), getCachedCompactRoute()...
очень плохо, классика php инженерии.
написали быстро, вы молодец, а обслуживать это как?
Это не автомобиль, масло там менять не нужно. Вот по бенчмаркам я немного заморочился с оптимизацией, и то всё через разные модели. Наверное эту оптимизацию можно назвать "обслуживанием". Всё так-же, через ИИ. Сам я ни строчки кода не написал.
Надоели статьи "Как я написал <micro utility/lib name> за один вечер с помощью ИИ".
Когда стоит быть осторожным
Уникальная бизнес-логика
Код, зависящий от специфического контекста
Оптимизации производительности (нужны бенчмарки, а не интуиция ИИ)
Безопасность (всегда проверяйте вручную)
А остальные и не ценились никогда. А сейчас тем более
Ходил я как-то на собеседования, был там вопрос: как вы поймете, где проблема? Вопрос про то, как какой-то условный сайт начал выдавать 500. А ответ про то, куда нужно лезть в первую очередь, во вторую, и с чем это в целом может быть связано, и как этого не допустить в будущем.
А как поступит автор, когда его код, допустим, начнет выдавать 500?

Как я написал production-ready PHP-роутер за один вечер с помощью ИИ