Фантастика программирования

Автор: wayerr

Это не футурология, поскольку планка у футурологии поболее, а кроме того, интересно не "как будет", а "как могло бы быть".

Сразу скажу, что тема "программистов скоро заменит машина" и аналогичные - стара, как само программирование. Причём на всех уровнях, уже в 90е пытались реализовать эти идеи, а ведь ещё раньше их просто думали!

Но как видно, программисты всё ещё нужны.

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

Потому что у нас есть примерно такая цепочка: заказчик - аналитик - архитектор - кодер. (А ещё есть тестировщики, всяческие специалисты по UI и т.п.)

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

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

ИИ может заменить в какой-то там далекой перспективе ну кодера.  Остальным ИИ может только лишь ассистировать.

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

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

Тестировщиков и т.п. заменить так же не получится - так как системы написанные для людей просто о определению тестировать приходится людям. Всё что можно автоматизировать там давно автоматизируется. ИИ тут опять же не заменяет, а может ассистировать.

В итоге, если мы представит максимально футуристичное программирование, которое хоть как-то работает, то у нас получится набор программистов:

- аналитик, который занимается "переводом" хотелок заказчика с разговорного на формальный язык ТЗ. 

- архитектор, который проектирует систему под это ТЗ.

- небольшой штат высококвалифицированных программистов, которые помогают ИИ реализовывать нестандартные решения

- тестировщики, девопсы и т.п.

Такая схема ничем толком не отличается от нынешней небольшой конторы. Потому что задачи не меняются.

Архитектор от общения с заказчиками поседеет и уедет нафиг лечить нервы. Если ИИ дорастёт до замены архитектора, то он дорастёт и до эквивалента человеческого разума. 

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

Нестандартные решения - занимают 80% времени разработки. Всё что стандартно давно есть в библиотеках программирования и наваливается чуть ли не автоматически. (А то и готовое.) Можно посмотреть кучи обучающих видео - пока задачи не выходят за границы шаблона, то программирование легко и быстро. Но в реальности всё не так.

Ладно, команда разработки выглядит как-то не футуристично. Хотя там все будут телепатически общаться с ИИ, носить импланты и всё такое прочее. Но в целом всё по старому. 

Может язык программирования станет футуристичным, в картинках?

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

Проблемы у этого:

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

- Программа на кубичках выглядит просто и наглядно, пока там полтора кубичка. Как-только кубичов становится больше, то всё быстро запутывается больше, чем текстовый код, например вот в блендере: https://author.today/post/428901 - схема на третьем скриншоте в виде текста ну заняла бы полтора экрана примитивного кода. (У меня есть эпическая схема генерации города, там вообще мрак.)

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

Ну хорошо, картинки не подходят, а просто программы на человеческом языке?

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

Ну хоть чуть-чуть?

Комичным примером хоть чуть-чуть человеческого языка программирования является SQL:

в 1973 году, Чемберлин и Бойс начали работу над совершенно новым языком, который был назван SEQUEL (от Structured English QUEry Language, «английский язык структурированных запросов»). Авторы надеялись, что после небольшой практики даже пользователи-неспециалисты (например, бухгалтеры, инженеры, архитекторы, градостроители) смогут читать запросы так, словно последние написаны на обычном английском языке. Язык был назван «декларативным», поскольку он описывал желаемый результат, а не детальный план поиска этой информации.

Лет десять назад мы занимались разработкой генератора запросов на SQL, который выдавал запросы в пяток экранов (есессно с подзапросами, функциями и прочими фишками). Есессно, такой хтонический трындец не то что бухгалтеры читать не смогут, это даже мы читали с трудом и часами, когда там генерировалось "что-то не то". 

И сейчас в почти любом крупном и среднем проекте SQL не используется напрямую, а через "упрощающие" прослойки. При том, что сам по себе язык то прост, пока задача стандартная, а как только задача не стандартная, то ой. А как я уже не раз писал, они всегда "нестандартные".

С другой стороны, тенденции к ктулхизированию языков (превращению в нечитабельную хренопись из небуквенных символов) программирования тоже нет. Для ценителей давно есть perl и более загадочные штуки. А программирование давно и прочно ушло в массы,  с одной стороны. То есть требуется небольшой порог входа. С другой, философы процесса разработки ПО, давно уяснили, что программный код должен быть понятным, однозначным и т.п. То есть тут с одной стороны "давит" понятность, с другой стороны "выразительность" - и широкие языки программирования (высокого уровня, есессно) балансируют посередине.

И нет никаких признаков, что тенденция когда-либо поменяется. Так что в фантастике не обязан быть жаваскрипт (ха, исходный он кстати весьма не очевиден из-за прототипов) или сишарп, но что-то похожее по уровню. Может с квадратными скобочками вместо фигурных, может не на базе английского, а на базе египетских иероглифов (иероглифы это кстати не очень удобно - давать имена объектам муторно). Может с большей примесью функциональщины или вовсе на прототипах - ООП то популярно именно из-за исторических предпосылок и интуитивности. 

Но в любом случае это будет тарабарщина для специалистов, а не для широкой публики.

+86
258

0 комментариев, по

2 323 425 206
Наверх Вниз