LINUX.ORG.RU
Ответ на: комментарий от anonymous_sama

Да можно же и просто словами уточнить про сокращение. Но надо понимать что делаешь. Какие инструменты использовать, почему код не тот, какие лучше использовать и какие команды давать.

Новичок этого не знает и не понимает. Он просто возьмет такой код и все.

LightDiver ★★★★★
()
Последнее исправление: LightDiver (всего исправлений: 1)
Ответ на: комментарий от LightDiver

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

А я чё-то уже напрягся, думаю или на работу идти, или уже не мучать кролика и искать домик на солнечных батареях в середине Псковской области. Всё-таки на работу?

VIT ★★★
()
Ответ на: комментарий от VIT

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

anonymous_sama ★★★★★
()
Ответ на: комментарий от VIT

Это квен 3.8 макс. Без агентов, просто чатик. Из бесплатных самый разумный на данный момент. Хоть и очень медленный.

Сначала был запрос на добавление нового бонуса. его он выполнил идеально. А вторым - собрать все бонусы в одной функции. И результат так себе.

Нет, результат абсолютно рабочий. Пользоваться можно без изменений. Но 230 строк!? Даже с динамической таблицей такое делается в десяток.

LightDiver ★★★★★
()
Последнее исправление: LightDiver (всего исправлений: 1)
Ответ на: комментарий от VIT

Многие считают, что говночисты и трубочисты вымерли, как профессия. Но эти многие ошибаются. Другой вопрос в количестве мест..

LightDiver ★★★★★
()
Ответ на: комментарий от LightDiver

Спросил у Claude Opus 4.6, что он думает про кодогенерацию в Qwen 3 max. Тот говорит, что очень сильный в генерации одного файла из частей (что противоречит вашему опыту), очень хорошо понимает инструкции (ну это сейчас все языковые модели умеют), но очень плохо работает с многошаговыми запросами с уменьшением качества каждого шага (вроде ваш случай), плохо работает на обработке специальных случаев (здесь непонятно, плохо в смысле вообще никак или плохо в смысле генерирует туфту). Дешёвая модель, но советует вместо неё взять Claude Sonnet 4 или GPT-4o.

У меня есть Сонет 4.6, гпт 5.4 и 4.1. Хочу попробовать покрутить ваш код, может чего нового научусь. Но это как выдастся минутка…

VIT ★★★
()
Ответ на: комментарий от LightDiver

Вы даже не представляете себе, насколько востребованы говночисты. Колодцы в половине страны, их кто чистить будет? Минимум раз в пять лет, а то и в три. За трубы - есть и такие, но дымоход чистить не рекомендуется, легко повредить.

VIT ★★★
()
Ответ на: комментарий от VIT

У меня был опыт общения с ГПТ3-5. Очень очень негативный опыт. Возможно тут от конкретных целей и языка зависит. Но квен оказался лучше.

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

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

LightDiver ★★★★★
()
Последнее исправление: LightDiver (всего исправлений: 1)
Ответ на: комментарий от VIT

Да я то с 2013 живу в частном доме и отлично понимаю. Просто пример привел, которому уже много десятков лет.

LightDiver ★★★★★
()
Ответ на: комментарий от anonymous_sama

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

VIT ★★★
()
Ответ на: комментарий от LightDiver

В принципе можно и Opus попробовать, почему нет? Посмотрим…

VIT ★★★
()
Ответ на: комментарий от LightDiver

не задумываешься - а куда бы выложить для всех

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

Обычно пилится чтото для себя или для узкого круга юзеров и все.

Я наоборот делаю инструмент универсальным. То есть если он кого-то ограничивает я пытаюсь это ограничение устранить. Аргумент «для себя» я использую, когда на меня начинают давить, чтобы я из универсального сделал что-то узкое под конкретного пользователя.

AZJIO
() автор топика
Ответ на: комментарий от AZJIO

Я всегда общался в интернете и чувствовал команду, как будто вместе что-то создаём, и всегда так было

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

Зайди в ирку на тот же #chlor на квейкнете. Или посиди на ресурсах гентушников. Ай, зачем далеко ходить, почитай темы на ЛОР - особенно в разделах разработки.

LightDiver ★★★★★
()
Ответ на: комментарий от LightDiver

Я, общаясь в интернете, в 99% встречал чсвшных говнюков

