Pull to refresh
8K+
5
1,4
Rating
33
Subscribers
Send message

Поделитесь в комментах изучаете ли языки или не видите в этом смысла с прогрессом ИИ?

Изучаем! Но, в возрасте это делать труднее. Очень быстро происходит процесс насыщения мозга информацией и включается блокировка на поступление новой. Чтобы не терять времени, можно разрабатывать собственную систему обучения иностранным языкам, на уровне создания ПО, видеоуроков и, просто, компьютерных уроков для своей обучающей программы.

Удивительно, но делать 100%-но свою обучающую систему проще, чем выучить язык как таковой.

В принципе, для освоения иностранного языка, достаточно, взять хороший учебник по грамматике, проштудировать его и, параллельно, слушать озвучку материала (в комплекте «Самоучитель + Аудио»). Единственный минус – это приходится делать порознь. В своей программе можно объединить озвучку и текст и сделать сам процесс освоения интерактивным, что очень напоминает интерактивную видео-книгу с возможностью ввода и редактирования текста (из упражнений либо исправления обучающих данных), пролистыванием видео страниц в любом направлении и их произвольной озвучки.

У меня есть первая версия подобной программы, с возможностью проверки запомненных слов или фраз, но, сейчас занимаюсь ее второй версией, именно, с уклоном на создание режима интерактивной видео-книги. О чем можно прочитать в моих статьях, здесь

Используете ли вы ИИ при написании кода – и если да, то как с этим уживается ваша команда?

Команды у меня нет, но, для написания собственных пет-проектов, она и не нужна. А я сам, с ИИ-ями, вполне «уживаюсь» :) .

Для примера, с помощью бесплатных ИИ-сервисов, я сделал графическую обёртку для консольного загрузчика, чтобы загружать любимые видосики из «народного» видеохостинга. Вот скриншот соответствующей программы «MiniDL», v. 1.0:

Программа «MiniDL», v. 1.0.
Программа «MiniDL», v. 1.0.

