Здравствуйте, work69, Вы писали:
AVK>>... Интерфейс это максимально абстрагированный интерфейс доступа к чему либо. ... W> Непробовал толковые словари писать? У тя определенно талант. W>Твое определение интерфейса просто супер — "интерфейс — это интерфейс"! W>Емко... Внушает... W>
К сожалению здесь есть путаница в терминах. Интерфейсом называется собственно элемент языка и рантайма и им же называется набор точек доступа к классу. Нормальных эквивалентов я подобрать не могу, а поскольку здесь я все таки не словарь пишу, то написал так намеренно, надеюсь кому надо меня поняли.
Здравствуйте, VladD2, Вы писали:
AVK>>Нет, макросы это слишком примитивно.
VD>Эта та самая кодогенерация при компиляции о которой ты говорил.
Нет. Макросы не имеют ровно никакой связи с семантическими структурами программы, а тем паче с рантаймом. В этом их фатальный недостаток .
VD>Конечно можно можн все тоже самое сделать на полиморфизме (интерфейсах или делегатах принемающих в качестве параметра object-ы), но это приведет к сильному подению производительности и трудно уловимым рантайм ошибкам.
Влад, это мне напоминает разговор немого с глухим. Не надо мне доказывать что шаблоны это хорошо. Я с этим не спорю. Я говорю о другом — шаблоны можно зделать гибче, дав им возможность манипулирования не только типами, а любой сущностью CodeDOM. Именно CodeDOM
, а не исходниками программы, как в случае макросов.
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, work69, Вы писали:
AVK>>>... Интерфейс это максимально абстрагированный интерфейс доступа к чему либо. ... W>> Непробовал толковые словари писать? У тя определенно талант. W>>Твое определение интерфейса просто супер — "интерфейс — это интерфейс"! W>>Емко... Внушает... W>>
AVK>К сожалению здесь есть путаница в терминах. Интерфейсом называется собственно элемент языка и рантайма и им же называется набор точек доступа к классу. Нормальных эквивалентов я подобрать не могу, а поскольку здесь я все таки не словарь пишу, то написал так намеренно, надеюсь кому надо меня поняли.
Данная фраза — свидетельство некоторой закомплексованности мышления.
Это тоже самое что сказать что в словосочетаниях "кресло-качалка" и "кресло-кровать" — слово "кресло"
имеет принципиально другой смысл. Не надо пытаться провести раздел — мир един и понятие
интерфейса едино и не меняется в зависмости от словосочетания в котором оно употребляется
(Юзер интерфейс, аппаратный интерфейс и т.д и т.п.). Говоря в терминах ООД словосочетания вроде "Юзер интерфейс" и т.п являются терминальными классами одного базового абстрактного класса — "интерфейс". (Эко завернул-то )
Понятие интерфейса всегда сводится к одному и тому же — это уровень абстракции представляющий собой систему соглашений и средств для взаимодействия каких либо сущностей. Суть вседа одна.
Зри в корень.(С)Козьма Прутков
Найди всему начало и ты многое поймешь.(С)Козьма Прутков
Не судите да не судимы будете.
K>Это тоже самое что сказать что в словосочетаниях "кресло-качалка" и "кресло-кровать" — слово "кресло" K>имеет принципиально другой смысл. Не надо пытаться провести раздел — мир един и понятие K>интерфейса едино и не меняется в зависмости от словосочетания в котором оно употребляется
Надо читать весь топик. Существует кроме того некая сущность интерфейс, представленная в MSIL.
Так что не стоит меня учить.
Здравствуйте, Tom, Вы писали:
VD>>Полнейшая ерунда. VD>>Никаких осложнений при отладке нет. Это проверено тем же С++. На заре С++ были проблемы с отладчиками, но сегодня таких проблем нет и шалблоны прекрасно отлаживаются. Tom>Проверено на C++ что проблемм куча. Как ты думаешь сколько примерно займёт на экране 800*600 сообщение об ошибке выданное gcc на какую нибудь ошибку в классе map<string, string>. Пол экрана идёт только перечисление класса.
Незнаю как у вас в GCC а у нас в VS7 все просто
std::map<DWORD, T_RefStrong<C_Device> >
e:\work\!!!!!!!!!!!!!\OPCServer\DeviceHost\C_Device.cpp(23): error C2679: binary '=' : no operator found which takes a right-hand operand of type 'T_RefStrong<P_Type>' (or there is no acceptable conversion)
with
[
P_Type=C_Device
]
e:\work\!!!!!!!!!!!!!\OPCServer\DeviceHost\C_Device.cpp(35): error C2440: 'initializing' : cannot convert from 'T_RefStrong<P_Type>' to 'C_DeviceItem *'
with
[
P_Type=C_Device
]
e:\work\!!!!!!!!!!!!!\OPCServer\DeviceHost\C_Device.cpp(41): error C2679: binary '=' : no operator found which takes a right-hand operand of type 'T_RefStrong<P_Type>' (or there is no acceptable conversion)
with
[
P_Type=C_DeviceItem
]
e:\work\!!!!!!!!!!!!!\OPCServer\DeviceHost\C_Device.cpp(66): error C2440: 'initializing' : cannot convert from 'T_RefStrong<P_Type>' to 'C_DeviceItem *'
with
[
P_Type=C_Device
]
e:\work\!!!!!!!!!!!!!\OPCServer\DeviceHost\C_Device.cpp(88): error C2440: 'initializing' : cannot convert from 'T_RefStrong<P_Type>' to 'C_DeviceItem *'
with
[
P_Type=C_Device
]
std::map<DWORD, T_RefStrong<C_Device_> >
Compiling...
C_Device.cpp
e:\work\!!!!!!!!!!!!!\OPCServer\DeviceHost\C_Device.h(9) : error C2065: 'C_Device_' : undeclared identifier
e:\work\!!!!!!!!!!!!!\OPCServer\DeviceHost\C_Device.h(9) : error C3203: 'T_RefStrong' : class template invalid as template argument for template parameter '_Ty', expected a real type
e:\work\!!!!!!!!!!!!!\OPCServer\DeviceHost\C_Device.cpp(23) : error C2440: '=' : cannot convert from 'int' to 'C_DeviceItem *'
Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
e:\work\!!!!!!!!!!!!!\OPCServer\DeviceHost\C_Device.cpp(35) : error C2440: 'initializing' : cannot convert from 'int' to 'C_DeviceItem *'
Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
e:\work\!!!!!!!!!!!!!\OPCServer\DeviceHost\C_Device.cpp(41) : error C2679: binary '=' : no operator found which takes a right-hand operand of type 'T_RefStrong<P_Type>' (or there is no acceptable conversion)
with
[
P_Type=C_DeviceItem
]
e:\work\!!!!!!!!!!!!!\OPCServer\DeviceHost\C_Device.cpp(66) : error C2440: 'initializing' : cannot convert from 'int' to 'C_DeviceItem *'
Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
e:\work\!!!!!!!!!!!!!\OPCServer\DeviceHost\C_Device.cpp(88) : error C2440: 'initializing' : cannot convert from 'int' to 'C_DeviceItem *'
Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
И трейсить можно если вдруг чего совсем не понял.
Tom>ЗЫ: В принципе если шаблоны упростят и так как нет множественного наследования, то не всё так плохо
И чего плохого в МН? А шаблоны не упращать надо, а развивать. И вобще типизированые макросы хочу!
... << RSDN@Home 1.0 beta 5 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[10]: Будут ли шаблоны и множественное наследование в CLR?
Здравствуйте, VladD2, Вы писали:
VD>Заметьте. Среди людей наезжающих на шаблоны (ну или пытающихся свести их достоинства только к увеличению производительности) все не имели большого опыта работы с шаблонами. А все кто успешно использовал шаблоны в С++ ждут их пояления в Шарпе. Это явно не спроста.
Жду очень жду.
ЗЫ Мой опыт С++ программирования говорит что шаболны сокращают обьем текста в разы, а читабельность и перформанс возрастают на порядок.
... << RSDN@Home 1.0 beta 5 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[11]: Будут ли шаблоны и множественное наследование в CLR?
Здравствуйте, WolfHound, Вы писали:
WH>ЗЫ Мой опыт С++ программирования говорит что шаболны сокращают обьем текста в разы, а читабельность и перформанс возрастают на порядок.
В С++. В шарпе такого сильного эффекта не будет, хотя в чем то съэкономить и получится.
Здравствуйте, AndrewVK, Вы писали:
AVK>Вот этого я и боюсь. Народ начнет по старой привычке лепить шаблоны даже туда где они нафик не нужны.
Не думаю что с народом который ДЕЙСТВИТЕЛЬНО хорошо использовал такое произойдет.
... << RSDN@Home 1.0 beta 5 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[12]: Будут ли шаблоны и множественное наследование в CLR?
Здравствуйте, WolfHound, Вы писали:
WH> Не думаю что с народом который ДЕЙСТВИТЕЛЬНО хорошо использовал такое произойдет.
Хотелось бы надеятся, но практика показывает что если что то можно сделать неправильно то это обязательно сделают неправильно. Иначе к чему такие драконовские ограничения в джаве придумали.
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, WolfHound, Вы писали:
WH>> Не думаю что с народом который ДЕЙСТВИТЕЛЬНО хорошо использовал такое произойдет.
AVK>Хотелось бы надеятся, но практика показывает что если что то можно сделать неправильно то это обязательно сделают неправильно. Иначе к чему такие драконовские ограничения в джаве придумали.
Хороший язык программирования (и платформа тоже) должны предоставлять ПОБОЛЬШЕ возможностей. А то нелогично получается... Ограничили всех, потому что те, кто чегой-то не доучил могут напортачить...
RSDN@Home
Кто здесь?!
Re[14]: Будут ли шаблоны и множественное наследование в CLR?
От:
Аноним
Дата:
21.02.03 09:56
Оценка:
Здравствуйте, _wqwa, Вы писали:
W>Хороший язык программирования (и платформа тоже) должны предоставлять ПОБОЛЬШЕ возможностей. А то нелогично получается... Ограничили всех, потому что те, кто чегой-то не доучил могут напортачить...
Неправда. Хорошая среда программирования вовсе не должна "предоставлять ПОБОЛЬШЕ возможностей". Она должна предоставлять возможности, потребные для решения круга задач, на которые она рассчитана, адекватно условиям, в которых эти задачи решаются. В прикладном программировании очень существенна технологичность — соответственно, многие возможности, скажем, Си++ остаются неиспользованными (и за использование их нужно расстреливать). В других задачах — наоборот, можно, как это уже здесь назвали, "творить чудеса на шаблонах и переопределяя операторы".
Re[14]: Будут ли шаблоны и множественное наследование в CLR?
Здравствуйте, _wqwa, Вы писали:
W>Хороший язык программирования (и платформа тоже) должны предоставлять ПОБОЛЬШЕ возможностей.
С такой точки зрения ассемблер идеальный язык, а скрипты не имеют права на существование. Но на самом деле это нетак. Следовательно предпосылка неверна.
Здравствуйте, <Аноним>, Вы писали:
А>Неправда. Хорошая среда программирования вовсе не должна "предоставлять ПОБОЛЬШЕ возможностей". Она должна предоставлять возможности, потребные для решения круга задач, на которые она рассчитана, адекватно условиям, в которых эти задачи решаются. В прикладном программировании очень существенна технологичность — соответственно, многие возможности, скажем, Си++ остаются неиспользованными (и за использование их нужно расстреливать). В других задачах — наоборот, можно, как это уже здесь назвали, "творить чудеса на шаблонах и переопределяя операторы".
И за какие это возможность С++ надо расстреливать???Поясни пожалуйса.
ЗЫ Представся
... << RSDN@Home 1.0 beta 5 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[15]: Будут ли шаблоны и множественное наследование в CLR?
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, _wqwa, Вы писали:
W>>Хороший язык программирования (и платформа тоже) должны предоставлять ПОБОЛЬШЕ возможностей. А то нелогично получается... Ограничили всех, потому что те, кто чегой-то не доучил могут напортачить...
А>Неправда. Хорошая среда программирования вовсе не должна "предоставлять ПОБОЛЬШЕ возможностей". Она должна предоставлять возможности, потребные для решения круга задач, на которые она рассчитана, адекватно условиям, в которых эти задачи решаются.
Звучит как: "возможностей не должно быть много, возможностей должно быть столько, сколько нужно для того, для чего нужно". Прям санскритская загадка.
А>В прикладном программировании очень существенна технологичность — соответственно, многие возможности, скажем, Си++ остаются неиспользованными (и за использование их нужно расстреливать).
Потрясающе! Это что же за прикладное программирование на некотором языке, где нельзя использовать возможности этого языка? Да ещё и под страхом смертной казни. Да, и если можно, то нельзя ли перечислить "нетехнологичные" для прикладного программирования возможности C++.
ИМХО, за неиспользование возможностей C++ (.Net, Java — нужное вписать), действительно, надо "расстреливать".
A>В других задачах — наоборот, можно, как это уже здесь назвали, "творить чудеса на шаблонах и переопределяя операторы".
По-вашему, "остальное программирование" не является прикладным? Очень интересно. Кстати, и что такое "прикладное программирование" в Вашем понимании?
Уважаемый Аноним, определитесь, пожалуйста, с семантикой терминов, которыми вы оперируете.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[15]: Будут ли шаблоны и множественное наследование в CLR?
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, _wqwa, Вы писали:
W>>Хороший язык программирования (и платформа тоже) должны предоставлять ПОБОЛЬШЕ возможностей.
AVK>С такой точки зрения ассемблер идеальный язык, а скрипты не имеют права на существование. Но на самом деле это нетак. Следовательно предпосылка неверна.
Не совсем. Возможностью(выделенное в цитате) я имел в виду и удобство проектирования(тут асм не совсем катит) и возможности настраиваемой кодогенирации (всеми здесь любимые шаблоны) и простота парсинга текста (перл) и освобождение от менеджмента памяти (ява, шарп) и т.д.
Очевидно, что не может быть языка со всеми этими (и другими) возможностями одновременно.
И ассемблер -- не идеальный язык (как Вы сами и догадались ).
Следовательно опровержение предпосылки несостоятельно.