Подсесть на уши какого-то специалиста, чтобы он тебе объяснял гиблое дело. Конечно, лучше общаться в среднем своего уровня, чтобы чувствовать и прибыль и отдачу. А в одну сторону никто не согласится.

AZJIO
() автор топика
Ответ на: комментарий от LightDiver

Ай, зачем далеко ходить, почитай темы на ЛОР - особенно в разделах разработки.

Фу как некрасиво, разве можно такое советовать? Наверное ещё в школе пионером был?

VIT ★★★
()
Ответ на: комментарий от LightDiver

Моя машина говорит, что на 428 байтовых сообщениях байты теряться начинают и количество обрабатываемых сообщений можно увеличить. Тесты написала. Прогнала. Говорит есть маленькая несовместимость с версиями до 5.1, но в принципе фигня. Комментариев напихала.

VIT ★★★
()
Ответ на: комментарий от VIT

Или найдёте способ продолжать использовать столярку. Или вообще забьёте на использование шкафов.

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

К этому нужно быть готовым.

Как? Запастись сухарями?

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

Каким? Пойти в проститутки?

urxvt ★★★★★
()
Ответ на: комментарий от vbr

У тебя появились новые перспективы. Сейчас умный человек может организовать из агентов команду с собой во главе. Также ИИ позволяет получать полу-экспертную информацию почти в любой отрасли.

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

ИИ очень сильно усиливает потенциальные возможности индивидуума.

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

urxvt ★★★★★
()
Ответ на: комментарий от urxvt

Хз хз. Меня на линукс впервые подсадил одноклассник как раз в школе. Мы оба были школьниками тогда. Класс уже не помню.

Как антивинда, линукс очень привлекателен для подростков.

LightDiver ★★★★★
()
Ответ на: комментарий от urxvt

К этому нужно быть готовым.

Как? Запастись сухарями?

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

VIT ★★★
()
Ответ на: комментарий от urxvt

Линукс не целевая аудитория школьников.

Линукс или ИИ? Что-то с ИИ резкий переход на линукс.
А, понял, надо чтобы школьник ещё на на линуксе кодил с ИИ. Ну так вы сами сделали вброс про любого школьника.

AZJIO
() автор топика
Последнее исправление: AZJIO (всего исправлений: 1)
Ответ на: комментарий от VIT

Ну как бы лимит сообщений - 254 байта, причем кириллица 2 байта. Но результат интересно глянуть, да. По сути, при ручной работе рам на 10 строк кода.

LightDiver ★★★★★
()
Ответ на: комментарий от LightDiver

Я вечером сюда запощу. Говорит 7 минут работы, что-то около 35К токенов. Мне интересно ваше мнение о результате.

VIT ★★★
()
Последнее исправление: VIT (всего исправлений: 1)
Ответ на: комментарий от VIT

Я извиняюсь, на функцию простого вывода 4 статичных строк и одной таблицы 7 минут работы и 35 тысяч токенов?!

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

LightDiver ★★★★★
()
Ответ на: комментарий от LightDiver

Я вечером сюда запощу. Говорит 7 минут работы, что-то около 35К токенов. Мне интересно ваше мнение о результате. Да, нужно не забывать, задача была «сможешь улучшить»? И дан оригинал. Я сам и про WoW ничего не знаю, и про бонусы, и на луа не пишу.

VIT ★★★
()
Ответ на: комментарий от VIT

Чисто технически я просил его выдать такое:

function nsCoursePrintBonusInfo()
    SendChatMessage("=== Бонусы курса ===", "OFFICER")
    SendChatMessage("1. Первый уникальный модуль за день: опыт 1.", "OFFICER")
    SendChatMessage("2. Серия 5+ дней: первый модуль дня даёт лотерейный билет.", "OFFICER")
    SendChatMessage("3. Серия 5+ дней и 5+ модулей за день: случайный бонус (кусок карты или подсказка).", "OFFICER")
end

То есть просто вывод списка бонусов в офицерский чат гильдии. Все.

Но он мне подал идею выводить не просто список статичных бонусов, но и таблицу бонусов по кадому модулю. Это действительно интересна фича, поэтому я сделал так:

