Pull to refresh

Comments 71

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

Это важно для нас, а не для них.

Так я сам всегда "Thanks" пишу, что уж :)

Это ничего! Если учесть, по Задорнову, что общаемся с немногословными чайниками (не GPT): "Иду, иду!"

как будто ИИ ищет логическое построение для решения проблемы!

Тут интересно именно то, что задачку невозможно было решить просто по аналогии. Мне не удалось найти в сети примеры исходников, где по скан-коду клавиши получают код символа в раскладке, которая может быть даже не установлена в системе (и я думаю, если бы такие примеры гуглились, то баги в wxWidgets закрыли бы давным-давно). То есть нельзя просто сделать «как у тех парней», надо осознать, что именно я хочу, и как этого достичь. Я не знаю, имеем ли мы дело с осознанием или очень правдоподобной имитацией, но у неё в итоге получилось.

да, тоже такое замечал, ИИ поимает тебя лучше тебя самого и помогает сформулировать запрос и потом на него отвечаает. И еще помогает погрузиться в незнакомую область - ИИ понимает о чем ты спашиваешь, хотя, так как ты новичок, то спецальных терминов не знаешь и потому загуглит не можешь. ИИ "угадав" тематку подсказывает правильные специальные термины и их уже можно и википедии посмотреть. В моем случае по биохимии.

Ещё его можно спрашивать, чем он может помочь в такой-то работе и решении такой-то задачи.

ChatGPT имеет способность логически мыслить, 3.5 версия уже строила логические цепочки. Правда не 100% корректные, но с подсказкой исправлялась. 4 версия наверное более продвинута в логике чем предыдущая, не пробовал. Задавая дополнительные вопросы можно было убедиться, что ChatGPT имеет внутреннее представление задачи или вопроса, с которым он работает. Как правило, те, кто пишет что ИИ не имеет логического мышления или просто копирует то что видел ранее - сами его не использовали.

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

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

Всё, что мы можем, это давать ИИ разные задачки, и смотреть, решает ли он их лучше или хуже людей. Мою вот он решил примерно на том же уровне, на котором бы её решил помощник-джун при постановке задачи «поройся в манах на X11 API, и накидай пример, как получить символ по сканкоду в латинский раскладке, если она даже не установлена», если бы у этого джуна не было возможности самому проверить результат своего труда на реальном компиляторе и приходилось бы через меня это делать.

Если же нас интересует степень абстрактности мышления, на которую способна конкретно ChatGPT 4, то вот вам пример. Я попросил её написать код на языке Си, который бы рисовал кота. Код запустился с первой попытки, картинка получилась такая

Тогда я попросил нарисовать слона. Вышло вот что

Тогда я попросил нарисовать кусочек сыра. Вот результат:

А кота на html/css она рисует так:

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

Тогда я спросил «А откуда у тебя знания о композиции и геометрии таких объектов как кот, слон или кусочек сыра?». Ответ: «В ходе обучения я обрабатывал множество текстов, которые содержат описания внешнего вида животных, включая котов. Эти тексты могут содержать описания особенностей анатомии кота, расположения его частей тела, их пропорций и соотношений. Хотя я не могу "видеть" изображения, мои знания об особенностях кота основаны на информации, которую я "прочитал" в текстах».

В завершение этого очень философского треда не могу не вспомнить бессмертное:

Я попросил её написать код на языке Си, который бы рисовал кота.

Рад, что Вы не попросили её написать код, который запустит ядерные ракеты.

Почему-то все это художество напоминает мне детские каляки-маляки) Видимо потому что все построено на ассоциациях, на что и способна эта архитектура (трансформер). Несмотря на ее ответ это все же компиляция обучающего материала, а не логическое мышление, и обобщение в том виде, как это понимается для человека. Пока это не позволяет архитектура сети на которой работает эта технология. Как минимум она должна быть иерархической рекуррентной архитектурой. В сети до черта таких примеров, напр, стоит запустить поиск "программа рисования кота с помощью функции lineto". Первая в выдаче, не говорю уже о ресурсах за пределами рунета.

