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

Генерация фрагмента кода

Задача

Сгенерировать функцию на Python, которая вычисляет сумму всех четных чисел в списке.

Промпт:

Напиши функцию на Python, которая принимает список чисел и возвращает сумму всех четных чисел.

Результат:

ChatGPT 4o

Конечно! Вот пример функции на Python, которая принимает список чисел и возвращает сумму всех четных чисел:
def sum_even_numbers(numbers):

def sum_even_numbers(numbers):
    # Используем генераторное выражение для фильтрации и суммирования четных чисел
    return sum(num for num in numbers if num % 2 == 0)

# Пример использования функции
numbers = [1, 2, 3, 4, 5, 6]
result = sum_even_numbers(numbers)
print("Сумма четных чисел:", result)

В этой функции sum_even_numbers используется генераторное выражение, чтобы пройти по всем элементам списка numbers, проверить, является ли число четным (num % 2 == 0), и если да, то добавить его к сумме. Функция sum затем вычисляет сумму всех таких четных чисел.


Claude 3.5 Sonnet:

Вот функция на Python, которая принимает список чисел и возвращает сумму всех четных чисел:
def sum_even_numbers(numbers):

def sum_even_numbers(numbers):
    return sum(num for num in numbers if num % 2 == 0)

Эта функция использует генератор списка (list comprehension) и встроенную функцию sum(). Вот как она работает:

  1. Функция принимает один аргумент numbers, который является списком чисел.2. Внутри функции используется генератор (num for num in numbers if num % 2 == 0):
  2. Он перебирает все числа в списке numbers3.Проверяет каждое число на четность с помощью условия num % 2 == 04.Если число четное, оно включается в генерируемую последовательность5. Функция sum() суммирует все числа, полученные из генератора.6. Результат суммирования возвращается функцией.Вы можете использовать эту функцию следующим образом:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = sum_even_numbers(numbers)
print(result)  # Выведет: 30 (2 + 4 + 6 + 8 + 10)

Эта функция эффективна и лаконична, она обрабатывает список за один проход и возвращает сумму всех четных чисел.

Gemini 1.5 Pro:

  """
  Эта функция принимает список чисел и возвращает сумму всех четных чисел в списке.
  Args:
    nums: Список чисел.

  Returns:
    Сумма всех четных чисел в списке.
  """
 sum=0
  for num in nums:
    if num % 2 == 0:
      sum += num
  return sum

Вот как работает эта функция:

  1. Определяет функцию с именем sum_of_evens, которая принимает один аргумент: nums. Этот аргумент представляет список чисел, которые будут переданы функции.
  2. Инициализирует переменную с именем sum и устанавливает ее значение равным 0. Эта переменная будет использоваться для хранения суммы четных чисел.
  3. Итерирует по списку nums с помощью цикла for. Для каждого числа в списке функция:
    - Проверяет, делится ли число на 2 без остатка, используя оператор modulo (%).
    Если остаток равен 0, то число четное.
    - Если число четное, оно добавляется к переменной sum.
  4. После итерации по всем числам в списке функция возвращает значение sum.

