Re[31]: За что я не люблю С++
От: Хвост  
Дата: 28.05.09 10:30
Оценка: -1
Здравствуйте, criosray, Вы писали:

C>>>Ликбез:

C>>>Что до того зачем я "ввернул", как Вы соизволили выразиться, так вот за тем, что объект есть суть ассоциативный массив. В динамических языках типа джаваскрипта так вообще объекты есть ни что иное, как словари.
Х>>ну вы так за все реализации жаваскрипта не говорите, в V8 например от етого отказались и поимели нехилый профит, за подробностями — в гугол.
C>Это тут вообще при чем?
притом, что выделенная фраза не верна
People write code, programming languages don't.
Re[11]: За что я не люблю С++
От: Хвост  
Дата: 28.05.09 10:31
Оценка:
Здравствуйте, criosray, Вы писали:

C>Здравствуйте, Antikrot, Вы писали:



MK>>>>Так я не понял: он "энфорсит" или просто предупреждения выдает?

C>>>Энфорсит, выдавая предупреждения. fxcop и stylecop — составная часть автоматического билда у нас.
A>>так бы и написал сразу — "бьёт по рукам"
C>А я так и написал. Кто Вам виноват, что Вы не знаете, что слово "энфорсить" означает "вынуждать", "обязывать", "заставлять".

и всё-таки мне решительно не понятно почему ето не "костыль".
People write code, programming languages don't.
Re[26]: За что я не люблю С++
От: Eugeny__ Украина  
Дата: 28.05.09 10:36
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, Eugeny__, Вы писали:

E__>>Не слышал про такое, но если и было, то это просто баг реализации конкретного сборщика, а баги имеют тенденцию к исправлению в следующих версиях.
S>Это не баг. Это суровая правда жизни. В некоторых случаях неверна даже она: к примеру, если реально кому-то надо захватить неуправляемый ресурс, а в пуле их больше нет (залочены управляемыми обертками), то он встанет на ожидании освобождения; рано или поздно все потоки встанут, и останется только GC+finalizer thread, который наконец разблокирует заблокированное. Но это — очень некоторые случаи. В более частых такая стратегия просто приведет к тому, что все начнут быстро-быстро получать ошибки обращения, а GC будет думать, что так и должно быть.

Ну, я не имел ввиду неуправляемые ресурсы. При работе с таквыми действительно нужно быть аккуратным, и явно освобождать, здесь вопросов нет. Пользуясь случаем, передаю привет Сану, который до сих пор не удосужился ввести конструкцию using в жабу, из-за чего получается либо многословный try-finally, либо нужно городить огороды с АОП.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Re[32]: За что я не люблю С++
От: criosray  
Дата: 28.05.09 10:40
Оценка:
Здравствуйте, Хвост, Вы писали:


C>>>>Ликбез:

C>>>>Что до того зачем я "ввернул", как Вы соизволили выразиться, так вот за тем, что объект есть суть ассоциативный массив. В динамических языках типа джаваскрипта так вообще объекты есть ни что иное, как словари.
Х>>>ну вы так за все реализации жаваскрипта не говорите, в V8 например от етого отказались и поимели нехилый профит, за подробностями — в гугол.
C>>Это тут вообще при чем?
Х>притом, что выделенная фраза не верна

Верна. А Вам советую поменьше балаболить.
Re[23]: За что я не люблю С++
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 28.05.09 10:41
Оценка:
Здравствуйте, criosray, Вы писали:

ГВ>>Э-э-э... У тебя что-то не то с логикой. Я спрашивал — где написан тот запрет, о котором ты упомянул? Тут ведь вот какое свинство, C++ подразумевает возможность генерировать и исполнять машинный код в рантайме. Знаешь, это настолько общеизвестная возможность, что некоторые горячие головы C++ за это даже ругают. Да-да!

C>Ну поделитесь с нами грешными примером кода, где программа на С++ на лету во время исполнения генерирует полностью новый класс с методами и полями по переданной ей из текстового файла спецификации.

Ответь мне на один наводящий вопрос: а что дальше делать с этой сгенерированной и полностью новой структурой?

