"Твоим часам не хватает двух камней."
детская шутка
Сколько статей уже написано на тему ИИ и том месте, которое он займёт в ИТ индустрии. Вроде бы всё уже обмусолено, обсосано по несколько раз, Но оставалось ощущение какой-то неполноты, чего-то в картине будущего не хватало. А не хватало как раз реального настоящего.
В очередной раз, вырываясь из лабиринта чужого кода и задумываясь о том, что в аду программистам выделен отдельный опен-спейс. Задумался о бренности собственных усилий. Потому как правда жизни любого программиста такова:
а) алгоритм работы программы меняется безостановочно и часто до строго противоположной логики
б) любая программа содержит ошибки
в) ревьювить чужой код - сомнительное удовольствие
И если хорошенько прикинуть, то 90% программирования состоит из: переделки кода под новые требования, фикс старых и новых багов ну и брожения по лабиринту чужого "я творец я так вижу".
Мои выводы таковы:
1. Сможет ли с этими задачами справиться современный ИИ или ИИ ближайшего будущего (5-10 лет)?
- Думаю, что нет.
2. Сможет ли ИИ когда-либо выполнять такие задачи в значимых объёмах?
- Сомневаюсь. Чтобы это стало возможным, видимо, большая часть программ должна быть написана самим ИИ.
Комментарии
Большинство "программистов" заменит. При грамотном подходе и переводе программирования на ассемблер можно уменьшить размер программ в десятки и сотни раз, увеличив при этом радикально скорость работы этих программ. То. что сейчас называют программированием, в большинстве случаев к оному не имеет никакого отношения.
> Твоим
часампроцессорАМ не хватает двух камней [со шрифтАМи]Уже заменило_О оно, кожаннные мешочки с #вголовесбезмозгами.
это относится, в основном, к вычислительным алгоритмам
Скорость при переводе на асм? Трудозатраты увеличить - как с куста, время разработки - на порядки, скорость? - Значимо только если речь про интерпретаторы и р-code языки. Вот только пока вы на асме будете "строить велик", на других ЯП уже перейдут к галактической экспансии.
Первый раз на моей памяти профессию программиста стали хоронить когда высокоуровневые ЯП пошли в шир.нар.массы.
Второй раз когда Wisiwyg стали применять как инструмент построения форм, меню, отчетов (например в FoxPro2)...
дальше понял что считать глупо.
> Скорость при переводе на асм?
Зависит от.
> Трудозатраты увеличить - как с куста, время разработки - на порядки
Ты вообще понял, о чём тут народ говорит? Какие трудозатраты, ты чего несёшь? При написания программы с помощью ИИ трудозатраты состоят не в корябании кода, а в формулировки задания. Всей разницы в написании иишкой кода на плюсах и на асме, это в задании сказать "на асме" вместо "на плюсах".
> когда высокоуровневые ЯП пошли
> Wisiwyg стали применять
А ты попробуй. Ни высокоуровневые, ни визивиги не избавляли от написания кода, только облегчали процесс. Что, кстати, автоматически вело к увеличению объёма кода, то есть нагрузка повышалась. А вот иишка реально пишет код вместо тебя. Так что проснись, в этот раз оно реально заменит. Не всех, но 90% программистов станут не нужны. Скажи любому доступному чатжпт примерно следующее: "программа на спп, читающая из файла массив строк, разделённый на поля разделителем в виде символа ";", сортирующая его по второму полю и выдающая в стдоут результат сортировки". И он тебе за секунду выдаст рабочий код. Компилируй и применяй.
Ну, если по-вашему указанное - это и есть работа разработчика, то оно конечно.
Не надо вилять тухесом. Речь шла не о замене "разработчика", а о замене "программиста". Программист, это очень широкое понятие. В него входят и кодемонкейз. И их - абсолютное большинство. И именно их иишка заменит в ближней перспективе. А разработчик, тем более архитектор, собственно, принципиальных изменений и не ощутит. Он и раньше ставил задачу кодерам, так и продолжит ставить задачу искуственному кодеру.
Написание программы с помощью ИИ это просто язык еще более высокого уровня чем питон. В этом языке ты даже алгоритм не описываешь, а просто задаешь общие цели. в результате ты получишь программу еще более медленную чем на питоне, но зато процесс разработки еще проще чем на питоне. Разница между питоном и ИИ такая же как между асемблером и питоном. Писать на питоне быстрее и легче чем на ассемблере , зато программы получаются более медленные и объемнее.
Тоже самое с ИИ. писать на ИИ быстрее и легче чем на питоне, но программы получатся еще медленнее и объемнее чем на питоне.
ИИ это развитие языка программирования до такого уровня, чтобы на нем писать мог вообще любой, практически без подготовки. Цена этого объем программы и скорость работы.
Не смотря на появление языков высокого уровня, ассемблер никуда не исчез. потому что его скорость и объем кода часто востребованы. точно также с появлением ИИ никуда не исчезнут языки высокгого уровня, по тем же причинам. Ими будут пользоваться когда нужны будут скорость и объем программы.
Но есть один нюанс... Во времена когда появились языки высокого уровня, скорость работы компьютеров росли в геометрической прогрессии. за год, скорость увеличивалась в 2 раза. поэтому уменьшение скорости работы программы было не так критично. это компенсировалось увеличением производительностью компьютера. А вот сейчас, производительность компьютеров практически не растет. и уменьшение скорости работы программы написанной на ИИ будет уже критично.
Языки высокого уровня бывают разные. На Си++ тоже писать быстро. И программы получаются очень быстрые. И даже компактные.
Си++ на один порядок выше по уровню чем ассемблер. А вот Visual си++, delphi - выше уже на 2 порядка... А ИИ - еще выше, еще проще, еще объемней и еще медленней.
> еще объемней и еще медленней.
Ты совсем глупый? ИИ генерирует код на языке программирования. Который компилируется в исполнимый код абсолютно так же, как код, написанный человеком. Вот только современные обезьянки ан масс ниасиливают плюсы и потому в моде пайтон, который даже не монти. Один и тот же алгоритм, реализованный на плюсах и на питоне даст исполнимый код, работающий с очень разной скоростью. Так что применение ИИ только увеличит оптимальность программ уже просто из-за использования тех же плюсов или вообще сей. Код на Си ещё более шустрый, чем на СПП в общем случае.
Так тоже самое, язык си генерирует код на языке асемблере. а тот в свою очередь переводит в машинные коды. вот только код на ассемблере который сгенерировал си, всегда медленней и больше чем тот же код на ассемблере который написал человек. Почему ты думаешь что с ИИ будет иначе.
Ты не бот, боты такими тупыми не бывают. ИИ пишет код вместо человека. Все прежние технологии не писали код вместо человека, максимум, что они могли, это применить шаблоны, облегчающие рутину. Код писать приходилось самому. Даже хелловорлд. Сейчас ИИ генерирует готовый к компиляции (или исполнению через интерпретатор) код. На любом известном языке. Код, в среднем, не хуже, чем способен написать среднеарифметический кодер. Компилятор не отличит код, написанный ИИ, от кода, написанного человеком.Исполнимый код из исходного кода, написанного ИИ, будет принципиально такой же, как исполнимый код, сгенерированный из исходного кода, написанного человеком.
Ещё раз: ИИ сам пишет код. Понимает расплывчатые и корявые задания на человеческом языке и выдаёт готовый код, вплоть до готового программного комплекса. Пока ещё программист-кодер нужен для исправления недочётов и ошибок в том, что выдаёт ИИ. Но чем дальше, тем лучше ИИ справляется.
Ты очень хорошо думаешь о ИИ. ты наверно думаешь что компьютер сам и в шахматы играет и выигрывает у чемпионов. Хочу тебя разочаровать. Это не так. У ИИ есть готовые шаблоны (очень много шаблонов) которые в среднем не хуже чем способен написать среднеарифметический кодер, потому что они среднеарифметическим кодером и написаны. И ИИ выбирает из них подходящий код. Иногда находит подходящий, иногда не угадывает.
Ну а компилятору конечно похрен кто написал этот код, и качество кода, тоже похрен. Лишь бы ошибок написания не было. Его задача компилировать.
Точно так же он играет в шахматы. в его базе есть десятки миллионов партий. Он находит подходящую комбинацию и ходит так же как тогда походил человек. Если подходящей комбинации не находит, то начинает страшно тупить...
Точно так же делает любой ИИ. Он находит ответ, или статистику ответов, которые люди отвечали на этот вопрос и отвечает так же.
не надо приписывать ИИ то чего он делать не может.
Уже практически всегда наоборот. Человек пишет так, чтобы было удобно читать. Компилятор экономит или такты или байты. Нынче часто эффективнее сделать код больше, но быстрее (например, цикл лучше разворачивать).
Почему же тогда программы на ассемблере работают быстрее чем на си? А на си, в критических местах делают ассемблерные вставки для ускорения кода?
В основном, потому что в них нет 99% того, что делают программы на Си (это если про КолибриОС).
Или не работают. Это если сравнивать grep.asm c ugrep, например. Ой, ugrep на Си++, ну тогда с GNU grep.
Потому что в ассемблере бывают команды, которых нет в Си. И нынче уже не делают вставки, а вызывают соответствующие функции типа __builtin_ia32_movsldup
Именно поэтому у меня среди знакомых самый высокооплачиваемый разработчик это тот который пишет на C
генерирует asm, потом часть кода на С заменяет асемблерными вставками, ибо компиляторы зачастую такую дичь творят.
Про разные стандартные либы (типа STL в плюсах) он вообще без мата не говорит.
Про все пропало, поезд уходит я уже понял. ))
> пишет на C генерирует asm, потом часть кода на С заменяет асемблерными вставками
Такие птицы очень редки. Да просто потому, что в абсолютном большинстве случаев программазма на оптимизацию всем плевать. Там, где не плевать, текущий уровень ИИ ничего не изменит. Речь идёт о 90% кодеров. Их иишка заменит легко и красиво. Девяносто не равны ста процентам, нес па? Зачем приводить единичный пример и кричать что раз этот единичный пример не удовлетворяет условиям задачи, то этим условиям не удовлетворяет никакой пример?
Плохих программистов заменит, хороших нет. Потому что ИИ программирует на уровне плохих программистов.
Плохих бухгалтеров заменит, хороших нет,
плохих юристов заменит, хороших нет.
Плохих менеджеров заменит, хороших нет.
Плохих писателей, художников, водителей, продавцов, переводчиков итд заменит, хороших нет.
Потому что ИИ может что то делать на уровне плохого специалиста. но на этом уровне он работать действительно может, и его работа на много дешевле чем работа плохого специалиста но человека.
Проблема только в том, что хорошим специалистом по любой специальности не становятся сразу. сначала человек будет плохим специалистом, потом учится и только через какое то время становится хорошим специалистом. А теперь ему ИИ перекроет возможность какое то время быть плохим специалистом. Нужны сразу хорошие, а так не бывает.
нет
никогда
писатель, художник - творческие профессии
ИИ в творчество не может, абсолютно
предвижу возражения типа "а как же DALL-E, вон как классно рисует!"
рисует, может, и классно, но задание нарисовать - ему даёт человек!
и зачастую проще взять фломастер и нарисовать на бумажке, чем объяснить ИИ, что же ты хочешь увидеть
сам себе он никакого задания не даст, поэтому человека - не заменит
Уже. На англоязычных сайтах множество литературы с тегом ai-assisted.
Изображения — аналогично.
Это если ты хочешь увидеть что-то конкретное. Возьмите любую обложку книги жанра фантастики. Или логотип организации. Или даже картинку вверху по центру этого сайта. ИИ такое сварганит с лёгкостью.
Ну вообще то нет, просто его специфика. Да и пишет он под не стандартное железо под которые заточенны компиляторы.
Ну и специфика деятельности та где время выполнения. деньги.
Зачастую оптимизация вообще лишена смысла.
Мне надо один раз перенести зону dns от одного провайдера к другому, один умеет экспортить bind9 конфиг
второй умеет api по http
через 15 минут скрипт из баша jq и такой то матери переливает данные из пункта А в пункт Б
по результату код тупо гдето лежит пока при очередной уборке рабочего места не будет выкинут окончательно на помойку.
Смысл оптимизировать 0. Дешевле с нуля новый написать.
Для начала ей нужно научиться держать контекст, а не 10 - 20 строк тупого кода.
Пока этого не случится, замена не прокатит. А случится это еще ой как не скоро ))
> Написание программы с помощью ИИ это просто язык еще более высокого уровня чем питон
НетЪ. Это уже принципиально иной уровень. Мой пример предельно упрощён для наглядности. Продвинутый ИИ уже сейчас позволяет писать не кусочки кода, а готовую программу по вот таким расплывчатым заданиям на человеческом языке. Да, насколько я в курсе, пока не позволяет создавать действительно крупные системы, но задачи уровня "сайт для веб-магазина на тысячу позиций и сто посетителей в день" или "документооборот конторки в десять сотрудников" может уже сейчас, насколько я понимаю ситуацию. Ну, то есть пока это уровень самых продвинутых ИИ, но дело движется к тому, что и общедоступные выйдут на этот уровень в ближайшее время.
> программы получатся еще медленнее и объемнее чем на питоне.
С чего бы? Задавай целевым языком не этот сратый питон, а те же плюсы, и при среднем качестве кода будешь иметь в разы более оптимальный бинарник. Ну и ещё соображение - ИИ намного легче применять более трудоёмкие, но более оптимальные методы кодирования в каждом конкретном случае, чем человеку. Тут, конечно, всё в самом начале, но ИИ спокойно может написать, например, кейс на десять тысяч вариантов вместо продвинутого сравнения, или вместо цикла сто тысяч сложений. Это человек от такого охренеет, а железяке пофиг, но выполняться такое будет на порядок быстрее.
Не, ИИ - Это интерпритатор над интерпиритатором. Это следующий этап развития.
Задача ассемблера переводить то что написал программист в машинные коды, которые понимал компьютер.
Задача си++ переводить то что навоял там программист в ассемблер. Код получался больше и медленней чем а в ассемблере, но скорость программирования увеличивалась. а уже ассемблер переводил все это в машинные коды.
Visual си++, delphi - переводил код в СИ++ (более медленный и объемный чем просто на си++) он в свою очередь в асемблер а тот уже машинные коды.
ИИ переводит то что наговорил ему программист в Visual си++ (еще более медленный) тот переводил в Си++, а тот в свою очередь в Асемблер и далее в машинные коды.
Все это по принципу стихотворения "в доме который построил Джек"
Каждая итерация упрощает работу программиста за счет уменьшения скорости работы и увеличения объема программ.
А можно не скромный вопрос, вы чем на хлеб с маслом зарабатываете? ))
Это действительно не скромный вопрос. А зачем тебе?
Я не вам, я апологету "ИИ" которое всех заменит. ))
Не программированием.
а вот внезапно, уже при работе скомпилированной программы, вдруг окажется, что в какой-то ситуации сложений должно быть - сто тысяч одно...
эпик фейл!
Я давно говорю, современный ИИ умнее 90% современных людей. Ты в эти 90 входишь. В моём задании было сказано "программа на спп". А ты что выдал? Ты в курсе, что sort, как все базовые юниксовые проги, написан на сях, а не на плюсах?
Хамить не нужно, вообще то код на C компилятором C++ скомпилируется.
Оно как бы является подмножеством ))
В промпте я не заметил указаний на то что должны использоваться все возможности C++
cat отсюда можно убрать, это так, для наглядности.
Исходный промт я вам решил в абсолютной точности. Единственная не точность я вам код не выдал, а выдал бинарь.
Мог бы просто кинуть ссылку на исходники sort с указанием опций командной строки для достижения вашего результата.
Мог бы выдать кусок кода из примера выше
> код на C компилятором C++ скомпилируется
Но код на Си не является кодом на СПП. В данном примере железка выдаст код, в котором вывод в стдоут будет реализован не оператором printf, а оператором std::cout. Я же говорю, железка уже умнее тебя, она не станет капризничать и дурочку включать вместо решения задачи. Не станет жульничать и гнать демагогию чтобы поласкать свои амбиции или избежать неприятностей. Её попросят дать код, она даст код. Чтобы она дала пример использования готовой программы, её об этом надо попросить.
> Исходный промт я вам решил в абсолютной точности.
Не решил. Хуже того, принялся отказываться от решения задачи, выдавая ложь.
Мда, это не лечится.
Если человек дурак, то это навсегда.
Ты наглядная иллюстрация эффекта Даннинга-Крюгера. Дурак, не могущий осознать, что он дурак, потом что он - дурак.
разделитель не тот прочитал, ну не суть.
тут нечего программировать, от слова совсем.
когда мне ИИ даст похожий ответ, тогда я задумаюсь
а вы подумайте над другим, что скармливают нейросетке в процессе ее тренировки, откуда база и тд.
Упрощу, есть функция которая "умеет писать код" которая получилась путем тренировки на куче кода, в котором есть ошибки (баги)
вопрос: процент количества ошибок в генерируемом коде будет выше или ниже чем в исходных данных?
> когда мне ИИ даст похожий ответ, тогда я задумаюсь
Не поможет. Чтобы ИИ дал такой ответ, ему надо дать несколько иное задание. Типа "я выдаю программой cat в stdout файл, состоящий из строк, с разделителем ",", надо этот вывод отсортировать по второму полю".
> процент количества ошибок в генерируемом коде будет выше или ниже чем в исходных данных
Не выше. По моим наблюдениям.
Ну ок, мои наблюдения строятся на том что я вижу.
А вижу я около 80 разработчиков в разных секторах экономики, вижу их результаты (да, подписка на кодогенераторы давно есть)
Так же вижу 6 железяк в каждой из которых от 2 до 4 видеокарт, с суммарным озу гдет под 400 гигов
ах да, ml моделей сколько то, около 80 терабайт данных для их обучения (оно постоянное, в динамике)
результаты тоже вижу, ну в принципе отбивается по деньгам. И да, я еще могу диф сравнить, до и после.
Особой разницы пока я не вижу. А вот эти ваши примеры, еще раз: Когда мне нейросетка укажет на проблему в моей постановке вопроса, а не сгенерирует бред который очень похож на правду, тогда я задумаюсь.
Пока это не больше чем автокомплит на стероидах.
До кучи, я с машинным обучением косвенно работаю уже больше 10 лет. И это не про котиков, а по специфике хорошая модель = заработали денег, плохая = потеряли.
"Скажи любому доступному чатжпт примерно следующее: "программа на спп, читающая из файла массив строк, разделённый на поля разделителем в виде символа ";", сортирующая его по второму полю и выдающая в стдоут результат сортировки". И он тебе за секунду выдаст рабочий код. Компилируй и применяй."
Это одна строка кода, допустим в powershell. Пока Вы будете изобретать подобное задание, я уже справлюсь сам. Зачем тут ИИ, или Вы так, образно?
Помню еще такую залепуху, типа RationalRose, тоже была "прорывная" технология, убийца профессии программистов. Во влажных мечтах всяких фантастов от IT вместо программистов в будущем будут сами клиенты, которые будут рисовать на экране схемки и двигать стрелочки..
Не взлетело отчего-то.. Оказалось что для непрограмистов все это как-то слишком мудрено и они не хотят всем этим голову глумить, а для программистов это схемки просто лишний этап в разработке, когда приходится сгенерированный код потом долго чистить и приводить в нормальный вид.
Вот!
Разрешите к Вашему комменту присоседиться:
Уже недавно обсуждали: https://aftershock.news/?q=node/1205428
Скопирую свой коммент оттуда:
На заре своего появления 1С:Предприятие предполагалась как система, в которой бухгалтер, кладовщик или любой другой конечный пользователь, ознакомившись с не самой сложной инструкцией сможет сам(!) используя понятный ему, практически русский, язык(!) доработать конфигурацию под свои нужды. Даже прямо на лету можно формировать сложные отчеты используя русскую версию языка запосов, чуть менее чем полностью копирующуу SQL (который тоже был придуман как инструмент для простого и наглядного получения данных пользователем из базы данных).
Ничего не напоминает в контексте?
И знаете что?
А ничего. Бухгалтер на своем High
GhoticBuhgalteric говорит одинэснику, что этому бухгалтеру нужно изменить или добавить. И кодер ваяет новый отчет или новое поле в документ.А всё потому, что бухгалтеру ни в корень не впилось разбираться с кишками этого страшного одинэс. У него своих проблем хватает.
И с ИИ будет та же шляпа. Просто человек, которого будут и дельше называть "программистом", будет рулить буквами, но не в текущем "фрэймворке", а писать формализованные постановки для ИИ.
Про писание на ASM: человек видимо только нюхал программирование и то издалека, один пример когда то былы такая крутая программа volkov commander при весе скомпилированной программы в 64кб ее исходник весил больше мегабайта, да программа была крута, но писать на asm все это титанический и зачастую бессмысленный в современных условия труд (за редкими исключения/небольшими вставками в критических местах), учитывая что современный ИИ работает выдает "генеративный бред", а не последовательно создает код/произведение/ответ, то за ним нужно проверять вручную, а учитывая объемы кода и сложность проверки чужого кода тут даже проверка простых программ на нормальных языках невыгодна так как быстрее написать чем проверить, а уж на ассемблере десятки и сотни мегабайт проверить за "ИИ", да и генерить столько кода будет явно сильно дольше, кто думает что генерация бесплатная вещь сильно ошибается. Все что может сделать нынешнее ИИ это создать ажиотаж, гораздо больше изменило рынок программирования создание готовых типовых решений для некоторых областей, ну так это общая тенденция при развитии любой отрасли.
В тысячи и десятки тысяч
Как только вы переводите большую программу на асемблер, большая часть программистов теряет возможность работать с ее исходным кодом.
по большому счету это ведь проблема компилятора.
Ведь можно создать такой компилятор, который hellowolrd на высокоуровневом языке переведет сначала в асм. Значит, нет принципиальных преград, чтобы весь код ОС также перевести сначала на асм.
Проблема то не в том, чтоб перевести высокоуровневый код в низкоуровневый. Это не то, чтоб не проблема, это так и происходит на всех компилируемых языках.
Проблема в том, что после конвертации высокоуровневого исходного кода в низкоуровневый не в плане компиляции, а в плане разработки, вы потеряете принципиальную возможность что-то там подправить руками, если вдруг машина нагенерила не то.
Грубо говоря, представьте, что вы работаете с тем же чатЖПТ, но не можете поправить ни буквы в результате.
А теперь возьмите Евгения Онегина, добавьте туда пару персонажей, удалите Ленского из сюжета и попросите нейросетку аккуратно интегрировать новые реалии в существующий текст не потеряв стилистику. И так раз 10. Без возможности поправить хоть запятую
Насчёт Онегина и чатжпт - "ну вы изверг"!
Да норм.
Люди увидели, что эти нейросетки умеют скрипты писать и сразу "да нахрен всех этих зажравшихся программистов, сейчас мы кааааак применим нейросети и все пойдут на мороз, листья подметать.
При том, что понимания, чем же именно занимаются программисты примерно ноль целых хрен десятых.
С нуля при чёткой постановке задачи с некой долей вероятности - да, нейросетки умеют что-то написать. Но на практике с нуля системы пишутся ну очень не часто.
А вот с поддержкой ранее написанного кода там не то, что конь не валялся, он даже не увидел ту лужайку, на которой поваляться надо.
Страницы