Привет, Хабр! Представляю вашему вниманию перевод статьи «Your statement is 100% correct but misses the entire point».
Представьте, что где-то в Интернете обсуждают языки программирования. Один из архитектурных вопросов, который могут обсуждать, это сборщик мусора. Один участник дискуссии упоминает преимущества сборки мусора как-то так:
Это довольно нейтральное утверждение, с которым согласилось бы большинство людей, даже если бы они работали над кодом, к которому предъявляются строгие требования ко времени отклика. И все же, неизбежно кто-то представит такой контраргумент:
Будучи правдой, эти утверждения игнорируют весь более широкий контекст вопроса, в котором содержатся следующие моменты:
Вкратце, аргументы фактически правильны, но они упускают всю суть комментария, на который они отвечают. Это, к сожалению, часто встречается в обсуждениях в Интернете. Давайте посмотрим несколько примеров.
Такое утверждение:
можно контраргументировать, например, так:
Опять же, это утверждение абсолютно верно. С другой стороны, если вы не являетесь лидером государства или не имеете дело с международными наркокартелями, вы вряд ли станете прямой мишенью АНБ.
Если вы думаете, что это глупый контраргумент, который никто никогда не сделает, то я полностью с вами согласен. Я также видел, как его использовали в реальном мире. Хотел бы я этого не видеть.
Языки программирования высокого уровня удобны в использовании:
Но не для всех:
Это снова правда. Если каждый разработчик, работая над кодовой базой, будет на 100% сконцентрирован и на 100% осторожен 100% времени, то написание безошибочного кода возможно. Реальность снова и снова показывала, что это невозможно, человек просто не способен безупречно работать в течение длительного времени.
Всё просто:
И не так просто:
Да. Да, это так. В таком случае, это был бы неправильный выбор. Вы абсолютно правы. Спасибо за вашу проницательность, добрый сэр, вот блестящая золотая медаль в память о вашем важном вкладе в эту дискуссию.
Единственное, к чему вас готовит школа, это то, что важно быть правым. Если вы дадите правильные ответы в тесте, то получите хорошую оценку. А если не дадите — плохую. Может быть, это мышление «прилипает» после того, как вы закончите школу, особенно если учесть, что большинство людей, которые размещают такого рода комментарии, кажется, находятся на «более умном» конце спектра (личное мнение, не основанное на каком-либо фактическом исследовании). В реальном мире быть правым, само по себе, не является заслугой. Конечно, в любых дискуссиях быть правым важно, но гораздо более важная черта — это быть уместным. Это требует понимания более широкого контекста и, возможно, признания того, что то, что является самым важным в мире для вас лично, может быть совершенно неактуальным для рассматриваемого вопроса.
Быть правым легко. Быть релевантным чрезвычайно трудно.
Представьте, что где-то в Интернете обсуждают языки программирования. Один из архитектурных вопросов, который могут обсуждать, это сборщик мусора. Один участник дискуссии упоминает преимущества сборки мусора как-то так:
Сборщики мусора классные и экономят много сил. Если у вашего приложения нет строгих требований к времени отклика, то отсутствие необходимости заботиться об управлении памятью освобождает разработчика и может значительно повысить его эффективноcть.
Это довольно нейтральное утверждение, с которым согласилось бы большинство людей, даже если бы они работали над кодом, к которому предъявляются строгие требования ко времени отклика. И все же, неизбежно кто-то представит такой контраргумент:
Нет! Если у вас есть висячие указатели, то память никогда не освободится и вам в любом случае придется исправлять это, выполняя ручное управление памятью. Сборщики мусора волшебным образом не исправляют все ошибки.Если вы внимательно прочитаете эти предложения, то заметите, что каждое утверждение в них является правдой. Вот почему так неприятно это оспаривать. Большинство людей с инженерным образованием в целом готовы признать свои ошибки, когда им предъявляют доказательства того, что их утверждения неверны. Это, конечно, не распространяется на всех, поскольку некоторые люди готовы намеренно не соглашаться с любыми фактами, которые противоречат их предубеждениям. Мы проигнорируем таких людей в этой статье.
Будучи правдой, эти утверждения игнорируют весь более широкий контекст вопроса, в котором содержатся следующие моменты:
- висячие указатели в программе — это редкость (может быть, в 1 из 10 программ?), в то время как обычные ошибки с памятью, такие как использование указателя после его освобождения, двойное освобождение, ошибка неучтённой единицы и т. д. — это очень частое явление (100-1000 в каждой программе);
- современные сборщики мусора имеют очень хорошие профилировщики, найти висячие указатели гораздо проще, чем отлаживать повреждения стека;
- возможность создавать объекты одним щелчком пальца и просто забывать о них делает разработчиков намного продуктивнее, чем требование от них скрупулезно управлять полным жизненным циклом каждого ресурса в отдельности;
- даже если вы столкнетесь с проблемой висячих указателей, то её решение, вероятно, займет меньше времени, чем решение проблемы повреждения памяти в таком же приложении, но без сборщика мусора.
Вкратце, аргументы фактически правильны, но они упускают всю суть комментария, на который они отвечают. Это, к сожалению, часто встречается в обсуждениях в Интернете. Давайте посмотрим несколько примеров.
Компьютерная безопасность
Такое утверждение:
Использование HTTPS для всего трафика полезно для безопасности и анонимности.
можно контраргументировать, например, так:
Это не обеспечивает никакой реальной безопасности, если АНБ захочет получить ваши данные, то они ворвутся в вашу квартиру и получат их.
Опять же, это утверждение абсолютно верно. С другой стороны, если вы не являетесь лидером государства или не имеете дело с международными наркокартелями, вы вряд ли станете прямой мишенью АНБ.
Если вы думаете, что это глупый контраргумент, который никто никогда не сделает, то я полностью с вами согласен. Я также видел, как его использовали в реальном мире. Хотел бы я этого не видеть.
Ошибки вызваны некомпетентностью
Языки программирования высокого уровня удобны в использовании:
Языки программирования, защищающие от переполнения буфера, отлично подходят для разработки с точки зрения безопасности и простоты.
Но не для всех:
Вы можете достичь того же самого в Си, просто будьте осторожны.
Это снова правда. Если каждый разработчик, работая над кодовой базой, будет на 100% сконцентрирован и на 100% осторожен 100% времени, то написание безошибочного кода возможно. Реальность снова и снова показывала, что это невозможно, человек просто не способен безупречно работать в течение длительного времени.
YAGNI? Какой еще YAGNI?
Всё просто:
Обработка текстовых файлов с помощью Python — это действительно здорово и просто.
И не так просто:
Python — это полная ерунда, он не справится с задачей, когда вам нужно будет обрабатывать десять миллионов файлов в секунду на встроенном микроконтроллере, используя максимум 2 KB оперативной памяти.
Да. Да, это так. В таком случае, это был бы неправильный выбор. Вы абсолютно правы. Спасибо за вашу проницательность, добрый сэр, вот блестящая золотая медаль в память о вашем важном вкладе в эту дискуссию.
Что может быть причиной этого?
Единственное, к чему вас готовит школа, это то, что важно быть правым. Если вы дадите правильные ответы в тесте, то получите хорошую оценку. А если не дадите — плохую. Может быть, это мышление «прилипает» после того, как вы закончите школу, особенно если учесть, что большинство людей, которые размещают такого рода комментарии, кажется, находятся на «более умном» конце спектра (личное мнение, не основанное на каком-либо фактическом исследовании). В реальном мире быть правым, само по себе, не является заслугой. Конечно, в любых дискуссиях быть правым важно, но гораздо более важная черта — это быть уместным. Это требует понимания более широкого контекста и, возможно, признания того, что то, что является самым важным в мире для вас лично, может быть совершенно неактуальным для рассматриваемого вопроса.
Быть правым легко. Быть релевантным чрезвычайно трудно.
kx13
Автор затронул интересную тему.
Такие противоречия рассматриваются в диалектической логике. Там противоречия — суть самой логики, все развивается благодаря противоречиям.
Надо отличать два разных понятия: истина и правда.
Т.к. все в мире противоречиво, в частности "сборщики мусора", то истинное понятие должно отражать обе эти стороны. Кроме того истина всегда конкретна т.е. работает в определенных обстоятельствах (времени и месте). Нет какой-то "абсолютной" истины на все века.
Можно взять любое из односторонних утверждений для каждого примера и оно будет правдой т.к. отражает с одной стороны какую-то часть реальности. Но это будет абстрактное понятие т.е. без дополнительного контеста.
Но только оба утверждения взятые в единстве дают истинное понятие. Т.е. "сборщики мусора" это нечно, которое имеет свои сильные и слабые стороны и использовать его нужно в том контесте, где его преимущества будут доминировать над недостатками.
Когда смотришь на подобные "споры" с диалектической точки зрения, то вообще не понятно, чего тут спорить :)
Вот книга о самых азах диалектики.
Neveil
Вы абсолютно правы. Спасибо за вашу проницательность, добрый сэр, вот блестящая золотая медаль в память о вашем важном вкладе в эту дискуссию.
kx13
Большое спасибо :)
vmchaz
Насколько мне известно, диалектика не является логикой вообще.
Это:
1. Набор нескольких максимально неспецифичных утверждений, из которых какие-либо конкретные частные следствия не выводятся
2. Способ красиво обосновать любой исход, но только пост-фактум (предсказательная сила диалектики — околонулевая)
Например, тот же закон диалектики «история развивается по спирали» конкретизируется
При эволюции системы некоторая часть из этих параметров меняется, например, P2[1] = v1', P2[3] = v3'.
При дальнейшей эволюции системы один или несколько из изменившихся параметров может вернуться к первоначальному значению (Например, P3[3] = P1[3] = v3) — и именно этот факт служит «доказательством» развития истории по спирали. Предсказать, какой именно параметр к какому из предыдущих значений вернётся, силами диалектики невозможно
kx13
Диалектика — это развитие обычной формальной логики. Т.е. формальная логика составная часть диалектики.
Диалектика вообще ничего сама по себе не может предсказать. Это наука о мышлении. Т.е. логика. Чтобы предсказать что-то нужно взять факты и поразмышлять над ними. А как индивид будет размышлять уж от него самого зависит.
Я слушал Краветского, он известный противник диалектики. Но по его работам видно, что он ее не понял.
Я в качестве примера привел совершенно детскую книгу где все очень просто и понятно.
michael_vostrikov
В русском языке это синонимы, не надо это менять. Можно придумать свои термины, если так уж хочется.
kx13
В бытовом понимании — это синонимы. Но в научном смысле это разные слова. То же самое, что с массой и весом. В быту по сути это одно и тоже, но при изучении физики — это разные понятия.
michael_vostrikov
Приведите пожалуйста ссылки на научное значение этих терминов, которое вы под ними подразумеваете.
kx13
Ю.И. Семенов "Введение в науку философию" 2013г. т.1. стр.62
Там же стр.7.
М.В.ПОПОВ ЛЕКЦИИ ПО ФИЛОСОФИИ ИСТОРИИ стр.26
Т.е. вполне четко определяется, что занимаются поиском истины, а правда (правильность), лишь часть этого явления. Два эти понятия четко противопостовляются.
Для знакомства с философией можно прочитать Семенова. 1 тома в целом достаточно будет. Ну или совсем краткое популярное введение на 36 минут.
michael_vostrikov
Так это не "в научном смысле разные слова", а "в такой-то науке это разные слова". Из этого никак не следует, что кому-то другому надо их различать, как утверждаете вы.
В приведенных цитатах кто-то просто говорит "надо их различать", не дав объяснения зачем. Это не доказывает ваше утверждение, а просто повторяет его. В выражении "Так вы в науке истины будете добиваться или ограничитесь правильностью?" присутствует манипуляция, неявно считается верным факт что их обязательно надо различать, то же самое, что и "вы уже перестали пить коньяк по утрам?". Философия противопоставляется логике (появляется какая-то вторая логика), при том, что логика это основной инструмент философии.
kx13
Наука философия как раз изучает мышление, правильность, истинность и другие фундаментальные понятия. Потом уже другие науки это используют (в той или иной мере). По идее, из философии должны брать точные и выверенные всеобщие знания. Как из биологии, например, берут знания об живых существах.
Дальше там объясняется. Вы хотите по одной цитате во всем разобраться?
Конечный результат (цитата, понятие, термин) без пути к нему — пустая абстракция. Чтобы разобраться в чем-то надо проследить весь путь как понятие образовалось, почему оно именно такое.
Приходится не одну книгу прочитать, чтобы понять и разобраться в вопросе. К сожалению, по другому это не работает никогда и нигде.
К тому же "Лекции по философии истории" — это материал для студентов первых курсов, там все местами упрощено для понимания вопроса в целом.
Я не вижу там противопоставления. Просто говорится, что для каждого вида мышления нужен свой инструмент. Для рассудочного мышления хватает формальной логики. Для разумного мышления этого недостаточно, поэтому применяется диалектическая логика, которая включает в себя формальную логику (т.к. разумное мышление без рассудочного невозможно). И философия является тоже логикой, но уже диалектической.
Опять же в учебнике Семенова достаточно хорошо и понятно эти моменты.
Здесь Энгельс хорошо выразил мысль:
Энгельс Ф. Анти-Дюринг. Здесь отрывок в более полном контексте, который лучше его раскрывает.
В целом, в мышлении, можно не делать различий между "правдой" и "истиной" да это и никак мешать не будет. Но если заняться исследованием или попровать серьезно разобраться в вопрсое такое мышление может принести нам сюрпризы.
michael_vostrikov
Мой вопрос был не в том, что это такое, а в том, почему нельзя для этого придумать отдельные термины.
Это вы привели эти цитаты в защиту своей точки зрения. Если в них это не объясняется, значит и правильность вашей точки зрения это не подтверждает.
Ну вот во втором предложении и есть противопоставление. Ну или назовите это отрицание. Эта логика не такая, нужна другая логика. Но термины будем использовать те же самые, чтобы можно было с умным видом вещать "надо их различать, вы ничего не понимаете")
Ну так разумный и рассудочный тоже синонимы, это просто переносит вопрос с одних терминов на другие. Зачем надо было какое-то другое мышление придумывать. Вот из-за таких манипуляций и складывается соответствующее отношение к философии.
kx13
А зачем плодить сущности? По мере развития науки понятия наполняются новым содержанием. Это сплошь и рядом происходит в любой науке.
С моей точки зрения, все там подтверждается. Видимо мы сильно расходимся в основных понятиях, поэтому один и тот же тескст понимаем по разному.
Все правильно. Диалектическяя логика отрицает формальную, но выбрасывает ее отрицая, а вбирает в себя все лучшее, что в ней было. Даже понятие есть специальное: "снятие". Соответственно термины, которые были в формальной логике становятся глубже.
Через отрицание идет любое развитие. Например мы отрицаем старые процессоры(выкидываем их на свалку). Но новые процессоры — это продолжение старых, где выкинуто все ненужное, а лучшее или необходимое оставлено.
Это совершенно разные уровни мышления. Они синонимы лишь в том плане, что оба термина про мышление.
Ровно за тем же зачем надо было придумывать новые процессоры (это в качестве примера) :) Потомучто у появилась потребность в новом инструменте.
Логику специально никто и не придумывал, его просто научным языком относительно недавно описали и сделали доступным для освоения.
Эта претензия к философии далеко не на первом месте :)
Каждый в практической деятельности мыслит теми категориями, которые необходимы. Действительно в большинстве случаев можно делать равеноство между истинной и правдой и горя не знать. Но иногда из-за этого бывают трудности, например из-за них появилась эта статья. В общем эти трудности в данном случае можно и обойти без "высоких материй".
michael_vostrikov
Затем что старое содержание все еще используется. Истина и правда это синонимы, и говорить, что они не синонимы и их надо различать, некорректно. В своей науке можно использовать термины как угодно, но при общении с людьми, которые не являются представителями этой науки, нужно использовать общепринятую терминологию.
Это так только в вашей науке. Разумность вообще строгого научного определения не имеет, а вы уже производные термины создаете.
Это не одно и то же. Новые процессоры это экземпляры типа, а другое мышление это другой тип.
Но дело не в этом. Нет никаких причин использовать синоним для обозначения нового инструмента. Если инструмент действительно новый, то есть чем-то отличается, для него как раз и надо придумать другой термин, чтобы показать отличие.
kdmitrii
Ну такое. Если человек говорит что сборщик мусора в 100% случаев избавляет от проблем с памятью то это просто неверное утверждение(даже если приложение не критично к задержкам).
Если человек говорит что обработать 10млн текстовых файлов на питоне легко и просто и приятно то это неверное утверждение.
Пусть 2 частицы летят навстречу друг другу со скоростями с/2. Очевидно что скорость одной относительно другой равна с.
Весь этот пост это (как и 99,999% текста представленного на этом сайте) это изложение иэвестных истин. В данном случае эта истина заключается в том что "у всего есть границы приминимости и эти границы нужно знать и при необходимости явно проговаривать".
Moskus
Это довольно простой случай "логической уловки", она же — fallacy. Точнее — informal fallacy, принцип которой как раз в том, чтобы в качестве контр-аргумента использовать утверждение, которое верно, но имеет проблемы с отношением к реально рассматриваемому вопросу. http://www.mesacc.edu/~barsp59601/text/lex/defs/i/informalfallacy.html
Конкретно эта уловка — то, что называется Red Herring. https://en.m.wikipedia.org/wiki/Red_herring
Moskus
Добавлю, что англоязычный термин fallacy звучит более нейтрально и я его предпочитаю, потому что "уловка" предполагает намерение, хотя это может быть просто ошибка.
DaylightIsBurning
В русской терминологии «fallacy» ещё иногда переводят как «демагогия» или «демагогический прием» или «логическая ошибка» («logical fallacy»).
M0Peterson
КМК «заблуждение» (также как и «ошибка») точнее описывает все это дело. Потому как «демагогия» и «демагогический прием» указывает как раз на осознанность всего этого действа, тогда как довольно часто «заблуждающийся» делает это без осознанного намерения.
DaylightIsBurning
Мне кажется, «демагогия» не особенно ассоциируется со злонамеренностью, скорее с неумением и увлеченным злоупотреблением. «Демагогия» воспринимается ближе к «пустословию» чем к «манипуляции». Но «заблуждение» исключает злонамеренность, в то время как «демагогия» — нет. И это правильно, логические ошибки часто используются и сознательно для некорректного ведения диспута, манипуляции, в т.ч. общественным мнением.
Moskus
Исходный смысл слова демагогия — как раз о намеренном введении аудитории в заблуждение риторическими приемами. Я использую этот термин постоянно. Вот не далее как вчера пришлось выводить на чистую воду автора статьи, оправдывающей цензуру, который вовсю использовал демагогические приемы.
Moskus
Да, я в курсе. Но "ошибка", наоборот, имеет оттенок случайности. Тогда как fallacy значит и то, и то.
kx13
Вот еще есть хорошая старенькая книга по всяким уловкам: Искусство спора.
Там во втором разделе самые популярные уловки разобраны.
Moskus
Еще есть вот такая штука, тут несколько фундаментальнее.
www.fallacyfiles.org/taxonnew.htm
kx13
Вот еще пара сборников логических ошибок и манипуляций:
лист1 и лист2
AndreyYu
Верно ли утверждение из уст любого не айтишника в офисе, что все айтишники — программисты? :)