Подробности можно посмотреть в моей статье: «Минималистский графический интерфейс, на C++ / WTL, для консольного загрузчика» ( https://habr.com/ru/articles/955838/ ).

yt-dlp — форк youtube-dl, который живее всех живых. Поддерживает не только YouTube, но и около 1500 сайтов (TikTok, VK, Instagram, X/Twitter, Vimeo, Rutube и так далее). Парсеры обновляются чаще, чем я коммичу

Согласен! Отличная вещь! С помощью бесплатных ИИ-сервисов, я сделал графическую обёртку для этого консольного загрузчика, чтобы загружать любимые видосики из «народного» видеохостинга. Вот скриншот соответствующей программы «MiniDL», v. 1.0:

Программа «MiniDL», v. 1.0.
Программа «MiniDL», v. 1.0.

Подробности можно посмотреть в моей статье: «Минималистский графический интерфейс, на C++ / WTL, для консольного загрузчика» ( https://habr.com/ru/articles/955838/ ).

и почему им платят больше остальных разработчиков

По большому счету, за ответственность! Ибо их ошибки могут иметь миллиардную цену и финансовую и политическую. Например (да, я знаю, примеры вы не любите!), «Луну-25» отправили на её «родину» в спешке, по ускоренной, но очень рискованной траектории, чтобы опередить медленно летящий, по длинной траектории, аналогичный индийский спутник, запущенный ранее. Но, не судьба! Компетенции, за очень длительный перерыв, слегка утеряны, а физика Луны подзабыта. Вот и ухайдокали «лунный трактор» на потеху недругам. Но, архитектор проекта, принявший такое авантюрное решение, понес ответственность?

Кто такие архитекторы ПО

Архитектор ПО – опытный специалист, который проектирует техническую структуру программных систем. Его основная задача – принимать решения о том, как в целом устроена система: из каких компонентов она состоит, как эти компоненты взаимодействуют между собой, как система будет масштабироваться, насколько она устойчива к нагрузкам и сбоям.

Вы думаете, что объяснили? И примеров, соответственно, приводить не надо? Но, как ИИ-шное определение – сойдет!

Здесь даже с согласованием времен не всё гладко: «как в целом устроена система», «из каких компонентов она состоит», «как эти компоненты взаимодействуют». По логике, должно употребляться будущее время: «как в целом БУДЕТ устроена система», «из каких компонентов она БУДЕТ состоять», «как эти компоненты БУДУТ взаимодействовать». Если система уже существует, то её архитектурой занимались в прошлом, а не в настоящем. Не так ли?

Даже в школе, не учат числам, сложению и умножению. «вообще», а «конкретно», один апельсин, два яблока и т.п.

А так, попросил ИИ написать статью, он и напишет, естественно, без эмпатии и «живых» примеров. Но, кому это интересно? Разве, что только для «галочки».

и почему им платят больше остальных разработчиков

потолок в профессии и того выше – калькулятор ХК подсказывает, что зарплаты архитекторов доходят до 770 тысяч рублей

Для кого вы эту замануху пишите? Как в анекдоте: «Все говорят! – И вы говорите!». На неё кто-то ведётся? В чем смысл махать «морковкой» перед носом, не неся за свои слова никакой ответственности?

Смысл, скорее, в другом, вы вдвоём, с автором статьи, похоже, находитесь на подобных должностях, но на «770 тысяч» пока еще не вышли. Зато завтра, это даст вам повод говорить руководству, смотрите, на «Хабре» всем архитекторам ПО платят под миллион, а нам еще нет. Срочно добавляйте нам оклады, иначе уйдем в другую фирму! Поправьте, если я не прав. Просто, англы и саксы утверждают: «О чём бы люди не говорили, они всегда думают о деньгах!».

P.S. Неужели вам, как архитекторам, нечем похвастаться? Хотя бы «вообще»! К чему эта вся ИИ-шная скукота?

Ну слушай, автор лишь привела в пример базу, которую действительно НУЖНО знать,

Ну и в чем заслуга автора? Написать список требований, которым нужно соответствовать и источников, которые нужно освоить – это, вполне, можно узнать в учебном плане ВУЗа, по интересующей специальности.

А показывать это на примерах, как всё работает, кто должен?

понятно, что это не всё, но всё же…

Хорошо, указали все требования и назвали все источники, что измениться? Получится архитектор самоучка? Мол, я освоил все «вумные» книги по архитектуре ПО и знаю все паттерны проектирования – платите мне много «денюх»?

Давайте рассмотрим конкретный пример (мне не нравится ограничиваться только общими словами).

Есть неплохая книга: «Фундаментальный подход к программной архитектуре», Марка Ричардса и Нила Форда.

Там есть фраза:

Девяносто пять процентов слов [об архитектуре программного обеспечения] посвящено преимуществам «модульности», но при этом почти ничего не говорится о том, как ее можно достичь.

Вот, об этом то и речь.

Далее пошло теоретизирование и общие слова о модульности «вообще», что, конечно, малоинтересно.

На рис. 9.1,и 23.1, в упомянутой книге, показана «визуализация архитектуры в стиле: «Большой ком грязи», на примере реальной кодовой базы» (посложнее, чем в моем случае, но: «Кто на что учился!»). Это типичная связь: «многие ко многим». Как минимум, её нужно преобразовать к связи: «многие к одному» и «один ко многим». У меня первая версия программы организована также, что и напрягло мои мозги до максимального предела. Именно над упрощением ее архитектурной логики я и работаю.

Что об этом говорит автор статьи? Не увидел ничего, поэтому, «изобретать велосипед» приходится самому.

Теоретически, меня должна была бы заинтересовать глава 14: «Архитектура, управляемая событиями», но, там она представлена на «нижнем» уровне, тогда как уже есть уровень WTL, который скрывает всю «скучную» рутину и дает механизм управления событиями на достаточно высоком уровне, из-за чего я просто обожаю эту библиотеку кода (занимаемую, в исходниках, менее полутора мегабайт!), А подход в книге предлагает мне всю эту нижнеуровневую программную логику реализовывать самому. А оно мне надо? При этом, все «конкретные» примеры оттуда, на самом деле – слишком абстрактные.

Короче говоря, книга интересная, но только для общего развития. Для конкретных задач, вроде моего случая, это мало что даёт.

Тоже самое можно сказать и про статью, она только для «общего развития». Реальной пользы от нее, я ни для себя, ни для других не вижу. До тех пор, пока не появятся внятные, реальные примеры. А они, судя по всему, даже не планируются. Или я не прав? Рад, был бы ошибиться.

Проектирует архитектуру с нуля. Когда компания начинает новый продукт или крупный модуль, архитектор разрабатывает структуру системы: монолит или микросервисы, какие базы данных использовать, как организовать API, какие паттерны применить.

Кто бы сомневался, что будут «микросервисы», а не «модули» иди, другими словами, имеется в виду веб-программирование, а не десктопное.

И, как обычно, без конкретных примеров. Типа: «Ёжики – станьте птицами! – Ура! А как? – Отстаньте, глупые, я не тактик, я стратег!»

Архитектором трудно стать, даже для второй версии собственной программы, вроде опубликованного, здесь, пет-проекта по созданию обучающей программы «L’école». В первой версии, я слегка накосячил:

Структура первой версии обучающей программы «L'école»
Структура первой версии обучающей программы «L'école»

теперь, вот, хочу наваять вторую, более оптимизированную и расширенную версию. Поэтому, пытаюсь примерить на себя роль архитектора для новой версии.

На первое место, в этом случае, выходит роль модулей либо автономных классов в С++. А также организация их в «правильную» иерархию. Затем выбор концепции программы и ее программной логики. Потом, разработка алгоритмов и их техническая реализация. Ну и плюс расширение возможностей программы по сравнению с первой версией.

Оказывается, что даже в этом простейшем случае, с архитектурой не все ясно. Ну, допустим, дадут мне команду из нескольких программистов (Нет, несколько – это мало, пусть их будет в два раза больше!). Какие указания я им должен раздать, чтобы «процесс пошёл»?

Понятно, что задача должна быть максимально «распараллелена», Но, для модульного программирования на С++ нет общепринятой методологии. У меня была здесь статья на эту тему, где я использовал динамические и статические плагины для параллельной разработки, однако, народ её воспринял в штыки. Наверное, если я напишу новую статью об архитектуре второй версии своей программы, реакция будет такой же. Ибо, как я понял, народ привык воспринимать модули на С++, примерно, как пакеты в Питоне. Но, ведь, вторую версию мне писать надо? – Надо! Оригинальность применять надо? – Надо, не надо, но вынужден, ибо другого пути построения своей программы – не вижу. Кстати, при создании первой версии я себе чуть мозги не сломал, пока не добился её более-менее рабочего состояния.

А вы говорите:

Архитектору важно знать:

  • Паттерны GoF (Gang of Four): Singleton, Factory, Observer, Strategy, Decorator и другие.

  • Архитектурные паттерны: MVC, MVVM, Event-Driven, CQRS, Event Sourcing.

  • Стили архитектур: монолит, микросервисы, SOA, serverless – понимать сильные и слабые стороны каждого.

  • Принципы SOLID, DRY, KISS – и уметь объяснить, когда ими можно пренебречь.

Ну. Ну! Далеко я уеду на этих принципах! :)

Сделать разбор на обходы блокировок?

Я вот, допустим, с помощью двадцати строчек кода в собственном расширении для старой версии Хрома, смог реально обходить капчу и загрузить пару сотен тысяч страниц из различных онлайн-словарей. Хотя сам код расширения, я в каком-то из своих комментариев опубликовал, здесь, но, без особых подробностей. Не уверен, что этим кодом смог воспользоваться, даже тот, кто попросил меня о нем.

У вас какое будет аналогичное решение?

В следующей статье хочу углубиться на тему обходов защит и использование уже готовых библиотек.

А реальный пример использования парсинга, мы в какой, по счету, статье получим и получим ли вообще?

Например, в моей статье: «Запоминаем иностранные слова по видео-словарю, упорядоченного по грамматическим категориям и переводам» ( https://habr.com/ru/articles/1021912/ ) продемонстрирован результат загрузки озвученного французско-русского онлайн-словаря, извлечены данные из него и создан видео-словарь для изучения выбранной категории слов, упорядоченных по нашему усмотрению.

При этом код в статье не демонстрировался, хотя, доступен архив проекта по ссылке. Там и дан весь программный код (на Питоне), который можно сразу запустить и посмотреть результат. Ибо читать код в статье – это пустая трата времени, по большом счету. А вот о концепции и программной логике, обычно, говорят мало.

P.S. Впрочем, подобную претензию можно предъявить многим. На сайте опубликованы, к примеру, сотни статей про ИИ и иже с ним, но там описан, в основном, либо процесс, либо новости, либо освоение / изучение, либо какие-то общие рассуждения, в стиле: «А поговорить?».

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

Иначе говоря, разговоров про ИИ на рубль, а реального выхлопа – на копейку.

Я, вот, допустим, использовал бесплатный ИИ для разработки графической обёртки для консольного загрузчика «yt-dlp.exe», чтобы более удобно скачивать любимые видосики из «народного» видеохостинга. Без ИИ-ёв я бы этой программы не наваял. Результат и архив с кодом можно посмотреть в статье: «Минималистский графический интерфейс, на C++ / WTL, для консольного загрузчика» ( https://habr.com/ru/articles/955838/ ).

P.P.S. Ну, почему у народа такая тяга к рассуждениям «вообще»? Или я что-то не понимаю и сильно отстал от жизни? :) Зачем других учить тому, чему только вчера сам научился? Это же будут, как показывает опыт, очередные благоглупости.

Разработчику надо быть хоть немного архитектором, чтобы осознанно выбирать тот или иной подход в реализации решения. Там где объекты уместны, там применение ООП снижает нагрузку и повышает эффективность программиста.

Точно!

Поэтому считаю, что: «объекты и классы – дар Божий». Они очень хорошо позволяют структурировать код, выносить модули в автономные классы. А там, где слегка накосячил в первой версии программы, как у меня:

Структура первой версии обучающей программы «L'école»
Структура первой версии обучающей программы «L'école»

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

Казахстан удивительно прекрасен в этом время года.

Был я в Казахстане, во время студенческой практики (Алма-Ата, Медео, Центральный Алатау, в двадцати километрах от пустыни). Видел много чего и хорошего и не очень. Но, второй раз, как-то не тянет.

Учись учиться

Впервые я услышал нечто подобное у Михаила Шестова, с его: «Научите себя учиться!». Он один из первых, кто сделал свой бизнес в Интернете на базе собственного видео-курса обучения английскому языку.

Стратегии освоения сложных тем

Ну и в чем состоит эта «стратегия», если в двух словах?

Как по мне, стратегия такая: «Сильный внешний отбор и мощная внутренняя мотивация».

Пример. Я легко закончил первый ВУЗ (областной Политех), получил распределение во Всесоюзный НИИ, в областном городе, где имел кучу льгот, как молодой специалист. Но! Уровень полученных знаний меня не удовлетворял, я чувствовал свою «недообразованность» и потолок в карьере. Поэтому, решил поучиться еще раз, в самом престижном, на мой взгляд, ВУЗе страны – на мехмате МГУ.

Отработал положенное время по распределению и поступил на дневное отделение, на первый курс, по специальности «математика», в МГУ. Мне предлагали сразу идти на второй, но я отказался и правильно сделал, иначе, я бы не выжил на мехмате.

Система обучения там была очень жесткая. За неуспеваемость вылетали даже участники Международной математической олимпиады и призеры Всесоюзной. Если в первом ВУЗе, я мог приступать к реальному обучению за неделю до экзаменов и вполне сдавать их «на стипендию», то в МГУ, если расслабился более, чем на две недели в семестр, то считай, что отчислен. А остальное время надо было пахать, пахать и пахать.

К счастью, я выдержал! Хотя кризисов в учебе было достаточно. Из 300-х первокурсников, до пятого курса дошли только 150.

Таким образом, это сразу противоречит нескольким вашим тезисам.

Во-первых, сохранялась «линейность» обучения, т.е., получение новых знаний, непрерывно, в течении всех пяти лет, хотя учиться было чрезвычайно тяжело (были случаи, когда студенты реально сходили с ума и попадали в «Кащенко»). А в Университете была «шутка»: «Почему гравий у стен ГЗ (главного здания) красный? – Это кровь студентов, отчисленных за неуспеваемость!».

Во-вторых, «дать себе отдохнуть» это, по большому счету, не выход! Скорее, это увеличит ваш шанс на вылет. Во время учебы отдыхать, по крупному, нужно только во время студенческих каникул (и то если вы не нахватались задолженностей по зачетам и экзаменам) и в стройотрядах. Ну, или, как я, только ровно две недели в начале каждого семестра и не дня больше!

В третьих: «Научить себя учиться» – вряд ли получиться! Это только красивые слова, не более. Чтобы научиться, нужно просто учиться, вот и всё! Или, как вариант, чтобы выучить иностранный язык – его надо учить. Всё остальное – от лукавого!

Так что, как говорил группенфюрер Мюллер в «Семнадцати мгновениях весны»: «Верить никому нельзя! Мне – можно!!!» :) .

Крутая статья, для введения в тему ИИ! Для молодых и начинающих – самое оно!

У меня только один вопрос. А что будет, когда (не «если», а именно «когда») из-за санкций нам заблокируют доступ к платным интеллектуальным сервисам? Какую именно подушку безопасности выбрать?

меня начали бесить вещи вокруг разработки

Сочувствую! Я, наверное, на уровне подкорки всегда чувствовал, что командная работа – это не моё. Всегда программировал один. Что сильно упростило мне жизнь, а проблемы если и возникали, то не внутри «контор», где я работал, а снаружи. Это и мировые и региональные кризисы и принудительная ликвидация предприятий, и вообще очень странная, иногда, внешняя политика.

В итоге, написал и внедрил программу учета, которая кормила меня двадцать лет и еще столько бы, если бы фирму, где я работал, не ликвидировали бы по политическим мотивам.

Меня бесит безответственность

Я еще в «лихие 90-тые» слышал, что характерная черта русского бизнеса – необязательность. Думал, что с тех пор что-то изменилось. Но, вижу, не слишком.

Код хотя бы можно открыть, прочитать и поправить.

Более того, когда уже пишешь код на уровне пет-проектов, в статусе «свободного художника», то можно получать удовольствие от реализации своих идей, которые могут быть не поняты в команде. Никуда не спешишь, тихонько ваяешь свой «шедевр», ради собственного развития и – счастлив!

В общем, это я к тому, что может быть есть смысл подумать об изменении архитектуры своей жизни?

Думаю как раз тут встает выбор, продолжать учебу со всеми ее трудностями и студенческими плюшками или выбрать другой путь :)

