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

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

ChatGPT — крутой кодер, но не инженер-программист или разработчик. Этот ИИ не сможет проектировать ПО с инженерной точки зрения с учётом потребностей бизнеса или исправлять ошибки, отличные от тех, которые были на его обучающих вводных данных. Этот инструмент не сможет заменить тех, чья работа выходит за рамки написания кода. Но этот при этом может открыть другие самые разные возможности для тех, кто работает с кодом.

По крайней мере на данный момент!



Есть много инструментов, которые помогают программистам быть эффективнее. К примеру:

  • StackOverflow помогает находить ответы на многие вопросы по программированию.
  • Скрипты помогают автоматизировать рутинные процессы.
  • Шаблоны помогают избегать многократного написания кода.

Настоящий кодер


ChatGPT идёт намного дальше этого. Он не идеален. Не всегда даёт желаемый результат. Но когда он чётко «понимает», чего от него хотят, он — настоящая «машина».

Допустим, вы создаёте сайт по продажам. Вы можете просто попросить ChatGPT написать для вас код на HTML и CSS, указав, какие разделы необходимо включить. Можно даже указать, будет ли это веб-сайтом электронной коммерции или портфолио, чтобы он ещё больше настраивал вывод.

Вот пример:


Ниже приведён код, сгенерированный ChatGPT:

<!DOCTYPE html>
<html>
<head>
  <title>My Online Store</title>
  <link rel="stylesheet" type="text/css" href="styles.css">
</head>
<body>
  <header>
    <h1>My Online Store</h1>
  </header>
  <nav>
    <ul>
      <li><a href="#">Home</a></li>
      <li><a href="#">Products</a></li>
      <li><a href="#">About</a></li>
      <li><a href="#">Contact</a></li>
    </ul>
  </nav>
  <main>
    <h2>Featured Products</h2>
    <div class="product-grid">
      <div class="product">
        <img src="product1.jpg" alt="Product 1">
        <h3>Product 1</h3>
        <p>$19.99</p>
        <button>Add to Cart</button>
      </div>
      <div class="product">
        <img src="product2.jpg" alt="Product 2">
        <h3>Product 2</h3>
        <p>$29.99</p>
        <button>Add to Cart</button>
      </div>
      <div class="product">
        <img src="product3.jpg" alt="Product 3">
        <h3>Product 3</h3>
        <p>$39.99</p>
        <button>Add to Cart</button>
      </div>
    </div>
  </main>
  <footer>
    <p>Copyright 2021 My Online Store</p>
  </footer>
</body>
</html>


body {
  font-family: Arial, sans-serif;
  margin: 0;
  padding: 0;
}

header {
  background-color: #333;
  color: white;
  padding: 20px;
  text-align: center;
}

nav ul {
  margin: 0;
  padding: 0;
  display: flex;
  list-style: none;
  justify-content: space-between;
  align-items: center;
}

nav li {
  display: inline-block;
}

nav a {
  color: #333;
  text-decoration: none;
  font-size: 18px;
  padding: 10px;
}

.product-grid {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
}

.product {
  width: 30%;
  margin-bottom: 30px;
  text-align: center;
}

.product img {
  width: 100%;
}


Вот так выглядит готовый сайт по этому коду.


Not bad.

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

Но вот в чём дело: таким инструментам, как ChatGPT, нужен «начальник», который даёт правильные команды для получения желаемого результата. Кроме того, нужен кто-то, кто будет интерпретировать результаты и выявлять ошибки чат-бота.

Ускорение обучения программированию


Может появиться мнение, что ChatGPT может превратить любого желающего в программиста просто потому, что теперь каждый может генерировать код с помощью чат-бота. На самом деле не так. Человеку, не обладающего знаниями в программировании, будет сложно работать с таким инструментом. Но можно с уверенностью сказать, что ChatGPT может ускорить процесс обучения программированию. Этот инструмент поможет решить вопросы по кодированию и дать подробное объяснение того, что он сделал.

Когда ChatGPT станет платным (что вероятнее всего), он может быть намного эффективнее, чем StackOverflow или Google, потому что:

  • Не будет рекламы.
  • Минимум неправильных ответов.
  • Никаких длинных «водянистых» статей о кодировании.



