1

Тема: Код мінус соціум: у пошуках сенсів та форм

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

Що лишається? Ви, машина та код на умовному «безлюдному острові» чи «вежі зі слонової кості».
Мистецтво для мистецтва, де нема навіть глядачів, крім самого митця.
Експерименти для задоволення власної цікавості.
Код для вирішення особистих утилітарних задач — теоретично, він може знайти застосування і як публічний комерційний/демонстраційний, але початково ви не ставите за мету продавати свої саморобні табуретки — ви їх робите, просто щоб сидіти на них.

Додатковий наслідок асоціальності: ви не пишете такий код у команді з іншими людьми, тому не можете делегувати їм виконання якоїсь частини задачі. Якщо це код, написаний з нуля, то він або буде мінімалістичним, або його написання стане довготривалим процесом. Утім, це може бути і продовження чужої розробки (але розбиратися в чужому коді теж вимагає часу; крім того, це ставить під сумнів, наскільки такий код асоціальний, але будемо вважати, що ви не плануєте ні з ким ділитися своїми змінами в чужому коді; сторонні розробки інших програмістів, починаючи з самого комп'ютера, ви все одно будете використовувати, так чи інакше). Менше рук — менше можливостей перекласти рутину на ці руки, тому рутинну складову має сенс звести до мінімуму. Зробити так, щоб потрібний вам результат досягався мінімумом зусиль.

Якщо вас приваблює написання коду як процес, то з часом ви можете усвідомити, що послідовне дотримання завчених патернів правильного кодингу стає надто мілким для вас — вам тісно, як рибі на мілководді, ви не можете зануритись у глибину, не можете відкрити щось нове — хіба що вас приваблює методичне повторення однакових дій. Езотеричне програмування? Езотерика буває різна (напр., є велика кількість низькоякісних езотеричних мов, що відрізняються від традиційних лише заміною більш осмислених ключових слів менш осмисленими, що, проте, суттєво не впливає на структуру коду, крім того, що його важче читати). Якщо написання для цікавості поєднується з утилітарною складовою, то додаткове ускладнення має бути осмисленим — «інше програмування» не повинне бути «таким самим, тільки гіршим», там має бути справді достатньо новий підхід до задачі, щоб процес написання був для вас цікавим, а не лише випробування своїх можливостей ускладненням заради ускладнення. Крім того, не забуваймо про обмежену кількість рук та вимоги до трудоємності кодингу. Але, якщо цей код призначено тільки для себе, то вам не доведеться й пояснювати логіку своєї програми іншим людським істотам — від цього шматка роботи ви вільні. Втім, «іншою людиною» можете бути і ви, через багато років намагаючись зрозуміти свій власний код.

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

Чи можна такий нестандартний код зробити комерційним? В загальному випадку — ні, але, можливо, ви є певним законодавцем мод у світі програмування, і ваш експериментальний код стане для когось зразком — тоді так, код, написаний без огляду на соціум, прендує на те, щоб стати соціально прийнятним підходом у світі комерційної розробки. Але не це є нашою метою.

Асоціальний код може бути інструментом дослідження можливостей системи (може йтися як про залізо й ОС, так і про мову програмування — залежно від того, що вас цікавить). Також інколи це найпростіший спосіб зробити те, для чого нема готових програмних рішень, доступних для вас чи достатньо для вас зручних; або ж це завдання настільки незатребуване іншими, що навіть поставити його можете тільки ви — ви зможете його виконати для себе, але, за визначенням, не для іншої людини. А ще це свобода дій, коли ви лишаєтесь наодинці з собою (та комп'ютером).

2

Re: Код мінус соціум: у пошуках сенсів та форм

Пригадую розумний океан з "Соляриса" Лема, який створював тривимірні структури.

Подякували: P.Y.1

3 Востаннє редагувалося reverse2500 (01.05.2023 13:42:34)

Re: Код мінус соціум: у пошуках сенсів та форм

P.Y. написав:

Що лишається? Ви, машина та код на умовному «безлюдному острові» чи «вежі зі слонової кості».
Мистецтво для мистецтва, де нема навіть глядачів, крім самого митця.

може ви не знаєте всіх соціальних проблем та інших проблем.

Є багато чудових програм, безкоштовних і аналогів, але піпл вирішує чим користуватись

4

Re: Код мінус соціум: у пошуках сенсів та форм

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

Подякували: Droid 771

5

Re: Код мінус соціум: у пошуках сенсів та форм

Сам по собі комп'ютер -- багаторічна праця соціуму.
Отже кодинг за допомогою комп'ютера не може бути асоціальним.

6

Re: Код мінус соціум: у пошуках сенсів та форм

«вежа зі слонової кості» — перша думка, яка промайнула коли побачив заголовок теми у списку нових повідомлень.

7

Re: Код мінус соціум: у пошуках сенсів та форм

koala написав:

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

Програмування дотичне до математики. Може розглядатись як певне продовження математичних теорій (з можливим прикладним застосуванням). Або як технічний засіб для математичних досліджень. Кодинг необов'язково є прикладним (це може бути і код як експеримент), а прикладне застосування коду необов'язково орієнтовано на соціум.

Людина — істота менш соціальна, ніж, наприклад, собака чи бджола. Людська індивідуальність є самодостатньою і самоцінною, тому, залишившись на безлюдному острові сама, людина продовжує лишатись людиною, навіть втративши змогу соціально себе проявити. Хоч, безумовно, значна частина цієї індивідуальності є результатом виховання людини соціумом. Який, у свою чергу, складається з самодостатніх людських індивідів.

Droid 77 написав:

Сам по собі комп'ютер -- багаторічна праця соціуму.
Отже кодинг за допомогою комп'ютера не може бути асоціальним.

Сама по собі людина (культурна її складова) є результатом сотень і тисяч років розумової роботи соціуму. Ми не можемо обирати свої витоки, але можемо визначати мету та методику. Які необов'язково мають бути прив'язаними до поточних запитів соціуму.

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

Подякували: leofun011

8

Re: Код мінус соціум: у пошуках сенсів та форм

Як на мене, можна робити пет-проекти. Потім комітити у власний репозиторій. Це необов'язково мають бути супер оригінальні речі. Власна реалізація чогось існуючого теж рахується. І це вже своє портфоліо. Невідомо коли пригодиться, та колись все ж "угу".

9

Re: Код мінус соціум: у пошуках сенсів та форм

Tarpan87 написав:

Пригадую розумний океан з "Соляриса" Лема, який створював тривимірні структури.

Усе, що фактично робив окен — мислив, об'ємні моделі були продовженням його думок.

Код як продовження індивідуального мислення, комп'ютер як продовження мозку? Саме так.
Тоді має сенс скоротити шлях між думкою та кодом, дерутинізувати цей процес. Рутинні елементи призначено для передачі коду публіці — це, умовно кажучи, літературна мова, гарно сформульована за всіма правилами, щоб її розуміли інші. Коли людина мислить, вона не мислить правильно побудованими реченнями літературної мови — її  думки більш фрагментарні, часто взагалі не словесні — це потік асоціацій, які, проте, сама людина розуміє й за необхідності може перекласти їх на мову слів, зрозумілу іншим людям. Індивідуальний код має відрізнятись від публічного, приблизно як реальні думки людини відрізняються від прочитаного подумки речення.

10

Re: Код мінус соціум: у пошуках сенсів та форм

До речі. Чимось подібним уявлялось ООП в одному з початкових задумів (маю на увазі SmallTalk з його візуальним середовищем розробки). Але ми знаємо, як виглядає типовий ООП-код у сучасних мовах програмування — описи класів є просто втіленням громіздкості й рутинерства. Припускаю, що через хибний підхід, започаткований тим же SmallTalk'ом, коли основним шляхом розробки вважається візуальний інтерфейс, і «більш не треба писати код руками». Код, написання якого перекладається на автоматичні засоби розробки, неминуче роздувається. Навіть якщо його фактично пише людина, але він підпорядкований філософії, що в ідеальних умовах це мають робити якісь ро́боти з необмеженою працездатністю.

11

Re: Код мінус соціум: у пошуках сенсів та форм

P.Y. написав:

Усе, що фактично робив окен — мислив, об'ємні моделі були продовженням його думок.

Не лише, він створював копії людей для дослідів.

12

Re: Код мінус соціум: у пошуках сенсів та форм

Чи проводив океан чітку межу між матеріальними об'єктами та власною уявою? Схоже, що ні.

13

Re: Код мінус соціум: у пошуках сенсів та форм

Це щось психічне.

14 Востаннє редагувалося P.Y. (02.05.2023 23:12:54)

Re: Код мінус соціум: у пошуках сенсів та форм

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

15

Re: Код мінус соціум: у пошуках сенсів та форм

P.Y., ти не один.

P.Y. написав:

Код як продовження індивідуального мислення, комп'ютер як продовження мозку? Саме так.
Тоді має сенс скоротити шлях між думкою та кодом, дерутинізувати цей процес. Рутинні елементи призначено для передачі коду публіці — це, умовно кажучи, літературна мова, гарно сформульована за всіма правилами, щоб її розуміли інші. Коли людина мислить, вона не мислить правильно побудованими реченнями літературної мови — її  думки більш фрагментарні, часто взагалі не словесні — це потік асоціацій, які, проте, сама людина розуміє й за необхідності може перекласти їх на мову слів, зрозумілу іншим людям. Індивідуальний код має відрізнятись від публічного, приблизно як реальні думки людини відрізняються від прочитаного подумки речення.

Тут є одна проблема: Код має бути як мінімум синтаксично валідним, щоб успішно { компілювати | інтерпретувати } його. Тобто є "верхня межа", вище якої не стрибнемо, поки будемо користувати класичне ООП (C#, Java, Object Pascal, PHP).

Подякували: P.Y.1

16

Re: Код мінус соціум: у пошуках сенсів та форм

Валідний код можна програмно генерувати з невалідного. Напр., такий генеруючий скрипт може читати написану людиною програму, дописувати до неї стандартні заголовки, робити заміни, закоментовувати чи видаляти певні фрагменти і т.д. Звичайно, якийсь код буде невалідним і в цьому випадку, але так ми можемо перевизначити, який код є валідним — створивши, фактично, свою мову програмування.

Потім, є чисті інтерпретатори, толерантні до невалідного коду. Напр., cmd.exe реагує на невалідну інструкцію, лише коли доходить до її обробки та виконання, а до того часу йому байдуже, яке сміття там зберігається. З відомих мені інтерпретаторів «справжніх» мов програмування, таку властивість має Chipmunk BASIC.

17

Re: Код мінус соціум: у пошуках сенсів та форм

Або навіть менш екзотичний приклад толерантності до невалідного коду: JS на веб-сторінці. Напр., такий html-код з JS-блоками:

text1<br>
<script>
    document.write("valid JS 1<br>");
</script>
text2<br>
<script>
    document.write("valid JS 2<br>");
    Some invalid JS;
    document.write("Valid JS 2 -- more<br>");
</script>
text3<br>
<script>
    document.write("valid JS 3<br>");
</script>

У блоці 2 частина коду невалідна — цей блок не виконуватиметься. Хоча блоки до нього й після нього виконаються:

text1
valid JS 1
text2
text3
valid JS 3

18

Re: Код мінус соціум: у пошуках сенсів та форм

Звідки взагалі думка, що код має бути завжди валідним? Достатньо, щоб приведення коду до валідного стану не було обтяжливим. Це якщо ми розглядаємо програмні засоби суто як інструмент для втілення думки.

Або ж обмеження на валідність можуть бути не перешкодою для думки, а предметом досліджень. Можна навіть вводити додаткові ускладнення — напр., поставити додаткову умову, що програма може запускатися в кількох частково несумісних кодуваннях, які впливають на зміст коду, і треба зробити її придатною до використання у всіх цих випадках.

19

Re: Код мінус соціум: у пошуках сенсів та форм

Код, що може читатися різними способами й набувати різного значення залежно від способу. Це і вже згадані експерименти з кодуваннями, і програми-поліглоти для кількох мов програмування. Якась частина такого коду оброблятиметься скрізь однаково чи майже однаково (напр., код print("Hello") зробить одне й те ж, незалежно від того, BASIC це чи Python), але це може бути досить обмежений набір дій. Потім, можна приховати частину коду від тієї чи іншої інтерпретації, зробивши, наприклад, кометарем (код rem=0; import itertools as it обробить лише Python, тоді як BASIC вважатиме коментарем. Або навпаки:

'''
goto 220
'''

Python бачить текстовий літерал, BASIC — інструкцію).
Нарешті, можливий випадок, коли код виконуватиме якісь дії в обох прочитаннях, але це будуть різні дії.
На основі всього цього можна побудувати детектор, що визначатиме варіант прочитання і враховуватиме при роботі програми.

20

Re: Код мінус соціум: у пошуках сенсів та форм

P.Y. написав:
goto 220

Цього взагалі не повинно бути ніде. Навіть в навчальному коді. Чи краще - "тим більше в навчальному коді". Навіть десь була ініціатива вилучити цей функціонал з подальших версій мови.

Змінилася кількість рядків в коді - і вже код виконує невідомо що.

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