Тут, особого выбора то и нет. Если не можешь учиться с огромными трудностями, то никто и не уговорит делать это. И, наоборот, если есть желание «мучиться», то, тоже, никто не остановит.

Мне в первом ВУЗе (областной Политех), учиться было легко, даже очень. Я это время так и называл – отдых перед жизнью! И что? Несмотря на то, что я получил распределение на работу во Всесоюзный НИИ, в областном городе, где мне стразу предложили встать на бесплатную льготную очередь, на квартиру, как молодом специалисту, я чувствовал свой карьерный потолок, в силу своей «недообразованности». Поэтому, отработал положенное время и поступил на первый курс, на мехмат МНУ, хотя, мне предлагали идти сразу на второй. Что очень правильно сделал! Так как это была не учеба, а НЕЧТО! В итоге, из 300-х первокурсников до пятого добрались только – 150, и это притом, что процент вундеркиндов, на один квадратный метр, там просто зашкаливал.

Зато, какое было удовлетворение, что я смог выдержать все нагрузки (просто потому, что готовился к ним много лет и не позволял себе «расслабляться» более двух недель в семестр, особенно на фоне первого ВУЗа). Примерно, как в анекдоте: «Аристократ, выглядывает в окно, видит – туман. Сегодня – смог, говорит он. Поздравляю, сэр! Отвечает дворецкий.».