Не, примеры не катят, потому что тогда нужны были бы примеры рисования кота, слона и сыра в одном стиле. Она честно сама рисовала. Хотя, возможно, такие примеры как-то использовала тоже.

Человеческое мышление — тоже не более чем компиляция обучающего материала, вот в чём загвоздка :)

Да, конечно, но устройство человеческого мышления весьма сложно, здесь подробнее. Многие базовые способности носят врожденный характер. Ассоциативное мышление это верхний уровень быстрого, автоматического мышления (Системы 1), которую ЯМ и пытаются моделировать. Логическое мышление это другой уровень — Система 2. Вот здесь можно почитать, как это использовать для ЯМ, чтобы уменьшить фантазирование которым они часто страдают)

А есть непреодолимые препятствия в архитектуре ЯМ, которые мешают "аппроксимировать" функции логического мышления? Просто ЯМ показывают такие навыки иногда довольно успешно. И я бы не сказал что эта способность в них поломана а скорее зашумлена. Т.е. новые итерации GPT будут уменьшать шум и повышать уровень усвоенных абстракций. Если примитивно как я это понимаю, ЯМ апроксимируют (восстанавливают) исходную функцию из потока данных, который сгенерирован ей. В текстах исходная функция в основном это мыслительный процесс человека, разбитый на уровни абстракций по сложности апроксимации. Самые простые были усвоены в старых версиях ЯМ. 3-4 довольно успешно демонстритуют навыки логического мышления. Это подтверждают и тесты на поступление в ВУЗы, которыми тестируют последние ЯМ. У 4 версии неплохой прирост правильных ответов. Полагаю в этих тестах (которые придумывают для людей, кстати) и проверяются все те навыки высоуровневых навыков мышления, которые присущи людям.

А есть непреодолимые препятствия в архитектуре ЯМ, которые мешают "аппроксимировать" функции логического мышления?

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


Если подробнее..

Если подробнее, то архитектура ЯМ сейчас реализована на прямых сетях трансформера. В этом кроется их принципиальное ограничение в сравнении с сетями мозга, которые являются иерархически организованными рекуррентными сетями, если исходить из терминологии ИНС. Хотя в действительности они еще сложнее, но в первом приближении можно представить так. Как это сказывается на практике обобщения? Можно посмотреть на примере работы с числами и операций с ними, который позволяет произвести достаточно точную оценку этих различий. Для ЯМ с ростом числа параметров модели и объема обучающей выборки, особенно если она содержит математический контент, происходит частичная аппроксимация результатов операций с числами. При этом растет, как процент правильных ответов, так и число приближенно точных ответов. Но что такое приближенный ответ для математики? Чем менее он приближенный, тем более он не правильный, не имеющий смысла. Вот пример, который так и не смог осилить чат, сколько пользователь не пытался помочь — не одного правильного ответа. Глобальной аппроксимации для всех чисел и операций с ними эквивалентному обобщению, как это делает человек, в этой архитектуре достичь не возможно, т.к. их бесконечное количество! Человек же в норме делает такое обобщение, после обучения на конечном числе примеров, именно благодаря рекуррентности сетей мозга, т.к. операции с числами требуют повторения действий. Вспомните, как мы делаем вычисления столбиком на бумаге. Этот навык, который вырабатывается при обучении, закрепляется в процедурной памяти, в отличии от ассоциативной в которой может храниться, напр, таблица сложения или умножения, или отдельные примеры операций. В мозге эти типы памяти разнесены по разным отделам. В сетях трансформера моделируется именно память ассоциативного типа, аналог процедурной отсутствует.


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

