Бритва Оккама
Запись от CoderHuligan размещена 26.06.2019 в 15:09
Показов 21621
Комментарии 268
Бритва оккама - известный методологический принцип в философии, который гласит примерно следующее: "Не следует привлекать новые сущности без крайней на то необходимости.". Оккам писал:
"Принцип «бритвы Оккама» состоит в следующем: если некое явление может быть объяснено двумя способами: например, первым — через привлечение сущностей (терминов, факторов, фактов и проч.) А, В и С, либо вторым — через сущности А, В, С и D, — и при этом оба способа дают одинаковый результат, то следует предпочесть первое объяснение. Сущность D в этом примере лишняя, и её привлечение избыточно. " Применительно к нашей теме программирования данный принцип часто нарушается. Игнорирование же его приводит к переусложнению языков и компиляторов, сложности образовательного процесса и т.п. Индустрия должна зарабатывать деньги и её не интересуют какие-то принципы и философия.. К сожалению. Индустрия создаёт свои собственные инструменты. Индустрия создаёт своих собственных специалистов, которые её будут обслуживать.. Тут уже философией и не пахнет. Если чувствуется аромат денег, то всё остальное отступает на второй план. Во главу угла ставится конкуренция, конкуренция во всём: в отсеве специалистов, в стилях программирования, соглашениях и пр. Так как я пропагандирую "народное программирование", то с обычным нам не по пути. Я обьясню. Не говоря уже о том, что структурная парадигма (СП) крайне усложнила воплощение в код достаточно сложных алгоритмов, она ещё к тому же не следует принципу Оккама. Если какую-либо сущность можно обьяснить более простыми средствами, то не нужно привлекать дополнительные. Если полную условную конструкцию можно выразить через :
Для эмулирования циклов создали аж до трёх разных их разновидностей. Цикл for, while, do while. Пришлось к тому же вводить новые сущности: continue, break. В разных языках по разному. А ведь циклы реализуются на goto гораздо проще, чем даже полная условная конструкция. Причём, заметьте, что завершение тела цикла гораздо понятнее именно применяя goto:
А в такой конструкции "правильного" цикла мы встречаем не метку, а безликую скобку:
Попытка приблизить язык, который понимает компьютер, к языку, на котором разговаривают люди обречена на провал потому, что чем ближе к естественному для человека языку мы приближаемся, тем все менее возможной становится способность выражать на нём алгоритмические построения.. Мы приближаемся к тупику, и только совсем мало думающий человек не видит этого.. Принцип "каждая кухарка может управлять государством" на практике не подтверждается.. | |||||||||||||||||||||
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 268
Комментарии
-
Ну на конец то появится на компьютере игра морской бой... Всю жизнь ждал... (сам то я не могу, не владею великим искусством Го-то) 去
Сообщение от CoderHuligan
Запись от voral размещена 29.06.2019 в 16:42
-
Ага, особенно забавным это утверждение становится, если вспомнить, что деньги им платят за работающие надежные и сопровождаемые программы, а не за следование неким навязанным свыше стандартам, как вы думаете. И не как у вас, написал и забыл, принялся следующую писать.
Сообщение от CoderHuligan
Так что у программистов понимание о том, как нужно писать надежный, легко понимаемый и сопровождаемый код сформировано на богатом опыте, а у вас какие-то теоретические соображения, на практике никак не проверенные. Вы, я так понимаю, еще даже не попытались сопровождать свой код документацией, а уже доказываете, что так нужно делать и это будет лучше, быстрее и удобнее, чем традиционные методики.
Писать код совместно с кем-то вы тоже еще не пробовали, хотя бы со своими единомышленниками. Но тоже с чего то решили, что ваш метод в командной разработке будет работать лучше традиционных.
Никогда не слышали, как красивые и стройные теории разбиваются о практику?Запись от Катафалк размещена 29.06.2019 в 16:51
-
Если мне это нравится, то может понравится кому-нибудь ещё. Кто устал от бесполезных и времязатратных головоломок структурного стиля.
Сообщение от voral
В 5 раз дольше в вашем любимом стиле.
Сообщение от voral
В моём стиле в 5 раз быстрее вашего. У моего стиля КПД выше.
Придёт время признают. Пока ещё рано. Вы не признаете, потому что жертвы пропаганды.
Сообщение от voral
Губят потенциальных программистов как раз неумные подходы к образованию. Вы просто отпугиваете людей предлагая языки и стили, которые не позволяют полноценно программировать. Естественно, что большинство ничего так и не поняв разбегаются. А я учу программировать с удовольствием, легко и просто.
Сообщение от voral
Я вижу реальный опыт "правоверных" - например взять тот же notepad++ - страшно знаете ли работать.. Написан на с++ в ооп стиле. Но я уже нескоько раз терял данные из банального зависания, а багов там .. И всё равно сижу на нем, не знаю почему - сила привычки. Так что я насмотрелся на эти программы по самое немогу..
Сообщение от voral
Запись от CoderHuligan размещена 29.06.2019 в 16:52
-
Запись от CoderHuligan размещена 29.06.2019 в 16:53
-
Нате, держите https://github.com/topics/battleship. В любом стиле можете найти, даже на хаскеле есть.
Сообщение от CoderHuligan
Запись от Катафалк размещена 29.06.2019 в 16:57
-
Запись от CoderHuligan размещена 29.06.2019 в 17:49
-
Запись от Avazart размещена 29.06.2019 в 23:05
-
Это только для вас.
Сообщение от CoderHuligan
Вся ясно, человек программирующий просто на уровне хобби. Круче миллионов программистов по всему миру за десятки лет.
Сообщение от CoderHuligan
Нимб не жмет?
Любая теория должна проходить тестирование практикой. Весь прогресс программирования движется по пути поиска наиболее оптимального пути этого делать. И как бы вы не пыжились - практика (реальная практика, а не баловство) показывает совершенно противоположные выводы.
Сообщение от CoderHuligan
Напишите аналог notepad++ в своем стиле потом поговорим. Говорить я могу "писать программы без багов" и писать таковые это огромная разница. Начиная с того, что вы не можете себе позволить такого уровня тестирования как ваш нотепад++. Точнее ни одна ваша программа не работала в столки вариантах условий.
Сообщение от CoderHuligan
Приведу вам пример не большой из личного опыта:
Наши клиенты купили партию компютеров у производителя (Аквариус был такой). Все один в один. И железо и ПО.. И вот нам звонят "ваша программа виснет"... Приезжаем на одном компютере реально "спонтанно" виснет. Долго бились.. Выяснилось виснет при появлении на экране определенного цвета с точностью до 1 (в RGB формате). И все из-за глюка видео карты S3.... Это я все к тому, что если вы в своих программах не находили багов - не значит, что их там нет. Прсото либо не складывалась комбинация данных, нпример определенная... Эли условия среды..
Может ваш нотепад++ завис из-за того что у вас дырявая икспи, а рядом ваша програмулина сумела залезть куда не надо и погрызла память. отведеную для нотепада... Т.е. ваш баг, плюс баг икс пи... И вот вы уже вещаете какой фиговый у вас редактор...
Не говоря уж о том, что я на 100% уверен вы ни когда не писали программ сложности аналогичной нотепад++...
Вот сначала напишите, годик ее по развивайте... А потом возвращайтесь к разговорю о безбажности вашего стиля.... Если бы ваш метод давал гарантию напсиания кода без багов, и давал бы огромный профит быстродействия - вы бы давно уже были миллиардером. Потому что бизнесу нафиг не интересны страдания программистов, им важно снижение затрат. И уверяю вас, был бы способ их снизить, они бы им воспользовались...Запись от voral размещена 30.06.2019 в 00:37
-
Ок. Вы обвинили Нотепад ++ в гдючности обоснованной стилем. Напишите аналог. И докажите состоятельность своей идеи.
Сообщение от CoderHuligan
Это не придирки, вы себя возомнили мега умным, и обсираете всех программистов, выдумав какието силы которые занимаются внушением (т.е. прибегаете к методам полит. дискуссий, только не думаете, что здесь выгоды от этого нет ни кому, программисты люди ленивые (в хорошем смысле слова) - был бы способ упростить себе жизнь, они бы и воспользовались)Запись от voral размещена 30.06.2019 в 00:42
-
Одно вы в толк не возьмете: поделки школьного уровня не годятся для принятия решения об превосходстве того или иного метода.
Они могут помочь когда идет нормальная дискуссия. с целью реально понять.
У вас же позиция "я прав - остальные дураки".... вы не можете воспринимать чужой опыт, не имеете своего, но уже решили что, поняли как надо делать всем... Смешнос... Т.е. с вами идет не дискуссия, а так "потрындеть".. Вы остальным доказать не сможете, ввиду явного отсутствия у вас опыта и квалификации, ну а вам не докажешь... да собственно потому же + ваш харктер и завышенное самомнение.
В прочем, выше головы вам не прыгнуть, напишите хоть как то работающий морской бой....Запись от voral размещена 30.06.2019 в 00:43
-
Запись от Usaga размещена 30.06.2019 в 06:55
-
Не вы разве утверждали, что написать морской бой, да еще и без багов, можно только в вашем стиле, и никак иначе? Вот я и привел вам целую гору контрпримеров. Берите, изучайте, ищите баги.
Сообщение от CoderHuligan
Запись от Катафалк размещена 30.06.2019 в 08:12
-
Во-первых я этого не утверждал. Приведите мою цитату, где я это утверждал.
Сообщение от Катафалк
Во-вторых, хорошо, будем сравнивать на уровне функционала, обьёма, простоты понимания и поддержки.
По работали бы с моё в нем.. Я на нём сайт писал не один год. Так что я знаю "все его родинки"..))
Сообщение от Avazart
У меня его нет, в зеркало смотрел.
Сообщение от voral
И я не скрываю, что хобби.
Да, я прочёл много "вумных" книжек, и сделал выводы, к которым, средний программист может НИКОГДА и не придти. Повезло, что уж там..
Я знаю лишь одну достойную ему альтернативу - akelpad, исходники которого кстати у меня имеются(как и notepad++). Видети ли, я интересуюсь тем, как пишутся настоящие крупные проекты. У меня есть множество других исходников. Считаю, что нужно больше читать чужого кода, прежде чем писать свой. Естественно, что я не согласен как они пишутся, хотя с точки зрения модульности всё делается грамотно у одних и безграмотно у других.
Сообщение от voral
То есть, смотрите: сейчас по сути только две программы достаточно достойны, среди простых редакторов. ДВЕ, Карл! Во всём и-нете! Если вы не понимаете всей сложности создания нечто подобного, более того: повышенного функционала, иначе бессмысленно, то ну не знаю. Придётся писать на чистых win api, так как иначе не интересно и они мне знакомы и роднее. Под линукс я писать не буду, так как сижу на винде. Можно по быстрому сделать ядро, а потом навешивать функционал, постепенно. А можно сделать свои собственные api, чтобы несколько абстрагироваться от оси.
Есть у меня задумка написать нечто подобное, но уже на своем языке. Хотя можно и на сишечке. Посмотрим.
Вы не поверите: после того как я выложил код расстановки кораблей, я практически не притрагивался к этому проекту. Вчера с часик поработал. А тот код был написан за один день, когда я пересилив свою лень взял и просидел над ним часов 5-6. Вы правы: надо довести до ума раз начал.
Сообщение от Usaga
Видите сколько понаписал, а ведь мог столько же кода сообразить. Поэтому пока умолкаю.Запись от CoderHuligan размещена 30.06.2019 в 13:39
-
чтение сколь угодно умных книжек без практики. это лучше чем ни чего, но все равно "стоит" ужасно мало. Без практики у вас нет возможности принять информацию правильно и адекватно. Как, в прочем, и понять на сколько книжка умна. У меня когда то был преподаватель в ВУЗе. Наизусть помнил все ф-ии turbo Pascal с параметрами. Но вот когда я в лабораторной в программе сделал меню не на уровне "Для расчета методом А нажмите 0, для Б - 1), а с формированием псевдографического меню (дело было во времена DOS) с выбором стрелочками и ентером, он пришел в дикий восторг, и попросил разрешение показывать программу другим студентам в качестве образца...
Сообщение от CoderHuligan
Вы считаете себя единственным и не повторимым? Ну я, например, подхватил брошенный пакет в репе Fedora и вел его некоторое время и что? Участвовал в сильно комеерческих проектах включая разработку САПР грозозащиты. А если провести опрос здесь отписавшихся, полагаю найдутся и гораздо с более серьезными и сложными проектами. И все они на столько глупы?
Сообщение от CoderHuligan
Поймите уже. В любом чужом коде можно найти "не логичность" какжущуюся именно вам именно с вашей позиции и опыта.. Более того, многие меня поддержат, плох тот программист кто смотрит в свой код годовой давности и считает его идеальным.
Но критерий тут прост: все они создали рабочие, действующие программы, а вы только думаете что можете сделать лучше...
Интересно какие. Озвучте- не томите.
Сообщение от CoderHuligan
Да, без условно, я работая профессионально, и начав свою "карьеру" с разработки САПР понимаю в сложности на много меньше чем дилетант просто почитавший много "умных" книжек. И не имея в зачете ни одного сложного проекта.
Сообщение от CoderHuligan
Без проблем, и на чистом WinApi у меня были проекты, что за проблема тут может быть?
Ну от вас ни кто пока этого и не требует. Сделайте аналог Notepad++ своим методом. Все вам будут только благодарны (ну если верить вашим заверениям).
Сообщение от CoderHuligan
Т.е. по вашем, я код, который показал вам писал 30 часов (а еще если учесть что я сначала на C++ написал, потом уточнил ТЗ и сделал на си, то вообще 60 что ли)? Меня б жаба задавила столько времени в пустую потратить.
Сообщение от CoderHuligan
Запись от voral размещена 30.06.2019 в 14:00
-
Это Ваше субъективное мнение.
Сообщение от CoderHuligan
Для меня в нормальном стиле "КПД" намного выше...
Да думаю, что для большинства программистов тоже...
Я даже в своих ассемблерных программах:
1) никогда не применяю нештатные заходы во внутрь цикла...
2) все конструкции, типа цикла, являются отдельным блоком.
3) разные switch-и стараюсь реализовывать при помощи табличных переходов, дабы уменьшить наличие лишних переходов ...
4) все имена и метки имеют смысл. Отсюда, комментарии достаточно писать только для неочевидных моментов..
Ибо жизнь научила: надо писать так, чтобы легко и сходу понять код. Держать в голове золотое правило: код пишется для человека,
а не для компилятора... Итог: я в своем коде легко ориентируюсь и по прошествии десятка лет...
Если говорить о С/С++, то весь мой опыт говорит о том, что без goto вполне можно легко обойтись в любых алгоритмах, любой сложности.
Если Вы не умеете использовать другие возможности, это только говорит о Вашей неспособности научиться пользоваться этими возможностями в полной мере.
Учить других писать "для себя" - это оказывать им медвежью услугу, они не смогут сходу влиться ни в какую команду.
В лучшем случае, им придется ломать привитые Вами привычки, переучиваться...
Отсюда вывод: Ваш учительство вредно для начинающих программистов.
Кроме того, (вспомните лектора) средний IQ современных молодых людей идущих в программирование, - 60
Им надо сразу рассказывать, как надо писать программы... Чтобы хоть немного уменьшить вероятность ошибок.
Не забывайте, если есть возможность сделать ошибку, она будет сделана.
Стиль goto предоставляет таких возможностей намного больше.Запись от liv размещена 30.06.2019 в 14:28
-
Notepad++ и akelpad. Несмотря на бажность notepad++ обладает хорошим функционалом чисто для программистских целей, для этого он в общем и создавался. Однако он тормозит на открытии больших файлов, в отличие от akelpad. Поэтому с большими файлами лучше работать с последним.
Сообщение от voral
Хорошо, попробую. Как вы понимаете автор Notepad++ создавал свой проект используя готовую библиотеку Scintilla. А мне придётся писать всё с нуля. Проект на годы. Хотелось бы иметь программируемый пользователями редактор. Чтобы пользователи сами могли писать к нему плагины, а не ждать пока автор не соизволит учесть все нужды пользователей.
Сообщение от voral
Это потому, что вы не пишете другую документацию.
Сообщение от liv
Только они будут неэффективны(будут производить кучу ненужных действий).
Сообщение от liv
Их просто надо научить сперва делать проектную документацию, а потом уже писать с неё код.
Сообщение от liv
Стиль goto предоставляет безграничные возможности в создании алгоритмов. Просто надо правильно его документировать и всё будет понятно.Запись от CoderHuligan размещена 30.06.2019 в 16:23
-
Вам еще предстоит много "открытий чудных"
Сообщение от CoderHuligan

