Що таке код і чому комп'ютери все ще не пишуть самі, geekbrains - навчальний портал для

Що таке код і чому комп'ютери все ще не пишуть самі, geekbrains - навчальний портал для

Що кажуть програмісти, коли їх просять дати визначення своєї діяльності і натякають, що "машини впоралися б швидше"? Ми зібрали відповіді користувачів Quora, і ось що у нас вийшло.

- Чому комп'ютери все ще не замінили програмістів, якщо вони швидше, розумніші і не помиляються?

- Не повірите, ваше запитання вивчений до нудоти. і продовжує вивчатися.
Давайте розглянемо ситуацію так: насправді, багато механічної роботи, яку повинен виконувати програміст, вже робить комп'ютер (хоча деякі все ще використовують C ++, замість того, щоб написати скрипт в одну строчку). Тобто (в ідеалі), ми не робимо те, що повторюється багато разів - машини роблять це за нас.

Таким чином, частково ми вже на цьому шляху. З іншого боку, передати кодинг комп'ютера ми не можемо зараз, і не зможемо в найближчому майбутньому.

- Алан Купер відмінно висловився з цього приводу:
Далекі від програмування люди бачать в ньому лише механічний, інженерний процес. Насправді ж, це виключно варіативна і творча діяльність.

- Я б хотів розглянути питання трохи з іншого боку. Програмування вирішує 5 завдань:

  1. Створення нової програми або функції
  2. Розширення функціональних можливостей вже існуючих програм
  3. Виправлення того, що не працює
  4. Реалізація відомого (існуючого) шаблону проектування в простій ситуації
  5. Реалізація відомого патерну в зухвало складної задачі.

А тепер здібності, якими повинен володіти виконавець (комп'ютер):

  • розуміти завдання
  • Бачити шляху реалізації (знати можливості)
  • Бути в змозі визначити, яке рішення буде оптимальним для конкретного завдання
  • Мати можливість здійснити рішення

Зараз зрозуміти нову задачу (її цілі, проблеми, які потрібно вирішити) можуть тільки люди. Для того щоб комп'ютер міг розуміти людей - їх особливості, потреби, проблеми, які можуть виникати у них в процесі роботи, він повинен володіти вищим рівнем усвідомленості, ніж може зараз. І я говорю не про штучне розумі, а просто про великі в порівнянні з нинішніми можливостями. Наприклад, зробити висновок на підставі недостатньої кількості даних шляхом пошуку додаткових в зовнішньому середовищі або серед наявних.

Це досить складний функціонал, який, можливо, буде реалізований, але це сумнівно.

Комп'ютер може написати код, використовуючи досить складні існуючі шаблони проектування, і навіть, в якійсь мірі, задовольнити деякі призначені для користувача вимоги - це метапрограмування. Є завдання, які можуть вирішувати тільки чудові професіонали, а написати засіб для вирішення таких завдань - особливо складно.

- Думаю, що з появою безпілотних автомобілів ми повинні визнати: комп'ютери вже на півдорозі до остаточного перевазі над нами. Що стосується "комп'ютерів, здатних програмувати хоча б на рівні середнього розробника", то завдання це аж ніяк не проста, але цілком реальна.

Не повірите, машини ВЖЕ програмують за нас. LINQ - гідний приклад з відносно сучасних: наш код стає все ближче і ближче до словесних формулювань, так що ваше запитання частково вже вирішене.

Проте, обробляти абстрактні запити і поняття вони поки не вміють, як і самостійно здобувати нові знання, і навряд чи ми це побачимо в нашому житті.

- Відповім питанням на питання: а навіщо для цього потрібні люди?
Відповідь в одному слові: творчість. Люди можуть дивитися на одну річ настільки по-різному! І, здавалося б, всі рішення логічні, але всі вони унікальні. Люди чудові тим, що можуть виконати завдання, дане у вигляді смутного опису. Тобто, вони можуть зрозуміти її - це вже непогано, - і, більш того, знайти робоче рішення і втілити його в життя.

А тепер уявіть, яким повинен бути комп'ютер, який вирішить завдання з вимогою "Провести два перпендикулярних один одному перпендикуляра до прямої".

Людина обов'язково що-небудь придумає.

- Хм, якщо з'явиться спеціальна програма, яка буде писати глючний код, то так - комп'ютер зможе замінити людини.
Я завжди думав, що ідеальний код виникає тільки в процесі роботи.

- Чому письменники все ще існують? Невже не можна створити СУПЕРМАШИН, яка буде писати книги краще (див. Лем 'Електрібальд Трурля')?
Просто комп'ютери - це інструменти, як молоток або друкарська машинка. Чому письменники все ще існують? Тому що машина набирає текст, а письменник створює історію.

Комп'ютер, який використовує програміст - це такий же інструмент, який працює з числовими даними. Якщо його розібрати, звідти не вилетить магічну кулю, що випромінює логіку.

- Так-так, це ж той самий питання, яке часто задають CEO, продакт-менеджери і менеджери з продажу: "Чому я не можу просто дати команду комп'ютера замість того щоб мати справу з вічно незадоволеними програмістами?". Програміст повинен зрозуміти неясну і незрозумілу "велику ідею" управлінця (навіть якщо дві людини хочуть діаметрально протилежних речей) і "пояснити" її комп'ютера у вигляді коду. А ось якщо всі почнуть мислити як програмісти, ми зможемо продовжити обмірковувати цю ідею.

- Я хочу подивитися, як він буде сам себе тестувати! Куди подати заявку?

- Якщо ви створите програму, яка зможе генерувати інший софт на підставі чітких вербальних вимог, ви виявите, що 99,99% людей не можуть чітко і недвозначно ці вимоги ставити. Вагома частина роботи програміста - вислуховувати і намагатися зрозуміти.

- Навіщо нам потрібні водії, хіба автомобіль не впорається з керуванням краще?

Все автоматизується, і буде автоматизуватися до тих пір, поки людина існує як вид - це неминуче. Інше питання, що для нас це стало буденно до непомітності, і ми продовжуємо мріяти. Припустимо, ви вирішили скористатися експериментальним безпілотником. Ваші дії зведуться до єдиної команді (точка прибуття) - чи буде це означати, що автомобіль "їде сам", і ви не берете участь в управлінні? Ні. Ви все ще водій, який користується просунутої автоматизованою системою, але все ще керує нею.

Ми не помічаємо поступове спрощення життя зараз, як і не будемо помічати його пізніше. Те ж стосується і програмування.

З одного боку, ми вже сильно просунулися по шляху автоматизації. Приклад - ті самі експериментальні автомобілі. З іншого, хоча процес написання коду вже теж спрощений IDE, фрейморкамі і т.п. ми поки не можемо довірити комп'ютеру самому вирішувати, з якими саме проблемами працювати, і як. І навряд чи довіримо найближчим часом: система прийняття таких рішень - це вже штучний інтелект.

Що взагалі таке код і програмування?

Я бачу свою професію як рішення логічних задач творчого характеру. У КОДІНГ досить багато головоломок, і часто вони вимагають нестандартного бачення для того щоб знайти відповіді, які лежать за рамками звичного ігрового поля.

І так, є друга сторона - дружба з браузером і вміння складати запити пошуковим системам :)

