Как стать автором
Обновить

Как программирование позволяет логично выражать мысли

Время на прочтение4 мин
Количество просмотров28K
Всего голосов 27: ↑16 и ↓11+5
Комментарии20

Комментарии 20

Программирование и правда приводит мысли в порядок, хотя не скажу, что прямо все мои знакомые разработчики являются образцами красноречия. Скорее они менее склонны к бессмысленным обсуждениям, чем многие знакомые «гуманитарии» — но это может быть уже профессиональной особенностью, все-таки им по долгу службы больше надо делать, а не разговаривать
Оно же приводит в порядок мысли, а не язык. Аналогичную картину замечал у большинства коллег.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
16 лет. 2*(x-(24-x))=x.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Кстати, можно в цикле посчитать:
M=24
А=x
Щаг 1
M-1=23
A=x-1
Так как второй аргумент в А не половинка от М то увеличим шаг, ( пропустим шаги цикла )
M-5=18
A=x-6
Опять не половинка :(
M-2=16
A=x-8
16/8=2
Соответственно ответ: 16

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

Серьезно?
-Маша была в два раза старше Ани, когда Маше было столько лет, сколько сейчас Ане. Если Маше сейчас 24, то сколько лет Ане?

Вот только в английском языке слово «Маша» «Маши» «Машу» будет в одном слове «Masha». И «Аня» «Аню» «Ане» — тоже. Поэтому построить такой алгоритм для английского языка было бы заметно проще)) уверен, наши учителя по информатике обязательно придрались бы к таким моментам и заставили делать проги, которые воспринимают все варианты имён, аля «Мария» «Машуня» «Машуля» итд)))
Статья называется «Как программирование позволяет логично выражать мысли». Я прочитал. Два раза. Ответа не нашел.

В конце статьи чувак рассказывает как важно программисту уметь письменно выражать мысли. Дай бог устно бы научиться это делать. И это не сложнее чем писать блог. Вот только блоги пишет 1 из 50 наверное. Которые интересно читать — 1 из 500.

Бред про языки даже комментировать не хочу.
>> Вот только блоги пишет 1 из 50 наверное. Которые интересно читать — 1 из 500.

Очень оптимистичные оценки. Еще на 2 порядка ниже.
  • Программирование учит точности формулировок. Компьютеру (в отличие от мужа) нельзя сказать «пойди в этот, ну как его, и принеси ту, которой я вчера это, ну, длинную».
  • Программирование учит предусмотрительности. Компьютеру нельзя сказать «Сходи в магазин и купи хлеба и молока, а если не будет — то сам что-нибудь сообразишь.» Нужно на каждой возможной ветке алгоритма нужно чётко прописать случай «а если не будет». (Программистов, не понимающих этого момента, сразу видно по падающим с Access Violation программам.)
  • Программирование учит решать проблемы, раз и навсегда. Подходы вида «у меня не загружается библиотека… нет, мне не надо, чтобы она загружалась, мне надо просто поговорить об этом» в программировании немыслимы.
Вот об этом заблуждении я и хотел написать. Точность формулировок != понятность.
Попробуйте почитать доказательство теоремы Ферма. Там все формулировки точные. Как что-нибудь поймете — расскажите нам.

«пойди в этот, ну как его, и принеси ту, которой я вчера это, ну, длинную»
Это понятно мужу. То есть сообщение идеально сформулировано для целевой аудитории. Мало того что муж понял что надо купить, так он еще и понял зачем это жене. У него много информации, чтобы принять правильное решение если длинной вдруг не окажется.

Программистская формулировка была бы такая:
Купи в магазине магнит французский батон, не короче 50 сантиметров
Во первых не очень понятно зачем. Во вторых что делать если магазин закрыт или если нет именно такого батона.

И тут возникает вторая проблема:
Нужно на каждой возможной ветке алгоритма нужно чётко прописать случай «а если не будет».
Это означает что формулировка становится длинной. А чем длиннее мысль, тем меньше людей её поймут.

Но и это еще не все, последняя проблема:
Программирование учит решать проблемы, раз и навсегда
Это значит, что будет тратиться неимоверно много времени на описания случаев, которые в реальной жизни никогда не произойдут. Но для программиста они равнозначны основным сценариям.