Как я понимаю эту сторону проблемы, ЯМ однопроходные и им для улучшения качества надо наращивать глубину, когда для реккурентных этого не требуется в виду переиспользования и зацикливания узлов. Возможен вариант, когда при достаточном увеличении глубины они будут так же хороши как и рекуррентные биологические сети. Потому что количество итераций даже для самых сложных вычислительных задач конечно (за редким исключением). Рекуррентность в ЯМ как мне кажется достигается за счет того, что сгенерированные токены подаются ей же на вход для новой генерации. Для примера возьмем вычисление числа ПИ. Человек будет вычислять цифру за цифрой и так до бесконечности. ЯМ будет делать то же самое, каждая добавленная цифра будет учтена на каждой генерации токена и так тоже можно продолжать до бесконечности, если не учитывать лимит контекста (у человека тоже память контекста очень ограничена). Если ЯМ давать задание думать над решением задачи итеративно, то качество ответов резко повышается, как раз по тем же причинам наличия рекуррентности в итеративном подходе. ЯМ упрекают, что она не даст точного ответа сразу для сложных задач математики, ну и человек тоже не даст. Просто ЯМ это не калькулятор, у калькулятора кстати вычисления не моментальные а инкрементные, заданные алгоритмом.

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

Именно так, хорошо сформулировали.


Возможен вариант, когда при достаточном увеличении глубины они будут так же хороши как и рекуррентные биологические сети.

При этом возможен сильный рост разных проблем. В биологических сетях работает обученная подсеть, она на другом уровне, чем непосредственное решение примеров при обучении. В ЯМ каждый раз запускается вся сеть, и она должна сильно расти с увеличением требований к точности ответов. Это может вести к накоплению ошибок вычислений, и возрастанию потребления энергии, как при ответах, так и особенно, при обучении. Это известные проблемы современных реализаций ИНС по энергопотреблению 1, 2, по накоплению ошибок, хотя есть и др. мнения. При массовом внедрении это скажется, не зря все основные производители железа работают над биологически более правдопобными решениями в виде нейромофных процессоров, см. обзор. Там есть и др. преимущества, включая рекуррентность, асинхронность, импульсный режим. Но пока это на стадии разработок и тестирования, хотя есть и коммерческие предложения. В перспективе встроенные системы скорее всего будут реализовываться с помощью таких решений, а большие ЯМ останутся облачными, произойдет разделение ниш.


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

Вот тут еще одна проблема в виде механизма семплирования. Происходит случайный выбор след. токена в соответствии с установками. Для логических и математических операций это плохо, т.к. требуется точность и повторяемось, для творческих, типа написания стихов и эссе, хорошо. У человека в норме такого нет, "генерация" исключительно контекстная) не только речи, но и принятия решений, см. этот комент с пояснениями. В ЯМ контекст также играет роль, но семплирование может пакостить конечный результат. Не исключено, что от этого механизма скорее всего откажутся, и сделают исключительно контекстным.


В этой статье уже рассматривается архитектура, которая увеличивает контекст и улучшает работу с ним, хотя до эффективной рекуррентности еще далеко.

Правда, всё ещё отдаёт символы в текущей раскладке клавиатуры. Но уже видно, как это исправить. Меняем

То есть автор в конце концов поменял код сам (решив тем самым проблему) — но почему-то благодарит всё равно нейросеть (которая в данном случае выполнила роли комбинации гугля с резиновым утёнком).

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

Ну вот и я про то же. Вдумчивым курением манов проблему можно было решить и самому. Вангую, что автор — один их тех, ктого капля никотина чтение более трёх минут подряд убивает (а "Война и мир" разрывает на куски).

Диагноз по аватарке поставлен абсолютно верно! Я весёлый шалопай, опенсорс программирую для удовольствия, а вовсе не для того, чтобы воспитывать в себе усидчивость. И мне совсем не интересно часами читать маны по технологии, которая мне понадобится единственный раз в жизни. Если бы у меня был живой человек-помощник, я бы попросил это сделать его :)

К счастью, нейронка стоит гораздо дешевле живого человека-помощника.

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