Вот пример использования функции:

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_sum = sum_of_evens(numbers)
print(f"Сумма четных чисел: {even_sum})

Этот метод выведет:
Сумма четных чисел: 30

Комментарий:

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

  • ChatGPT 4o:
    Сгенерированная функция использует генераторное выражение для фильтрации и суммирования чётных чисел в одном шаге.
    ChatGPT даёт чёткое объяснение того, как работает выражение, и добавляет пример использования с подробным объяснением.
    Этот результат наиболее лаконичен и не содержит излишней информации, что делает его подходящим для опытных пользователей.
  • Claude 3.5 Sonnet:
    Claude сгенерировал идентичный код с использованием генератора списка, однако в его объяснении больше акцента на том, как работает каждое выражение и что делает каждая часть кода.
    Приводится подробное объяснение, как работает каждый шаг, что делает этот результат полезным для начинающих программистов.
    Включен пример с расширенным набором чисел и детализированное описание процесса выполнения.
  • Gemini 1.5 Pro:
    Функция, предложенная Gemini, использует более простой цикл for, где каждый элемент списка проверяется на чётность, и сумма вычисляется постепенно.
    Код сгенерирован без использования современных конструкций Python (например, генераторов), что делает его немного менее эффективным, но понятным для тех, кто только начинает изучать программирование.

Генерация MySQL-запроса


Задача:

Создать запрос, который выбирает всех сотрудников, зарабатывающих больше 50 000, из таблицы 'employees'.

Промпт:

Напиши MySQL-запрос для выбора всех сотрудников из таблицы 'employees', чья зарплата превышает 50 000.

Результат:

ChatGPT 4o:

Конечно! Вот пример MySQL-запроса, который выбирает всех сотрудников из таблицы employees, у которых зарплата превышает 50 000:

SELECT* 
FROM employees 
WHERE salary > 50000;

В этом запросе:

  • SELECT * выбирает все столбцы из таблицы.
  • FROM employees указывает таблицу, из которой необходимо выбрать данные.
  • WHERE salary > 50000 фильтрует строки, выбирая только тех сотрудников, у которых зарплата больше 50 000

Claude 3.5 Sonnet:

Конечно! Вот MySQL-запрос для выбора всех сотрудников из таблицы 'employees', чья зарплата превышает 50 000:

SELECT* 
FROM employees 
WHERE salary > 50000;

Давайте разберем этот запрос:

  • SELECT *: Это означает, что мы хотим выбрать все столбцы из указанной таблицы.
  • FROM employees: Указывает, что мы выбираем данные из таблицы с названием 'employees'.
  • WHERE salary > 50000: Это условие фильтрации. Оно говорит, что мы хотим выбрать только те строки, где значение в столбце 'salary' больше 50000.

Этот запрос вернет все данные (все столбцы) для каждого сотрудника, чья зарплата превышает 50000. Результат будет включать в себя все поля таблицы 'employees' для каждого сотрудника, удовлетворяющего условию.

Gemini 1.5 Pro

SELECT* 
FROM employees 
WHERE salary > 50000;

Вот объяснение:

  • SELECT означает, что мы хотим выбрать все столбцы из таблицы.
  • FROM employees указывает, из какой таблицы мы выбираем даннные.
  • WHERE salary > 50000 - это условие, которое ограничивает выборку, оставляя только те строки, где значение в столбце `salary` (зарплата) больше 50000.

Этот запрос вернёт все строки из таблицы `employees`, где зарплата сотрудника превышает 50

Комментарий:

ChatGPT 4o:

Запрос был сгенерирован правильно:

SELECT* 
FROM employees 
WHERE salary > 50000;

Модель добавила краткое и точное объяснение работы запроса, разбив его на отдельные компоненты (SELECT *, FROM, WHERE). Это решение удобно для пользователей, так как предоставляет нужную информацию кратко и по существу.

Claude 3.5 Sonnet:

Код практически идентичен с вариантом ChatGPT:

SELECT* 
FROM employees 
WHERE salary > 50000

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

Gemini 1.5 Pro:

Код также идентичен.

Создание диаграммы TiKZ

Задача:

Сгенерировать TiKZ-код для простого графика в LaTeX.

Промпт:

Создай TiKZ-код для рисования круга и двух пересекающихся линий.

Результат:

ChatGPT4o:

Конечно! Вот пример TiKZ-кода для рисования круга и двух пересекающихся линий:

\documentclass[tikz,border=10pt]{standalone}
\begin{document}
\begin{tikzpicture}
    % Рисуем круг с центром в (0,0) и радиусом 2
    \draw[thick] (0,0) circle (2); 
    % Рисуем первую линию, проходящую через центр круга 
    \draw[thick] (-3,-3) -- (3,3);  
    % Рисуем вторую линию, также проходящую через центр круга 
    \draw[thick] (-3,3) -- (3,-3);
\end{tikzpicture}
\end{document}


Этот код создает:

  • Круг с центром в точке (0,0) и радиусом 2.
  • Две пересекающиеся линии, которые проходят через центр круга. Одна линия идет из точки (-3,-3) в (3,3), а другая из (-3,3) в (3,-3).

Чтобы использовать этот код, скопируйте его в LaTeX-документ и скомпилируйте с помощью компилятора, поддерживающего TikZ, например, PDFLaTeX.

Claude 3.5 Sonnet:

Вот пример TikZ-кода для рисования круга и двух пересекающихся линий:

\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
    % Рисуем круг
    \draw (0,0) circle (2cm);
    % Рисуем первую линию
    \draw [-] (-2.5,1) -- (2.5,-1);
    % Рисуем вторую линию
    \draw [-] (-2.5,-1) -- (2.5,1);
\end{tikzpicture}
\end{document}

Этот код создаст следующее изображение:

  • Круг с центром в точке (0,0) и радиусом 2 см.
  • Первая линия, идущая от точки (-2.5,1) к точке (2.5,-1).
  • Вторая линия, идущая от точки (-2.5,-1) к точке (2.5,1).

Линии будут пересекаться в центре круга.

Чтобы использовать этот код:

  • Убедитесь, что у вас установлен LaTeX и пакет TikZ.
  • Скопируйте этот код в новый .tex файл.
  • Скомпилируйте его с помощью pdfLaTeX или другого LaTeX-компилятора.

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

Gemini 1.5 Pro:

\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
  \draw (0,0) circle (1cm); 
  \draw (-1.5,0) -- (1.5,0); 
  \draw (0,-1.5) -- (0,1.5);
\end{tikzpicture}
\end{document}

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

Вы можете изменить следующие параметры:

  • Радиус круга: измените значение 1cm в команде \draw (0,0) circle (1cm); на нужный вам радиус.
  • Положение центра круга: измените координаты (0,0) в команде \draw (0,0) circle (1cm); на нужные вам координаты.
  • Положение линий: измените координаты начала и конца каждой линии в командах \draw (-1.5,0) -- (1.5,0); и \draw (0,-1.5) -- (0,1.5); на нужные вам координаты.

Комментарий:

ChatGPT 4o:

Генерация TiKZ-кода была выполнена корректно, и предоставлен полный рабочий пример:

\documentclass[tikz,border=10pt]{standalone}
\begin{document}
\begin{tikzpicture}
    \draw[thick] (0,0) circle (2);
    \draw[thick] (-3,-3) -- (3,3);
    \draw[thick] (-3,3) -- (3,-3);
\end{tikzpicture}
\end{document}

Подробное объяснение, содержащее описание всех элементов, делает это решение понятным и подходящим для пользователей с разным уровнем знаний в LaTeX.

Claude 3.5 Sonnet:

TiKZ-код также был корректно сгенерирован:

\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
	\draw (0,0) circle (2cm);  
	\draw [-] (-2.5,1) -- (2.5,-1);  
	\draw [-] (-2.5,-1) -- (2.5,1);
\end{tikzpicture}
\end{document}

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

Gemini 1.5 Pro:

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

Поделиться Гайдом
Перейти в ChatGPT