Як програмування дозволяє логічно висловлювати думки



Поширена думка про те, що програми можуть виконувати лише набір закладених в них команд і нічого більше. Чи Так це насправді?

Цим питанням в одній зі своїх статей задається один із засновників MIT Media Lab Марвін Мінський. Він намагається розвіяти міф про те, що програма – лише набір строгих правил і інструкцій. Мінський пише: «Це помилкове переконання виникає з-за того, що люди плутають форму з вмістом [...] Розробник повинен чітко слідувати синтаксису обраної мови, але зміст, який він хоче через нього висловити, нічим не обмежується».

Програма STUDENT, розроблена співробітником дослідного центру Пало-Альто Деніелем Боброу (Daniel Bobrow) ще в 1964 році, вирішувала шкільні задачки з алгебри в такому вигляді:

Маша була в два рази старше Ані, коли Маші було стільки років, скільки зараз Ані. Якщо Маші зараз 24, то скільки років Ані?

Програма справляється з більшістю завдань, так як може більш-менш точно виділити із завдання ряд даних і на їх основі скласти і розв'язати рівняння.

Далі, Мінський звертає увагу на ще одне поширене оману. Природно, що при написанні програми потрібно строго дотримуватися її синтаксис. Але це зовсім не означає, що ви маєте повне уявлення про те, що буде робити ваша програма.

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

Гірше, коли людина вважає, ніби причина такої строгості криється в самому комп'ютері. Насправді ж причина – в мові програмування. Суть будь-якої мови програмування – перевести ваші думки набір нулів і одиниць, які будуть зрозумілі комп'ютера, тобто мова – це засіб, за допомогою якого програміст може висловити будь-які, навіть найскладніші ідеї.

Доречно згадати теорию Сепіра-Уорфа, згідно з якою мова, якою ми користуємося, визначає наше мислення. Ця теорія застосовна і до мов програмування. Будь-яка мова програмування – це інструмент, і для різних завдань ми використовуємо різні інструменти.

Трактор, велосипед і автомобіль Tesla – транспортні засоби, але їх використовують для різних цілей. Те ж і з мовами. Ruby і JavaScript, що ідеально підходять для створення сайтів, Java і C++ часто використовують для створення торгових алгоритмів, Python і R відмінно справляються зі статистичними завданнями і обробкою інформації.

Мови часто вибирають на основі їх зручності, безпеки та швидкості – як і транспорт – у відповідності з поточним завданням. Тому зазвичай ми вибираємо мову, який найбільше нам підходить. Деякі розробники вибирають Ruby за його гнучкість, інші воліють строгість Java. Але іноді зустрічаються ті, хто не любить об'єктно-орієнтоване програмування: ці люди не використовують його переваг просто тому, що вони більше працювали з методами процедурних мов.

Таким чином, особливості мови і справді обмежують наше мислення. Однак ми самі можемо подолати ці обмеження. Наприклад, Lisp є декілька незвичайних виразів («cons», «sexp», «car», «cdr»), що не мають аналогів в інших мовах. І все ж Lisp дає нам свободу вираження своїх ідей у рамках цієї мови.

книге Design Patterns добре показано, як потрібно висловлювати думки в C++. Більше половини патернів з книги відсутня в Lisp, так як їх можна виразити в ньому, не змінюючи структури мови. Виходить, що мови програмування формують хід наших думок, причому кожен по-своєму.

Щоб у цьому переконатися, достатньо написати одну і ту ж програму на різних мовах і подивитися, які вони видадуть результати. Потім перевести програму з однієї мови на іншу. При тому, що вибирати слід значно відрізняються одна від одної мови, наприклад, ті ж Lisp і C++. У підсумку ви зрозумієте, що мова виражає не всі ваші думки, але найголовніше – це те, що він дозволяє оцінити, що легко реалізувати, а що – складно.

Всі мови об'єднує те, що вони можуть висловити практично будь-які людські думки та ідеї. Студент, постійно залишає флешку в комп'ютерному класі, може вирішити свою проблему, написавши на Python клієнтську і серверну частини програми для зберігання файлів в хмарі. Так, наприклад, з'явився Dropbox.

Продовжуючи тему Python, можна згадати написаний на ньому відкритий проект Django. У 2003 році новинне агентство World Online вирішило зайнятися розробкою веб-фреймворку, який би економив час роботи розробників. Два роки потому проект став відкритим. Python хороший тим, що він нескладний, а головне – він дозволяє розробнику швидко створити робочий прототип.

Тому їм часто користуються у стартапах, а його популярність за останні кілька років зросла до небес. Серед інших продуктів на Python виділяються BitTorrent, MyPait, MoinMoin та інші. Цю мову можна доповнити Javascript, який допомагає презентувати свої ідеї. У підсумку зв'язка Python + Javascript ідеально підійде для реалізації та подання будь-яких бізнес-ідей, а також їх масштабування.



Колишній співробітник Microsoft Майк Болодзин в інтерв'ю Business Insider розповідає про важливість вміння висловлювати свої думки. Програмісти повинні вміти грамотно висловлювати навіть самі звичайні ідеї в письмовій формі (окрім програмування).

Це допоможе не тільки ефективніше спілкуватися з керівництвом, але і пред'являти права на результати своєї роботи. Болодзин згадує, як одного разу не визнали його внесок у роботу: «Я сперечався, що це моя ідея, і знав, що цього не могли не помітити». Більш ясна презентація своїх ідей дозволить вам уникнути подібних ситуацій.

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

P. S. Ми досить регулярно розбираємо подібні (та інші) питання на наших заходах: засновники обмінюються досвідом і можуть звернутися за допомогою до колег і експертів. Ось тут можна ознайомитися з календарем семінарів, які ми проводимо по всій країні.

В якості додаткового читання по темі – пара наших публікацій на Хабре:



Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.