Бритва Оккама
Запись от CoderHuligan размещена 26.06.2019 в 15:09
Показов 21635
Комментарии 268
Бритва оккама - известный методологический принцип в философии, который гласит примерно следующее: "Не следует привлекать новые сущности без крайней на то необходимости.". Оккам писал:
"Принцип «бритвы Оккама» состоит в следующем: если некое явление может быть объяснено двумя способами: например, первым — через привлечение сущностей (терминов, факторов, фактов и проч.) А, В и С, либо вторым — через сущности А, В, С и D, — и при этом оба способа дают одинаковый результат, то следует предпочесть первое объяснение. Сущность D в этом примере лишняя, и её привлечение избыточно. " Применительно к нашей теме программирования данный принцип часто нарушается. Игнорирование же его приводит к переусложнению языков и компиляторов, сложности образовательного процесса и т.п. Индустрия должна зарабатывать деньги и её не интересуют какие-то принципы и философия.. К сожалению. Индустрия создаёт свои собственные инструменты. Индустрия создаёт своих собственных специалистов, которые её будут обслуживать.. Тут уже философией и не пахнет. Если чувствуется аромат денег, то всё остальное отступает на второй план. Во главу угла ставится конкуренция, конкуренция во всём: в отсеве специалистов, в стилях программирования, соглашениях и пр. Так как я пропагандирую "народное программирование", то с обычным нам не по пути. Я обьясню. Не говоря уже о том, что структурная парадигма (СП) крайне усложнила воплощение в код достаточно сложных алгоритмов, она ещё к тому же не следует принципу Оккама. Если какую-либо сущность можно обьяснить более простыми средствами, то не нужно привлекать дополнительные. Если полную условную конструкцию можно выразить через :
Для эмулирования циклов создали аж до трёх разных их разновидностей. Цикл for, while, do while. Пришлось к тому же вводить новые сущности: continue, break. В разных языках по разному. А ведь циклы реализуются на goto гораздо проще, чем даже полная условная конструкция. Причём, заметьте, что завершение тела цикла гораздо понятнее именно применяя goto:
А в такой конструкции "правильного" цикла мы встречаем не метку, а безликую скобку:
Попытка приблизить язык, который понимает компьютер, к языку, на котором разговаривают люди обречена на провал потому, что чем ближе к естественному для человека языку мы приближаемся, тем все менее возможной становится способность выражать на нём алгоритмические построения.. Мы приближаемся к тупику, и только совсем мало думающий человек не видит этого.. Принцип "каждая кухарка может управлять государством" на практике не подтверждается.. | |||||||||||||||||||||
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 268
Комментарии
-
Правда, в большинстве своем, те уроды в вебе не по злому умыслу это делают. А просто дилетанты решившие, что они программисты.Запись от voral размещена 02.07.2019 в 15:20
-
Словил какой-то баг в notepad++. CoderHuligan:
Нашли баг в его собственном коде. Который, к слову, в стотыщмиллионов раз меньше и проще упомянутого notepad++. CoderHuligan:
Сообщение от CoderHuligan
CoderHuligan, самому то не смешно?
Сообщение от CoderHuligan
Запись от Катафалк размещена 02.07.2019 в 15:23
-
Нет. Это рабочая обстановка. Я уверен, что ни у кого код не работает с первого раза. Всегда есть стадия отладки. Кто-то настаивал чтобы я выложил сырой код. А вам разве смешно? Вы вообще программист или так за поговорить?
Сообщение от Катафалк
Кстати, код у меня работал даже при таком макросе, поэтому и не заметил.Запись от CoderHuligan размещена 02.07.2019 в 16:30
-
Запись от CoderHuligan размещена 02.07.2019 в 16:47
-
вот и вам про тоже. В сложном долгоразвивающемся проекте они всегда есть. И не по прихоти программистов, и не потому что "не GOTO". А потому, что во первых весь код в голове не удержишь. Где то невнимательность, где то опечатка и еще 100500 причин. И точно так же как у вас оно у большинства даже может и не вылезет ни разу. Именно по этому вам говорят, о безбажности своего кода вы можете говорить обоснованно только через год-два после первого релиза. Когда будет внесено 100500 дополнений (*например с целью улучшения и развития), когда ваша программа поработает на 100500 вариантов компьютеров и сочетаний версий ОС и остального по.
Сообщение от CoderHuligan
Пока на одной чаше весов измышления неопытного любителя, на другой опыт тысяч программистов на проектов различной степени сложности.
А вы действительно думаете, что все баги "воспроизводятся" на всех компьютерах? Даже бага с вашим нотепадом, она воспроизводится на любом компьютере и у всех? На скольких компах вы проверяли?
Сообщение от CoderHuligan
А теперь представьте если бы я был обычным пользователем вашей программы, и просто талдычил "ваша программа валится"... И при этом, при профессиональном программировании, я не могу ему сказать "отвали, у меня все работает".Запись от voral размещена 02.07.2019 в 16:55
-
Запись от CoderHuligan размещена 02.07.2019 в 17:15
-
а разве вы не утверждали, что ваш подход позволит избежать багов? Или я вас не правильно понял?
Сообщение от CoderHuligan
1. И я вам про то. Вы бы просто меня нафиг послали и все.
Сообщение от CoderHuligan
2. Не говорите за всех. ОпенСорс тем и хорошо, что есть обратная связь, иногда очень квалифицированная. Вам бесплатно программу, вы бесплатный тестер. Достаточно справедливо.
https://github.com/notepad-plu... -plus-plus
Посмотрите внимательно в багрепорты, пул-реквесты, сколько контрибюторов.... В чем их выгода от багов? Вы им деньги платите за каждый фикс?
Сидит такой программист.. Чем бы мне в свободное время заняться? С семьей пообщаться? не... С друзьями на шашлык? не... пойдука я дебильной работой поиска багов займусь... Это зашибись как интересно.Запись от voral размещена 02.07.2019 в 17:54
-
Мне смешно. Очень смешно, как человек, критикующий за пойманные единичные баги программный продукт, в тысячи раз сложнее всего, что он когда-либо писал, сам допускает баги в примитивной функции уровня первого курса айтишного вуза.
Сообщение от CoderHuligan
На работе программист, а на форуме - поговорить. А что?
Сообщение от CoderHuligan
Мне то зачем? Я же не собираюсь осчастливить человечество гениальными открытиями в области разработки ПО.
Сообщение от CoderHuligan
Вам, конечно, никто не может запретить сейчас отрицать, как вы в красках расписывали причины падения боингов из-за неправильного подхода к разработке ПО и доказывали, что только ваш стиль с goto способен все эти проблемы решить. Но читатели вашего блога все помнят.
Сообщение от CoderHuligan
Запись от Катафалк размещена 02.07.2019 в 19:12
-
CoderHuligan, еще как помним...
Наверное, Вы не подозреваете, что при любом способе написания кода ошибки есть и будут!
Вы ж крупных проектов в глаза не видели... Только развлекаетесь для себя...
При этом стоит вопрос: как быстро можно эти ошибки выловить и исправить? Особенно в чужом коде...
Зачем нужна просто замечательная реализация алгоритма, но которая работает с ошибкой, или которую надо модифицировать, но в которой черт ногу сломит ?!!! Легче и быстрее будет написать заново!Запись от liv размещена 02.07.2019 в 19:32
-
Любитель ни одного проекта до умам не доведший не может знать, что есть настоящая разработка. Код пишется для человека, поэтому читабельность важна. И то, что эта читабельность идёт на замену эффективности придумали только вы. Видимо для оправдания того, что сами не знаете как сделать и читабельно и эффективно. Понимание того, как вести разработку приходит только с опытом. У вас его нет. Поэтому не нужно выдавать свою некомпетентность как "свой особый" путь разработки. Это всё ужасный дерьмокод. Вам в самом начале эпопеи с морским боем прямо на куски кода указывали и показывали, что в них не так.
Сообщение от CoderHuligan
Скажите, только честно. Вы против качественного кода, который будет работать эффективно и при этом понятен без внешней документации? Только честен. Ответьте прямо: я за говнокод.Запись от Usaga размещена 03.07.2019 в 04:10
-
Usaga, ну зачем же так?
ТС считает свой код верхом совершенства...
Я перефразирую вопрос: ТС, Вы против работающего эффективно качественного кода, понятного без внешней документации?
Вы исключительно за то, чтобы удобно было только автору кода, а об удобстве последующих читателей и модификаторов не стоит и задумываться?
Вы реально считаете, что Ваши оппоненты здесь, которые являются практикующими программистами десятки лет, участвующие не в одном крупном проекте, несут чушь?Запись от liv размещена 03.07.2019 в 10:31
-
Запись от liv размещена 03.07.2019 в 10:52
-
Вам бы звание присвоить почётного заслуженного тролля всея руси..
Сообщение от Usaga
Говнокод, в моём представлении это код с вложенными условиями и с большим количеством флагов. И с большим количеством функций. Корче говоря чистейший структурный код.
В моём коде лишнего ничего нет. Если там стоит goto то он там нужен с точки зрения алгоритма.
Я за понятный с документацией код, который работает эффективно.
Сообщение от liv
Я за то, чтобы людей так учить информатике, чтобы они могли понимать такой код.
Сообщение от liv
Да. Но они естественно не виноваты. Жертвы пропаганды и устоявшихся условностей в мире программинга. Большинство, как показывает история, редко когда были правы. Всегда в итоге побеждало меньшинство. Демократия по принципу кто больше в этих делах плохо подходит. Власть большинства это власть толпы.
Сообщение от liv
Запись от CoderHuligan размещена 03.07.2019 в 11:30
-
Т.е. Вы за то, чтобы понять какой-то кусок кода, найти, например, а что же это за метка такая в функции такой-то, надо перелопатить дополнительно километры документации. А потом следующая и следующая... Т.е. вместо того, чтобы понять алгоритм программы, чтобы сразу вникнуть в суть происходящего, надо предварительно потратить туеву кучу времени на сопоставление кода и доументации. И пока пройдешь до конца, первое уже забудется. И по новой... И чем больше проект, тем больше времени будет уходить в никуда... Это по-Вашему правильная организация работы?
Сообщение от CoderHuligan
Вы, наверное, не догадываетесь, что программисты, как и все люди, существа ленивые... Они предпочитают вкладывать усилий поменьше, а получить побольше и побыстрее... И Вы их не переучите, такова психология... Как думаете, они будут в восторге от Вашего подхода?
Скажу больше: кому нужен подход, который приводит к значительному увеличению времени? А это самый ценный ресурс...
Наверное, глупые люди придумывают все, чтобы только уменьшить время, требуемое на разработку, нахождение и исправление ошибок, понимание чужого кода.
Это, дорогой, не пропаганда, а многолетняя практика... А практика, как известно, наилучший тестер любой теории...
Кстати, далеко не всегда меньшинство право. Не надо обобщать...Запись от liv размещена 03.07.2019 в 12:38
-
Хорошо когда сам себе судья и не признаешь чужих мнений. Я смотрел ваш код и мое мнение иное.
Сообщение от CoderHuligan
у меня иное мнение. У вас понятие алгоритма преклинило, вы пытаетесь думать за компилятор. За счет этого убиваете алгоритм, который должен быть очевиден программисту. В случае когда ПО ни кому не нужная поделка, и если ни чего страшного ни для кого не произойдет если автору надоест проект... Это допустимо.
Сообщение от CoderHuligan
А хирургов вы еще не пробовали учить, ну или, хотябы, зубных врачей.. А че нет... Мне кажется вы готовы.
Сообщение от CoderHuligan
В прочем вы имеете право на свое мнение, но будьте готовы, когда озвучиваете это мнение, слышать, в лучшем случае, " вы заблуждаетесь". Всегда и ото всех.
Вы жертва политических дискуссий. Но там понятно, у каждой стороны есть тот кто заинтересован в пропаганде... Объясните кому это выгодно и почему.
Сообщение от CoderHuligan
Запись от voral размещена 03.07.2019 в 12:40
-
CoderHuligan, кстати, получается, понять Ваш морской бой вообще не представляется возможным... Документации-то нет...
Именно!
Сообщение от voral
Кстати, скажите, зачем придумывают стандарты? Зачем компании вкладывают огромные средста на выработку единого подхода? Делал бы каждый, как ему нравится! Ан нет! Почему-то все хотят взаимопонимания! Наверное, жертвы пропаганды...
В мире программирования то же самое! Все хотят взаимопонимания! Хотя и нет жестких правил, но есть выработанные негласные правила, как надо писать, чтобы всем было понятно!Запись от liv размещена 03.07.2019 в 12:44
-
Не по теме:
Посмотрел по новому на выражение
"Дурак наступает на чужие грабли, умный - на свои." (C) не мой
Но ведь первый может и не понимать, что на эти грабли уже наступали и для него они "свои".
Запись от voral размещена 03.07.2019 в 13:32
-
Т.е. операторы перехода и именованные метки это "Ничего лишнего"? И уточните, пожалуйста, структурный код вы считаете говнокодом потому, что это нелогично или потому, что просто не в состоянии его понять за недостатком знаний и задатков?
Сообщение от CoderHuligan
Приведите, пожалуйста, для сравнения пример такого сложного для осознания кода и свой аналог, как видение того, как этот фрагмент должен был бы быть написан.
И с каких пор критика стала троллингом? Я делаю ровно тоже самое, что и вы позволяете себе: говорю, что вижу. А вижу я ЧСВ выросшее на пустом месте и совершенно лютую кашу в голове.
А вот мы за код понятный без документации и при этом эффективный. Разницу улавливаете?
Сообщение от CoderHuligan
Код тоже должен быть вменяемым, а не как ваша портянка переходов.
Сообщение от CoderHuligan
Очередная попытка оправдать свою точку зрения "наехав" на оппонентов. Ваши оппоненты работают разработчиками и ваяют рабочие решения. Вы же уже почти месяц не можете свой "морской бой" закончить. Так кто тут жертва чего? Ваше видение правильной разработки настолько верно, насколько хорошие результаты оно даёт. Пока, результатов нуль. Это значит, что вам самому в своём коде сложно разбираться.
Сообщение от CoderHuligan
Запись от Usaga размещена 03.07.2019 в 13:46
-
CoderHuligan, присоединяюсь к просьбе:
Да, было бы любопытно посмотреть.
Впрочем, я прекрасно знаю, что скажете: я все прекрасно все осознаю, я знаю язык в полной мере. Дело не в этом, а в том, что для эффективной реализации любого алгоритма необходимы исключительно только goto.
Окончательное написание "морского боя" нам еще долго ждать...
Предлагаю следующее (тем более, Вы и сами ранее грозились сделать это): приведите задачу, в решении которой, по Вашему мнению, ну никак не обойтись без goto. И приведите свое решение. Мы уж, так и быть, предложим альтернативное...
И посмотрим, можно решить без goto или нет.
Наверное, для этой цели имеет смысл создать отдельную тему... Дабы не валить все в кучу
Запись от liv размещена 03.07.2019 в 14:27
-
Пациент психбольницы Валера считает, что он Наполеон. Правда, он в абсолютном меньшинстве, никто больше Валеру Наполеоном не считает. Даже соседи по палате. Следует ли из этого, что президенту Франции пора сложить полномочия?
Сообщение от CoderHuligan
Запись от Катафалк размещена 03.07.2019 в 15:24


