Програмування у його найбільш інтелектуальної частини - це не код, а створення принципів, якими код має бути влаштований.
Цикли, функції, класи, проміси – це механізми. А іммутабельність, ідемпотентність, композованість, гранулярність, зв'язковість, зачепленность-характеристики, якими керуємо властивостями коду.
- Імутабельність дає спрощення конкурентного виконання
- Мутабельність - швидкість та економію пам'яті, але багато небезпек
- Ідемопотентність - стійкість до повторів
- Слабке зачеплення - гнучкість через замінність
- композованість - повторне використання та породження нових абстракцій
Такі та подібні речі формують модель мислення, що дозволяє створювати цілі класи програм інакше.
ШІ вже брав участь у створенні нових алгоритмів, виявив ефективніші алгоритми сортування, нові алгоритми множення матриць та оптимізації обчислень. Але це не те саме, що створення нової парадигми програмування.
Можна виділити чотири рівні інтелектуальної діяльності:
1. Реалізація -написати код за заданими правилами
2. Проектування - вибрати відомі принципи, патерни та обмеження
3. Узагальнення – виявити загальний принцип у різних рішеннях та сформулювати нову абстракцію
4. Винахід - запропонувати новий принцип організації обчислень, який відкриває раніше недоступні можливості або суттєво змінює підхід до розробки
ШІ впевнено працює на перших двох рівнях, здатний непогано допомагати на третьому та демонструє скромні результати на четвертому, насамперед у алгоритмічних завданнях. Але загальновизнаної нової фундаментальної парадигми програмування, та що там... навіть нового патерну чи прийому створеного ШІ ми не бачимо.
Справжній прорив у AI-assisted programming – це перехід від генерації реалізацій до генерації та перевірки принципів.
Наївно писати "зроби мені архітектуру з SOLID", потрібно прагнути до "знайди характеристику системи, яку ми ще не формалізували, виведи з неї корисні наслідки, запропонуй новий спосіб організації коду і доведи, що він працює і дає корисні характеристики кодової бази".
