Вот, приехало мне описание класса, например, такое:

<class Name="NewClass">
<member type="int" Name="m_i"/>
</class>

Сгенерировал я программу на C++, натравил компилятор, получил загрузочный модуль, загрузил этот модуль. Где-то в недрах у меня сгенерировался класс NewClass, допустим, унаследованный от некоторого GeneratedClassBase. Сгенерировался и экземпляр этого класса. Что дальше должен со всем этим делать? Ни одна другая часть программы знать ничего не знает о том, что третьего дня в потрохах адресного пространства появился указатель 0x3F5849AC, указывающий не на что-нибудь, а на экземпляр типа NewClass (хотя про сам этот указатель все, кому надо знать, уже знают). Тем более об этом не догадывается, например, визуализатор — вот не знает он, что по смещению 0x30 от адреса 0x3F5849AC лежат четыре байта, представляющие собой NewClass::m_i.

Так что делать-то софтинке? Куда податься?
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[23]: Подсчёт ссылок
От: COFF  
Дата: 28.05.09 10:50
Оценка:
Здравствуйте, Qbit86, Вы писали:

COF>>Хм, а где его надо инкрементировать?


Q>В кторе и в методе типа Copy() или там ShareOwnership().


О, как! Когда я в соседней ветке написал, что придется после (ну или вместо — что смысла не меняет) присваивания звать подобный метод, то меня обвинили в ламерстве. Теперь оказывается, что таки да. Еще можно вспомнить ручной инлайнинг... В общем, картина начинает проясняться
Re[11]: За что я не люблю С++
От: Antikrot  
Дата: 28.05.09 10:53
Оценка:
Здравствуйте, criosray, Вы писали:

MK>>>>Так я не понял: он "энфорсит" или просто предупреждения выдает?

C>>>Энфорсит, выдавая предупреждения. fxcop и stylecop — составная часть автоматического билда у нас.

A>>так бы и написал сразу — "бьёт по рукам"


C>А я так и написал. Кто Вам виноват, что Вы не знаете, что слово "энфорсить" означает "вынуждать", "обязывать", "заставлять".


Я еще с десяток переводов знаю.
Гугл вам поможет понять разницу между "error" и "warning". А вот понять разницу между "предупредить" и "заставить" вам помогут в старших классах.
Re[12]: За что я не люблю С++
От: criosray  
Дата: 28.05.09 10:56
Оценка: :)
Здравствуйте, Antikrot, Вы писали:

MK>>>>>Так я не понял: он "энфорсит" или просто предупреждения выдает?

C>>>>Энфорсит, выдавая предупреждения. fxcop и stylecop — составная часть автоматического билда у нас.

A>>>так бы и написал сразу — "бьёт по рукам"


C>>А я так и написал. Кто Вам виноват, что Вы не знаете, что слово "энфорсить" означает "вынуждать", "обязывать", "заставлять".


A>Я еще с десяток переводов знаю.


Не заметно.

A>Гугл вам поможет понять разницу между "error" и "warning". А вот понять разницу между "предупредить" и "заставить" вам помогут в старших классах.


Вам к сожалению не помогли.
Re[27]: За что я не люблю С++
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 28.05.09 10:58
Оценка:
Здравствуйте, Sinclair, Вы писали:

ГВ>>Деталей сейчас уже не помню, но идея, думаю, понятна.

S>Конечно понятна. Непонятно, каким образом собираются работать простейшие запросы. Само отображение — это натурально прошлый век, конец девяностых.

S>Я в своё время пытался придумать такую штуку; в итоге кончилось ничем — на макросах такое не залудишь, потому что нужно два разных класса — один для данных, другой для метаданных. Ну, разве что компилять один хидер дважды с разными дефайнами, а это уже плохо дружит со всякими прекомпиляциями и всё такое. И всё равно не получается сделать полноценные запросы.