Мы подождем. Только вот я на 90% уверен, что знаю исход этого проекта. На вашем бы месте я попробовал просто качественный редактор без плагинов для начала... Тем более сами же говорили, что код у вас получается неимоверно гибкий, и его расширить не составит для вас труда.
Сообщение от CoderHuligan
В любой случай это единственный способ вам доказать состоятельность своего метода и слов. А до тех пор это просто балабольство дилетанта.
Правильно. Нормальным программистам нет время на составление не нужной документации, т.к. это прекрасно "документирует" сам по себе код. На что не требуется дополнительного времени в отличии от дополнительной документации.
Сообщение от CoderHuligan
Это надо сначала доказать, опыта у вас это говорить нет.
Сообщение от CoderHuligan
Да ладно ?!! Ужасы какие.... Т.е. вы уже готовы программу для профильных ВУЗов состваить, а то там все те же идиоты, годами уходишие от метода гото...
Сообщение от CoderHuligan

Пока это пустые слова. И ваши предположения ни на чем не основанные.
Сообщение от CoderHuligan
Самое плохое во всей этой катавасии, что вы начали с того, что обозвали это уроками... Как отметили выше, и я полностью согласен, что это вредительство. Пока вы действуете не публично и сами с собой наслаждаетесь своим кодом - делайте, что угодно. Ни кто не запрещает вам ходить по граблям по которым уже прошел не один человек. Но вот, то что по вашим статьям могут пойти, например, школьник желающий стать программистом настоящим, вот это ему свинью подсовываете.
Вы бы сами попробовали свои слова "со стороны" прочитать. С таким же успехом можете и хирургию преподавать...Запись от voral размещена 30.06.2019 в 17:02
-
Запись от CoderHuligan размещена 30.06.2019 в 17:50
-
Э-э-э, с чего Вы это взяли?
Сообщение от CoderHuligan
Речь шла только о самом коде.
Опять же, откуда Вы это взяли?
Из собственных представлений? Из того, как пишете Вы?
Документирование никто не отменяет. Это во-первых. Во-вторых, для кодирования алгоритмов не менее безграничные возможности есть и без goto.
В-третьих, Документирование должно быть таким, чтобы не утонуть в частностях. Т.е. более, чем достаточно иметь описание "черных ящиков", т.е. автоматов.
Т.е. что на входе, что на выходе, т.е. алгоритма работы системы в целом. Вся дребедень внутри "ящика" исключительно, как самодокументированный код.
В противном случае, наличие бесконечного описания, например, Ваших меток только усложнит понимание кода.
Это я пишу, как человек, который принимал участие, например, не в одном проекте по созданию ПО для работы на атомной станции. Там много подсистем, я не участвовал в управлении реактором, занимался подсистемами видеонаблюдения. Так что без программной документации ничего не делалось. И было взаимопонимание с коллегами. И все заработало сразу, даже практически без сбоев... Несколько мелких ошибок были быстро выявлены и исправлены. Были также быстро и оперативно внесены необходимые коррекции. После чего, все работало вообще без ошибок. В сопровождении продукта не было никаких проблем. Все было прозрачно и понятно...
Кстати, раз уж Вы ратуете за предварительную проектную документацию, где таковая на морской бой?
Вы же учитель... Где же следование собственным принципам? Как же Вы собираетесь учить других?
Так понимаю, ратуете за одно, делаете другое. Другими словами, Вы - лицемер.Запись от liv размещена 30.06.2019 в 17:53
-
Доказывал и доказал - это разные вещи.
Сообщение от CoderHuligan
Запись от voral размещена 30.06.2019 в 17:54

Да думаю, что для большинства программистов тоже...
