ГАМБУРГ, НІМЕЧЧИНА – 28 ГРУДНЯ: Учасники тримають свої ноутбуки перед освітленою стіною в … [+]
Кілька тижнів тому Google оголосив, що понад 25% усього нового коду, створеного в компанії, створено ШІ. Це помітна заява від компанії, яка створює одне з найпередовіших програм на планеті, і свідчить про те, що штучному інтелекту є що додати до оптимізації та прискорення коду, написаного професійними професіоналами. Але що це означає для студента сьогоднішньої школи (незалежно від того, чи це K-12, чи університет)? Яким буде ландшафт, коли вони шукатимуть роботу? Чи варто їм вчитися кодувати? Якщо ні, то чому вони повинні навчитися? Що це означає для освіти з інформатики в епоху ШІ?
Розрізнення коду та програмного забезпечення
Я вважаю, що ключ полягає в різниці між кодом і програмним забезпеченням. Дотепер різниця між ними не завжди була чіткою, здебільшого тому, що вона не була обов’язковою. Однак із сучасним розвитком штучного інтелекту ця різниця стає все більш критичною. Так яка різниця?
- Код – це артефакт комп’ютерної програми. Розташований в одному або кількох файлах, з деякою кількістю рядків у файлі, код є набором інструкцій, які виконує програма.
- Програмне забезпечення, яке зазвичай складається з коду, є кінцевим продуктом, який використовується з певною метою.
Чому ця відмінність важлива? Хіба вони не звучать в основному однаково? Відмінність — це різниця між кроками, необхідними для виконання певної функції, та всією роботою, яка йде на те, щоб зробити набір кроків придатним для використання продуктом.
Звичайні програмні пакети, такі як текстові програми, мобільні програми або бази даних, містять від тисяч до мільйонів рядків коду, часто написаного сотнями програмістів. Кожна одиниця є кодом. Продукт, який ми використовуємо, — це програмне забезпечення, яке створюється, коли весь цей код інтегрується, часто зі старішим кодом або іншими службами, тестується, упаковується та доставляється нам у певній формі. Процес створення таких програмних продуктів називається програмною інженерією. Розробка програмного забезпечення містить багато практик і навичок, крім написання коду. Наприклад, інтеграція, керування випусками, оновлення, тестування системного рівня тощо є частиною розробки програмного забезпечення.
Чому це важливо для навчання інформатиці?
Навчання K-12 з інформатики майже завжди зосереджується на кодуванні (тобто на синтаксисі, структурі мови та інших деталях, необхідних для створення правильних комп’ютерних програм). Цей тип знань підкріплюється стандартизованими тестами (наприклад, AP Computer Science A), які оцінюють точне розуміння студентом цих деталей. В університетах і в деяких середніх школах можна знайти курси на прикладні теми про те, як кодування використовується для створення систем – такі курси, як біоінформатика (застосування програмного забезпечення та алгоритмів для розуміння біологічних систем), компілятори (структура складних програм, завданням яких є обробити інші програми, щоб бути готовими до апаратного забезпечення) тощо.
Оскільки інструменти штучного інтелекту стають досвідченими в деталях генерації коду (створення часто ідеального синтаксису та логічно прийнятного коду для реалізації чітко визначеного завдання), перший набір курсів стає менш критичним, ніж другий (на мою думку). Студенти повинні вміти читати, оновлювати, змінювати та розширювати код, але це вже не так важливо, щоб вони могли писати його з нуля з ідеальною правильністю.
Чому їм взагалі потрібно читати код?
Експерти, які використовували кодування штучного інтелекту, зазначили, що їхній цикл розробки зараз полягає в підказках і редагуванні, причому 80% коду створюється штучним інтелектом. Ця форма оперативного програмування використовує поєднання людських навичок читати, розуміти та вдосконалювати код, а також штучного інтелекту для генерації правильного синтаксису коду для конкретних завдань. Продуктивність у цьому стилі розробки програмного забезпечення вимагає від людини навичок читання та розуміння коду, а також достатніх знань для оцінки та запиту на виправлення (або внесення їх безпосередньо, якщо необхідно).
Як навчитися читати код, якщо ви не можете його написати?
На мій погляд, це ключовий елемент і виклик цього нового процесу. Я особисто вважаю, що модель програмування, керована підказками, дуже ефективна. Тим не менш, я навчився кодувати, пишучи код з нуля багатьма мовами. Важко оцінити, наскільки добре я міг би сьогодні читати код, якби мене не змушували писати код без сторонньої допомоги. Тут немає простих відповідей. Для розвитку необхідних навичок розробки програмного забезпечення та ефективної роботи з генераторами коду ШІ потрібен певний обсяг написання коду. Однак попередня модель великої уваги до навичок створення коду більше не підходить для поточного ландшафту. Хоча аналогія калькулятора з ШІ одночасно подобається і висміюється залежно від того, кого ви запитуєте, тут може бути паралель. Зараз ми навчаємо студентів, як розв’язувати задачі вищого рівня за допомогою калькуляторів, але також є розділи іспиту, де калькулятори заборонені. Подібний баланс може знадобитися і тут.
Що це означає для освіти з інформатики та ШІ?
На базовому рівні тенденції свідчать про те, що студенти повинні вивчати спільну модель розробки програмного забезпечення, де людина та помічник ШІ працюють разом для створення коду. Однак існує більш серйозна проблема щодо того, чи підходять навички інформатики, як ми їх визначаємо сьогодні, для майбутньої робочої сили. З’являється все більше доказів того, що свіжі випускники технічних факультетів намагаються знайти роботу початкового рівня. Більш масштабним зрушенням у інформатиці та освіті з інформатики може бути перехід від великої уваги до програмування до навичок, необхідних у розробці корпоративного програмного забезпечення, таких як механізми забезпечення якості, безперервна інтеграція, спільна робота над великими кодовими базами тощо. У будь-якому випадку є ознаки того, що штучний інтелект може (і повинен) стимулювати фундаментальні зміни в освіті інформатики, оскільки ми прагнемо розширити можливості наступного покоління робочої сили.