Вот ради этого «смога» и стоит учиться! :) .

Учиться больно! Если это не так, то скорее всего результата не будет.

Неправда! Больно – не учиться!

Вы не поверите, но у меня два дневных полных высших образования, в т.ч. мехмат МГУ. Учиться на последнем было чрезвычайно тяжело, были реальные случаи, когда у сокурсников реально «ехала крыша», а за неуспеваемость вылетали даже участники международной математической олимпиады.

Однако, удовлетворение от учебы, от общения с вундеркиндами и «вундеркиндшами» было, на порядок, сильнее. Затраченные усилия – явно стоили того! А жить пять лет в столице, с её возможностями, это, вообще, супер!

По крайней мере, вся моя жизненная архитектура – сформирована в МГУ!

Все остальные ваши выводы, это из области «Капитан очевидность».

Гегель нужен не вместо современной науки, а вместе с ней.

Интересно, а Маркс нам нужен «вместе с ней»? А Энгельс? А «дедушка» Ленин? Кстати, последний писал, что:

Маркс не остановился на материализме XVIII века, а двинул философию вперёд. Он обогатил её приобретениями немецкой классической философии, особенно системы Гегеля, которая в свою очередь привела к материализму Фейербаха.

Или нам, во всё этом конгломерате нужен только Гегель?