Зависит от того, когда ты это пытался сделать. Если во времена MSVC6 (как раз, когда я этим занимался), то это в самом деле почти невозможно. Если не так давно, то посмотри, например, в boost::lambda — вот тебе пример того, как на C++ синтезируется совсем другой язык.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[28]: За что я не люблю С++
От: Sinclair Россия https://github.com/evilguest/
Дата: 28.05.09 11:11
Оценка:
Здравствуйте, dr.Chaos, Вы писали:

DC>У нас это решается внешним кодогенератором, который генерит перситы по объектной схеме и связывает их с метаинформацией, а метаинформация вычитывается из схемы данных.

Да-да, я так и думал, что дойдем до кодогенератора.
Собственно, оба ответа про DSL были очевидны, и по этой дороге я тоже ходил.
DC> Отношения сделаны таким образом что с ними работаешь как со списком, есть ленивая загрузка, есть способ строить запросы с проверкой типов в рантайме, можно прикрутить и чтоб в компаил тайме работало, но когда делали это всё компилилось, в том числе, древним VS6.
Ленивая загрузка пусть убъет себя болезненно, а вот насчет построения запросов с проверкой типов в компайл тайме я бы посмотрел. Всегда полезно расширить кругозор.
Предположим у нас есть классические таблички из а-ля Нортвинд: Employee(ID, FirstName, LastName, ManagerId FK Employee.ID), Order(EmployeeID FK Employee.ID, Amount, Date).
Хотим посмотреть, у кого подчинённые наторговали больше продаж в январе. Аналог вот такого запроса на SQL:
select m.FirstName, m.LastName, sum(o.Amount) as TotalAmount 
 from Employee m 
 inner join Employee e on m.id = e.ManagerID
 inner join Order o on o.EmployeeId = e.ID
 where Order.Date between '20080101' and '20080131'

Как будет выглядеть на этой гипотетической системе?
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[24]: За что я не люблю С++
От: criosray  
Дата: 28.05.09 11:14
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Сгенерировал я программу на C++, натравил компилятор, получил загрузочный модуль, загрузил этот модуль.

ЧТД.
Re[29]: За что я не люблю С++
От: criosray  
Дата: 28.05.09 11:15
Оценка:
Здравствуйте, Sinclair, Вы писали:


S>
S>select m.FirstName, m.LastName, sum(o.Amount) as TotalAmount 
S> from Employee m 
S> inner join Employee e on m.id = e.ManagerID
S> inner join Order o on o.EmployeeId = e.ID
S> where Order.Date between '20080101' and '20080131'
S>


Не суть важно конечно, но забыли group by.
Re[29]: За что я не люблю С++
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 28.05.09 11:18
Оценка:
Здравствуйте, criosray, Вы писали:

C>Ликбез:

C>Что до того зачем я "ввернул", как Вы соизволили выразиться, так вот за тем, что объект есть суть ассоциативный массив. В динамических языках типа джаваскрипта так вообще объекты есть ни что иное, как словари.

C>http://www.quirksmode.org/js/associative.html


Хм. Да ты не только альтернативно по-русски изъясняешься, ты ещё и с альтернативного английского переводишь. Знаешь, первый раз слышу, чтобы "Objects as associative arrays" переводилось "объект есть суть ассоциативный массив". Это ты сильно задвинул.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[25]: За что я не люблю С++
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 28.05.09 11:19
Оценка:
Здравствуйте, criosray, Вы писали:

C>Здравствуйте, Геннадий Васильев, Вы писали:


ГВ>>Сгенерировал я программу на C++, натравил компилятор, получил загрузочный модуль, загрузил этот модуль.

C>ЧТД.

То есть от заданного мной наводящего вопроса ты ушёл?
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[30]: За что я не люблю С++
От: criosray  
Дата: 28.05.09 11:22
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

C>>Ликбез:

C>>Что до того зачем я "ввернул", как Вы соизволили выразиться, так вот за тем, что объект есть суть ассоциативный массив. В динамических языках типа джаваскрипта так вообще объекты есть ни что иное, как словари.

C>>http://www.quirksmode.org/js/associative.html


ГВ>Хм. Да ты не только альтернативно по-русски изъясняешься, ты ещё и с альтернативного английского переводишь.

Я ничего не перевожу. Если у Вас проблемы с пониманием и русского и английского, то это Ваши проблемы, а не мои.

ГВ>Знаешь, первый раз слышу, чтобы "Objects as associative arrays" переводилось "объект есть суть ассоциативный массив". Это ты сильно задвинул.

Я ничего не переводил. Вам по теме сказать больше нечего? Что такое словарная структура данных теперь знаете? Вот и отличненько.

Надеюсь, мне не придется в будущем объяснять Вам что такое "списочная структура данных", что такое "древовидная структура данных" и т.п.?


PS: Ей богу, не надоело позориться, Геннадий?
Re[24]: Подсчёт ссылок
От: MxKazan Португалия  
Дата: 28.05.09 11:22
Оценка:
Здравствуйте, COFF, Вы писали:

COF>О, как! Когда я в соседней ветке написал, что придется после (ну или вместо — что смысла не меняет) присваивания звать подобный метод, то меня обвинили в ламерстве. Теперь оказывается, что таки да. Еще можно вспомнить ручной инлайнинг... В общем, картина начинает проясняться

И что же тебе прояснилось?
Re[26]: За что я не люблю С++
От: criosray  
Дата: 28.05.09 11:24
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:


ГВ>>>Сгенерировал я программу на C++, натравил компилятор, получил загрузочный модуль, загрузил этот модуль.

C>>ЧТД.

ГВ>То есть от заданного мной наводящего вопроса ты ушёл?


Ну сходите к забору, или в вики и почитайте зачем, например, генерируются прокси-классы.

Заниматься восполнением пробелов в Вашем образовании я не намерен.
Re[24]: Подсчёт ссылок
От: Qbit86 Кипр
Дата: 28.05.09 11:31
Оценка: :)
Здравствуйте, COFF, Вы писали:

COF>О, как! Когда я в соседней ветке написал, что придется после (ну или вместо — что смысла не меняет) присваивания звать подобный метод, то меня обвинили в ламерстве. Теперь оказывается, что таки да. Еще можно вспомнить ручной инлайнинг...


Почти всегда ты захватываешь владение, получая ресурс или другой ResourceWrapper в аргументы конструктора. Эти два конструктора аналогичны конструкторам std::tr1::shared_ptr'а. В остальных случаях можешь вызывать «p.Assign(other)», что аналогично плюсовому «p.operator =(other)».

COF>В общем, картина начинает проясняться


Ага, поставь ещё больше этих забавных жОлтеньких смайликов. А то сразу и не понятно, насколько ловко ты всех уел своим «картина начинает проясняться (жОлтенький смайлик)». Впредь я не буду тратить времени на подобные дешёвые заманухи.

Ты таки настаиваешь на том, что подсчёт ссылок — техника исключительно приплюснутых?
Глаза у меня добрые, но рубашка — смирительная!
Re[13]: За что я не люблю С++
От: Antikrot  
Дата: 28.05.09 11:42
Оценка: :)
Здравствуйте, criosray, Вы писали:

тьфу на ВАс

A>>Гугл вам поможет понять разницу между "error" и "warning". А вот понять разницу между "предупредить" и "заставить" вам помогут в старших классах.

C>Вам к сожалению не помогли.

ну у ВАс всё впереди. было бы неправильно, если бы молодые поколения не выучили что-нибудь сверх предыдущих
Re[27]: За что я не люблю С++
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 28.05.09 11:43
Оценка:
Здравствуйте, criosray, Вы писали:

ГВ>>То есть от заданного мной наводящего вопроса ты ушёл?

C>Ну сходите к забору, или в вики и почитайте зачем, например, генерируются прокси-классы.

Спасибо, я знаю, зачем генериуются прокси-классы. Проблема в том, что прокси не являются "абсолютно новыми" во всех отношениях. Система, образно выражаясь, "знает", куда их нужно помещать, что с ними делать и т.п. Но я так понял, что ты вёл речь о совершенно новых и неизвестных программе классах. Вот мне и интересно стало — как же система будет использовать эти самые новые и неизвестные классы?
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.