Еще вчера я думал, что ИИ никогда не заменит меня как программиста.
Что ж, программирование как профессия с самого начала боролось со своей смертью.
Я считаю, что когда кто-то впервые придумал Ассемблер, многие думали, что это конец профессии.
Какого черта? Программа, которая превращает нацарапанные заметки в настоящий машинный код? Значит, теперь каждый менеджер может писать код? Мы устарели? Автоматизирована ли наша работа? Пришло время собирать вещи и уходить? Затем появились языки высокого уровня.
Такие языки, как FORTRAN и COBOL. Это определенно делает ненужными настоящие программисты, не так ли? Теперь вы можете быть инженером-механиком или бизнес-аналитиком и профессионально обращаться с компьютером.
Вам больше не нужен программист, который напишет за вас код. А потом пришло индуктивное программирование.
Функциональность, как у Haskell, или логика, как у Prolog. Идея индуктивного программирования заключается в том, что вы не пишете код, вы просто задаете ограничения, в которых программа должна работать, и, если возможно, язык напишет для нее код. Код стал независимым от языка по мере того, как он превратился в системы компьютерной алгебры.
Теперь вы можете написать несколько уравнений в блокноте Python и превратить их решение в код для любого другого языка.
Таким образом, вам не только не нужен программист для написания кода, вам даже не нужно писать код самостоятельно.
И хотя все эти вещи грозили убить программирование как профессию, количество программистов росло, росло и продолжает расти.
И даже в геометрической прогрессии.
Каждые пять лет их число удваивается.
Число программистов растёт быстрее, чем человечество.
При таких темпах к 2075 году все мы, все из примерно 10 миллиардов будущих нас, будем иметь три должности программиста.
Конечно, в какой-то момент этот рост должен остановиться.
В мире просто не хватает кокаина, чтобы заставить нас всех безостановочно программировать целыми днями.
Но этот рост не остановится из-за каких-то прорывных технологий, а остановится только тогда, когда спрос на другие профессии перевесит спрос на программистов.
Прорывные технологии, такие как язык ассемблера, языки высокого уровня, индуктивное программирование или искусственный интеллект, могут только изменить то, как мы программируем, но не уничтожить программирование как вид деятельности.
По крайней мере, так я думал позавчера.
Вы можете подумать, что я подсела на GPT-3 и именно это окончательно убедило меня сделать гламурную и успешную карьеру мужчины-проститутки.
Но нет. На самом деле вчера был просто еще один день, когда я просто выполнял свою работу.
Ну, вообще-то, это не совсем моя работа.
Я делал то, что должен был сделать для меня C++, но он не смог.
Я переносил фрагмент высокопроизводительного кода из MSVC в GCC. Зачем нам нужны высокоэффективные программы в 2021 году? Память по-прежнему относительно медленная и объемная, поэтому явное управление памятью по-прежнему необходимо.
Теперь у нас много ядер на процессор, поэтому нам нужны параллельные вычисления.
Кроме того, процессоры не намного быстрее, чем 20 лет назад, но сейчас у них много конвейеров, поэтому, если нам нужен быстрый код, нам придется суперскаляризировать все, что мы можем.
Итак, у нас есть три звонка.
C++ очень плохо отвечает на все три вопроса.
1) Да, в C++ есть стандартный способ выделения выровненной памяти, но MSVC его не поддерживает. 2) Параллелизм из коробки настолько анемичен, что приходится полагаться на сторонние библиотеки, такие как TBB от Intel. 3) Компиляторы стараются использовать SIMD, когда это возможно, но они не могут делать это эффективно, поэтому вам придется писать свой код на внутренние качества функции для получения желаемого результата.
Ничего страшного, если вы на всю жизнь застряли с Microsoft и Intel. Но когда вы пытаетесь перенести что-то с одной платформы на другую, вы видите, что C++ с годами незаметно проиграл игру в переносимость.
Да, вы можете справиться с несоответствиями выравнивания, используя определения.
Технически можно было бы сделать клон TBB для ARM, поскольку Intel, естественно, не заинтересована в поддержке своих конкурентов.
Но с внутренними функциями вы зашли в тупик.
Внутренние функции зависят от процессора, поэтому ваш код не может быть переоптимизирован или импортирован.
Это иронично, поскольку изначально язык C был изобретен для переноса того, что впоследствии стало UNIX, с PDP-7 на PDP-11. Его единственной целью было обеспечение портативности.
50 лет спустя мы столкнулись с неприятной правдой.
Для достижения максимальной производительности вы должны использовать инструкции процессора лучше, чем это делает компилятор.
По сути, код возвращается к своей исходной форме, как на заре программирования.
Хорошо, но причем тут ИИ? Рад, что вы спросили.
Я считаю, что, хотя спрос на программистов на мировом рынке все еще существует, спрос на инновации достиг своего пика в 70-х годах и постепенно снижался с годами.
Другой столь же блестящей прорывной технологии, как индуктивное программирование или даже языки высокого уровня, не будет, потому что на них нет спроса.
Я явно недоволен отсутствием развития C++ в сфере высокопроизводительных вычислений, но знаете что, ситуация становится лучше.
Я не настолько несчастен, чтобы изобретать еще один Фортран.
Видимо, так же, как и остальные.
С++ обычно работает. Он не идеален, но и не так уж плох.
Вот почему он остается.
Да, я потратил день на переписывание кода с MSVC C++ на GCC C++, и это было скучно, и я написал эту нытье, но это ничего не меняет. День - это всего лишь день.
Нытье - это просто нытье.
Теперь о революционных технологиях.
Хотя ИИ пока не может делать все, что от меня хотят мои клиенты, у него есть потенциал, чтобы справиться с скучной частью моей работы.
Он может исправить несогласованность кросс-компилятора или внутренне оптимизировать код. Даже повторная реализация параллельного выполнения с использованием std::threads выглядит достаточно утомительной, чтобы ее можно было делегировать машине.
ИИ может даже написать мне нытье после завершения своей работы.
Все это возможно, выгодно и, вероятно, легко для тех, у кого больше опыта работы с ИИ, чем у меня.
Мы уже используем SymPy для написания кода на C++, а использование искусственного интеллекта для оптимизации этого кода будет всего лишь одним маленьким шагом вперед, но люди с радостью его сделают. У такого рода ИИ есть стартовый потенциал, поэтому я ожидаю, что он скоро появится.
Есть большая вероятность, что ИИ в конечном итоге заменит меня, возможно, не как программиста, а как программиста C++.
Но есть небольшой шанс, что какая-то новая технология убьет сам C++.
Теги: #программирование
-
Обновление Ubuntu С 8.10 До 9.04
19 Oct, 24