Каким должен быть язык программирования? Анализ и критика Описание языка Компилятор
Отечественные разработки Cтатьи на компьютерные темы Компьютерный юмор Новости и прочее

Программирование исчезнет. Будет дрессировка нейронных сетей

Представляю Вашему внимаю футуристический прогноз из «Форбса». Этот прогноз не основан на каких-то математических выкладках. А потому может быть признан спорным. Однако задуматься он заставляет.

            Меня волнует одна проблема... Нужно ли мне учиться программировать? Или передать разработку на аутсорсинг? Нужно ли мне изучать компьютерные дисциплины? Такие вопросы задают себе многие начинающие предприниматели. Ещё в 2014 г. в статье «Нужны ли нам уроки информатики?» я решительно отвечал, что изучать компьютерные науки нужно и нужно уметь программировать. Этот основной тезис звучал повсюду — от Билла Гейтса до эстонского правительства, призывавшего студентов учиться программированию.
Программирование исчезнет. Будет дрессировка нейронных сетей


            Возможно, это была хорошая идея в эпоху, когда облачные вычисления позволили двадцатилетним парням создать Facebook. В последние годы ПО действительно поглотило мир, как заявили Бен Хоровиц и основатель Netscape Марк Андриссен: сегодня мы вызываем такси от Uber, смотрим фильмы на Netflix и т.д.

            Четыре из пяти крупнейших по рыночной капитализации компаний в США — это производители ПО. Казалось, что информатика или, по крайней мере, «умение писать код» — это волшебный способ стать «следующим Марком Цукербергом». Или, если со стартапом ничего не вышло, можно выбрать протоптанный и необременительный путь из колледжа прямо к шестизначной зарплате в Кремниевой долине.

            Вскоре появились буткемпы — курсы для программистов. Они обещали, казалось, невозможное — должность разработчика ПО в Сан-Франциско через несколько месяцев обучения вместо четырех лет традиционного образования. К тому же с потоком венчурных долларов, льющимся в стартапы ($47,2 млрд в 2015 г.), в высокотехнологичных компаниях спрос на разработчиков был всегда избыточен.

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

            Похоже, что мир технологий переживает фундаментальные изменения. По словам основателя AOL, «вторая волна технологий» 2000-х и 2010-х годов, основными символами которой были Facebook и Google, уступает место проблемам, которые не могут решаться использованием только «кода». Эти новые проблемы создадут новую волну стартапов, которые будут строиться в первую очередь на управлении информацией, в значительной степени регулироваться правительством, укоренятся в физическом мире и таких отраслях, как сельское хозяйство, образование и финансы.

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

            Уже сейчас мы наблюдаем сокращение рабочих мест в области разработки ПО. По словам компьютерного учёного Мартина Форда, автора книги «Роботы наступают», ныне кандидатов на позиции разработчиков на 50% больше вакансий. Многие лагеря программирования закрываются. Разработчики ПО переквалифицируются на другую работу или занимаются фрилансом, конкурируя с миллионами зарубежных фрилансеров.

            В конце концов, если Вам нужно создать прототип iOS-приложения, всё, что Вам нужно, — просто следовать инструкциям из онлайн-учебников. Зачем платить $100 тыс. разработчику из Кремниевой долины, когда сотни фрилансеров с радостью напишут вам приложение за $15 тыс. в Индии? Офшоринг — это лишь предшественник автоматизации.

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

            Учитывая всё это, возникает вопрос: стоит ли молодым людям «учиться программировать»? В ответе на этот вопрос много аспектов. Программирование в каком-то отношении всегда будет необходимо, ведь машинное обучение не может заменить всё. Но просто умение писать приложения для Android не дает вам конкурентного преимущества над остальными в этом технологическом мире, где каждая программная идея уже была реализована десятью программистами до вас. И все же, с точки зрения образования, важно ли, чтобы студенты понимали основы работы ПО? Безусловно.

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

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

Опубликовано: 2019.09.01, последняя правка: 2019.09.01    17:42

ОценитеОценки посетителей
   ██████████████████████████████████████████ 1 (100%)
   ▌ 0
   ▌ 0
   ▌ 0

Отзывы

     2019/09/12 22:09, Александр Коновалов aka Маздайщик          # 

Про нейросети и программирование могу сказать вот что. Есть плагин автодополнения Deep Tab Nine, который для подсказок, как утверждается, использует нейросети. Есть его варианты под разные IDE, я им пользуюсь под IntelliJ IDEA, но это не суть.

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

Плагин изначально обучен на миллионах репозиториев GitHub’а (ну, они так утверждают) для пары десятков популярных языков программирования (C++, Java, Python, Bash и т.д.). Но также может обучаться и на открытом в IDE проекте.

Суть. Суть в том, что с ним очень забавно программировать. Пишешь, он тебе подсказывает, а ты смотришь и офигеваешь, как он угадывает, что ты напишешь потом. Или как не угадывает, а ведёт в сторону. И этот «диалог» очень и очень забавляет.

В частности, писал на C++ вызов функции WinAPI FormatMessage(). У неё один из параметров задаётся несколькими флагами с длиннющими именами вроде FORMAT_MESSAGE_ALLOCATE_BUFFER. Одно из её основных применений — перевод кода ошибки GetLastError() в человекочитаемую строку. Я её, собственно, для этого и вызывал. И я, очевидно, не первый, кто это делал. Поэтому плагин, обученный на миллионах репозиториев, мне подсказал практически все параметры.

