Програмістів можна розділити на духовних послідовників Платона і духовних послідовників Геракліта. «Платоністов» вірять в ідеальні форми, люблять, коли комп'ютер робить саме те, що йому говорять. «Гераклітяне» ж знають, що досконалості не існує, що світом править хаос. Але для успішної роботи - потрібні обидва типи програмістів.
Отже, програмісти діляться на 100 два типи - духовні послідовники Платона і духовні послідовники Геракліта.
Платоністов вірять в ідеальні форми, люблять, коли комп'ютер робить саме те, що йому говорять, і готові піти заради цього на будь-які засоби. Будь-яка невизначеність у поведінці повинна бути усунена, все побічні ефекти враховані, всі входи і виходи записані - інакше для чого потрібні комп'ютери, як не для того, щоб залізною логікою бути джерелом порядку серед непередбачуваних людей? Платоністов придумали статичну типізацію, кінцеві автомати, таблиці переходів, Агду, формальну верифікацію і відповідність Каррі-Ховарда. Коли вони підходять до завдання, їх мрія - знайти саме таку структуру, в яку ця задача ідеально влазить. Ідеально! Платоністов найчастіше можна зустріти в embedded, розробці компіляторів, проектуванні наднадійних систем (авіоніки, наприклад), hard real-time, мікроядра - в загальному, ніж хардкорних, тим краще.
Чи не такі гераклітяне. Вони-то знають, що досконалості не існує, що світом править хаос, і немає ніякого способу привнести порядок туди, де його не було і не може бути ніколи. Несподіванки завжди з'являються, системи завжди ламаються, врахувати все неможливо, і єдиний спосіб виживати в такому світі - бути достатньо гнучким і спритним, щоб відновлювати все втрачене. Гераклітяне придумали пізніше зв'язування, анотації, юніт-тести, прототипи, гарячу заміну коду, нульові покажчики, message passing, актори і супервайзери. Ну і Perl, само собою. Їхня мрія - щоб все хоч якось працювало, який би хаос ні відбувався навколо і якими б божевільними не були початкові умови і вхідні дані - а отже, гераклітян часто можна зустріти в big data, фінансах, інтернеті, телекомунікації, devops та інших місцях , де править бал Його Величність Випадок.
Щоб проект злетів, в ньому повинні бути як платоністов, так і гераклітяне, інакше все звалиться в одну з крайнощів. Сам я чистий гераклітянін, тому, як правило, працюю з платоністов, хоча часто сприймаю їх як інопланетян і не розумію як в принципі можна такими бути. :)
Будь-яка класифікація кульгає і страждає відомої неповнотою. А так забавно і набагато повчальніше, ніж нерозумні битви наших остроконечников і тупоконечников. Цікаво: проектування досить складних програмних проектів за допомогою потужних програмних засобів, практично не вимагають написання коду, куди слід віднести або це взагалі якийсь інший клас?
Якщо не помиляюся, то в оригіналі висловлювання звучить так:
Якщо по темі:
спроба натягнути бізнес завдання на випробувані, відомі і реалізовані раніше рішення - це одне з помилок. При цьому мова йде про логікою більше, тому що механічно робити все з нуля - нерозумно :)
Ціна: 1 руб.
Я віднесу себе до платоністов, однак це не завадило мені не провалити жодного реального впровадження, яких було дуже багато. Головне мати або вміти сформувати адекватне уявлення про реальність, за Гегелем вона, до речі, сформована зовсім не з хаосу. А потім чисто платонічно розробити максимально якісну її автоматизацію, врахувати психологію при впровадженні і вуаля - провалів поки не було навіть там, де керівництво не вірило в можливість успіху.
"Якби будівельники будували будинки так, як програмісти пишуть програми, то перший же залетів дятел зруйнував би всю світову цивілізацію." Програмістів, які пишуть в цьому анекдотичний стилі, м'яко кажучи дуже багато. Їх програми можуть працювати тільки з даними платоністов, але з результатом роботи цих програм можуть працювати тільки Гераклітяне. В запропоновану класифікацію ці кодери не потрапляють.
Ціна договірна
Балмеру пофіг ніж керувати. У Microsoft.
Екс-глава Microsoft Стів Балмер вийшов з ради директорів, остаточно покинувши компанію. Він має намір повністю зосередитися на. управлінні.
Що таке хороший код
Існує єдиний критерій якості коду - легкість, з якою інший програміст може в ньому розібратися. Це базовий рівень. Більш.