Все це працює разом приблизно як симфонія. Символьна. Це і є кодинг.

Що таке код і чому комп'ютери все ще не пишуть самі, geekbrains - навчальний портал для

- Програмування - це дивовижна галузь знань, в якій пошук помилки - ще більше таїнство, ніж написання коду: чому я можу підключитися до трьох інших SFTP-серверів, але тільки не до цього? Чому, чорт візьми, копіювати-вставити не працює в цьому WebView. Або у вас веселий марафон із завантаженням додатка в AppStore?

І, фактично, все, що ви робите, зводиться до пошуку та усунення багів (і попутному створення нових). Іноді я ловлю себе на думці: "А може, я просто пишу помилки?"

- Це складна, але цікава логічна гра проти начальства :) Ви просто збираєтеся разом з командою, щоб вирішити проблему. Шукаєте рішення, і знаходите найбільш оптимальний шлях з можливих (іноді виявляється, що був і більш оптимальний, але це інша історія). Потім вам потрібно йти, дотримуючись обраного шляху з тією умовою, що начальник, який вступив в гру, буде підкидати нові "пастки" - наприклад, у вигляді правок до ТЗ.

А ще у цієї гри немає фіналу.

- Уявімо це в такому вигляді: робота складається з двох послідовних станів - самовдоволення і стрес - коли ви горді тим, що знайшли круте рішення, а потім зрозуміли, що воно провалилося з якоїсь причини. Іноді ланцюг переривається, наприклад, коли у одного з них ви не знаходите недоліків і приймаєте в роботу. І потім ви переходите до наступної задачі, і все починаєте заново: "Я зрозумів, як це зробити! Як же я меткий" - "Ok, воно не працює" - "Я зрозумів, чому!" - "Хмм. "-.

Щоб ланцюга були якомога коротше, треба постійно вчитися і підглядати до старших за посадою;)

- Це як робити будь-яку іншу річ. Спробуйте!