function nsCoursePrintBonusInfo()
    local lines = {
        "=== Бонусы курса ===",
        "1. Первый уникальный модуль за день: опыт 1.",
        "2. Серия 5+ дней: первый модуль дня даёт лотерейный билет.",
        "3. Серия 5+ дней и 5+ модулей за день: случайный бонус (кусок карты или подсказка).",
        "",
        "=== Спецбонусы за модули ===",
    }

    for id, bonus in pairs(NS_COURSE_BONUSES) do
        for _, tier in ipairs(bonus.tiers) do
            table.insert(lines, "Модуль " .. id .. " (" .. bonus.verb .. "): не более " .. tier.chars .. " симв. -> репутация " .. tier.rep .. ", опыт " .. tier.exp)
        end
    end

    table.insert(lines, "Модуль без спецбонуса: репутация 100, опыт 1.")

    local frame = CreateFrame("Frame")
    local i = 0
    frame:SetScript("OnUpdate", function(self)
        self.t = (self.t or 0) + arg1
        while self.t >= 0.05 do
            self.t = self.t - 0.05
            i = i + 1
            local msg = lines[i]
            if msg then SendChatMessage(msg, "OFFICER") else self:SetScript("OnUpdate", nil) end
        end
    end)
end

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

Вот почему они просто не могут дать такой минимальный код? Это же так просто - простейший алгоритм действий.

LightDiver ★★★★★
()
Ответ на: комментарий от AZJIO

Чтобы школьник под Линукс игрушки писал. Кому он её потом покажет? ЛОРу? Он лучше на андроиде запилит и в школе пацанам покажет.

urxvt ★★★★★
()
Ответ на: комментарий от urxvt

Да чаще даже не игрушки. Просто скриптик, софтину запилить себе для удобства и пользоваться.

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

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

LightDiver ★★★★★
()
Последнее исправление: LightDiver (всего исправлений: 1)
Ответ на: комментарий от LightDiver

почитай темы на ЛОР - особенно в разделах разработки.

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

vbr ★★★★★
()
Ответ на: комментарий от vbr

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

LightDiver ★★★★★
()
Ответ на: комментарий от urxvt

Так результат работы же обесценился, платить стали меньше.

Мне это не очевидно. Программы в аппсторе дешевле не стали. Более того - с ИИ появилось много связанных с ним ниш.

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

Раньше это когда? 30 лет назад? Веб-студии это уже давно полумёртвый формат.

Ну тогда ожидаем волну миллионеров а-ля Цукерберг, Гейтц и и. п. Пока она не наблюдается.

Цукерберг и Гейтс - миллиардеры. И не просто миллиардеры, и даже не мультимиллиардеры, а вне категорий. Довольно высокая планка.

А волну миллионеров не уверен, что получится заметить. Их в мире довольно много.

Я к тому и веду, что рядовому программисту от этого лучше не стало/станет.

Один из смыслов современного ИИ в том, чтобы заменить рядового программиста на программу. Которая требует меньше денег, работает лучше и быстрей. Конечно рядовому программисту от этого не станет лучше. С чего бы это ему стало лучше.

vbr ★★★★★
()
Ответ на: комментарий от AZJIO

Если бы это было так, на линуксе было бы завались логических игр

Может, ещё не накопилась критическая масса школьников, которым интересны логические игры, и которые готовы это вайбкодить?

Кстати, вот как раз логические игры интереснее программировать самому (ну может, кроме UI).

hobbit ★★★★★
()
Ответ на: комментарий от VIT

@LightDiver Вот результат. Итак, я попросил провести аудит кода, выдать предложения по улучшению, сократить. Результат должен быть идентичный оригиналу. Написано 450 тестов. После аудита кода, было найдено:

nil-guard в цикле UTF-8 недостижим. cut начинается с limit + 1, и цикл выполняется только когда #text > limit, поэтому text:byte(cut) никогда не nil. Шесть cтрок сведены к:

  while cut > 1 and text:byte(cut) >= 0x80 and text:byte(cut) < 0xC0 do cut = cut - 1 end

Всё остальное оставлено как было, сделана рестуктуризация:

  • C_Timer.After сохраняется вместе с timerAfter, убирается дублирование тестов hasTimer и scheduleAfter каждый запуск (−4).

  • scheduleAfter выполнен ранний возврат: 20 → 12.

  • flushQueue/sendFrom/sendNow использует return f(x) вместо if/else блоков: 25 → 15.

  • addModule выполняет verb как добавочная строка вместо мутирующего заголовка, выход если пусто: 22 → 13.

  • Использование однострочных болков является общепринятой Lua практикой. Оставлено.

