ChatGPT vs. Программист

ChatGPT vs. Программист

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

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

Поиск по тексту ошибок

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

Поиск потенциальных ошибок в коде

Вставьте фрагмент кода и попросите ChatGPT найти ошибки в нем. Только не забывайте об NDA в вашей компании! Ваш код может стать достоянием всего человечества. Рассмотрим простой пример несовершенного метода на языке Go:

func (r *Repository) getDict(tableName string) (map[int]string, error) { values := make([]IDName, 0, 100) err := r.db.Table(tableName). Select("id, name"). Find(&values).Error if err != nil { return nil, fmt.Errorf("failed to get dict %s: %w", tableName, err) } idToName := make(map[int]string, len(values)) for _, value := range values { idToName[value.ID] = value.Name } return idToName, nil }
Явных ошибок не было найдено. Но приведенные рекомендации полезны.
Явных ошибок не было найдено. Но приведенные рекомендации полезны.

Написание unit-тестов и бенчмарков для ваших методов

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

import ( "fmt" "testing" ) type MockDB struct{} func (m *MockDB) Table(name string) *MockDB { return m } func (m *MockDB) Select(columns string) *MockDB { return m } func (m *MockDB) Find(values interface{}) *MockDB { return m } func (m *MockDB) Error() error { return nil } type IDName struct { ID int Name string } func TestGetDict(t *testing.T) { // Создаем экземпляр Repository с MockDB repo := &Repository{ db: &MockDB{}, } // Вызываем метод getDict с тестовым значением tableName tableName := "test_table" dict, err := repo.getDict(tableName) // Проверяем, что ошибка равна nil if err != nil { t.Errorf("Expected error to be nil, got: %v", err) } // Проверяем, что полученный словарь содержит ожидаемые значения expectedDict := make(map[int]string) // Добавьте ожидаемые значения в expectedDict, соответствующие вашим тестовым данным // Например: // expectedDict[1] = "Value1" // expectedDict[2] = "Value2" // Сравниваем полученный словарь с ожидаемым if !mapsAreEqual(dict, expectedDict) { t.Errorf("Expected dictionary: %v, got: %v", expectedDict, dict) } } func mapsAreEqual(map1, map2 map[int]string) bool { if len(map1) != len(map2) { return false } for key, value := range map1 { if map2Value, ok := map2[key]; !ok || map2Value != value { return false } } return true }

Вопросы о специфических конструкциях в вашем языке

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

Ответ на уровне хорошего учителя
Ответ на уровне хорошего учителя

Рефакторинг кода

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

Написание каркаса приложения

К примеру, вы хотите написать микросервис, представляющий из себя веб-сервер с одним эндпоинтом для POST-запроса, принимающем на вход JSON с серией и номером паспорта. Сервис выполняет запрос в БД Postgres, где по серии и номеру паспорта извлекает нужный набор данных. И отдает их в ответе. Сформулируйте свой запрос, тщательно обдумав детали, и отправьте его в чат. Тренируясь писать промпты (запросы к нейросети), вы лучше научитесь формулировать задание как в голове, так и в виде текста. Плюсом, под вашу задачу наверняка уже существует нужный набор промптов в Интернете. Наилучшим образом работают промпты на английском языке.

Заключение

Безусловно советую осваивать и использовать ChatGPT в своей работе. Приведенный выше список рекомендаций не претендует на полноту. Его предназначение в том, чтобы зажечь в вас искру любознательности и сподвигнуть к дальнейшему изучению ChatGPT как ассистента для рутинного труда. Если есть чем поделиться – добро пожаловать в комментарии! А если было интересно – подписывайтесь на мой телеграм-канал. И до скорых встреч, друзья!

1515
Начать дискуссию