Писать свой “гит” потому, что тот “избыточен”?

Не уверен, что вы поняли меня. Я не собираюсь писать Гит, как некий программный продукт, от слова «совсем». Все гораздо проще. Я использую методологию итерационно-модульного программирования, который мне вполне заменяет Гит, как таковой. Проблема возникла из-за дискуссий, здесь, что мол, программирую я «неправильно», а надо явно применять Гит для разработки. Я отвечаю, но, я же – один, «во всех лицах». Ничего, отвечают мне, ты не понимаешь своего счастья, Гит – очень нужен всем, в том числе, индивидуалам. Пришлось даже посмотреть пару роликов на Ютубе, чтобы узнать, что это за зверь такой, что от него все без ума. Посмотрел, представление получил, заодно, понял, что он мне действительно, не сильно нужен.

Остался, правда, один момент, связанный с проблемой сильных связей в моем проекте. Но, Гит, здесь, принципиально, ничем помочь не может, только фиксировать текущие изменения и откатываться в любую «точку» назад. Но, это я могу и без него делать, под полным своим контролем.

Что касается главного возражения, что в командной работе без Гита – никуда, то и здесь я хочу провести эксперимент, имитируя разработку, с нуля, второй версии моей программы.

Таким образом, это не создание новой системы контроля версий, а попытка эмулировать командную работу без Гита, вообще. Получится или нет – не знаю. Моя личная заинтересованность в этом проекте, это декомпозиция сильных связей, которую вы предлагаете делать вместе с ИИ. Как это делать с помощью «Искусственного Идиота», я, откровенно говоря, не знаю. Хороших статей на эту тему – нет. А те, которые демонстрируют хоть какой-то практический результат, мне мало, что дают.