Что скажите?

function nsCoursePrintBonusInfo()
    local MAX = 240
    local queue = {}
    local function debugMsg(m) if type(nsCourseDebug) == "function" then nsCourseDebug(m) end end
    local function splitToBytes(text, limit)
        local chunks = {}
        while #text > limit do
            local cut = limit + 1
            while cut > 1 and text:byte(cut) >= 0x80 and text:byte(cut) < 0xC0 do cut = cut - 1 end
            cut = cut - 1
            local take = text:sub(1, cut):match("^.*() ") or cut
            if take < 1 then take = math.min(limit, #text) end
            local chunk = (text:sub(1, take):gsub("%s+$", ""))
            if #chunk > 0 then table.insert(chunks, chunk) end
            text = text:sub(take + 1):gsub("^%s+", "")
        end
        if #text > 0 then table.insert(chunks, text) end
        return chunks
    end
    local function addLine(message)
        for _, c in ipairs(splitToBytes(tostring(message or ""), MAX)) do table.insert(queue, c) end
    end
    local function addJoined(prefix, contPrefix, parts, sep)
        if #parts == 0 then return end
        local line = prefix .. parts[1]
        for i = 2, #parts do
            local candidate = line .. sep .. parts[i]
            if #candidate <= MAX then line = candidate
            else addLine(line); line = contPrefix .. parts[i] end
        end
        addLine(line)
    end
    local function pluralChars(n)
        n = tonumber(n) or 0
        local m10, m100 = n % 10, n % 100
        if m10 == 1 and m100 ~= 11 then return "символ" end
        if m10 >= 2 and m10 <= 4 and (m100 < 12 or m100 > 14) then return "символа" end
        return "символов"
    end
    local function formatTier(t)
        local chars = t and t.chars
        return (chars == nil and "любое количество символов"
            or "не более " .. (tonumber(chars) or 0) .. " " .. pluralChars(chars))
            .. " -> репутация " .. (tonumber(t and t.rep) or 0)
            .. ", опыт " .. (tonumber(t and t.exp) or 0)
    end
    local timerAfter = type(C_Timer) == "table" and type(C_Timer.After) == "function" and C_Timer.After
    local canFrame = type(CreateFrame) == "function"
    local function scheduleAfter(delay, func)
        if timerAfter then return timerAfter(delay, func) end
        if not canFrame then return func() end
        local f, elapsed = CreateFrame("Frame"), 0
        f:SetScript("OnUpdate", function(self, dt)
            elapsed = elapsed + dt
            if elapsed < delay then return end
            self:SetScript("OnUpdate", nil); self:Hide(); func()
        end)
        return f:Show()
    end
    local function sendNow(m)
        local ok, err = pcall(SendChatMessage, m, "OFFICER")
        if not ok then debugMsg("nsCoursePrintBonusInfo: ошибка отправки в OFFICER: " .. tostring(err)) end
    end
    local function sendFrom(i)
        if not queue[i] then return end
        sendNow(queue[i])
        if queue[i + 1] then scheduleAfter(0.2, function() sendFrom(i + 1) end) end
    end
    local function flushQueue()
        if #queue == 0 then return end
        if type(SendChatMessage) ~= "function" then
            return debugMsg("nsCoursePrintBonusInfo: SendChatMessage не найден, очередь не отправлена")
        end
        if timerAfter or canFrame then return sendFrom(1) end
        for _, m in ipairs(queue) do sendNow(m) end
    end
    local function addModule(moduleId, bonus)
        if type(bonus) ~= "table" or type(bonus.tiers) ~= "table" then return end
        local tiers = {}
        for _, t in pairs(bonus.tiers) do if type(t) == "table" then table.insert(tiers, t) end end
        table.sort(tiers, function(a, b)
            return (tonumber(a and a.chars) or math.huge) < (tonumber(b and b.chars) or math.huge)
        end)
        local parts = {}
        for _, t in ipairs(tiers) do table.insert(parts, formatTier(t)) end
        local label = "Модуль " .. tostring(moduleId)
        local verb = (type(bonus.verb) == "string" and bonus.verb ~= "") and (" (" .. bonus.verb .. ")") or ""
        if #parts == 0 then return addLine(label .. verb .. ": условия не заданы") end
        addJoined(label .. verb .. ": ", label .. " (продолжение): ", parts, "; ")
    end
    addLine("=== Бонусы курса: за что и что выдаётся ===")
    addLine("1. За каждый уникальный модуль, впервые выполненный за день, выдаётся бонус: опыт 1.")
    addLine("2. Если серия выполнения дней подряд составляет 5 или больше, за первый уникальный модуль дня выдаётся лотерейный билет.")
    addLine("3. Если серия 5+ дней подряд продолжается, и за день выполнено минимум 5 уникальных модулей, выдаётся случайный бонус.")
    addLine("Случайный бонус: либо кусок карты, либо подсказка.")
    addLine("Серия считается по первому уникальному модулю за день. Если вчера не было выполнения, серия сбрасывается на 1 день.")
    if type(NS_COURSE_BONUSES) ~= "table" then
        addLine("Таблица NS_COURSE_BONUSES не найдена, спецбонусы за модули не выведены.")
    else
        local ids = {}
        for id in pairs(NS_COURSE_BONUSES) do table.insert(ids, id) end
        table.sort(ids, function(a, b)
            local na, nb = tonumber(a), tonumber(b)
            if na and nb then return na < nb end
            return tostring(a) < tostring(b)
        end)
        if #ids == 0 then addLine("Спецбонусы за модули не найдены.")
        else
            addLine("=== Спецбонусы за модули ===")
            for _, id in ipairs(ids) do addModule(id, NS_COURSE_BONUSES[id]) end
        end
    end
    addLine("Если модуль не указан в спецбонусах, за первое прохождение обычно выдаётся: репутация 100, опыт 1.")
    flushQueue()
end
VIT ★★★
()
Ответ на: комментарий от vbr

Так результат работы же обесценился, платить стали меньше.

Мне это не очевидно. Программы в аппсторе дешевле не стали.

А оно и неудивительно. Так всегда, когда рабочих на заводе сокращают, выганяют на трехдневку, режут ЗП, то продукция дешевле не становится для конечного потребителя.

Раньше это когда? 30 лет назад? Веб-студии это уже давно полумёртвый формат.

Лет 15 даже.

Цукерберг и Гейтс - миллиардеры. И не просто миллиардеры, и даже не мультимиллиардеры, а вне категорий. Довольно высокая планка.

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

Один из смыслов современного ИИ в том, чтобы заменить рядового программиста на программу. Которая требует меньше денег, работает лучше и быстрей. Конечно рядовому программисту от этого не станет лучше. С чего бы это ему стало лучше.

Ну так о чём спор тогда? :)