Это, конечно, очень интересный подход к разработке. Вот кстати например в вашем PR для wxWidgets вы вызываете isalpha() для key code из wxKeyEvent но ведь этот key code может не укладываться в unsigned char - например, клавиша "стрелка вверх" (WXK_UP) имеет, если не ошибаюсь, код 316. Вам не кажется, что у вас тут возможен UB?

У isalpha() параметр int, а не unsigned char. Ещё был код ревью перед мержем. И ещё в таком взрослом проекте как wx имеются автоматизированные тесты, для прохождения которых код пришлось несколько раз дорабатывать.

И, кстати, в open source разработке есть только два подхода — либо мой, когда just for fun, либо когда зарплату какая-нибудь корпорация платит. Если хотите предложить мне финансирование, можем обсудить условия :)

Сразу видна привычка не читать документацию до конца. Секцию NOTES по вашей ссылке прочитайте. Если параметр не EOF и не укладывается в unsigned char, то это undefined behavior. Он далеко не всегда может быть пойман тестами. А плохой код - всегда плохой код, just for fun ли он или за бабло.

Что вы, какое там читать до конца! Я эту документацию даже не начинал читать до текущего момента :) Более того, C/C++ не входят в число моих основных языков, в чём я честно признаюсь публично. Плохой код? Наверняка! Весьма вероятно, он даже ужасный!

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

Я решал свою персональную проблему (и в процессе получал удовольствие ещё), и решил её. А заниматься тщатильным вычитыванием доков и полировкой кода до идеального состояния, когда у меня и так всё работает, да ещё и бесплатно, мне ни с какой стороны не интересно. Если вам интересна эта игра в идеальный код, или у вас что-то сломается, или если кто-то вам оплатит потраченное время — киньте PR чувакам из wx, дело хорошее. Есть люди, которых прёт такая шлифовка, у нас в far2l тоже есть такой человек, много полезных коммитов сделал в своё время. Но вот с фактом, что такая работа интересна далеко не всем, придётся смириться и как-то дальше жить :)

в open source комьюнити никто никому ничего не должен!

... например, принимать Ваш патч.

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

Что-то ужасно знакомое...

Аххаха, ну пожалуйтесь мэйнтейнерам, что они неправильные патчи принимают :)

пожалуйтесь мэйнтейнерам, что они неправильные патчи принимают

Мне кажется, что они и сами хабр читают.

То есть даже issue написать вам лень, а на человека, который что-то куда-то коммитит, напрыгивать не лень. Ну дела :)

Мне-то, кстати, как раз issue написать не лень. Пусть будет.

Однако за саму наводку — спасибо! Буду знать. Мне после веба с его типичными языками, конечно, очень непривычно, что можно сделать функцию стандартной библиотеки, принимающую int, с которым она при этом работать не в состоянии (проверил у себя: на INT_MIN вообще сегфолтится!), и прописать эту особенность где-то в самом конце её описания, как какую-то малозначимую деталь, чтоб дочитали только самые настойчивые. Это очевидная ловушка, и, конечно, сейчас, когда трудочасы разработчиков стоят куда дороже мегагерцев, никто так уже не делает.

Однако когда имеешь дело с кодом на сях, о таких ловшуках и правда лучше бы помнить. В моём случае ни на что не влияет (проверил ещё раз, нет у wx таких кодов, на которых под glibc оно врало бы), а в каких-то других вполне могло бы.

intтам принимается только ради EOF, так исторически сложилось. Можно сколько угодно жаловаться, что в документации там якобы слова идут не в том порядке, который вы ожидали, но факт остаётся фактом: шалопайский подход, исправляя один баг, как правило, вносит вместо него другой (а то и несколько). Стоит ли нарочито бравировать этим подходом, прикрываясь тезисом "в опен сорсе никто никому ничего не должен", или все-таки лучше двигаться в направлении развития усидчивости и внимательности (а это окупается в любых более или менее сложных задачах, включая и веб) - каждый, безусловно, решает для себя сам.

