Код
#статьи

Трудности разработчиков, провал Copilot и вызовы ИИ в Африке

IT-дайджест: главные новости августа 2024 года.

Иллюстрация: Оля Ежак для Skillbox Media

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

Содержание

ChatGPT vs традиционное обучение: почему готовые ответы могут навредить

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

Чтобы найти ответы, профессор компьютерных наук Массачусетского технологического института Эрик Клопфер провёл эксперимент. Он разделил студентов на три группы и дал им задание на незнакомом языке программирования Fortran:

  • первая группа могла использовать ChatGPT;
  • вторая — LLM Code Llama;
  • третья — только поисковик Google, без нейросетей.

Результаты эксперимента оказались предсказуемыми:

  • первая группа справилась быстрее всех благодаря способности ChatGPT быстро находить и исправлять ошибки;
  • второй группе понадобилось чуть больше времени, так как LLM Code Llama требовал более точных запросов и не всегда давал прямые ответы;
  • третья группа существенно отстала, поскольку студентам приходилось самостоятельно искать информацию, читать документацию и сопоставлять полученные ответы.

Затем профессор провёл проверку. Студенты из группы ChatGPT полностью провалили тест, в группе LLM Code Llama с задачей справилась только половина участников, а в группе Google все успешно выполнили задание.

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

80% разработчиков недовольны своей работой, но дело не в нейросетях и коде

Stack Overflow опубликовал результаты ежегодного опроса, в котором приняли участие более 65 000 инженеров из 185 стран. Большинство IT-специалистов недовольны своей работой: каждый третий её ненавидит, а почти половина просто «выживают». Рассмотрим три основные причины недовольства.

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

Вот как комментирует технический долг Алексей Некрасов, лидер направления Python в МТС и программный директор Python в Skillbox:

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

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

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

Усугубляет проблему бюрократия, особенно в крупных компаниях. Бесконечные совещания и нереалистичные требования от менеджеров могут вызывать чувство бессмысленности работы. Особенно это заметно, когда в течение дня административные задачи вытесняют написание кода и программистам приходится перерабатывать, чтобы не выпадать из графика.

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

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

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

От суахили до зулу: как нейросети покорили мир, но забыли про Африку

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

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

Первые шаги к исправлению ситуации сделало правительство Нигерии, выступив с инициативой по разработке многоязычной языковой модели. Задача нетривиальна, поскольку в Африке насчитывается более 2000 языков в 54 странах и многие из них недостаточно представлены в интернете. Немного упрощает задачу тот факт, что 50% всех африканских сайтов на английском языке. Также есть версии на испанском, немецком, японском и французском языках. В общем, есть неплохая основа для старта.

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

Диаграмма доступности перевода на африканские языки
Изображение: African Languages Lab

Лучшие и худшие чат-боты для кодинга в 2024 году

Редактор издания ZDNet Дэвид Гевиртц провёл исследование и определил, какие чат-боты лучше подходят для программирования. Он выбрал популярные нейросети и дал им четыре одинаковых теста: нужно было написать плагин для WordPress, переписать функцию, найти баг и написать скрипт.

Из платных инструментов лучше всего с тестами справился ChatGPT Plus (включает GPT-4 и GPT-4o). Далее идёт Perplexity Pro. Из бесплатных вариантов все задачи решили ChatGPT 3.5 и Perplexity Free. А вот следующие чат-боты смогли пройти только один из четырёх тестов: Meta* AI, Meta* Code Llama, Claude 3.5 Sonnet, Gemini Advanced. Microsoft Copilot вообще не справился ни с одним заданием.

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

Рейтинг лучших нейросетей для кодинга в 2024 году по версии издания ZDNet
Изображение: David Gewirtz / ZDNet

Чему вы научитесь, создавая свой язык программирования

Разработчица Николь Титц-Сокольская считает, что каждому инженеру стоит попробовать создать свой язык программирования. Это отличный способ многому научиться:

  • Разобраться в грамматике и дизайне языка. Вы можете сделать свой язык императивным, функциональным или объектно-ориентированным — обдумав эти варианты, вы лучше поймёте, почему другие языки устроены именно так.
  • Освоить парсинг. При выборе парсера вы не только познакомитесь с различными подходами к анализу и интерпретации кода, но и поймёте, как программы считывают и обрабатывают команды. Это поможет вам осознать детали, которые раньше могли оставаться незамеченными.
  • Понять процесс выполнения кода. Это означает, что вам придётся написать компилятор и продумать его работу: как он будет обрабатывать ссылки на переменные, определять их местоположение в памяти и решать другие ключевые задачи.

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

Николь Титц-Сокольская

