Автор Канала "Теория Всего"December 17, 2022

Когда запушил код и закоментил тесты
Когда запушил код и закоментил тесты

Всем привет! Основной вопрос, который данная статья будет затрагивать является: "Стоит ли волноваться программистам за свои рабочие места в течений следующих лет из-за развития искусственного интеллекта?"

Думаю вы уже все наслышаны о всеми великом проекте под названием "ChatGPT". Для тех кто не в танке, ChatGPT - программа написанная компанией, которая принадлежит Илону Маску, основная особенность данного проекта заключается в довольно продвинутом искусственном интеллекте приложения. Самое интересно, что данный И.И. способен дать ответ практически на любой вопрос, который вы ему задаете, будь это "Что лучше PS5 или PC" или " В чем заключается смысл жизни?".

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

Джависты не в восторге, что ООП идет вторым
Джависты не в восторге, что ООП идет вторым

В принципе как и ожидалось, что скорее всего ChatGPT использует свою натренированную МЛку для NLP (https://habr.com/ru/company/otus/blog/705482/) и парсит открытие и главное индексируемые сайты для получения и обработки той или иной информации, которая будет задействована для дачи ответа собеседнику. Так же, ChatGPT не использует простую тактику copy+paste, а использует парафрейзинг для более понятного ответа.

Какой же вывод мы смогли вывести из самого первого и самого простого на мой взгляд вопроса нашему И.И.?

  1. И.И. использует свою натренированную систему NLP

  2. И.И. парсит и индексирует открытые источники

  3. Пока что программист может не переживать за свою работу

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

Вопрос первый. Сделай простой "reverse" Линкед-Листа.

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

  1. Я старался писать вопрос максимально понятно и объективно, чтобы максимально сильно раскрыть потенциал И.И.

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

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

На вопрос: "Reverse a linked list in Java" я получил следующий код:

public class LinkedList {

 private static class Node {

  int data;

  Node next;

  Node(int data) {

   this.data = data;

  }

 }

 private Node head;

 public void addToFront(int data) {

  Node newNode = new Node(data);

  newNode.next = head;

  head = newNode;

 }

 public void reverse() {

  Node current = head;

  Node previous = null;

  Node next = null;

  while (current != null) {

   next = current.next;

   current.next = previous;

   previous = current;

   current = next;

  }

  head = previous;

 }

 public void printList() {

  Node current = head;

  while (current != null) {

   System.out.print(current.data + " ");

   current = current.next;

  }

  System.out.println();

 }

 public static void main(String[] args) {

  LinkedList list = new LinkedList();

  list.addToFront(1);

  list.addToFront(2);

  list.addToFront(3);

  list.addToFront(4);

  list.printList(); // prints 4 3 2 1

  list.reverse();

  list.printList(); // prints 1 2 3 4

 }

}

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

Идем дальше и начинаем мучать нашего друга еще сильнее. Теперь я задал, вопрос с подвохом: "Reverse a linked list in Java using only 1 function". На обработку данного запроса, программа потратила 27,12 секунд времени, так как запрос является крайне странным и информации о нем не так уж и много на просторах сети! Вот ответ, который я получил, я немного сжал его, не добавляя аналогичной импленментации классов из прошлого примера:

public Node reverse(Node current, Node previous) {

    if (current == null) {

      return previous;

    }

    Node next = current.next;

    current.next = previous;

    return reverse(next, current);

  }

  public void reverse() {

    head = reverse(head, null);

  }

Чисто технически, программа как бы реализовала мой запрос через 1 метод void reverse(), но это не совсем, что я имел ввиду! В первую очередь, я бы хотел увидеть имплементацию через Generic, но увидел типизацию до int, но это не является большой проблемой. Самое главное, я хотел увидеть только 1 метод, который будет отвечать за реверсивность связанного списка, чего я не получил, так же не забываем, что на обработку запроса ушло в районе 30 секунд, что довольно таки долго.

ChatGPT 3 век до н.э.
ChatGPT 3 век до н.э.

Тут я уже начал, понимать, что весь страх, который нагоняют люди по поводу СhatGPT это просто абсурд и тупой инфо-повод! Чтобы доказать это я решил написать всего 1 запрос, который вам точно подтвердит, что вы не останетесь без работы еще как минимум лет 20-30, пока И.И. не смогут сами детально по расписанному запросу писать высоконагруженные системы.

Вот он, убийца всех Solution Architects
Вот он, убийца всех Solution Architects

Как мы видим, ChatGPT не может писать простые программы, которые имеют относительно сложную логику, которую нужно делегировать по разным файлам и средам. Самое интересное, что он попросту игнорирует все нужные Фреймворки. Ладно JavaScript, я могу принять использование простой HTML странички для получения файлов, но использование "Apache POI " для обработки запросов и чистого "JDBC" я понять не могу. Видимо вопрос абстрактно был слишком сложен для И.И., хоть я и указал, такое ключевое слово как: "Spring Boot Framework".

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

Всем спасибо за внимание и пользуйтесь оператором Kcell/Activ.

Мой канал

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


  1. evoq
    24.12.2022 22:12
    +6

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


    1. leventov
      25.12.2022 07:59
      +2

      Он вышел из совета директоров, но свою долю не продавал. Так что он все ещё акционер (причем крупный, вероятно до 10 или даже 20 процентов его).


      1. evoq
        25.12.2022 19:58

        понятно. в той статье, что читал по смыслу было что он вообще вышел, то есть и долю продал... стоит выверять информацию :))))


  1. rsashka
    24.12.2022 22:35
    +3

    в довольно продвинутом искусственном интеллекте приложения

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


  1. vassabi
    25.12.2022 01:21

    мда ... чел пообщался с нейронкой и такой "не переживайте, тут не на что смотреть"

    Hidden text

    вот скажите, вы же понимаете

    1) как "много лет" нужно было учить эту нейронку, чтобы она с вами "невпопад" пообщалась?

    2) как "нелегко" ее масштабировать, чтобы они могла общаться с сотней людей одновременно и индивидуально ?

    3) что есть люди, которые считают это пределом совершенства (и сделать лучше - упирается в физические ограничения, ну прямо как размер транзисторов), но они - маргиналы?

    4) что вы - сейчас находитесь в роли человечка слева ?

    с этой картинки

    подробнее - тут : https://habr.com/ru/post/293156/


    1. avacha
      25.12.2022 02:53
      +2

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

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

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

      ----

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


      1. vassabi
        25.12.2022 03:37
        +1

        эксперимент интересный, непонятно только - что он опровергает? или он что-то доказывает?

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

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

        А тут есть нейронка - которая всего лишь "часто ошибается". (то есть - иногда НЕ ОШИБАЕТСЯ). Которая - не может детализировать сама (то есть может - но ей налдо помочь) .

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


        1. salkat
          25.12.2022 04:02
          -1

          эксперимент интересный, непонятно только - что он опровергает? или он что-то доказывает?

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

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

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

          Забавно что Маск боится что ИИ убьёт человечество, но на деле человечество будет пытаться убить себя само, доверяя критические моменты своей жизни нейронкам, которые редко ошибаются. Как тот фанат Теслы, который въехал на автопилоте под прицеп


          1. leventov
            25.12.2022 08:08
            -1

            Он ничего не доказывает. Человек внутри комнаты (= один нейрон, = одна активация в DNN) - не понимает. Вся комната как единое целое (= весь мозг, вся DNN) - понимает.

            Дальнейший текст даже комментировать лень. Разберитесь с онтологией интеллекта, например почитайте про Лекуновскую архитектуру (https://www.shaped.ai/blog/yann-lecun-a-path-towards-autonomous-machine-intelligence) и тогда вы сами поймёте что написали какой-то несвязанный набор слов.


        1. GothicJS
          25.12.2022 12:32
          +1

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

          А с чего вы это взяли? Это слепое доверие авторитету.


          1. vassabi
            25.12.2022 15:56

            ну, он может и проспал все лекции, но он-то там хотя бы был.

            и умные термины говорит не запинаясь.

            Все остальное - только по сарафанному радио "Михалыч лечит хорошо, а Петрович - только рецепты выписывает и все"

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

            (или скажете, что это "доверие к авторитету гугла"?)


      1. phenik
        25.12.2022 06:58
        +3

        Представим себе изолированную комнату, в которой находится Джон Сёрл, который не знает ни одного китайского иероглифа...
        Подумать только… Петя Иванов сдает экзамен по квантам. Ему на вход подают билет с задачей по квантам… он ничего не смыслит в них… но помнит манипуляции иероглифами формул для расчета, т.к. обладает хорошей памятью или шпаргалкой, и твердо следует правилу — «заткнись и считай». Как компутер он выполняет алгоритм расчета, и отдает его на выход преподу. Препод проверяет и ставит «отлично», и думает что Петя сечет в квантах и неформально понимает о чем говорят ему иероглифы формул, а не просто угадал ответ.

        *****

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

        ps. Дополнительный вопрос — насколько сечет в неформальном понимании смысла иероглифов формул квантов сам препод? И насколько сам Серл продвинулся в понимании того, что такое со-знание, и насколько его можно свести исключительно к интеллектуальным способностям?


      1. leventov
        25.12.2022 08:10
        +1

        "Эксперимент" не говорит ровным счётом ничего. Человек внутри комнаты (= один нейрон, = одна активация в DNN) - не понимает. Вся комната как единое целое (= весь мозг, вся DNN) - понимает.

        Сейчас ссылаться на Серла как на авторитета в области философии ИИ - все равно что ссылаться на Сократа. Между ними расстояние меньше чем расстояние от Серла до фронтира философии ИИ.


  1. GothicJS
    25.12.2022 12:36
    -1

    Пока что, данные МЛ-ки не умеют думать абстрактно

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


  1. Guul
    25.12.2022 12:59
    +3

    "На обработку данного запроса, программа потратила 27,12 секунд времени, так как запрос является крайне странным и информации о нем не так уж и много на просторах сети!"

    Дальше можно не читать.

    Скорость ответа зависит в первую очередь от нагрузки на сайт. Странность и информация в сети(на 2021 год) на время ответа не влияют.

    Serviceai.tech выдал за 2 секунды

    Answer: The following code example illustrates how to reverse a linked list in Java using only one function:
    
    public static <T> void reverseList(LinkedList<T> list) { 
        Stack<T> stack = new Stack<T>(); 
        while (list.size() > 0) { 
            stack.push(list.removeFirst()); 
        } 
        while (stack.size() > 0) { 
            list.addLast(stack.pop()); 
        } 
    }

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


  1. azudem
    25.12.2022 16:55

    У вас русский не родной?


  1. kochetkov-ma
    26.12.2022 08:25
    +1

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

    Ну и доступа к актуальным новостям не имеет, плюс не принимает новую информацию о внешнем мире, так как не имеет возможности ее подтвержить.

    Для тренировки письменного английского очень хороший вариант, в конце диалога может дать оценку уровня - потом можно идти с этой оценкой к международному работодателю вместо теста (шутка)


  1. webmike
    26.12.2022 17:02

    ...но использование "Apache POI " для обработки запросов и чистого "JDBC" я понять не могу

    А что не так с Apache POI и с JDBC? Про обработку запросов с его помощью ничего не сказано. Ставилась задача распарсить Excel-файл, Apache POI с этим прекрасно справляется. А обработкой запросов занимается Spring Boot, как указано в задании. Про "чистый" JDBC в ответе тоже ничего не видно, JDBC обозначен просто как способ связи с Postgres, а под капотом он или чистый - это уже вопрос конкретной реализации.


  1. websitedev
    26.12.2022 17:55

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


  1. Arranje
    26.12.2022 17:57

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