urxvt ★★★★★
()
Ответ на: комментарий от VIT

Ну, что я могу сказать. Чисто формально это даже работать не будет. Но это скорее из за того, что я не уточнил детали. C_Timer у нас не существует.

Оставлен дебаг, но это так - ерунда.

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

Опять же пустые проверки функций, которые всегда есть. Например: type(CreateFrame

Это базовые функции апи. Они есть на сервере всегда.

Вот просто сравни с моим итоговым:

function nsCoursePrintBonusInfo()
    local lines = {
        "=== Бонусы курса ===",
        "1. Первый уникальный модуль за день: опыт 1.",
        "2. Серия 5+ дней: первый модуль дня даёт лотерейный билет.",
        "3. Серия 5+ дней и 5+ модулей за день: случайный бонус (кусок карты или подсказка).",
        "",
        "=== Спецбонусы за модули ===",
    }

    for id, bonus in pairs(NS_COURSE_BONUSES) do
        for _, tier in ipairs(bonus.tiers) do
            table.insert(lines, "Модуль " .. id .. " (" .. bonus.verb .. "): не более " .. tier.chars .. " симв. -> репутация " .. tier.rep .. ", опыт " .. tier.exp)
        end
    end

    table.insert(lines, "Модуль без спецбонуса: репутация 100, опыт 1.")

    local frame = CreateFrame("Frame")
    local i = 0
    frame:SetScript("OnUpdate", function(self)
        self.t = (self.t or 0) + arg1
        while self.t >= 0.05 do
            self.t = self.t - 0.05
            i = i + 1
            local msg = lines[i]
            if msg then SendChatMessage(msg, "OFFICER") else self:SetScript("OnUpdate", nil) end
        end
    end)
end

Просто сравни код. Кучи функций, вынесенных в функции, обмазанные функциями, проверками на то, что и так точно есть. Излишне усложненная логика склеивания строк. Да, это уже не 230 строк, вдвое короче - 115. Но с нарушениями форматирования - все в единой куче, то есть читаемость снижена изначально.

Это вместо 6-30 строк минимально необходимых для простого вывода текста.

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

https://convertilo.ru/p/0tKWBz/

203 строки. За счет ручного управления таймерами, например. То есть почти мой первоначальный результат.

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

А я напомню - это просто клятый вывод текстовых строк. Четырех статичных и на основе трех параметров в таблице. Где просто ключ и три параметра этого ключа. Все.

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

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

Посмотри мой код. Даже для новичка там не будет особых сложностей вчитаться. строгая логика последвательная: 1) Статичная таблица данных 2) Добавление динамических данных из подтаблицы 3) Вывод итогового массива строк.