Ваш язык может оказаться неудачным, и это нормально. Важен сам процесс. Николь советует начать с хороших руководств, таких как Crafting Interpreters, Writing An Interpreter In Go или Build Your Own Lisp. Каждая из этих книг поможет вам лучше понять, как работают языки программирования.

Какими качествами должен обладать хороший разработчик и почему дело не только в коде

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

Я работал с людьми, которые, хотя и умели писать надёжный код, отталкивали от себя целые команды из-за своего огромного эго. Я работал со старшими разработчиками, которые не могли написать «Hello, world!» без посторонней помощи…

Перечислим качества, о которых говорил Майкл:

  • Умение эффективно общаться с людьми. Как разработчик, вы должны постоянно взаимодействовать с коллегами, клиентами или пользователями. Поэтому чёткое выражение мыслей помогает избежать недопонимания и способствует успешному решению задач.
  • Мышление роста и готовность делиться знаниями. Открытость к обучению и обмену опытом способствует профессиональному развитию и улучшает рабочую атмосферу в команде.
  • Своевременное обращение за помощью. Хороший разработчик умеет признавать свои ограничения и не стесняется обращаться за помощью, чтобы не затягивать сроки выполнения задачи.
  • Прагматизм. Практичный подход помогает находить эффективные решения в условиях ограниченных ресурсов. Например, прагматичный разработчик не будет создавать собственную библиотеку, если существуют подходящие готовые решения. Он использует то, что доступно.
  • Скромность и эмпатия. Эти качества помогают воспринимать конструктивную критику, извлекать уроки из ошибок и учитывать потребности других людей в процессе разработки.
  • Уверенность в себе. Разработчик должен не бояться принимать решения и брать ответственность за результаты работы в командных и индивидуальных проектах. Ошибки неизбежны, поэтому важно не избегать их, а извлекать из них уроки.
  • Благодарность. Выражение признательности за помощь и поддержку укрепляет рабочие отношения и создаёт дружественную атмосферу в команде.

Как нейросети могут повлиять на вашу карьеру? 25 вопросов для оценки перспектив

Футуролог Томас Фрей составил вопросы, которые помогут оценить влияние нейросетей на вашу работу в будущем. Он рекомендует рассматривать каждый вопрос с двух сторон: положительной и отрицательной. Вот пример: «Какие аспекты моей текущей работы могут быть автоматизированы с помощью искусственного интеллекта?» Возможные ответы:

✅ Автоматизация освободит меня от рутинных задач и даст больше времени для творчества.

❌ Если большая часть задач будет автоматизирована, то меня могут уволить.

Вот ещё примеры вопросов из списка Томаса Фрея:

  1. Какими я обладаю уникальными навыками, которые нейросеть не может воспроизвести?
  2. Может ли искусственный интеллект улучшить или дополнить мою текущую роль, а не заменить её?
  3. Какие новые возможности могут появиться в связи с ростом использования ИИ в моей области?
  4. Как я могу адаптировать свои навыки, чтобы оставаться конкурентоспособным на рынке труда?
  5. Какие сферы моей работы наиболее подвержены автоматизации?
  6. Как изменения повлияют на эмоциональный интеллект и коммуникацию на рабочем месте?
  7. Какие этические вопросы могут возникнуть в моей сфере с внедрением ИИ?
  8. Как изменения могут повлиять на зарплаты в моей сфере?
  9. Как можно организовать эффективное взаимодействие между человеком и искусственным интеллектом?
  10. Как изменения затронут фриланс?

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

Подборка сервисов для архивации вашего цифрового наследия

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

  • The Wayback Machine — бесплатный архиватор веб-страниц. Позволяет сохранить страницу в архиве и получить к ней доступ позже, даже если оригинал исчезнет. Доступны расширения для Chrome, Firefox, Safari, Edge, а также для iOS и Android.
  • Authory — сервис для автоматической архивации вашего цифрового контента: видео, подкастов, постов и электронных писем. Authory сохраняет резервные копии материалов (ссылки и текст), чтобы вы могли получить к ним доступ в случае удаления исходных публикаций. Доступна пробная версия.
  • Journo Portfolio — сервис для создания и управления персональными сайтами-портфолио, где можно размещать статьи, видео и другие материалы. Он предлагает различные инструменты для настройки сайта и включает функцию автоматического сохранения резервных копий. Сервис делает скриншоты ваших онлайн-статей и контента, чтобы предотвратить потерю важных материалов.
  • Conifer — это веб-сервис для архивации, поддерживаемый организацией Rhizome. В отличие от Authory и Journo Portfolio, Conifer архивирует страницы в виде кликабельных «сессий», сохраняя работающие ссылки и интерактивные элементы. Бесплатный план предоставляет 5 ГБ хранилища.