Будущее программирования


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

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

Эти инструменты не обязательно должны приводить к смерти программирования. Модели и инструменты общего назначения, такие как OpenAI Codex и GitHub Copilot, предоставляют разработчикам ПО более широкий доступ к системам, использующим ИИ для написания кода, что экономит время и энергию. Тем не менее программисту придётся выполнять работу более высокого уровня, думая о том, какую функцию будет выполнять код и как организовать код, вместо того, чтобы писать каждую строку кода в своих программах.

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

Когда-то, пионеры информатики твердо верили, что всем будущим учёным-компьютерщикам потребуется глубокое понимание полупроводников, двоичной арифметики и проектирования микропроцессоров, чтобы разрабатывать ПО. Сегодня почти 90 % тех, которые разрабатывают ПО, не имеют представления о том, как на самом деле работает процессор, не говоря уже о физике, лежащей в основе конструкции транзистора. А компьютерщики будущего будут настолько далеки от классических определений «программного обеспечения», что им будет трудно развернуть связанный список или внедрить быструю сортировку.

Все программы в будущем, в конечном счёте, будут написаны ИИ, а людям будет отведена контролирующая роль. Любому, кто сомневается в этом прогнозе, достаточно взглянуть на очень быстрый прогресс, достигнутый в других аспектах создания контента ИИ, таких как создание изображений. Разница в качестве и сложности между DALL-E v1 и DALL-E v2, о которых было объявлено всего 15 месяцев спустя, ошеломляет. Вещи, которые ещё несколько месяцев назад казались фантастикой, быстро становятся реальностью.

Не только CoPilot на Github или ChatGPT заменят программистов. Речь идёт о замене всей концепции написания программ обучающими моделями. В будущем студентам компьютерных наук не нужно будет изучать такие рутинные навыки, как добавление узла в двоичное дерево или программирование на C++. Такое образование устареет, как обучение студентов технических специальностей использованию логарифмической линейки.

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

