Здравствуйте, Sergey, Вы писали:
S>Это потому, что ошибки дизайна могут быть только в конкретном дизайне А мы никакой конкретный дизайн пока не обсуждаем.
Логично. Вот только тут кое-кто утверждал, что дизайн построеный на метаданных — это принципяльно кривой дизайн.
S>Это доказывает только то, что тебе макросы привычнее шаблонов.
Вовсе нет. Просто задача решалась значительно проще на макросах. Был бы приличный генератор кода подрукой выбрал бы его.
Собственно шаблонами эта задача вообще не рашалась. Мне нужно было сгенерировать АПИ для доступа к таблицам метаданных дотнета. Как ты себе видишь генерацию публичного интерфейса классов на шаблонах?
S>Ну, он и выглядит нормально, если уметь на него смотреть.
— Ген! Сомотри... Мой портрет!
— Чебурашка, а что это он какой-то странный?
— Чем?
— Ну, он весь как-то стнанно разлинован и вообще...
— А! Это его месник рисовал... Он так видит!
S> Мне вот часто говорят, что функционально программирование полный рулез и показывают какой-то код на OCML'е, который на мой посторонний взгляд просто ужасен Но из этого не следует, что тот код плох — просто я его с трудом понимаю.
Ничего не могу скзать по причине не знания OCML-я. Хотя в отношении Модулы у меня такое же впечатление. Но это концепции. А тут речь о банальном излишестве кода на еденицу полезного действия. Бывают кстати и обратные перегибы. Например, регэкспы.
S>А это не лишнее — это то же самое, что и атрибут с параметрами для переменной выставить.
Вот ттлько атрибуты появляются изреда, не занимают времени компилятора и не засоряют код.
S>Хм, а если я хочу из edit'а float'овские данные забирать без написания лишнего кода? Да еще с валидацией?
Тогда ты пишешь класс редактирующий float-ы и потом всю жизнь пользуешся с ним. Это же ОО. Если влом писать лезешь в Интернет за халявой или платными продуктами.
S>Ну дык код-то генерировать придется уже в рантайме, на машине клиента.
Это как ты зашочешь. Можно и в во время компиляции генерить, а можно и на глиенте. Кстати, это со временем будет все выгоднее. Клиенты то разные и генерация это может учитывать. Хотя сам msil по большему счету уже это обеспечивает.
S>У нас просто разные понятия о минимуме затрат
Да. Для меня это бестрый результат с минимум напряжения.
VD>>Что значит еще? Идее метапрограммирования думаю столько же лет сколько существуют высокоуровневые языки.
S>Ссылки и цитаты, плиз.
Я тут не специалист. Погляди в гугле на слова SML, Prolog, Lisp, Smalltalk. Все они имеют зачатки метапрограммирования которые появились очень давно. Хотя еще раз повторю в этой области я профан.
S>Ты его явно демонизируешь
Возможно. Через лет пять увидим.
S>Чья бы корова мычала "А до генераторов кода этому подходу как до Пекина раком." и т.д., причем абсолютно бездоказательно.
Ты генераторы кода видел? Мне кажется — это очевидно. Те же макросы имеют куда большие возможности ито не дотягивают до генераторов по возможностям.
S>Ну а ты головой-то подумай, что надежней будет: сгенерировать код компилятором у себя на машине, и тут же все ошибки увидеть, или генерировать его на машине клиента?
Это ты подумай. Генерит код-то машина. Если алгоритм генерации правильный, то код будет даже надежнее рукописного. Он же по алгортму сделан. А отлафивается код один фиг в конечном счете прогонами. Так что однажды отлаженный генератор будет довать очень даже надежный код.
S>Бездоказательное пустозвонство Ты даже код, который это делает, не видел.
Нуда нам серым. Вот изобрази на шаблонах хотя бы вот такой примитив, а потом поговорим:
Файл с описанием структуры таблиц (CODER_TOKEN_DEF.h):
CODER_TOKEN_DEF_BEGIN(TypeDefOrRef)
CODER_TOKEN_DEF_TABLE(TypeDef)
CODER_TOKEN_DEF_TABLE(TypeRef)
CODER_TOKEN_DEF_TABLE(TypeSpec)
CODER_TOKEN_DEF_END(TypeDefOrRef)
// И еще много много таких обявлений...
CODER_TOKEN_DEF_BEGIN(ResolutionScope)
CODER_TOKEN_DEF_TABLE(Module)
CODER_TOKEN_DEF_TABLE(ModuleRef)
CODER_TOKEN_DEF_TABLE(AssemblyRef)
CODER_TOKEN_DEF_TABLE(TypeRef)
CODER_TOKEN_DEF_END(ResolutionScope)
#undef CODER_TOKEN_DEF_BEGIN
#undef CODER_TOKEN_DEF_TABLE
#undef CODER_TOKEN_DEF_END
Здравствуйте, Sergey, Вы писали:
S>Ну, код тебе приводить бесполезно,
От чего же? Если он чистый и хорошо читабельный, то гляну. А на навороты глядеть неохота.
S>тебе его лень смотреть, книг ты принципиально не читаешь —
Да ты лучше меня знаешь, что я принципяльно делаю и не делаю. Прям шаман.
S>оставайся при своем мнении.
Ну, хоть на этом спасибо.
VD>>И как ты будешь отлаживать более менее сложный алгоритм засунутый рекурсивный шаблон? S>Только сообщениями об ошибках, к сожалению.
Во-во. А это при больших объемах кодогенерации оооОочень сложно. Я лично не раз с этим сталкивался. А ведь в таких подходах порой и сообщение некуда впихнуть.
VD>>Или что будешь делать если рекурсия для решения некоторой проблемы не является удобным подходом? S>Буду использовать boost::mpl, когда фирма, где я работаю, соблаговолит переползти на более стандартный компилятор.
Во-во. Еще и не все компиляторы это дело хавают. А те что хавают начинают безбожно тормозить. Пару сотен таких использований и проект компилируется по 10 минут на P4.
S>Угу, только код-то получаться иногда разный будет, и все его варианты ты по определению не отладишь...
Код плучается по алгоритмам. И нужно отлаживать именно их, а не конечный код. Практика показывает, что чем меньше участие человека тем меньше ошибок. 99% ошибок — это человеческий фактор.
S> И наверняка иногда он вообще с синтаксическими ошибками будет генерироваться — у меня на эти ошибки выругается компилятор еще до поступления кода к пользователю, а у тебя?
Дык код то все равно компилировать. Так что тоже компилятор. Другое дело кода. Но синтаксические ошибки в компиляторе, это как раз фигня. Намного страшнее лаогические.
S>>>Черта с два ты макросами такое сделаешь. VD>>Ну, ну. В чем проблема?
S>Отлаживаться плохо, например.
Забавные рассуждения. Тяжело == черта с два.
S> Ну и с типобезопастностью дело никудышно у макросов обстоит. Прагму внутрь макроса не вставишь. Да полно у препроцессора недостатков.
Недостатков у препроцессора хаватает. Но в итоге все зависит от рук. Если же говорить, о гибкости, то макросы куда гибче. Тебе же именно гибкость нужна? Руки то у тебя в порядке.
S>Я ее не помню. Ну ладно, потрачу пару минут, найду: http://sourceforge.net/projects/opencxx/
Сенкс. Я вот попробовал поискать и зарылся в хламе. С описанием там как-то туго. Жаль...
VD>>Он к языку привязан? S>Да.
Жаль.
S>Тебе макросы для шарпа нужны, что ли? А чем плюсовый препроцессор не устраивает?
Дык он плюсовый. Да и желательно было бы видеть результаты его творчества. К тому, же ограничения... отсуствие цыклов, переменного количества параметров, невозможность метаанализа...
S>Естественно, дольше, чем то, что существует. Новое сначала придумать надо.
... << RSDN@Home 1.1 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, WolfHound, Вы писали:
VD>>>Ты сказал, что непонятны они только тем кто с ними работать не умеет. Так вот я умею с ними работать очень неплохо. S>>С шаблонами? Вряд ли. WH>Согласен.
Гы-гы.
PS
И почему чем неопытнее люди, тем чаще они считают, что уменее всех остальных?
... << RSDN@Home 1.1 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, IT, Вы писали:
IT>Похоже что твой друг — воинствующий динозавр и убеждать его в обратном не стоит IT>Сори, не в обиду, но выглядит это никак не иначе.
Все динозавры начинают с маленького. Непонравился новый компилятор/рантайм/среда... забил на нее... прошли годы... нужно обосновывать свое пребывание в каменном век...
PS
Все имена вымышленные, а совподения не предномеренные.
... << RSDN@Home 1.1 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Неужели они так страшны, что из-за этого нужно изобретать заведомо менее универсальный велосипед?
Мне не нужна уневерсальность. Мне надо как можно меньше гемороя, а GUID, IDL... это геморой.
WH>> Не критично но очень удобно иметь прямой доступ к проперти подобным обьектам. VD>Так проперти или данным?
Данным косящим под проперти.
VD>Не понял? А какие приемущетсва у С++? В дотнете классы могкут иметь публичные члены. В общем не ясно о чем ты...
Дык перегрузка присваивания запрещена даже у value типов. Следовательно обьект под проперти косить не может. А даже если бы и было в интерфейс всеравно не засунишь. Препроцессор бы помог но и его нету. Остается внешний кодогенератор.
VD>А какова их цель?
Как и у всех остальных шаблонов.
Писать меньше и читать проще. Часто позволяют сэкономить символов 10-50 что очень не плохо.
... << RSDN@Home 1.1 alpha 1 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, Геннадий Васильев, Вы писали:
ГВ>Здравствуйте, LaptevVV, Вы писали:
ГВ> LVV>>Я лично ЗАПРЕТИЛ применение Борланда 5 и выше, когда исследовал LVV>>несколько объектных файлов. На х@@. Я хочу спать спокойно. ГВ>
ГВ>Мда... Слушайте, мож это шутка такая?
Нет, не шутка. Пишут системы реального времени. Все прошивается, видимо связано с риском крупных аварий.
Поэтому, как в том анекдоте:
Работает? Работает!
Проверял? Проверял!
Вот и не трогай ничего, пусть работает!
И я своего друга прекрасно понимаю, так же как и Михаила Донского (одного из авторов Каиссы — первого чемпиона по шахматам среди компьютеров). Он, когда переходил с Лексикона на Word, тоже говорил: мне не нравится, когда меня ВЫНУЖДАЮТ платить за то, что мне не фактически НУЖНО.
Так и С# — не вижу я особых преимуществ ни перед С++, ни перед Java. У этих языков переносимость на 3 порядка выше, чем у до диеза.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
LVV>Цитата из письма моего друга, активно действующего программиста, руководителя лаборатории и нескольких проектов. Заранее прошу извинения за эмоциональность монго друга, но видимо, у него сильно накипело!
Ну вот, хороший пример теперешней ситуации. Любая новая технология всегда будет встречать яростный отпор и непонимание.
Что же касается данного конкретного человека то видимо его задачи мало связаны с программированием, иначе цифра в 0.05% выглядит просто дико. А поскольку такие люди уже устроились на своем месте и дальше двигаться не желают, то они по прежнему уверены в том что все новое это ересь. До тех пор пока не столкнуться с задачкой, где объем программинга (в особенности модификации уже существующего кода) превысит те самые 0.05%.
Здравствуйте, Геннадий Васильев, Вы писали:
ГВ>Мда... Слушайте, мож это шутка такая?
Да нет, не шутка. Не зря Влад регулярно отсылает вас на форум ixbt по программированию с предложением почитать посты тов. Рыбкина. Это вполне серьезно. Впрочем, бывают даже более удивительные случаи — есть люди, которые считают и С злом и убеждены что надо всех принудительно заставлять писать на ассемблере.
Но самое смешное что твоя позиция выглядит в точности так же, только на новом витке технологий
Здравствуйте, Sergey, Вы писали:
S>Ну, он и выглядит нормально, если уметь на него смотреть. Мне вот часто говорят, что функционально программирование полный рулез и показывают какой-то код на OCML'е, который на мой посторонний взгляд просто ужасен
Но если написать аналог на С++ то получится еще ужаснее и намного больше по объему. Речь же идет об аналогичном по функциональности коде на С++ и С#.
Здравствуйте, VladD2, Вы писали:
VD>>>>Ты сказал, что непонятны они только тем кто с ними работать не умеет. Так вот я умею с ними работать очень неплохо. S>>>С шаблонами? Вряд ли. WH>>Согласен.
VD>Гы-гы.
VD>PS
VD>И почему чем неопытнее люди, тем чаще они считают, что уменее всех остальных?
Человек, ни разу не покидавший родного города, считает этот город всем доступным миром (по крайней мере главной его частью). Поэтому когда путешественник не очень хорошо разбирается в расположении достопримечательностей его родного города то он считает себя значительно продвинутей в вопросах географии, несмотря на то что его познания географии, хоть и хорошие, ограничены его мирком, но он, к сожалению этого не знает или не придает этому факту никакого значения.
PS: Сорри за демагогию, но бесконечные наезды лично на собеседника меня уже достали. Господам, которые при мизерном опыте считают себя вправе судить о знаниях людей с большим опытом, стоит над этим задуматься. Не стоит считать людей вокруг себя глупее себя.
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, LaptevVV, Вы писали:
LVV>>Цитата из письма моего друга, активно действующего программиста, руководителя лаборатории и нескольких проектов. Заранее прошу извинения за эмоциональность монго друга, но видимо, у него сильно накипело!
AVK>Ну вот, хороший пример теперешней ситуации. Любая новая технология всегда будет встречать яростный отпор и непонимание.
AVK>Что же касается данного конкретного человека то видимо его задачи мало связаны с программированием, иначе цифра в 0.05% выглядит просто дико. А поскольку такие люди уже устроились на своем месте и дальше двигаться не желают, то они по прежнему уверены в том что все новое это ересь. До тех пор пока не столкнуться с задачкой, где объем программинга (в особенности модификации уже существующего кода) превысит те самые 0.05%.
Если Вы следите за РАЗНЫМИ областями информационных технологий, то должны знать так называемое АВТОМАТНОЕ программирование. При правильном его применении 99,95% работы ДЕЙСТВИТЕЛЬНО делается до кодирования. Более того, кодирование можно автоматизировать по автоматной модели. Почитайте ШАЛЫТО — апологета данной технологии. У мего друга в конторе так и принято. Более того, чем больше программер кодит, тем подозрительнее относятся к его квалификации. По из понятиям ХОРОШИЙ программист делает свою часть "с первого предъявления" — то есть, после автономной отладки и тестирования система в комплексе СРАЗУ начинает работать. Ошибки — это описки по невнимательности, которые быстро выявляются и исправляются.
Вот такой подход к программированию. Новые технологии сами по себе абсолютно не нужны, если они не приводят к резкому увеличению производительности труда. Поэтому старая, но НАДЕЖНО и БЫСТРО работающая технология изготовления ПО ЛУЧШЕ новой, но недоделанной.
Производство ПО — это не столько программирование, сколько производство.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
LVV>Если Вы следите за РАЗНЫМИ областями информационных технологий, то должны знать так называемое АВТОМАТНОЕ программирование. При правильном его применении 99,95% работы ДЕЙСТВИТЕЛЬНО делается до кодирования. Более того, кодирование можно автоматизировать по автоматной модели. Почитайте ШАЛЫТО — апологета данной технологии. У мего друга в конторе так и принято.
Все это хорошо и правильно. Проблема только в том что подобные области применения программирования составляют небольшой процент. И тот же дотнет совершенно не нацелен на эти области. Поэтому вполне понятно что он там и не нужен. Не надо только факты из конкретной узкой области обобщать на программирование в целом.
LVV>Вот такой подход к программированию. Новые технологии сами по себе абсолютно не нужны, если они не приводят к резкому увеличению производительности труда.
А они приводят, в том то вся и соль.
LVV> Поэтому старая, но НАДЕЖНО и БЫСТРО работающая технология изготовления ПО ЛУЧШЕ новой, но недоделанной.
Да кто бы спорил. Вот только когда пытаются делать обобщения то результат получается мягко говоря не очень.
Здравствуйте, LaptevVV, Вы писали:
LVV>Нет, не шутка. Пишут системы реального времени.
Крупными буквами
ДОТНЕТ НЕЛЬЗЯ ИСПОЛЬЗОВАТЬ В СИСТЕМАХ РЕАЛЬНОГО ВРЕМЕНИ В СВЯЗИ С НЕПРОГНОЗИРУЕМОСТЬЮ ОТКЛИКА.
Либо ты своему товарищу неправильно разъяснил суть дискуссии, либо он ничего не видит за пределами своего мирка. Но применять дотнет и С++ для реалтайма и программирования контроллеров никто и не собирался.
Здравствуйте, LaptevVV, Вы писали:
LVV>Если Вы следите за РАЗНЫМИ областями информационных технологий, то должны знать так называемое АВТОМАТНОЕ программирование. При правильном его применении 99,95% работы ДЕЙСТВИТЕЛЬНО делается до кодирования. Более того, кодирование можно автоматизировать по автоматной модели. Почитайте ШАЛЫТО — апологета данной технологии. У мего друга в конторе так и принято. Более того, чем больше программер кодит, тем подозрительнее относятся к его квалификации. По из понятиям ХОРОШИЙ программист делает свою часть "с первого предъявления" — то есть, после автономной отладки и тестирования система в комплексе СРАЗУ начинает работать. Ошибки — это описки по невнимательности, которые быстро выявляются и исправляются.
Видимо твой друг работает в какой-то очень узкой, годами устоявшейся области с очень редко изменяющимися требованиями и отработанными технологиями. Думаю, что в таком случае можно вообще состряпать какую-нибудь софтинку и исключить труд программиста совсем. Но видимо на C это сделать не так просто
LVV>Вот такой подход к программированию. Новые технологии сами по себе абсолютно не нужны, если они не приводят к резкому увеличению производительности труда. Поэтому старая, но НАДЕЖНО и БЫСТРО работающая технология изготовления ПО ЛУЧШЕ новой, но недоделанной.
"Лучшее — враг хорошего" как любил поговаривать мой бывший шеф, пока мы не потеряли двух жирных нефтяных заказчиков, у которых было требование — Windows (мы тогда под DOS сидели).
LVV>Производство ПО — это не столько программирование, сколько производство.
Именно. И как в любом производстве качество и стоимость результата производства сильно зависит от средств производства. Как любил поговоривать мой другой бывший (ещё бывшее) шеф "Какое-либо свойство продукта не может превышать на порядок соответствующего свойства, заложенного в средство, на котором этот продукт изготовлен". Твой друг занимается выпиливанием фигурок из фанерки лобзиком для индивидуального клиента? Молодец, надеюсь, это на 100% устраивает его заказчиков. Но только не надо переносить такие технологии на производство автомобилей или массового ширпотреба в условиях постоянно меняющейся конъюнктуры рынка.
... << RSDN@Home 1.1 beta 1 >>
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, AndrewVK, Вы писали:
AVK>Человек, ни разу не покидавший родного города, считает этот город всем доступным миром (по крайней мере главной его частью). Поэтому когда путешественник не очень хорошо разбирается в расположении достопримечательностей его родного города то он считает себя значительно продвинутей в вопросах географии, несмотря на то что его познания географии, хоть и хорошие, ограничены его мирком, но он, к сожалению этого не знает или не придает этому факту никакого значения.
В терминах данной аналогии я указал вам с Владом на то что вы похо знаете мой город.
[подколка]
Если хочешь доказать что это не так могу предложить задачку решается очень красиво boost'ом, stl'ем и шаблонами средней сложности. Я написал за час(ради развличения), а у таких великих гуру как вы с Владом должно уйти минут 15 не больше.
[/подколка] AVK>PS: Сорри за демагогию, но бесконечные наезды лично на собеседника меня уже достали.
А меня достали вопли что С++ это ода большая затычка лдя самого себя. AVK>Господам, которые при мизерном опыте считают себя вправе судить о знаниях людей с большим опытом, стоит над этим задуматься.
Господам которые считают что многолетний опыт дает им абсолютные знания в том числе в тех областях куда они почти не заглядывали тоже. AVK>Не стоит считать людей вокруг себя глупее себя.
И я о томже.
... << RSDN@Home 1.1 alpha 1 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
WH>Дык перегрузка присваивания запрещена даже у value типов. Следовательно обьект под проперти косить не может. А даже если бы и было в интерфейс всеравно не засунишь. Препроцессор бы помог но и его нету. Остается внешний кодогенератор.
Что я тебя не пойму. Причем тут вэльютипы и интерфейсы? Да и МС++ доступен. Всю макросовщину можно сделать на нем, а Шарп будет видеть нагенерированные классы.
VD>>А какова их цель? WH>Как и у всех остальных шаблонов. WH>Писать меньше и читать проще. Часто позволяют сэкономить символов 10-50 что очень не плохо.
Это не цель. Это снова реализация. Научись описывать проблему, а не решение которое ты для нее видишь. Иначе тебя тяжело понимать.
... << RSDN@Home 1.1 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, AndrewVK, Вы писали:
AVK>Вместо того чтобы сделать нормальную объектную модель. Это я называю template-based дизайном, который крив
AVK>Это была шутка, не воспринимайте всерьез.
А я вот полностью согласен. В этом случае логичнее было бы написать специализацию контрола, а не лепить шаблоны.
... << RSDN@Home 1.1 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.