Говорят, скоро нейросети будут писать код. Но что тогда будут делать разработчики?

В распоряжение Business Insider попала запись слов генерального директора Amazon Web Services Мэтта Гармана, где он утверждает, что через пару лет большинство разработчиков перестанут писать код.

Это не значит, что их всех уволят, скорее работа программиста изменится.

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

Представитель AWS Айша Джонсон объяснила, что слова Гармана означают возможность для разработчиков «достичь большего, чем то, что они делают сегодня», с помощью новых инструментов ИИ. Она добавила, что он не хотел уменьшить значимость разработчиков.

Если вы беспокоитесь по поводу развития нейросетей, самое время разобраться в вопросе и посмотреть наши материалы:

Необычные сайты, которые стоит посетить

Chrono Piano — плеер, генерирующий фортепианную музыку на основе текущей даты и времени. Каждая цифра даты и времени соответствует музыкальной ноте: дата формирует бас, а часы и минуты — мелодию.

Как вам идея работать под блюз, который нейросеть создаёт в реальном времени?
Скриншот: Chrono Piano / Skillbox Media

Если музыка вас не интересует, то на этом сайте можно побить ложкой пудинг и записать процесс на видео. Вы можете менять направление удара, регулировать силу воздействия и консистенцию пудинга — увлекательно и бесполезно. Стоит попробовать 🍮

Тот самый пудинг для битья. Он вас ждёт!
Скриншот: oimo.io / Skillbox Media

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

Скриншот: oimo.io / Skillbox Media

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

Интересно, сколько таких айсбергов автор проекта видел в природе
Скриншот: joshdata.me / Skillbox Media

Интересное на Reddit

В сабе Compsci поинтересовались, какие принципы или идеи должно принять как можно большее количество людей. Больше всего лайков собрал ответ «доброта». А вы как считаете?

В сабе ComputerScience спросили: «Что вы знаете о компьютере такого, чего не знает большинство людей?» Вот некоторые из ответов:

  • «Байт не всегда определялся как 8 бит».
  • «Космическое фоновое излучение может случайно перевернуть бит в любой точке вашей системы. <…> Поэтому, если ваш компьютер ведёт себя странно, убедитесь, что причина не в космосе».

В сабе ProgrammingLanguages попросили рассказать о самой прекрасной книге о языке программирования с открытым исходным кодом. Получилась следующая подборка:

  • Pharo by Example 9. Книга посвящена Pharo — современному языку программирования с динамической типизацией.
  • The Rust Programming Language. Это книга для начинающих Rust-разработчиков. Авторы отмечают, что этот язык сочетает в себе противоречащие друг другу свойства: удобство и возможность контролировать низкоуровневые процессы.
  • Beau­tiful Racket. Это книга о языке, на котором создаются другие языки. По словам автора, книга должна стать одной из самых весёлых и интересных книг, а программирование на Racket — самое увлекательное, что когда-либо приходилось делать автору.
  • Crafting Interpreters. Книга посвящена внедрению интерпретаторов и созданию языков программирования. Автор сожалеет, что у него не было такой книги, когда он начинал изучать программирование.
  • Janet for Mortals. Книга о языке Janet, который отличается простотой и практичностью. Janet идеально подходит для исследовательского программирования, написания скриптов и небольших проектов.
  • Thinking Forth. Книга обсуждает подход к проектированию программ, обладающих простой и логичной структурой.
  • Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp. Книга посвящена искусственному интеллекту, навыкам программирования и языку Lisp. В предисловии говорится, что читатель найдёт здесь примеры хорошего кода.
  • Periodic Table of the Operators. Это презентация, в которой собраны и систематизированы операторы языка Perl.
  • The L.i.S.P book and code. Книга о Lisp, Scheme и других родственных им языках программирования.
  • Let Over Lambda. 50 Years of Lisp.В аннотации говорится, что это одна из самых сложных книг о программировании, которая расширяет представления о разработке. Книга посвящена языку Lisp и макросам, то есть программам, которые создают другие программы.
  • OCaml Programming. Учебник по функциональному программированию и структурам данных на языке OCaml.
  • The TEXbook. Пособие по TeX — системе компьютерной вёрстки. Она предназначена для работы с текстами, содержащими сложные наборы символов, например книгами по математике.

Больше интересного про код — в нашем телеграм-канале. Подписывайтесь!


* Решением суда запрещена «деятельность компании Meta Platforms Inc. по реализации продуктов — социальных сетей Facebook и Instagram на территории Российской Федерации по основаниям осуществления экстремистской деятельности».

Изучайте IT на практике — бесплатно

Курсы за 2990 0 р.

Я не знаю, с чего начать
Научитесь: Профессия Python-разработчик Узнать больше
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована