Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.156] |
|
|
Правила раздела:
| Страницы: (495) « Первая ... 198 199 [200] 201 202 ... 494 495 ( Перейти к последнему сообщению ) |
Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
|
Сообщ.
#2986
,
|
|
|
|
Цитата Red @ За редким исключением, если a и b не принадлежат одной иерархии и определен implicit operator. Да, но это уже приведение типов. А мы рассуждаем об элементарных примерах. Когда в функцию передаётся объект того же типа, что и параметр, например. Или из той же иерархии (см. мой пример несколько страниц назад). Добавлено Ну вот и я про то же ![]() Цитата KILLER @ Заметь, никакого кода я не курю, да зачастую его попросту и нет, и оно мне и нафик не нужно, мне достаточно изучить документацию, все. Везёт тебе, работаешь исключительно с документированным кодом... |
|
Сообщ.
#2987
,
|
|
|
|
Цитата IL_Agent @ Везёт тебе, работаешь исключительно с документированным кодом... Ну уж так сложилось, что для того чтобы эффективно работать с тем же STL мне не нужно курить тонны исходного кода, мне достаточно посмотреть описание итератора или какого нибудь алгоритма, в любой книжке или в документации, коей пол инета завалено... А стороние SDK, как правило поставляются с документацией, примерами и т.д. А если у тебя нет исходных кодов, что ты тогда делаешь? дизассемблируешь и куришь код, чтобы понять что делает функция? |
|
Сообщ.
#2988
,
|
|
|
|
KILLER, причём STL ? Я про то, что наваял твой уволившийся коллега.
Цитата KILLER @ А если у тебя нет исходных кодов, что ты тогда делаешь? дизассемблируешь и куришь код, чтобы понять что делает функция? ![]() Если нет ни исходников, ни доков, ни примеров использования, то библиотеку вряд ли получится применить. |
|
Сообщ.
#2989
,
|
|
|
|
Цитата IL_Agent @ KILLER, причём STL ? Я про то, что наваял твой уволившийся коллега. Как причем, ты ведь сделал акцент на том, что D_KEY, так прозрачно работает с iterator потому как знает как он работает, но ведь при этом он не курил код STL, да и для разных ОС, они могут различаться... А про то, что наваял мой уволившийся коллега, ну так у нас принято писать коментарии, а если это код с которым я работаю, то причем тут язык? Будь то С++, С#, Delphi, ты в любом случае будешь читать код, если непосредственно в нем будешь делать изменения, или как с закрытыми глазами их делать? Цитата IL_Agent @ Если нет ни исходников, ни доков, ни примеров использования, то библиотеку вряд ли получится применить. Ну вот, так причем тут kk / = ? еще и в С++, чем шарп тут круче? Тебе ведь тоже придется читать или доку или курить сырцы... |
|
Сообщ.
#2990
,
|
|
|
|
Весьма идиотская мысль, если речь идет о языке с семантикой значений. Цитата необходимости в этом быть в принципе не должно. само добавление оператора присваивания в язык сильно усложняет семантику языка, но это почти всегда оправданная цена, но введение возможности перегрузить его -- это не менее сильное усложнение сверх того, при этом не несущее никакой практической пользы. И на чем же основана эта экспертная оценка? Добавлено Ты не пример показываешь, а код, который может написать лишь человек, не знающий языка. Можно ответить и в твоем духе: "никаких проблем с этим не возникает". Так больше нравится? Но мы говорим о логике. Если неявное деление по видам типов в одном языке усложняет систему типов и делит ее на две слабосвязанные части, то то, что описываешь ты никакой логики и никаких принципов не нарушает. Цитата Замечательно. Но ты так и не ответил, зачем в языке нужно поддерживать две семантики и ссылочную и значений, когда достаточно одной?Цитата D_KEY @ Я используют тип std::vector<int>::iterator совершенно свободно. А класс он или указатель или еще что-то меня не касается - этот выбор остается за автором. Ты используешь его совершенно свободно, потому что знаешь, как он себя поведёт в тех случаях, когда ты его используешь. Я тоже использую совершенно свободно всё, что знаю. Цитата И как же? Присваивает все поля? А как же инкапсуляция? И с ними он тоже ведёт себя однозначно. |
|
Сообщ.
#2991
,
|
|
|
|
Цитата D_KEY @ И как же? Присваивает все поля? А как же инкапсуляция? Да какая там инкапсуляция в языке, где рефлексией можно добраться до любых потрохов... |
|
Сообщ.
#2992
,
|
|
|
|
Цитата D_KEY @ Можно ответить и в твоем духе: "никаких проблем с этим не возникает". Так больше нравится? По сути, мне так и отвечают. Цитата D_KEY @ Ты не пример показываешь, а код, который может написать лишь человек, не знающий языка. Нет, могла иметь место опечатка. Пойди, отлови её потом в рантайме. А будь пример посложнее и програмист чуть менее опытный - хрен найдёшь. Цитата D_KEY @ Если неявное деление по видам типов в одном языке усложняет систему типов и делит ее на две слабосвязанные части, то то, что описываешь ты никакой логики и никаких принципов не нарушает. Деление вполне явное. И принципы, установленные данном языке - не нарушает. Цитата D_KEY @ Но ты так и не ответил, зачем в языке нужно поддерживать две семантики и ссылочную и значений, когда достаточно одной? Я тебе ответил, где это используется. Возможно ли от этого отказаться ? Не знаю, возможно, как раз-таки и буду нарушены какие-либо принципы. Цитата D_KEY @ И как же? Присваивает все поля? А как же инкапсуляция? Чем это хуже кк по умолчанию в плане инкапсуляции ? Добавлено Цитата MyNameIsIgor @ Да какая там инкапсуляция в языке, где рефлексией можно добраться до любых потрохов... Рефлексия работает с метаданными как объектами, по всем правилам инкапсуляции. А вот в С++ инкапсуляция убивается приведением типов |
|
Сообщ.
#2993
,
|
|
|
|
Цитата IL_Agent @ Рефлексия работает с метаданными как объектами, по всем правилам инкапсуляции. Т.е. добраться до приватных полей - это "по всем правилам инкапсуляции"? Ну-ну... Цитата IL_Agent @ А вот в С++ инкапсуляция убивается приведением типов Это что-то новенькое... |
|
Сообщ.
#2994
,
|
|
|
|
Цитата KILLER @ А стороние SDK, как правило поставляются с документацией, примерами и т.д. А если у тебя нет исходных кодов, что ты тогда делаешь? дизассемблируешь и куришь код, чтобы понять что делает функция? Либо документация, либо исходный код. Лучше всего и то и другое. Никто код не вкуривает, читаешь документацию. Там написано для каждого имени, что это - класс, запись, функция... Поскольку правила использования просты, то все сразу понятно. При отсутствии исходного кода проблемой может быть глючность библиотеки или неполнота документации (бывает, некоторые тонкости реализации не описаны). Код сторонних библиотек в поставке, кстати, как правило отсутствует. |
|
Сообщ.
#2995
,
|
|
|
|
Цитата MyNameIsIgor @ Т.е. добраться до приватных полей - это "по всем правилам инкапсуляции"? Ну-ну... Есть код. А есть ещё код, работающий с первым как с данными. Оба - на одном языке, в обоих - инкапсуляция. Но второй код может модифицировать поведение первого. Метапрограммирование не противоречит инкапсуляции. Цитата MyNameIsIgor @ Это что-то новенькое... Не притворяйся, что не понимаешь |
|
Сообщ.
#2996
,
|
|
|
|
Цитата Romkin @ Либо документация, либо исходный код. Лучше всего и то и другое. Никто код не вкуривает, читаешь документацию. Там написано для каждого имени, что это - класс, запись, функция... Поскольку правила использования просты, то все сразу понятно. При отсутствии исходного кода проблемой может быть глючность библиотеки или неполнота документации (бывает, некоторые тонкости реализации не описаны). Код сторонних библиотек в поставке, кстати, как правило отсутствует. Я об этом и говорю, просто тут некоторые говорят, что в С++ обязательно нужно смотреть код конструктора копии и operator =, чтобы понять как работает присваивание |
|
Сообщ.
#2997
,
|
|
|
|
Цитата IL_Agent @ Не притворяйся, что не понимаешь Притворяться - это вот это Цитата IL_Agent @ Есть код. А есть ещё код, работающий с первым как с данными. Оба - на одном языке, в обоих - инкапсуляция. Но второй код может модифицировать поведение первого. Метапрограммирование не противоречит инкапсуляции. А вот что вы там опять фантазируете про плюсы, я абсолютно без понятия. |
|
Сообщ.
#2998
,
|
|
|
|
Цитата KILLER @ просто тут некоторые говорят, что в С++ обязательно нужно смотреть код конструктора копии и operator =, чтобы понять как работает присваивание Ну да, либо курить документацию, в которой это описано |
|
Сообщ.
#2999
,
|
|
|
|
Цитата Romkin @ Ну да, либо курить документацию, в которой это описано Зачем? Зачем мне курить код, если допустим есть дока? Вообще о чем спор идет? О том, что если имеем функцию Foo, и понятия не имеем что она делает, а доки к ней нема, то чтобы понять что она делает - нужно посмотреть ее исходный код? Ну дык, тут и капитан очевидность отдыхает... Я не пойму причем тут С++, или это только в С++ такое, и в делфи/шарпе/др. яп можно свободно юзать функцию, не имея представления что она вообще творит? |
|
Сообщ.
#3000
,
|
|
|
|
Господа, я не могу понять: а зачем вам видеть код конструктора копирования и оператора присваивания? Для чего? Они либо есть, либо их нет...
|