Комментарии (47)


  1. vics001
    09.01.2023 01:23
    +6

    Мне кажется тут дано неправильное понятие junior программиста. По крайней мере junior программисту очень очень просто объяснить, что "надо сделать" (добавь ту кнопку вот сюда, эту перенеси, ту перекрась, исправь опечатки, при поворот экрана сохрани введенные данные...), но это не всегда "просто сделать".
    С ИИ тут закопаешься объяснять, что сделать, быстрее самому будет исправить такие задачи. Junior программист на этих задачах вырастет, а ИИ так и останется.


    1. vassabi
      09.01.2023 01:46

      а ИИ так и останется.

      вы правда в это верите??.... эх, правду писал Тим Урбан - люди умеют в линейные прогнозы и не умеют в логарифмы...


      1. BobovorTheCommentBeast
        09.01.2023 05:55
        +3

        Когда появился пар, когда полетел самолет, когда полетели в космос и сделали компьютер, считалось, что через 50 лет будем вот вот уже цивилизацией 1го типа.

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


        1. leventov
          09.01.2023 08:26
          +6

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


        1. vassabi
          09.01.2023 11:03
          +3

          нененене, вы не с тем сравниваете :)

          когда взорвали атомную бомбу, когда взорвали термоядерную бомбу, когда сделали ракету, которая максимум за 50 минут долетает до любой точки земного шара из любой другой точки земного шара.

          какая цивилизация 1го уровня, о чем вы ? тут дайбог не повторить историю, когда "ну, да развалины, да неизвестная письменность"

          ( https://ru.wikipedia.org/wiki/Катастрофа_бронзового_века )


    1. nAnley
      09.01.2023 05:55
      +2

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


      1. odilovoybek
        09.01.2023 09:24

        И заново начнется история с миллионами языками и фреймворками.


        1. nAnley
          10.01.2023 05:10

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


    1. denis_pesherin
      09.01.2023 10:23
      +5

      Мне кажется, что даже недооцененность уровня Junior разработчиков тут далеко не на первом месте. Все, поголовно все, кто рассматривает эту нейронку рассматривают какие то мизерные куски, которые эта сеть могла находить в готовом варианте уже в сети интернет. Потому что училась она еще (Скорее всего) через web scrapping. Вопрос насколько хорошо она отсеяла ошибочные, неправильные тупиковые для расширения решения - никто не рассказал. Ну сортирнула пузырьком она, ну нарисовала что-то на html. Если бы ей можно было скормить мокапы и она могла бы на выбор выдать фронт на React или Angular (который не надо было править) - тогда можно было говорить о том, что эта сеть умеет программировать. Пока (исходя из того, что показывают) умеет только писать несвязанные куски кода, что надо признать несложно, а вот как их друг с другом соединить правильно - это уже работа программиста. Потому что в том же самом фронте, как в данной статье есть много вариантов как кнопку сделать, или как сделать компонент. Можно написать на каждый чуть измененный компонент (ориентация или еще что-то) свой, а можно предусмотреть в пропсах. Вопрос что выберет эта нейронка. Скорее всего наколотит кучу кода, который обслуживать будет нельзя. А это не программирование.


      1. Norgorn
        09.01.2023 20:27
        +1

        Согласен, но зацепил один момент

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

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


    1. kaskada1133
      09.01.2023 13:23

      звучит как нужно нанять не джуна, а разраба разноробочего, тут заклепает тут подлатает


  1. Nilomar
    09.01.2023 01:46
    +6

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


  1. flancer
    09.01.2023 02:56
    +4

    Вот так выглядит готовый сайт по этому коду.
    ...
    Not bad.

    Не правда. Именно, что плохо. Это очень плохо в качестве сайта электронной коммерции. Он попросту не работает в этом качестве. Это правдоподобие требуемого результата, а не сам требуемый результат.

    ИИ подберёт вам типовое (или очень похожее на него) решение из существующих, но он не сможет вместо вас объяснить самому себе, чем это типовое решение отличается от требуемого именно вам. Это ваша задача. И тут внезапно выясняется, что для объяснения ИИ, что не так в его решении, требуется больше времени, чем для создания аналогичного решения собственными силами. По факту программисты и сейчас объясняют компьютерам, чего от них требуется. Только делают наиболее оптимально для обеих сторон - с использованием ЯП высокого уровня. Да, требуется время, чтобы изучить соответствующий ЯП и особенности его употребления. Но и с общением с ИИ точно так же - нужно будет найти слова, которые понимает ИИ. Для разминки попробуйте на "сайт электронной коммерции" прикрутить через ИИ возможность добавления продуктов в продуктовую корзину. Кнопки там есть, нужно "просто добавить немного JS'а". И даже после этого он всё ещё не будет являться "сайтом электронной коммерции", нужно будет прикручивать доставку, оплату, учёт остатков и вот это вот всё.

    А кодогенераторы были и раньше (например, GUI builder'ы появились во второй половине 90-х), но популярными они так и не стали. Если посмотрите код, который они генерят, то увидите причину, почему так (как заметили коллеги чуть выше - boilerplate).


    1. vkni
      09.01.2023 03:03
      +4

      А кодогенераторы были и раньше (например, GUI builder'ы появились во второй половине 90-х), но популярными они так и не стали.

      Совершенно верно, т.к. код приходится ещё и читать. А знаете какие кодогенераторы стали популярными? Которые сами читают ЯВУ и пишут машкоды — это компиляторы.

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


      1. flancer
        09.01.2023 09:58

        Т.е., вы сводите к тому, что программы, создаваемые в ходе общения с ИИ, не нужно будет читать, т.к. они сразу будут создаваться в машкодах? Ну да, это явно эффективнее, чем создавать промежуточные варианты на ЯВУ, а потом использовать компиляторы. Дебажить, правда, сложно будет. Зато опять станут востребованы программисты на макроассемблере.

        Но пока не появится ЯОВУОИИ (Языка Очень Высоко Уровня для Общения с "Искусственным Интеллектом") программистам на ЯВУ ничего не угрожает (кроме программистов на других ЯВУ - естественная эволюция языков). Пока что то, что я вижу, это попытка использования английского языка для получения каких-то результатов из обширной базы знаний людьми с нечёткими желаниями. Типа SQL в СУБД, но гораздо более аморфное.

        А так-то да, игратся с новыми технологиями никто не запрещает. Я с GUI builder'ами тоже игрался в нулевых.


        1. vkni
          09.01.2023 17:55
          +1

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


  1. vkni
    09.01.2023 03:01
    +1

    Ну вы пытаетесь напугать ежа голой попой.

    Программирование — это самая автоматизируемая профессия уже лет 70. Сначала программисты перетыкивали провода, потом пошли машинные коды (слава Тьюрингу за его универсальную машину), потом автокоды — машина стала сама переводить мнемоники в числа, затем ассемблеры, когда она ещё и метки пересчитывать стала сама, после ЯВУ, начиная с Фортрана, и т.д., и т.п.

    С++ — это устарелый и перегруженный язык, который в большинстве применений не нужен: есть языки с ADT, сборщиком мусора и т.д.


    1. leventov
      09.01.2023 08:29

      Порог входа снижается, и очень скоро он может снизиться драматически. Раньше была профессия "писарь", потому что мало кто умел писать. Скоро то же самое может случиться с профессией "программист" (скажем, приложений или веб-сайтов) - "напрограммировать" его сможет любой, кто хотя бы умеет минимально мыслить о концепции системы и проводить абсолютно минимальный системный анализ. То есть, грубо говоря, любой человек с IQ больше 90.


      1. vkni
        09.01.2023 18:02
        +1

        Он с каждым переходом снижается драматически, и что?

        Кстати, последнее время я вижу не снижение потребности в раб. силе, а наоборот, увеличение: индустрия отбрасывает нормальные практики программирования, упирая на агиле, на бесконечные юнит тесты в купе с динамически типизированными языками для больших проектов, С++ с его UB и прочей фигнёй.

        То есть, грубо говоря, любой человек с IQ больше 90.

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

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


        1. leventov
          09.01.2023 19:58
          -3

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

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

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

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


          1. vkni
            09.01.2023 21:08
            +1

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

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

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

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

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

            Какие ужастики, право слово. У нас тут сейчас мировая война идёт, которая «война контроллеров и моторов», если вы не заметили. А вы рассказываете, что программирование не нужно. Ну это как рассказывать в ВОВ, что мотористы не нужны.

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

            Это вы какие-то мрии рассказываете. В реальном мире эти самые CEO строят необъятные пирамиды из менеджеров, тратя всю жизнь на то, чтобы остаться на вершине этих пирамид.


  1. amazed
    09.01.2023 03:04
    +2

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

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

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


    1. leventov
      09.01.2023 08:32

      Был слух про 100 трлн параметров в GPT-4, возможно как раз из-за гораздо более длинного контекста, а не большего количества слоев/блоков "в глубину".


      1. phenik
        09.01.2023 12:47

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


  1. phenik
    09.01.2023 04:15
    +4

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

    1. Изобретение письменности и ее распространение
    2. Изобретение книгопечатания и его распространение
    3. Изобретение и распространение интернета

    Теперь настает очередь следующей — распространение ИИ. Пора поистерить)


    1. websnow
      09.01.2023 11:36

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


  1. IvanPetrof
    09.01.2023 04:47
    +5

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

    Теперь вот я думаю. Когда появится такой ИИ - нужен ли будет старый код?


    1. vkni
      09.01.2023 19:29
      +1

      Вы не очень понимаете, что такое legacy по-настоящему. Legacy — это наследие, то есть оно не просто старое, но оно ещё и ценное, причём не всегда понятно что именно там ценное.

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

      Простой пример:

        sum = flt_arr[0];
        correction = 0.0;
        for (i = 1; i < ARR_SIZE; i++)
        {
          corrected_next_term = flt_arr[i] - correction;
          new_sum = sum + corrected_next_term;
          correction = (new_sum - sum) - corrected_next_term;
          sum = new_sum;
        }
        return sum;

      Очевидно, что алгоритм суммирования массива переусложнён — зачем-то добавлены correction и corrected_next_term. Давайте их уберём?


      1. IvanPetrof
        09.01.2023 19:57

        Я же не зря сказал "у него хватит мозгов объять весь код целиком".

        легаси - это моя жизнь :) именно по-этому у меня осталась надежда только на ИИ..


        1. vkni
          09.01.2023 20:59
          +1

          Я, видимо, недостаточно чётко выразился: в legacy коде нет информации о том, какая часть этого кода действительно важна.

          А объять код целиком может команда copy. Цель же рефакторинга legacy кода — это отделить те редкие части, которые действительно важны от наслоений мусора. И основная проблема — это не выплеснуть с водой и ребёнка. Для этого нужно иметь контекст предметной области, который может быть утерян.

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

          Без этого, к примеру, в системе складского учёта, нельзя будет заменить double на float в поле, куда записываем массу песка в кг, засыпанного в самосвал (внутри интернета не очень понятно, вдруг надо учитывать всё вплоть до песчинки? или же есть самосвалы, вывозящие миллион тонн?).


          1. IvanPetrof
            10.01.2023 02:56

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


            1. vkni
              10.01.2023 06:59

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

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


              1. IvanPetrof
                10.01.2023 08:52

                Вы абсолютно правы. Конечно не нужен. Как говорится "терпение и труд всё перетрут!" ))


                1. vkni
                  10.01.2023 17:52

                  Компилятор делает это давно, быстро и с гарантиями. Тут, я подозреваю, не перебить.


        1. vkni
          09.01.2023 21:00
          -1

          именно по-этому у меня осталась надежда только на ИИ..

          ИИ — это инструмент, отражение человека. Если человек в теории не может что-то, ИИ тем более не сможет.


          1. IvanPetrof
            10.01.2023 02:53
            +1

            Но человек от природы ограничен/устаёт/ленив. У одного человека в принципе есть ограничение на объём кода, который он способен держать в голове одновременно. И это ограничение практически фундаментально. поэтому большие проекты создаются командпми, дробятся на модули с использованием аысокоуровневых языков/библиотек/абстракций. Где за строчкой кода скрывается не ассемблерная команда xor ax,ax, а целый готовый алгоритм стороннего фреймворка.

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

            Человек к тому же и медленный. я уже на текущий момент умудряюсь использовать недоИИ chatGPT в своей работе. Кидаешь ему кусок кода без комментариев с обфусцированными переменными на любом языке и получаешь мгновенный ответ что этот код делает. у человека на такой анализ может уйти не менее часа.


            1. vkni
              10.01.2023 17:21

              Компьютер тоже ограничен. :-) Я вот на NP полную задачу наткнулся и думаю, что делать...

              Кидаешь ему кусок кода без комментариев с обфусцированными переменными на любом языке

              Это интересно. Какого размера код? Может ли он справиться с каким-нибудь Clean?


  1. Burrex
    09.01.2023 09:20
    +4

    Зачем мне просить ИИ сделать уродливый и простой шаблон сайт-магазина, если я могу сделать/найти шаблон такого сайта и просто его повторно использовать? И он будет уже намного круче того, что было представлено. Пока перспектива очень сомнительная вот у этого ИИ.

    А остальное какая то восторженная вода с вангованием и страшилками для детей. Наслушался этого в плане рисования, а теперь тут смешите меня.

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

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


    1. vkni
      09.01.2023 19:22
      +1

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


      1. Burrex
        09.01.2023 23:31

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


        1. vkni
          09.01.2023 23:45
          +1

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

          Поэтому страхи, что «всех программистов заменит chatGPT», в общем необоснованы, скорее вебмагазинчики станут ненужными из-за того, что мир поменялся.


  1. MentalBlood
    09.01.2023 09:47
    +1

    Люди будут учить на собственном примере, а всё остальное сделает машина

    А что если полученная программа/модель уже на проде допустит критичную ошибку, кто виноват и что делать?


    1. amazed
      09.01.2023 11:50
      +1

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


  1. Tim02
    09.01.2023 10:23

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


    1. amazed
      09.01.2023 11:51
      +1

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


    1. LordCarCar
      09.01.2023 12:26

      И будут они программировать на специальном языке ТЗ.

      Непонятно только, чем этот язык будет отличаться от ЯВУ...


    1. MentalBlood
      09.01.2023 12:54
      +4

      image