LightDiver ★★★★★
()
Последнее исправление: LightDiver (всего исправлений: 1)
Ответ на: комментарий от hobbit

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

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

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

LightDiver ★★★★★
()
Последнее исправление: LightDiver (всего исправлений: 1)

Интересней для философии жизни перефразировать тезис как:

Нет удовольствия от ИИ из-за программирования

и найти решение для себя.

water_closed
()
Ответ на: комментарий от hobbit

https://www.linux.org.ru/tag/nomenus-rex

Терминал не нужен. Наиболее близки по функционалу gprename. Нет у него транслитерации, генератора буквами вместо чисел. На вкладке замены с регвыр нет сохранения шаблонов.

AZJIO
() автор топика
Ответ на: комментарий от AZJIO

Пока не придумали инструмента удобнее и универсальнее, чем командная строка. Инструменты на ГУИ узкоспециализированы и бывают удобны, но каждый такой случай надо изучать отдельно.

В линуксе же можно все что угодно в пару команд, потому что этот самый удобный универсальный инструмент есть и далеко не один.

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

LightDiver ★★★★★
()

Нет удовольствия от программирования из-за ИИ

Использование ИИ для тех кто не осилил разработку, … это аналог «Восставшие из ада».
Натворят таковые много бед.
Из положительного есть то, что таковые всё же как-то там будут осваивать логику.
Но цунами Г. всё же приближается.

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

Не ИИ конечно виновато в то что люди искони убийцы.
Далее и доказывать ничего не нужно.

anonymous
()
Ответ на: комментарий от LightDiver

Инструменты на ГУИ узкоспециализированы

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

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

Там они давно есть, причём до того как я начал программировать где-то в 2010-м году и написал свои аналоги, и вот сейчас хотел переписать на PureBasic, чтобы работало на линукс, но это требует много времени.

В линуксе же можно все что угодно в пару команд, потому что этот самый удобный универсальный инструмент есть и далеко не один.

Мне сейчас интересны кроссплатформенные варианты. Я буквально вчера ещё раз посмотрел в сторону JavaScript, но учитывая что он тянет с собой по 400 Мб, быстро передумал.

AZJIO
() автор топика
Ответ на: комментарий от AZJIO

Естественно. Это же как раз те задачи, которые отлично выполняются именно cli-утилитами. В том числе в скриптах, в том числе в cron.

CrX ★★★★★
()
Ответ на: комментарий от AZJIO

Если это всё же в том числе декстоп для многих, значит ГУИ-шные приложения обязаны быть по факту.

Их нигде таких удобных нет. Линукс тут не исключение. Однако тут есть удобные консольные, а на других осях такого удобства нету. Тут линукс удобнее.

Там они давно есть

Там есть всякое неюзабельное говно, по факту бесполезное. Мне пришлось писать нормальный парсер.

Мне сейчас интересны кроссплатформенные варианты.

Что может быть проще. Питон тебе в руки. Или луа. У первого уже есть любые готовые варианты, второй просто до примитивности и потребляет почти на уровне сишки, но позволяет все то же самое, только вручную. Любая подобная задача за 5 минут решается.

LightDiver ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.