Поэтому, продолжаю работать над своими проектами, попутно почитывая, что на эту тему пишут на «Хабре». Если появится что-то интересное – постараюсь вникнуть.

Для начала, хотел бы уточнить: не пытаюсь никого убеждать пользоваться ИИ, но мне интересна мотивация тех, кто отказывается.

Разве я отказываюсь? Возникает потребность – пользуюсь и даже получаю нужный мне результат. Более того, для меня интеллектуальные сервисы – это уже Интернет-2.0. Но, в концептуальных вопросах, где возникает сильная зона неопределенности, ИИ мне мало чем может помочь. Не буду спорить, может быть это мои личные проблемы, но я еще не видел ни одной статьи, где народ использовал бы ИИ для решения своих собственных концептуальных задач. Обычно, ограничиваются общими словами.

Ну и с этой конкретной задачей не всё понятно.

Согласен! Поэтому, готовлю статьи с подробными объяснениями.

А зачем? If it ain’t broken, don’t fix it.

Ну, если так рассуждать, что зачем вообще было писать эту программу? Отчасти, конечно, чтобы выучить иностранный язык по собственной методе. Однако дешевле было бы просто штудировать учебники и смотреть обучающее видео. Меньше сил, в итоге, потратил бы. Скорее, это уже некая древнефилософская парадигма: «Цель – ничто! Путь движения к Цели – это всё!». Есть потребность подобного «движения», вот и двигаюсь.

А так, после первой версии, остались ментальные проблемы, которые хотелось бы разрешить.

Это называется интерфейсы. Их структура может быть частью задания для ИИ, или он может сам её сгенерить на одном из этапов из текстового описания.

Про подобные интерфейсы у меня есть статья здесь: «Модульное программирование в C++. Статические и динамические плагины» в https://habr.com/ru/articles/566864/ . Но, сейчас, будет реализация другого варианта «модульного программирования» на С++. Подобных «интерфейсов» я нигде не встречал, а у ИИ, мне, по большому счету, спрашивать нечего. Просто, закончу текущий проект, с онлайн-словарем, и приступлю к модульному программированию. Если возникнут технические «ноу-хау» – спрошу, но, пока, в принципе, мне понятно, что делать.

Я чего-то не понял? Вроде речь о пет-проекте, делающемся в одно лицо, откуда команда?