Между двумя деревнями, Вилла Арриба и Вилла Бахо, шла лесная тропинка. В самой чаще леса тропинку пересекал ручей, который все издревле переходили вброд.

Однажды дон Хуан из Вилла Арриба взял топор, пошёл в лес, срубил там два дерева, и перекинул их стволы через ручей. Получился простенький мостик. Жители обеих деревень очень обрадовались и благодарили дона Хуана.

А потом в Вилла Бахо приехал дон Мигель, знаменитый строитель мостов. Как-то раз отправился дон Мигель в Вилла Арриба за молоком, и увидел перекинутые через ручей брёвна.

— Так дела не делаются! — возмутился дон Мигель, — как же можно строить мост, не рассчитав сперва его прочность? Где же все уравнения? А вдруг он рухнет, если по нему поедет самосвал?

Пришел дон Мигель в Вилла Арриба, увидел дона Хуана и давай его хулить: плохой из тебя, дон Хуан, строитель мостов! Куда тебе до того, поди лучше книжку по сопромату почитай!

Рассмеялся дон Хуан, и ответил: умный ты человек, дон Мигель, жаль только, ум тебе не впрок. Тут и остальные жители Вилла Арриба смеяться начали, а молочница дону Мигелю потом скисшего молока продала.

а молочница дону Мигелю потом скисшего молока продала.

Деревня партачей.

А потом в один прекрасный молочница пошла по этому, прости господи, мосту с юным сыном. Как дошли они до середины — мост обломился (ибо что дон Хуан не заморочился поинтересоваться, что одно из сваленных им деревьев было подточено древоточцем и начало гнить изнутри, а постоянная близость с водой гниение это ускорило), и оба рухнули в поток. Сын молочницы, слава богу, кое-как выплыл, а вот молочница — нет. Дон Хуан кричал "у нас open source комьюнити никто никому ничего не должен!", но его всё равно прогнали из деревни ссаными тряпками. А сына молочницы отправили учиться в университет и завещали до конца жизни почитать заветы великих Гука и Эйлера, да светится имя их отныне и во веки веков, аминь.

Сын молочницы, слава богу, кое-как выплыл, а вот молочница — нет.

Сын кое-как выплыл из ручья, "который все издревле переходили вброд"? Уверен, что молочница не смогла выплыть только потому, что она и не пыталась, она просто встала на ноги и пошла дальше.

Иллюстрация того, что требования надо читать внимательнее :)

Сын кое-как выплыл из ручья, "который все издревле переходили вброд"?

Горные реки — они, сцуко, внезапные

Иллюстрация того, что требования надо читать внимательнее :)

Иллюстрация того, что нужно кругозор развивать.

Очевидно, автор статьи не рос на советских мультиках

...которые достаточно ясно демонстрируют, что бывает и instant karma.

и прописать эту особенность где-то в самом конце её описания

На самом деле, описание прямо с этого начинается:


These functions check whether c, which must have the value of an unsigned char or EOF

А то, что такое в принципе существует, так это проблема слабой системы типов в C в сочетании со стремлением к максимальной производительности. Описать аргумент как unsigned char | EOF язык, к сожалению, не позволяет.

Там дальше написано, к чему конкретно это относится:

"This is necessary because char may be the equivalent of signed char, in which case a byte where the top bit is set would be sign extended when converting to int, yielding a value that is outside the range of unsigned char."

И конечно же там нет ничего, про UB, и я слабо представляю как ее в принципе можно посадить в этом коде.

Там дальше написано, к чему конкретно это относится:

Это разъяснение на бытовом уровне, для любителей передавать туда char- что является наиболее типичной ошибкой. Но если туда передают int, значение которого выходит за рамки EOF +unsigned char, то это тоже ошибка, просто не такая типичная.

И конечно же там нет ничего, про UB, и я слабо представляю как ее в принципе можно посадить в этом коде.

А я представляю. Но пусть это будет упражнением на развитие фантазии.

У меня не хватает фантазии, что бы представит, как сравнение int с char может, чтото поломать впринципе. Это абсолютно коректная и определенная операция.