Ещё я решил написать функцию strcpy_s, которая отличается от стандартной strcpy тем, что принимает третий параметр с максимальной длиной буфера-приёмника. Почти всю функцию плагин за меня «написал». Тоже, очевидно, потому, что задача до меня писалась сотни раз. Кстати, эта функция мне потом не понадобилась и я её удалил.

Код на Рефале он тоже подсказывает, подсказывает неплохо, но примечательных историй я вспомнить не смог. Но он подсказывает код на Рефале!

Некоторые следствия:
• «Диалог» с автодополнением немного отвлекает, что приводит к синтаксическим ошибкам.
• Если плагин хорошо подсказывает, значит ты пишешь boilerplate-код (шаблонный, штампованный, не знаю хорошего перевода). В том смысле, что энтропия этого кода мала, он очень хорошо предсказывается, в нём есть невыявленные абстракции. Т.е. надо остановиться и подумать, можно ли этот код как-то абстрагировать, выделить общую логику или общий шаблон куда-то вон. Если даже тупая нейросеть знает наперёд, что ты напишешь, значит ты говнокодишь, пишешь по много раз одно и то же. Надо остановиться и подумать.

Недостаток плагина — он требует дофига памяти. На машине с 8 Гбайт ОЗУ работает нормально, с 4 Гбайтами — уже нет, начинает свопить.

     2019/09/13 14:02, Автор сайта          # 

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

     2019/09/13 13:56, kt          # 

А может это просто закон больших чисел? А промахи мы не просто не замечаем? Вот у меня сейчас прошла реклама «гражданство Перу за 6000». Поверьте, я ни сном, ни духом... А вот запрос какого-либо товара или услуги — это да. Потом замучит реклама. И главное — нет кнопочки «я это уже купил, меня это больше не интересует». Хотя могли бы проверить финансовые траты и сделать такой вывод...

     2019/09/13 16:38, Автор сайта          # 

это просто закон больших чисел?

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

Добавить свой отзыв

Написать автору можно на электронную почту mail(аt)compiler.su

Авторизация

Регистрация

Выслать пароль

Карта сайта


Содержание

Каким должен быть язык программирования?

Анализ и критика

Описание языка

Компилятор

Отечественные разработки

Cтатьи на компьютерные темы

●  Двадцать тысяч строк кода, которые потрясут мир?

●  Почему владение/заимствование в Rust такое сложное?

●  Масштабируемые архитектуры программ

●  Почему Хаскелл так мало используется в отрасли?

●  Программирование исчезнет. Будет дрессировка нейронных сетей

●  Бесплатный софт в мышеловке

●  Исповедь правового нигилиста

●  Русской операционной системой должна стать ReactOS

●  Почему обречён язык Форт

●  Программирование без программистов — это медицина без врачей

●  Электроника без электронщиков

●  Программисты-профессионалы и программирующие инженеры

●  Статьи Дмитрия Караваева

●●  Идеальный транслятор

●●  В защиту PL/1

●●  К вопросу о совершенствовании языка программирования

●●  О реализации метода оптимизации при компиляции

●●  О реализации метода распределения регистров при компиляции

●●  О распределении памяти при выполнении теста Кнута

●●  Опыты со стеком или «чемпионат по выполнению теста Кнута»

●●  О размещении переменных в стеке

●●  Сколько проходов должно быть у транслятора?

●●  Чтение лексем

●●  Экстракоды при синтезе программ

●●  Об исключенных командах или за что «списали» инструкцию INTO?

●●  Типы в инженерных задачах

●●  Непрерывное компилирование

●●  Об одной реализации специализированных операторов ввода-вывода

●●  Особенности реализации структурной обработки исключений в Win64

●●  О русском языке в программировании

●●  Формула расчета точности для умножения

●●  Права доступа к переменным

●●  Заметки о выходе из функции без значения и зеркальности get и put

●●  Модификация исполняемого кода как способ реализации массивов с изменяемыми границами

●●  Ошибка при отсутствии выполняемых действий

●●  Скорость в попугаях

●●  Крах операции «Инкогнито»

●●  Предопределённый результат

Компьютерный юмор

Новости и прочее




Последние отзывы

2019/11/09 21:27 ••• kt
Программирование без программистов — это медицина без врачей

2019/11/07 10:58 ••• kt
Признаки устаревшего языка

2019/10/28 23:55 ••• Автор сайта
Типы в инженерных задачах

2019/10/15 16:32 ••• kt
Модификация исполняемого кода как способ реализации массивов с изменяемыми границами

2019/10/07 14:15 ••• Автор сайта
О наименовании проекта и языка программирования

2019/09/19 15:23 ••• kt
Некошерный «goto»

2019/09/13 16:38 ••• Автор сайта
Программирование исчезнет. Будет дрессировка нейронных сетей

2019/09/12 20:40 ••• Александр Коновалов aka Маздайщик
Циклы

2019/08/30 07:57 ••• Noname
Почему обречён язык Форт

2019/08/29 09:07 ••• рст256
Устарел ли текст как форма представления программы

2019/08/19 19:19 ••• Автор сайта
Шестнадцатиричные и двоичные константы

2019/07/30 14:06 ••• Александр Коновалов aka Маздайщик
К вопросу о совершенствовании языка программирования