Я где-то упоминал, выше, что речь идет об имитации командной работы без использования Гита. Просто, меня очень удивили настойчивые попытки народа доказать, что Гит мне нужен, даже, если я программирую один. Поэтому, попробую эмулировать Гит, в той мене, в какой он может быть мне полезен. Если не получится, попробую тогда использовать классический Гит, Короче – обычные творческие эксперименты, в области программирования.

Но если речь об ИИ, то в принципе запуск нескольких агентов, каждый из которых реализует свою часть кода под управлением агента-координатора ‒ вполне обычная практика.

Нет, для меня это, пока, лишнее! «Слона», то бишь, ИИ будем переваривать маленькими кусочками.

Так “разделить связи” ‒ это по сути новая архитектура и есть. И вполне можно подключить ИИ именно для проработки этой новой архитектуры

Как говорится: «Лучше один раз потрогать, чем сто раз увидеть!». На «Хабре» масса статей про ИИ, но интересы, у народа, немного отличаются от моих, поэтому, мы и не понимаем друг друга.

почему логично использовать библиотеку, работающую не так, как нужно

Ну, любые утверждения относительны. Если применять упомянутую функцию для «красивого» представления html-страниц, то использование пробела, вместо табулятора, вполне оправдано, особенно для слишком широких «деревьев». Что касается лидирующих пробелов в текстовых значениях («листьях» «дерева»), то это проблема html-данных, а не указанной функции. Другое дело, что ее могли бы сделать более настраиваемой, в своих параметрах, но, это не слишком большая проблема. Моя собственная, независимая от библиотек, функция «DoTabPrettify(HtmlText)», вполне умещается в экран монитора и решает все мои проблемы.

Ох… а это-то зачем?

Классический Гит – явно избыточен для моих целей. Да и собственные каталоги с проектами я привык контролировать самостоятельно. Однако тема командной работы, точнее ее имитация, мне, более-менее, интересна. Вот спросил самого себя, смог бы я, допустим, как «архитектор» дать ТЗ «команде» программистов, чтобы они быстро наваяли мне вторую версию программы? Заодно проверю, может ли «девять девушек родить за месяц одного ребенка, вместо одной роженицы – за девять месяцев?» :) .

А разве кто-то отменял итеративную разработку в случае использования ИИ? Строго наоборот ‒ он крайне облегчает проверку гипотез.

На самом деле, проблема не в «проверке гипотез». Есть готовый проект, в виде первой версии. Я его хочу полностью переделать. Например, разделить роли. Есть «архитектор», который дает шаблон проекта (набор классов публичных функций, с пустыми телами). Есть главный класс приложения, в котором определены обработчики событий, вызывающие методы (с пустыми телами) используемых классов. Программа компилируется, но ничего не делает. «Архитектор» программы говорит членам команды программистов, кому какой класс реализовывать (т.е., пустые тела публичных функций заменять реальным содержимым, при этом программист может, по своему усмотрению, добавлять приватные данные и функции в «свой» класс), У всех членов команды, первоначально, одинаковый шаблон, с которым они работают локально. Подключение либо отключение модуля к проекту это, просто, замена, формальной реализации, реальной либо наоборот (т.е., по сути, обычная подмена файлов). Член команды реализовал свой класс, соответственно, выслал его модули архитектору (можно удалено). Архитектор замещает свои формальные реализации реальными и делает предварительное тестирование. При необходимости, раздает новые «ценные указания» команде. Одобренные им модули становятся доступными всем членам команды. Мы можем использовать чужие модули, но не менять их, только предъявлять устные претензии.

Чтобы подключить ИИ для этой задачи, нужно, первоначально, определиться с архитектурой программы. Поскольку, первая версия у меня уже реализована, то архитектура ее будущей второй версии, мне, примерно, ясна. Задача, только разделить связи. Ибо главная проблема в первой версии – это сильные связи (в отношении многие ко многим), из-за чего я себе чуть мозги не сломал, пока не получил более-менее рабочий вариант. Как я уже говорил, дополнительная цель – обойтись собственным аналогом Гита.

Работа с декомпозицией сильных связей, это не «проверка гипотез», и мне для этого ИИ, просто, не нужен, скорее, он будет даже мешать. Эту работу я, фактически, делаю в фоновом режиме, попутно занимаясь другими задачами. А когда ИИ реально понадобиться, чтобы узнать, как именно сделать, то, сё, пятое, десятое, тогда я им и воспользуюсь.

