Новое поколение инструментов использует машинное обучение и другие методы для автоматизации частей процесса разработки программного обеспечения. GitHub, например, в прошлом месяце запустил такой инструмент, который предлагает код, пока программист его разрабатывает. Amazon также создал CodeGuru — инструмент, который помогает автоматически находить узкие места в производительности программного обеспечения. У Facebook есть Aroma , который также может давать рекомендации по кодированию. Моя собственная команда в Intel Labs создала инструмент (в настоящее время только для внутреннего использования), который автономно обнаруживает ошибки в коде.
Такой вид автоматизированного кодирования называется «машинным программированием». Одна из его наиболее интересных возможностей — «семантическое сходство кода», которое пытается автономно определить, демонстрируют ли два фрагмента кода схожие характеристики или достигают схожих целей. Это стало возможным только недавно благодаря достижениям в области вычислений, доступу к « большим данным кода », таким как новый Project CodeNet IBM / MIT, который включает примерно 14 миллионов образцов кода, и новым алгоритмам машинного обучения.
Используя силу семантического сходства кода, отрасль может разрабатывать автоматизированные системы, чтобы помочь ИТ-директорам гарантировать, что команды разработчиков поддерживают одинаковый уровень производительности, несмотря на возросшую сложность программного и аппаратного обеспечения, при этом устраняя нехватку талантов разработчиков программного обеспечения и борясь с выгоранием.
Включение языкового перевода
Сходство семантики кода можно также использовать в инструментах, которые переводят между языками программирования (например, транспиляторах). Исторически сложилось так, что программные системы, конвертирующие исходный код программы с одного языка программирования на другой, были недоступны. Однако недавние достижения в области транспиляции могут иметь решающее значение для крупных глобальных организаций, которые традиционно используют более специализированные унаследованные языки.
Представьте себе мир, в котором вместо того, чтобы тратить много лет на ручной перевод банка кода всей организации с COBOL на Python, система машинного программирования могла бы сделать все это за вас — всего за несколько дней. Первые такие системы уже существуют и даже используются сегодня в некоторых технологических компаниях, таких как Adobe. Например, Adobe Photoshop, насколько я понимаю, использует проверенный лифтинг для преобразования C / C ++ в Halide в своей текущей версии.
Системы подобия семантики кода, такие как сходство кода, предполагаемое машиной (MISIM), не только помогут организации обновить всю свою систему кода; они также откроют резерв талантов. Обновление кодовой базы организации до современного языка программирования со старых унаследованных языков, которые менее понятны сегодняшним разработчикам программного обеспечения, упростит набор персонала, поскольку все больше разработчиков знакомы с этими новыми языками (например, переход с FORTRAN на Python). ИТ-директора могут даже увидеть сокращение ошибок кодирования, потому что с языками новой эры, как правило, легче работать, и они справляются с большей частью сложной системы внутри компании.
Повышение уровня начинающих разработчиков, помощь в заполнении пробелов в разработке
Системы подобия семантики кода также могут рекомендовать код. Co-Pilot GitHub, о котором я упоминал ранее, например, предназначен для того, чтобы узнать, какова цель части программного обеспечения, а затем рекомендовать улучшенные (или более полные) версии в помощь разработчику.
При полной реализации такие системы рекомендаций по коду могут повысить качество программного обеспечения и продуктивность как новичков, так и опытных разработчиков, предоставляя им улучшенные альтернативы. В конечном итоге это поможет ИТ-директорам и их ИТ-отделам удовлетворить потребности в программном обеспечении, не нанимая дополнительных сотрудников или не тратя деньги на новые ресурсы. Идея этих систем рекомендаций заключается в повышении продуктивности всех разработчиков.
Системы семантического сходства также могут работать в тандеме с разработчиками для автономного обнаружения ошибок в коде.
Суть
Сфера разработки программного обеспечения усложняется из-за неоднородности программного и аппаратного обеспечения. Также ожидается, что команды разработчиков будут производить программное обеспечение все более быстрыми темпами. Машинное программирование может быть единственным жизнеспособным с финансовой точки зрения способом продвижения вперед для ИТ-директоров и разработки программного обеспечения, которое они контролируют. Так что сейчас самое время начать тестирование новых инструментов машинного программирования и посмотреть, как лучше всего реализовать их в своей организации.
Джастин Готчлих основал и возглавляет исследовательскую группу по машинному программированию в Intel Labs . Он также является главным исследователем и соучредителем совместного исследовательского центра Intel / NSF CAPA. В академических кругах он был назначен председателем промышленного консультативного совета и исполнительным директором центра PRECISE при Пенсильванском университете (Пенсильвания), а также является адъюнкт-профессором Пенсильванского университета на факультете компьютерных и информационных наук.
Будьте в курсе в удобном формате, присоединяйтесь: TG-канал и ВК