Ну ОК.

P.S. Ладно, черт с вами. Вы, я думаю, в курсе того, что isalpha() способен в зависимости от локали распознавать (или не распознавать) как буквы дополнительные символы, выходящие за рамки A-Z+a-z? Так вот, это вполне может быть реализовано загрузкой соответствующих таблиц и выполнением операции типа charset[char]. При этом реализация libc не обязана проверять, не выходит ли значение char за рамки этой таблицы. Вот вам и UB.

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

Поэтому я бы советовал автору кода поменять вот это:

if ( event.ControlDown() && isalpha(event.m_keyCode) )

на

if ( event.ControlDown() && event.m_keyCode <= 0xFF && event. isalpha(event.m_keyCode) )

либо мой, когда just for fun

Скажите, пожалуйста — в Вы вообще ну хоть какую-нибудь ответственность чувствуете — от того, что доработанным Вами продуктом вообще-то люди будут пользоваться? У Вас не будет ни малейших сожалений от того, что условный дядя Вася переносил произведённым Вами продуктом трёхгигабайтный файл — а скопировался только гигабайт, из-за арифметического переполнения, и он мысленно шлёт Вам животворящие лучи поноса — в всё потому, что кто-то разрабатывал "just for fun", а вот дядя Вася далеко не "just for fun" использовал.

Я вот тоже just for fun опенсорсную библиотеку поддерживаю, которой сотни людей пользуются — но до такого подхода я не опускаюсь.

Не испытываю ни малейшей! Вы тексты лицензий BSD и GPL читали когда-нибудь? Там в обоих отказ от любых гарантий. И в лицензии wx тоже об этом прямо написано.

Если я написал какой-то код и подарил его вселенной, я не становлюсь должником вселенной по этому поводу. Мне указали на баг? Славно. Захотел — починил. Не захотел — забил. Кому-то не нравится? Форкни и развивай как знаешь.

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

Кому-то не нравится? Форкни и развивай как знаешь.

Так что ж Вы не форкнули?

А мне-то зачем что-то форкать? Меня всё устраивает.

Вы тексты лицензий BSD и GPL читали когда-нибудь? Там в обоих отказ от любых гарантий.

Разве в "коммерческих" лицензиях не так?..

Я весёлый шалопай, опенсорс программирую для удовольствия

Эмммм..... а мне так хотелось надеяться, что FAR всё-таки разрабатывают не весёлые шалопаи...

Да, оригинальный Far Manager как раз развивает человек, который хочет всё делать идеально. И он пилит свой идеальный Far в вакууме, который когда-нибудь точно станет кроссплатформенным. Через год. Или два. Или пятнадцать. Кто знает? В общем, вам туда, к нему. В очередь ожидания. Зато не весёлые шалопаи :)

А что, Вы куда-то спешите? Не волнуйтесь, в могилу мы все успеем!

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

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

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

Открою секрет: это называется "учёба" (или "обучение").

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

Проще спросить или подглядеть у кого-нибудь.

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

не учёл автор некоторые нюансы или пограничные случаи, бывает

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

Раз GPT такой умный, компилировал бы да проверял сам)

Это прям самая часто запрашиваемая фича у них. Делают, насколько я понимаю. Сделают — расскажу и покажу, как работает.

Добрый день! Пара вопросов: 1. Планируется ли порт far2l под OpenBSD? 2. Существует ли вменяемое howto для написания плагинов к Far Manager на русском? Заранее благодарю. :)

  1. Кто-то в чате пробовал собирать, я спросил. 2. Пока нет, но есть пример портирования с Windows простенького плагина, там 6 несложных коммитов всего с необходимыми изменениями, можно изучить. Плюс можно в чате, опять же, консультироваться. Плюс можно форк с Lua использовать и писать плагины на Lua, там есть кое-какая документация, опять же, это в чате обсуждалось.

Sign up to leave a comment.

Articles