Ой. XPath взять не судьба? Как один из вариантов.

Фактически, здесь важны не инструменты, а целеполагание. А последнее сильно связано с имеющейся структурой исходных данных. Но, чтобы ее понять, логично начать с использования функции BeautifulSoup.prettify() из BS4. Однако, реализована она плохо (один пробел вместо табулятора плюс, начальные пробелы в текстовых данных вносят искажения). Общение с ИИ, на эту тему, проблемы не решило. Сервис начал советовать использовать не существующие версии BS4, либо делать модификацию полученного результата путем замены пробелов на табуляторы или, там, применять перегрузку данных во внешний файл и прочие бестолковые идеи. На Гитхабе подобные задачи тоже решались не слишком красиво. Короче, написал, независимо, свой вариант и он мне понравился. Аналогичные проблемы были и с другими библиотечными функциями Питона, при этом, мои собственные варианты оказали и проще и удобнее для использования. Вот пример, конечного результата для французских глаголов.

Пример представления французских глаголов.
Пример представления французских глаголов.

Вот тут как раз и есть та точка, где начинается проектирование. Декомпозиция, куда без нее.

Если я правильно понял, то вы предпочитаете веб-проектирование или программирование. Я в нем не разбираюсь от слова «совсем», хотя у меня есть проекты с бесплатными сайтами, которые еще ждут своего наполнения контентом и я даже пытаюсь пользоваться там серверными скриптами, на тех хостингах, которые это позволяют. Однако, главная цель там простая, эти сайты - всего лишь контейнера для моих проектов, чтобы можно было одной ссылкой «объяснить» всё. Поэтому лишних «художеств» и эффектов – избегаю.

Что касается «проектирования» и «декомпозиции». Теоретически, всё просто. Тем не менее, практически возникает много вопросов. Например, у меня опубликована, здесь первая версия обучающей (иностранным языкам) программы. Теперь, вот, созрел на создание, с нуля, ее второй версии. Задачи, которые я перед собой ставлю – это имитация командной работы (из-за дискуссий – нужен ли Гит индивидуальным разработчикам?) и модульного программирования на С++, с легким фреймворком.

Структуру проекта я вынашиваю до сих пор. Что-то уже понятно, что-то еще только созревает. Ну как я могу дать техзадание ИИ, если я еще сам до конца не определился, что именно я хочу? Там, где мне было все понятно, например, в проекте создания графической обёртки для консольного загрузчика любимых видосиков из «народного» видеохостинга, там, мне (бесплатный) ИИ очень помог. Заодно продемонстрировал народу (в дискуссии, можно или нет сделать «тёмную тему» на C++ / WTL?), что «темная тема» вполне реализуема стандартными средствами. В итоге, программа создана и опубликована, и без ИИ я бы её не осилил. Однако, по второй версии своей обучающей программы я этого сказать, пока, не могу.

Или еще один достаточно простой случай. Вот, загрузил я все страницы французско-русского оглайн-словаря, вместе с файлами озвучки. Встала задача – выгрузить данные всех словарных статей из html-страниц в некий конечный формат. Вопрос на «засыпку». Каким он должен быть? И как, лучше, это сделать? Да, есть BS4 в Питоне и прочие библиотеки, но, реально, от них толку мало. В принципе, сам текст получить не сложно, хотя бы тупым копированием содержимого html-страницы, в буфер обмена, в соответствующем просмотрщике либо браузере. Но, это будет «голый» текст, а мне надо, в какой-то мере, сохранять его структуру.

Далее, ладно, вытащу я нужные данные, а в каком виде мне их отображать для целей освоения? Тут уже возникает масса вариантов, какой, либо какие мне нужно предпочесть? У меня есть некоторые мысли по этому поводу и я экспериментирую с данными и эффектом их воздействия на меня. Но, для конечного запроса ИИ-сервису я, пока, не готов. Ибо мой ИКР («Идеальный Конечный Результат») развивается вместе с развитием моего проекта. Иначе говоря, идеальный промпт должен иметь не статическую а динамическую природу и, заранее, как правило, не вполне определен, только, постепенно «вызревает» в процессе работы над проектом.

Information

Rating
1,860-th
Registered
Activity