Здравствуйте LeonGorbachev, Вы писали:
LG>Здравствуйте The Lex, Вы писали:
TL>> Есть такое... Попробуйте в Word ввести "уточнение наличия запасов м.с.;" — интересно, как ваш Word на это отреагирует?
LG>да в общем как всега — вывел на экран буковки. И ничего более... А в чем прикол?
У меня:
Microsoft Word 2000 (9.0.3821 SR-1)
Microsoft Windows NT Server 4.00.1381
Насчет систем проверки орфографии точно не скажу — похоже все дело в них. Но виснет напрочь... Правда только Word — NT остается в здравии...
Здравствуйте The Lex, Вы писали:
TL>Здравствуйте Sergey, Вы писали:
S>>Не, не надо путать причину со следствием. Тут не готу у человека отбирать надо, а конкретно дать ему по башке, чтоб выучил новый язык.
TL>Я всегда считал, что для того чтобы выучить новый язык, необходимо научиться думать на нем, мыслить его категориями. Разве не так?
Так, но причем здесь это? Разве запрет на использование goto заставит думать новыми категориями? В данном случае (для очистки ресурсов) в С есть другие средства, например, лесенка if'ов. Скорее переучиваемый прибегнет к ним, чем к классам-оберткам. Так что запрет на использование goto — полумеры. Раз уж мы говорим о коде в ATL, то налицо или упорное нежелание людей, его писавших, переучиваться, поскольку писался код именно под С++, или применение методики программирования, известной как Copy'n'Paste.
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
Здравствуйте Sergey, Вы писали:
S>Здравствуйте The Lex, Вы писали:
TL>>Здравствуйте Sergey, Вы писали:
S>>>Не, не надо путать причину со следствием. Тут не готу у человека отбирать надо, а конкретно дать ему по башке, чтоб выучил новый язык.
TL>>Я всегда считал, что для того чтобы выучить новый язык, необходимо научиться думать на нем, мыслить его категориями. Разве не так?
S>Так, но причем здесь это? Разве запрет на использование goto заставит думать новыми категориями?
Запрет на использование родного языка на уроках иностранного широко применяется и, судя по всему, весьма эффективен.
S>В данном случае (для очистки ресурсов) в С есть другие средства, например, лесенка if'ов. Скорее переучиваемый прибегнет к ним, чем к классам-оберткам. Так что запрет на использование goto — полумеры. Раз уж мы говорим о коде в ATL, то налицо или упорное нежелание людей, его писавших, переучиваться, поскольку писался код именно под С++, или применение методики программирования, известной как Copy'n'Paste.
Ну, теперь мы начинаем сваливаться в сторону технологий изучения языков, языков программирования в т.ч.
Здравствуйте VladD2, Вы писали:
VD>Да. Универсальность понятие растяжимое. Было бы здорово иметь средство автоматизирующее процесс создания любого ПО, но пока этого нет. Успех достигнут только в проектировании БД. Я же хочу иметь нечто, что поможет не только проектировать но и автоматически реализовывать. Пусть даже в узкой области.
Причем в проектировании реляционных баз данных, насколько я знаю...
Здравствуйте Patalog, Вы писали:
...>>Да. Похоже, что в данном случае один черт. Но проблема это классическая — называется "exception с повторением" — возврат в точку ошибки после ее исправления. Стандартная схема эмуляции с помощью обычных исключений:
...>>
P>Не совсем понял, как это прикрутить в моем случае?
Посмотреть на проблему с другой стороны — не "выполнить проверку", а "повторять проверку, пока не окажется, что все в порядке".
P>И потом, при больших итерациях, накладые расходы на исключения могу оказаться критичными. Правда это из более другой области.
Здравствуйте The Lex, Вы писали:
S>>>>Не, не надо путать причину со следствием. Тут не готу у человека отбирать надо, а конкретно дать ему по башке, чтоб выучил новый язык.
TL>>>Я всегда считал, что для того чтобы выучить новый язык, необходимо научиться думать на нем, мыслить его категориями. Разве не так?
S>>Так, но причем здесь это? Разве запрет на использование goto заставит думать новыми категориями?
TL>Запрет на использование родного языка на уроках иностранного широко применяется и, судя по всему, весьма эффективен.
Демагогия. Попробуй тогда учить белорусский язык, зная русский (да и в этом случае отличия принципиальные). Да и запрет одного слова не равен запрету языка. Тут, IMHO, наиболее подходящее "лингвистическое" сравнение — обучение хорошему стилю написания поэзии на итальянском языке человека, умеещего писать прозу на церковной латыни путем запрета употребления слова amen.
S>>В данном случае (для очистки ресурсов) в С есть другие средства, например, лесенка if'ов. Скорее переучиваемый прибегнет к ним, чем к классам-оберткам. Так что запрет на использование goto — полумеры. Раз уж мы говорим о коде в ATL, то налицо или упорное нежелание людей, его писавших, переучиваться, поскольку писался код именно под С++, или применение методики программирования, известной как Copy'n'Paste.
TL>:) Ну, теперь мы начинаем сваливаться в сторону технологий изучения языков, языков программирования в т.ч.
Ну дык! С самого начала к этому шло ;)
Одним из 33 полных кавалеров ордена "За заслуги перед Отечеством" является Геннадий Хазанов.
[skip]
TL>Вот и я о том же. И насчет постоянного добавления новых фич тоже. Может конечно сфера деятельности компании Patalog-а столь специфична, что этого не требуется, только что-то я в этом сомневаюсь. Вы уж меня простите, господин Patalog.
Не прощу :)
Новые фичи добавляются, но не постоянно. В одном из ответов я уже пытался объяснить почему. И ссылку на нашу контору давал. Так что не сомневайся ;)
Если кто еще не понял, "девушка в железном ящичке" — гипербола, сродни материальной точке и "модели сферической операционной системе в вакууме". Этим я хотел только показать несостоятельность mintenance в этом случае, с точки зрения добавления новых функций.
Вы же пытаетесь доказать, что применение goto _неизбежно_ приведет к "монолитности", ошибкам и еще черт знает к чему. И что программу будет _совершенно_ невозможно читать\отлаживать\править. То, что использовать goto "где попало" неправильно — я с этим никогда не сомневался. И я этого не делаю.
[Лирика]
Например, у нас скоро планируется переход на другое железо. При этом изменится форма представления сигналов и интерфейс к железяке. Форма представления изменится абсолютно безболезненно, ибо этого стоило ожидать и изначально закладывалась такая возможность. А вот с железкой хуже. Переделывать придется все (или почти все). И не потому, что этого не ожидалось, просто в данном случае предсказать и спроектировать проект так, чтобы учесть эти изменения — нельзя (ну или это просто мы не смогли). Когда в последний день решается вопрос — ISA\PCI\USB\COM\LPT и т.д. я не знаю как это предсказать, поскольку архитектура _сильно_ будет зависеть от аппаратной части. Почему вопрос решается в последний день — вопрос не ко мне, у железячников свои заморочки. Думается они еще сильно завязаны на производителей\поставщиков компонентов. Ибо когда возникает вопрос один контроллер либо более другой, решается по большей части в пользу стоимости оного, сроков доставки оного (помниться max срок был 1-год), стоимости обвязки оноого и т.д.
[skip]
VD>>Если было проще, то IT и я сдесь не матерились бы. Он тебе уже сказал, что именно такой подход как ты описываешь тормозит развитие этого сайта. Да и вранье это, что создание оберток замедляет процесс разработки. В программе 10-15 типов ресурсов которые нужно контролировать. Для 70% обертки уже есть. Так что из года ты убьешь на это занятие две недели. Зато потом, тебе не придется убивать кучу времени на встраивания такого же кода после меток от goto и отлаживать каждое такое место. Не придется так же и следить за последовотельностю освобождения этих ресурсов.
TL>Поддерживаю... :user:
TL>P.S. Если кто-нибудь думает, что я подлизываюсь к Vlad-у ;) — это не так. :)) Могу сказать, что с некоторыми статьями на optim.ru я несогласен... :shuffle:
Для ресурсов я тоже обертки использую, так что давай подлизываться вместе :)
Ну, я уже высказал кому-то свое мнение (я читаю тему в "плоском" режиме), что вся эта тема вроде как разминка для ума для уважаемых господ программистов (а также разработчиков и всех, кого я еще не упомянул).
TL>> Ну, теперь мы начинаем сваливаться в сторону технологий изучения языков, языков программирования в т.ч.
S>Ну дык! С самого начала к этому шло
[skip]
P>>Не совсем понял, как это прикрутить в моем случае?
...>Посмотреть на проблему с другой стороны — не "выполнить проверку", а "повторять проверку, пока не окажется, что все в порядке".
Ну, может быть к вопросу о подборе паролей это прикрутить и можно...
То есть ты предлагаешь сгенерить файловую систему, залить ее на болванку, попросить юзера воткнуть ее в сидюк и при возникновении исключения повторить все заново?
Или я опять недопонял? Прошу, объясни подробнее, как? Поглядеть можно много куда, вопрос вполне конкретный: при несоответствии идентификатора заданным критериям предоставить пользователю возможность исправить ошибку. При попытке исправить проверить заново. Все. Если тебе не сильно влом, перепиши кусок, который я предлагал к рассмотрению, с использованием метода "повторять проверку, пока не окажется, что все в порядке".
Здравствуйте Patalog, Вы писали:
P>Здравствуйте The Lex, Вы писали:
P>[skip]
TL>>Вот и я о том же. И насчет постоянного добавления новых фич тоже. Может конечно сфера деятельности компании Patalog-а столь специфична, что этого не требуется, только что-то я в этом сомневаюсь. Вы уж меня простите, господин Patalog.
P>Не прощу P>Новые фичи добавляются, но не постоянно. В одном из ответов я уже пытался объяснить почему. И ссылку на нашу контору давал. Так что не сомневайся
Да я в общем-то не очень сомневаюсь. Я кое-как представляю себе, что такое сертификация...
P>Если кто еще не понял, "девушка в железном ящичке" — гипербола, сродни материальной точке и "модели сферической операционной системе в вакууме". Этим я хотел только показать несостоятельность mintenance в этом случае, с точки зрения добавления новых функций. P>Вы же пытаетесь доказать, что применение goto _неизбежно_ приведет к "монолитности", ошибкам и еще черт знает к чему. И что программу будет _совершенно_ невозможно читать\отлаживать\править. То, что использовать goto "где попало" неправильно — я с этим никогда не сомневался. И я этого не делаю.
Уф... Давайте забудем об этом бедном goto! Хорошо? Мы уже говорим не столько не совсем о нем, сколько совсем не о нем. Мы (конкретно с вами) больше обсуждаем рациональность написания "монолитного кода" против "структуированного кода".
Я тут удалил часть Вашего сообщения. Вы писали о проблемах взаимодействия с железачниками. Тут по большей степени организационные проблемы. Но вот "архитектура _сильно_ будет зависеть от аппаратной части" — как это может быть? Если эти слова относятся к чему-то довольно низкоуровневому — это да. Но даже в этом лучае какие-то общие принципы должны наследоваться, иначе придется переделывать всю систему. Причем каждый раз, как только железячникам взбредет в голову что-то новое.
VD>>>Если было проще, то IT и я сдесь не матерились бы. VD>>>...
TL>>Поддерживаю...
TL>>P.S. Если кто-нибудь думает, что я подлизываюсь к Vlad-у — это не так. Могу сказать, что с некоторыми статьями на optim.ru я несогласен...
P>Для ресурсов я тоже обертки использую, так что давай подлизываться вместе
Вы считаете он это оценит? Он тут намекал, что ему мол кодеры нужны...
[skip]
TL>Да я в общем-то не очень сомневаюсь. Я кое-как представляю себе, что такое сертификация...
На мой взгляд, лучше бы и не представлять. И забыть об этом как о страшном сне.
[skip]
TL>Уф... Давайте забудем об этом бедном goto! Хорошо? Мы уже говорим не столько не совсем о нем, сколько совсем не о нем. Мы (конкретно с вами) больше обсуждаем рациональность написания "монолитного кода" против "структуированного кода".
Здесь я думаю обсуждать нечего, преимущество 2-го очевидны. В общем случае. За некоторыми исключениями, вызвынными причинами организационного характера. Как говорится, "А сказали бы им вечером в пятницу...". Я говорю о том, что иногда приходится попускаться высокими материями, и писать как придется, главное быстрее и "шоб работало", надеясь, что потом не придется править. Времени на хорошее проетирование просто может не быть. Но это исключение.
Я просто пытаюсь доказать, что все и вся грести под одну гребенку не стоит. Как и делать безаппеляционные заявления насчет ламеров и высококлассных программистов.
TL>Я тут удалил часть Вашего сообщения. Вы писали о проблемах взаимодействия с железачниками. Тут по большей степени организационные проблемы. Но вот "архитектура _сильно_ будет зависеть от аппаратной части" — как это может быть? Если эти слова относятся к чему-то довольно низкоуровневому — это да. Но даже в этом лучае какие-то общие принципы должны наследоваться, иначе придется переделывать всю систему. Причем каждый раз, как только железячникам взбредет в голову что-то новое.
А вот именно так оно и есть. Общие принципы несомненно соблюдаются, и переделывать _всю_ систему пока не приходилось. Обычно переделывается _вся_ интерфейсная часть (я имею в виду как низкоуровневую — драйвера, так и интерфейс с драйверами /в меньшей степени, ибо это более или менее можно обобщить/).
[skip]
P>>Для ресурсов я тоже обертки использую, так что давай подлизываться вместе
TL>Вы считаете он это оценит? Он тут намекал, что ему мол кодеры нужны...
Здравствуйте Patalog, Вы писали:
...>>Посмотреть на проблему с другой стороны — не "выполнить проверку", а "повторять проверку, пока не окажется, что все в порядке".
P>Ну, может быть к вопросу о подборе паролей это прикрутить и можно... P>То есть ты предлагаешь сгенерить файловую систему, залить ее на болванку, попросить юзера воткнуть ее в сидюк и при возникновении исключения повторить все заново?
Зачем же так глобально?
P>Или я опять недопонял? Прошу, объясни подробнее, как? Поглядеть можно много куда, вопрос вполне конкретный: при несоответствии идентификатора заданным критериям предоставить пользователю возможность исправить ошибку. При попытке исправить проверить заново. Все. Если тебе не сильно влом, перепиши кусок, который я предлагал к рассмотрению, с использованием метода "повторять проверку, пока не окажется, что все в порядке".
разумеется, слегка изменив pCheckControl->DoControl.
В этом коде весь CheckDuplicates рассматривался как атомарный. Если же атомарна только операция сравнения записи, то можно просто пронести try/catch внутрь for.
Здравствуйте Patalog, Вы писали:
P>Vlad, а ты не думаешь, что изменение переменной цикла внутри цикла вешь более взрывоопасная, чем goto?
Нет. Не думаю. Это логика программы. К тому же удален ненужный цикл, так что читать такой код проще. Я бы для решения подобной задачи использовал итератор, и код стал бы еще проще и понятнее. Вариант с do тоже приемлем, но goto особенно в сочетании со скрытими граблями for-а, на которые я наткнулся в первый раз.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте Patalog, Вы писали:
P>Так у меня никакой проблемы и не возникает. Похоже она возникает у тех кто пытается переписать код в соответствии с "правильным теоретическим проектированием".
Судя по твоему упорству проблема у тебя все же возникает. Только она не в неумении переписать..., а в твоей психологии. Тебе показали три варианта решающие твою пробему и более понятные окружающим, ты же все варианты назвал извращениями (не приведя ни одного аргумента).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте Patalog, Вы писали:
P>Что, прямо таки весь код показывать? Так его достаточно много... Вообще ето код генерации isofs (Level 1, 2, 3 и Joilet Ext).
Весь не надо. Достаточно этой функции. Хотя размер приведенного тобой кода уже приближается к максимально допустимому для меня.
P>Проблема в чем, каждый идентификатор (имя файла, директории) должен соответствовать определенным критериям вышеупомянутых стандартов (типа того что имена файлов на одном уровне вложенности не должны совпадать, иметь определенную длину, ограничивается общая длина идентификаторов от корня и т.д.). При нарушении одного из критериев пользователю предоставляется возможность исправить ошибку (типа как Nero ругается, что имя длинной более 255 символов и предлагает сократить).
Т.е. Это интерактивная программа? Может быть тогда гумманнее (по отношению к пользователю) быбо бы создать список ошибок и предложить их исправить.
P>Кусок кода, который я привел проверяет идентификатор на уникальность на данном уровне вложенности. Для этого идентификатор сравнивается со всеми идентификаторами на данном уровне.
Такие вещи на порядок эффективнее делать через хэш-таблицы. При этом повторная проверка могла бы выглядеть простым циклом и занимала бы пару строк.
P>Если пользоватль решил отменить генерацию — ок, выходим, если игнорировать — ок, юзер знает что делает, продолжаем, если решил положиться на автоматическое исправление — ок, продолжаем (кстати в данной реализации игнорировать == автоматически исправлять), если же юзер все же внес исправленя необходимо вновь проверить новый идентификатор на соответствие.
В подобный алгоритмах предпочтения пользователя обычно учитываются введением переменной.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Прочитал вот на dotsite — абзац "Простота использования"
----------
В C#, также как и в Visual Basic после каждого выражения case в блоке switch подразумевается break. И более не будет происходить странных вещей если вы забыли поставить этот break. Однако если вы действительно хотите чтобы после одного выражения case программа перешла к следующему вы можете переписать свою программу с использованием, например, оператора goto.
----------
Я полагаю, статью написал не дурак. Но зачем вот прямо так — серпом по ...
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Здравствуйте Коваленко Дмитрий, Вы писали:
КД>Я полагаю, статью написал не дурак. Но зачем вот прямо так — серпом по ...
Самое печальное, что это рекомендованный Микрософтом способ. Вместо того, чтобы сделать другой, ограниченный пределами switch оператор, они решили сэкономить и использовать для этого goto.
Если нам не помогут, то мы тоже никого не пощадим.
Давай на ты. Здесь так принято...
TL>По моему скромному мнению уже есть подобные прецеденты.
Я и не спорю. Только они или никуда не годные, или мало полезные.
TL> Далеко ходить не надо: что вы скажете насчет систем управления веб-контентом? САПР сайта.
Честно говоря законченные системы в этой области мне не нравятся.
TL>Кто сказал, что HTML/DHTML/ServerScripts — это не программирование?
Да никто вроде не говорил.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте VladD2, Вы писали:
VD>Здравствуйте The Lex, Вы писали: VD>Давай на ты. Здесь так принято...
Все время забываю. Рефлекс... Буду стараться...
TL>>По моему скромному мнению уже есть подобные прецеденты.
VD>Я и не спорю. Только они или никуда не годные, или мало полезные.
Я как раз и имел в виду системы управления веб-контентом. А вообще САПР ПО я представляю себе довольно смутно. Ну есть, конечно, некоторые
TL>> Далеко ходить не надо: что вы скажете насчет систем управления веб-контентом? САПР сайта.
VD>Честно говоря законченные системы в этой области мне не нравятся.
Мне тоже — они дает возможность избавиться от рутины, но ограничивают свободу. На RSDN таких нет?
TL>>Кто сказал, что HTML/DHTML/ServerScripts — это не программирование?
VD>Да никто вроде не говорил.