Поэтому зачастую мысль выраженная программистом содержит слишком слов, много технических деталей, в ней важное не отделено от второстепенного и она не апеллирует к опыту целевой аудитории. В текстовом виде такое никто читать не будет. А если рассказывать устно, то будет неинтересно.
Точность формулировок != понятность.
Попробуйте почитать доказательство теоремы Ферма. Там все формулировки точные. Как что-нибудь поймете — расскажите нам.
Не следует смешивать «понятность вообще» с «понятностью тому, кому надо». Вы же не заставляете первоклассника понимать простейший (для нас с Вами) алгоритм решения квадратного уравнения; зачем Вы заставляете меня понимать формулировку теоремы Ферма?
пойди в этот, ну как его, и принеси ту, которой я вчера это, ну, длинную
Это понятно мужу. То есть сообщение идеально сформулировано для целевой аудитории.
… Вообще-то, когда я придумывал, какое задание для мужа написать, я изобразил в мыслях ситуацию «сходи в санузел и принеси мои щипцы для завивки волос»… Поздравляю, Вы сами же подтвердили мою мысль.
Это означает что формулировка становится длинной. А чем длиннее мысль, тем меньше людей её поймут.
Десять коротких мыслей не означают одну длинную. Они означают дерево решений.
В текстовом виде такое никто читать не будет. А если рассказывать устно, то будет неинтересно.
Вот поэтому программисты с людьми и предпочитают по мере возможности не общаться:
vsb: Я программирую, потому что мне нравится программировать, а не потому, что есть возможность меньше контактировать с людьми. Это всего лишь приятный бонус :)
Вот поэтому программисты с людьми и предпочитают по мере возможности не общаться

Извините, но это типичная стереотипная чушь. Есть люди, которые предпочитают с другими людьми не общаться, а есть люди, которые предпочитают общаться. К программированию это отношения не имеет.

(отдельно, конечно, в вашем высказывании прекрасно деление на «программистов» и «людей»)
Вот только все это не имеет никакого отношения к логичности выражения мыслей. Точность, предусмотрительность — это совсем другое.

Понимаете, компьютер — он (вроде как) не прощает ошибок. У нас есть компиляторы, тесты — мы привыкаем на них опираться и проверять свою правоту (или неправоту). А в письме такого нет. Ты написал слово с ошибкой — и тебя все равно поняли. Что думает логичный мозг программиста? Что так тоже можно. И так можно. И вот так, наконец, тоже можно. И поэтому логичный — но ленивый — программист, естественно, не применяет свои такие логичные навыки в письме.

(я преувеличиваю, конечно)

Вы много знаете людей, которые используют исключительно точные формулировки и оговаривают все побочные ветви в рассуждении? Вот и я нет.
Не следует смешивать «понятность вообще» с «понятностью тому, кому надо».

Точность формулировок понятности не добавляет.

Вообще-то, когда я придумывал, какое задание для мужа написать, я изобразил в мыслях ситуацию «сходи в санузел и принеси мои щипцы для завивки волос»… Поздравляю, Вы сами же подтвердили мою мысль.
Какую мысль?
Что не целевая аудитория не поймет? Это очевидно.
Как точность формулировок помогает донести мысль до ЦА — неясно.

Вообще во многом соглашусь с автором. Программирование действительно помогает корректировать собственное формальное мышление, но не бывает добра без худа. Возможно, чрезмерное увлечение программированием ограничивает ( сужает, если хотите ) тропинку в иные сферы творчества (я отношу программирование именно к творчеству).

Пока читал статью, вспомнил о многомерных или неклассических логиках Васильева Николая Александровича, который еще в начале 20 века сумел в своих работах показать возможность выхода за пределы двоичной логики.

К чему я это? Почему-то часто можно слышать такое мнение, что наиболее логично и правильно у нас мыслят программисты, а еще логичнее математики. Но почему-то часто забывают о том, что булева алгебра, на которую опирается программирование практически полностью дублирует логику высказываний, а она в свою очередь является и инструментом гуманитариев и в принципе исторически вытекает из философии.

P.S.
Вообще очень просится для Хабра серия статей об истории логики и её связи с алгебрами высказываний и программированием. Можно бы даже с самой древности. Хотелось бы, чтобы не были забыты и отечественные учёные — такие как Н.А. Васильев, Челпанов, Асмус.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий