# Компьютеры, телекоммуникации, ПО... > Программирование >  Тема для студентов-программистов и желающих им помочь

## THRESHE

Вот решил создать тему для студентов  пишите

----------


## pavlentus

Пока сам себе не поможешь никто тебе не поможет  :smileflag:

----------


## THRESHE

> Пока сам себе не поможешь никто тебе не поможет


 Да я не к тому чтобы мне ктото помагал (Сам не дурак) просто думал если студенты смотрят этот раздел обсудить с ними вопросы связанные с программированием, трудоустройством, учебой итп Например выбор языка для изучения

----------


## pavlentus

Ну ява щас ликует по городу, так же популярной становиться технология Ajax. Тебе выбирать.

----------


## THRESHE

> Ну ява щас ликует по городу, так же популярной становиться технология Ajax. Тебе выбирать.


 А в луксофте, текинсайте, комодо логике вроде сишники нужны (производительность у С побольше будет  :smileflag: ) а что такое Аякс?

----------


## pavlentus

> А в луксофте, текинсайте, комодо логике вроде сишники нужны (производительность у С побольше будет ) а что такое Аякс?


 По поводу аякса почитай на ajaxian.com
Мне Си не по вкусу, правда С# нравиться, т.к. на яву похож, в общем в основном нужны такие вещи для работы:
1) Знание языка (С#, Java, C++, VB.net иногда хотят)
2) Знание какой-нибудь субд, лучше (Лучше Oracle, MSSQL Server или самой высокооплачиваемой SAP)
3) Знание линухи, чем больше команд тем лучше
4) Умение разрабатывать веб-приложения (Ajax)

Java - лидер по популярности в городе, 
Oracle среди высокооплачиваемых СУБД выбирать тебе.

----------


## THRESHE

Спасибо за совет . Вопрос а сколько уйдет на изучение всего этого времени ? И как лучше обучатся дома или на курсах так как в институте нифига путного не дают ?

----------


## pavlentus

> Спасибо за совет . Вопрос а сколько уйдет на изучение всего этого времени ? И как лучше обучатся дома или на курсах так как в институте нифига путного не дают ?


 Начни с книг, а там сам по опыту увидишь, когда прийдешь в универ увидишь те же книги в виде предметов.

----------


## THRESHE

> Начни с книг, а там сам по опыту увидишь, когда прийдешь в универ увидишь те же книги в виде предметов.


 Всмысле прийду ? я уже 3 курс

----------


## pavlentus

> Всмысле прийду ? я уже 3 курс


 Я тебя поздравляю

----------


## KoVadim

> так как в институте нифига путного не дают ?


 Как раз там даёт базу. Надо только брать. А многие отказываются. Да кстати, блоксхемы, которые никто не любит советую всё же чертить. Они не зависят от языка и формируют алгоритмическое мышление. В дальнейшем  они будут в башке чертиться.

----------


## THRESHE

Вопрос по MFC. Почему не пашет ? Если ставлю просто заглушку для ON_WM_SYSCOMMAND тогда нормально. А если пытаюся поменять функции свернуть на расширить нет.

void CMainFrame::OnSysCommand (UINT nFlags, CPoint point) 
{
	switch ( nFlags )
	{
	case SC_CLOSE :
		{
			CWnd::OnSysCommand ( SC_MAXIMIZE, point.x ) ;
			//AfxMessageBox ("SC_CLOSE") ;
			break ;
		}		
	case SC_MAXIMIZE :
		{
			CWnd::OnSysCommand ( SC_MAXIMIZE, point.x ) ;
			//AfxMessageBox ("SC_MAXIMIZE") ;
			break ;
		}
	case SC_MINIMIZE :
		{
			CWnd::OnSysCommand ( SC_MAXIMIZE, point.x ) ;
			//AfxMessageBox ("SC_MINIMIZE") ;
			break ;
		}
	}
}

----------


## KoVadim

THRESHE
Если это было бы Делфи, то я сказал бы, что необходимо else часть у CASE (для С++ это default для switch) где вызывать методы предка. Вы ведь точно не все варианты обрабатываете


```
case SC_CLOSE :
{
CWnd::OnSysCommand ( SC_MAXIMIZE, point.x ) ;
//AfxMessageBox ("SC_CLOSE") ;
break ;
}
```

 Тут точно всё нормально?

----------


## THRESHE

> ```
> case SC_CLOSE :
> {
> CWnd::OnSysCommand ( SC_MAXIMIZE, point.x ) ;
> //AfxMessageBox ("SC_CLOSE") ;
> break ;
> }
> ```
> 
>  Тут точно всё нормально?


 Тут нормально так как при нажатии крестика на панели окна посылается сообщение WM_SYSCOMMAND где nFlags = SC_CLOSE.

----------


## KoVadim

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

----------


## THRESHE

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


 Попробовал поставить default всё равно не пашет

----------


## pavlentus

Для студентов, желающих себе помочь:
http://www.goldenstages.ru/downloads/job_for_tech.pdf

----------


## THRESHE

> Для студентов, желающих себе помочь:
> http://www.goldenstages.ru/downloads/job_for_tech.pdf


 Спасибо за совет Почитаю. Кстати с твоей подачи решил выучить Oracle и Ajax  :smileflag:

----------


## pavlentus

> Спасибо за совет Почитаю. Кстати с твоей подачи решил выучить Oracle и Ajax


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

----------


## Suicide

насколько реально выучить дома java ajax ?
и как доказать работодателю что ты это знаешь без диплома

----------


## pavlentus

> наскольо реально выучить дома java ajax ?
> и как доказать работодателю что ты это знаешь без диплома


 Ставя задачи, близкие к реальным, например спроектировав какую - нить прогу типа калькулятора, а дальше - сложнее.

----------


## x[82]

> насколько реально выучить дома java ajax ?
> и как доказать работодателю что ты это знаешь без диплома


 1. Все реально. Результат зависит от желания и приложеных усилий.
2. Свои и коллективные проекты, собеседования, результаты тестов (www.brainbench.com например).

----------


## THRESHE

> 1. Все реально. Результат зависит от желания и приложеных усилий.
> 2. Свои и коллективные проекты, собеседования, результаты тестов (www.brainbench.com например).


 Интересно а можно гдето скачать тест по Brainbench ?

----------


## pavlentus

> Интересно а можно гдето скачать тест по Brainbench ?


 На сайте есть бесплатный тест по Java 5, если пороешся, может еще чего-нибудь найдешь.

----------


## THRESHE

> На сайте есть бесплатный тест по Java 5, если пороешся, может еще чего-нибудь найдешь.


 По Java давно есть бесплатный, а вот если хочеш по С++ плати 50$

----------


## pavlentus

> По Java давно есть бесплатный, а вот если хочеш по С++ плати 50$


 по ройся в осле, там сертификационного материала валом

----------


## Ull9

here is a simplest test of c++ 

what value of i will be, after the following code?

int i=1;
i=i+++i;

----------


## pavlentus

> here is a simplest test of c++ 
> 
> what value of i will be, after the following code?
> 
> int i=1;
> i=i+++i;


 я считаю что это сертификация вообще нафиг не нужна, только понты для начальства.

----------


## Ull9

не прав, еслиб начальство спрашивало такие вопросы много проблем бы потом отпало бы.

----------


## pavlentus

Что важнее опыт работы или тесты?

----------


## Ull9

одно без другого не бывает. не надо или. должно быть и
если ц++ не ответит тебе правильно на этот вопрос, значит он незнает ц++, а об опыте он чешет.

вообще конечно надо таких вопросов с десяток спросить и все будет ясно.

----------


## pavlentus

Что все?

----------


## Ull9

АБСОЛЮТНО все

----------


## THRESHE

> по ройся в осле, там сертификационного материала валом


 Где где ?

----------


## x[82]

> Что важнее опыт работы или тесты?


 Опыт работы! 100% Без него никуда  :smileflag:  А успешные результаты тестов будут плюсом. Brainbench просто известен по всему миру, поэтому его и назвал. Лучше конечно спецтестики от производителя. По Java, нипример, сертификация Sun.
Кстати на Brainbench раз в год проводятся "игры". В это время там все тесты бесплатные. Постоянно всякие акции проходят, скидки дают на тесты, на сертификаты и т.п. Приглашения приходят от работодателей. Вобщем лишним не будет. Да и самому свои знания проверить тоже дело не лишнее.
Заходите, регистрируетесь. Вам дают свой транскрипт id. Его потом шлете работодателю и он может глянуть чего вы там натестили. Вобщем успехов

----------


## Ull9

> Опыт работы! 100% Без него никуда  А успешные результаты тестов будут плюсом.


 несогласен. что такое опыт работы? количество лет проведенных там то и там то? участие в таких то проектах, работа в таких то компаниях.
ничего он не значит. видал я "специалистов" с таким послужным списком, конфетка. Ну и что? 
начинаю с ним работать. вижу чушь пишет. говорю ерунду пишешь. непонимает, упирается. 
доходим до элементарных вещей НЕ ЗНАЕТ! опыт этот, как диплом советский. ну отсидел (может быть) пять лет студентом
гарантий знаний никаких.

если мало времени, только тест поможет. а потом список где и сколько работал.
еще пример
чем плох макрос?
#define MAX(a,b) ((a)<(b))? (b) : (a)




> Лучше конечно спецтестики от производителя. По Java, нипример, сертификация Sun.


 не везде производитель есть. у с++ нет.

----------


## pavlentus

> несогласен. что такое опыт работы? количество лет проведенных там то и там то? участие в таких то проектах, работа в таких то компаниях.
> ничего он не значит. видал я "специалистов" с таким послужным списком, конфетка. Ну и что? 
> начинаю с ним работать. вижу чушь пишет. говорю ерунду пишешь. непонимает, упирается. 
> доходим до элементарных вещей НЕ ЗНАЕТ! опыт этот, как диплом советский. ну отсидел (может быть) пять лет студентом
> гарантий знаний никаких.
> 
> если мало времени, только тест поможет. а потом список где и сколько работал.
> еще пример
> чем плох макрос?
> ...


 Сразу видно, что у тебя математический склад ума.
THRESHE, скачивай все из программы EmulePlus. Там литературы валом.

----------


## Konstantin.od

> несогласен. что такое опыт работы? количество лет проведенных там то и там то? участие в таких то проектах, работа в таких то компаниях.
> ничего он не значит. видал я "специалистов" с таким послужным списком, конфетка. Ну и что? 
> начинаю с ним работать. вижу чушь пишет. говорю ерунду пишешь. непонимает, упирается. 
> доходим до элементарных вещей НЕ ЗНАЕТ! опыт этот, как диплом советский. ну отсидел (может быть) пять лет студентом
> гарантий знаний никаких.
> 
> если мало времени, только тест поможет. а потом список где и сколько работал.
> еще пример
> чем плох макрос?
> ...


 Возможно, макрос плох тем, что он не работает ?  :smileflag:  и тем, что это макрос  :smileflag: 
#define max(a, b) ((a) < (b) ? (b) : (a))

----------


## Ull9

> Возможно, макрос плох тем, что он не работает ?  и тем, что это макрос 
> #define max(a, b) ((a) < (b) ? (b) : (a))


 поясни.

----------


## Konstantin.od

> поясни.


 Я имею в виду то, что он работает не во всех случаях. Например, 

#include <iostream>
#define MAX(a,b) ((a)<(b))?(b)a)
using namespace std;

int main(){
        int a = MAX(5,100)*39;
        cout <<a<<endl;
}

$ ./macros
100

вместо ожидаемого 3900  :smileflag: 
если использовать запостенный мной макрос :
#define max(a, b) ((a) < (b) ? (b) : (a))
$ ./macros
3900

Хотя это до сих пор макрос и здесь тоже можно создать ситуацию, когда он будет работать не так, как ожидаеться

----------


## pavlentus

Продолжаем тему для студентов......
_
Программист-стажер

Для работы в проектах по разработке и внедрению ERP систем мы ищем желающих учиться и быть лучшими!

Требования:

- базовые знания теории БД;

- базовые знания SQL;

- опыт разработки программного обеспечения.

Резюме слать в [email protected] Олегу Эдуардовичу
_

----------


## Ull9

Константин, правильно.
вот еще ситуация когда он не будет работать
int j,i=1;
j=MAX(i,++i);

а на первый мой вопрос можешь ответить?
у меня еще таких штук восемь.
если да, то контракт у тебя в кармане.

----------


## Пилигрим

> а на первый мой вопрос можешь ответить?


  Этот ??


> here is a simplest test of c++ 
> 
> what value of i will be, after the following code?
> 
> int i=1;
> i=i+++i;


 i+++i эквивалентно (i++)+i 
ответ писать ??  :smileflag: 



> у меня еще таких штук восемь.
> если да, то контракт у тебя в кармане.


  хм .. я всегда считал, что на собеседовании вопросы задают посущественнее..
или тут вся соль в слове "контракт"  :smileflag:

----------


## Ull9

> Этот ??
> i+++i эквивалентно (i++)+i 
> ответ писать ??


 напиши ответ, напиши.
а я посмотрю, посчитаю сам и проверю.

----------


## Ull9

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


 а ты ответь сначала, а потом будешь судить о существенности вопроса.

----------


## Пилигрим

> напиши ответ, напиши.
> а я посмотрю, посчитаю сам и проверю.


 тогда выполняю роль дебаггера :
int i=1;
i=i+++i разбивается на следущие этапы:
i++ - результат =1, i после этой операции =2
далее
1+2
и того 
"value of i will be" 3.
З.Ы. на такие вещи, как ни странно, у нас в универе еще на 1-ом курсе на лекция обращали внимание... 
З.Ы.Ы. блин какой же хреновый резалт выходит, когда надо что-то СРОЧНО написать на ++, а последнюю прогу на ++ писал почти пол года назад...



> а ты ответь сначала, а потом будешь судить о существенности вопроса.


 Существенность этого вопроса - знание приоритетов операций в ++(уровней которых, если мне не изменят моск, 11 кажись в ++)

----------


## Hunter_83

Подскажите пожалуйста где можно достать исходник IDEA на VSC++? Если у кого-нибудь есть сбросьте плиз на ящик.

----------


## Konstantin.od

> Константин, правильно.
> вот еще ситуация когда он не будет работать
> int j,i=1;
> j=MAX(i,++i);
> 
> а на первый мой вопрос можешь ответить?
> у меня еще таких штук восемь.
> если да, то контракт у тебя в кармане.


 Попробую)) 

here is a simplest test of c++ 

 what value of i will be, after the following code?

 int i=1;
 i=i+++i;

Интересная ситуация, и дело здесь не только в приоритете, но и в разбивке при лексическом анализе. Честно говоря, я только смутно что-то помнил об этом, и засомневался в решении Piligrim. Этот пример заставил меня скачать стандарт iso c++
http://anatolix.naumen.ru/files/books/CPPStandard2003.zip
страница 11(по оглавлению стандарта)

В общем, если у нас непрерывная строка - i+++i, то после "i" следующий обрабатываемый токен - максимальный, который можно сформировать;
то есть i+++i = i++ + i; 
чтобы наглядно убедиться в этом, 
int i = 2
int a = 12
i = a+++i;
cout <<"a = " <<a<<"i = "<<i<<endl;
a = 13 i = 14


решение Piligrim даёт правильный ответ, но по поводу приоритетов : 



> тогда выполняю роль дебаггера :
> int i=1;
> i=i+++i разбивается на следущие этапы:
> i++ - результат =1, i после этой операции =2
> далее
> 1+2
> и того 
> "value of i will be" 3.


 насколько я понимаю, вначале вычисляеться
1+1, затем после выражения инкремент i: 2+1;
здесь это не имеет значения, но в приведённом мной примере a+++i    твой порядок вычислений приведёт к неверному результату : 
a++ - результат = 12, после этой операции 13
далее 
13 + 2
и того 
"value of i will be" 15, откомпилированная программа выдаст другой результат

----------


## Пилигрим

> Подскажите пожалуйста где можно достать исходник IDEA на VSC++? Если у кого-нибудь есть сбросьте плиз на ящик.


 мне тоже интересно, где сожно скачать исходники IDEA, которая продаеть по 400$  :smileflag: (если имелось ввиду IntelliJ IDEA)



> Интересная ситуация, и дело здесь не только в приоритете, но и в разбивке при лексическом анализе. Честно говоря, я только смутно что-то помнил об этом, и засомневался в решении Piligrim. Этот пример заставил меня скачать стандарт iso c++


 ну так я стандарт iso c++ не курил, а всего лишь Страуструпа.. 
Теперь буду знать _правильный_ ответ на такой вопрос.
Ull9 жги дальше

----------


## Ull9

Ребята, вы оба неправильно ответили на этот вопрос, вы оба срезались.

итак смотрим 
i=i+++i,
вы правильно разболи это на
(i++) + i,
но дальше вы допускаете оба ошибку
в соответствии с (великим, святым) стандартом языка с++.компилятор свободен в порядке вычесления левого аргумента и правого аргумента. Т.е он сначала может выполнить i++, затем i, затем сложить оба значения. А может поступить наоборот
сначала i, затем i++, затем сложить. резуьтат будет разный.

правильный ответ звучит так. эта операция даст неопределенный результат. 
может 2 может 3.

все, срезались  учите стандарт.

----------


## KoVadim

Ull9, Если бы я был у тебя на собеседовании, то тебе пришлось ответить на один маленький вопрос. Раз ты говоришь, что стандарт позволяет двоякое толкования выражения, то в топку стандарт. (извините за такое слово). Хотя я не знаю ни одного компилятора, который бы выполнял стандарт.
Поэтому, нужно говорить так: так как стандарт допускает разное толкование, но компиляторы (точнее их создатели) вольны выбирать одно с решений. (Компилятор, который дает при каждой компиляции разный результат нам не нужен.) Поэтому говорим так. Компилятор от MS (VS2005) даст результат 3. Тоже запоет нам и Борландовский (BDS2006).
Это навело меня на одну мысль. Я вспомнил книгу Страуструпа, где было сказано, что если есть неоднозначность трактовки, то применяется правило "слева направо". Тогда все стает на свои места. Жаль я сейчас не могу проверить другие компиляторы, но при первой возможности сделаю. Хочеться попробывать скомпилить под FreeBSD (gcc).
раз так хорошо знаеш стандарты и поведение компиляторов, расскажи о результате следующего выражения
int i=1;
int j=10;
int q=i+++++j;

----------


## pal

> вот еще ситуация когда он не будет работать
> int j,i=1;
> j=MAX(i,++i);
> 
> а на первый мой вопрос можешь ответить?


 странно, что ты можешь ответить на первый вопрос, но приводишь тут пример, который не будет работать по той же самой причине, даже если MAX будет функцией

----------


## pal

> расскажи о результате следующего выражения
> int i=1;
> int j=10;
> int q=i+++++j;


 если тебя интересует разбивка на лексемы, то таким же, как и i ++ ++ + j
а если интересно, почему это не соберется, то потому, что постфиксный инкремент получает lvalue, а возвращает rvalue

----------


## Ull9

момент, пока я ездил в универмаг вы тут наворочали, давайте попорядку.




> Ull9, Если бы я был у тебя на собеседовании, то тебе пришлось ответить на один маленький вопрос. Раз ты говоришь, что стандарт позволяет двоякое толкования выражения, то в топку стандарт. (извините за такое слово).;


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

int i = 1;
int j = i++;
i=i+j;
при таком коде компилятор даст всегда однозначный результат.




> Хотя я не знаю ни одного компилятора, который бы выполнял стандарт.


 Полностью стандарт выполняет кажется цомпилятор фирмы комо. Что касается нашего случая, то многие компиляторы это делают. например 
VS7, gcc. HP aCC.




> Поэтому, нужно говорить так: так как стандарт допускает разное толкование, но компиляторы (точнее их создатели) вольны выбирать одно с решений. (Компилятор, который дает при каждой компиляции разный результат нам не нужен.);


 не так! есть одна тонкость. Стандарт оставляет свободу компилятору в принятии решения. Авторы компилятора такую свободу дают ему.

это означает, что при одних обстоятельствах (контексте) при выражении
int i = foo() + boo(); 
сначала выполнится foo() потом boo();
при другом контексте эта же самая строка, развернется компилятором подругому. компилятор ради оптимизации свободен как ему это делать.




> У Поэтому говорим так. Компилятор от MS (VS2005) даст результат 3. Тоже запоет нам и Борландовский (BDS2006).


 Ты не можешь этого знать, в твоем коде ты создал такой контекст, что компилятор сгенерил код так, нельзя исключать что в другом контексте тот же самый компилятор, возможно несколько строк ниже не сгенерит обратное. еще раз, нужно писать так чтоб компилятор всегда давал один и тот же результат. и ТОЧKА. хватит об этом

----------


## Ull9

> странно, что ты можешь ответить на первый вопрос, но приводишь тут пример, который не будет работать по той же самой причине, даже если MAX будет функцией


 не понял твоей реплики

----------


## pal

это ты пробелы передвинул

----------


## pal

> не понял твоей реплики


 моя реплика стостояла в том, что если MAX является функцией и не страдает от double evaluation, результат MAX(i,++i) все равно неопределен, потому что аргументы можно вычислить в любом порядке

----------


## Ull9

да верно
ну можно сказать так
int i=1,j=2;
MAX (i++,j);

здесь уже ошибка. и ошибка именно связаная с природой макроса.
и кстати МАХ не функция, если уж на то пошло.

----------


## pal

вот я и удивлялся, зачем в качестве примера недостатков макросов по сравнению с функциями приводить пример, неработающий и с функциями тоже

----------


## Ull9

> вот я и удивлялся, зачем в качестве примера недостатков макросов по сравнению с функциями приводить пример, неработающий и с функциями тоже


 ну а скажи если изменить пример как я до этого показал,
теперь вопрос.
какие ты видишь проблемы с макросом?

----------


## pal

double evaluation

----------


## Ull9

Right

----------


## Konstantin.od

> Ребята, вы оба неправильно ответили на этот вопрос, вы оба срезались.
> 
> итак смотрим 
> i=i+++i,
> вы правильно разболи это на
> (i++) + i,
> но дальше вы допускаете оба ошибку
> в соответствии с (великим, святым) стандартом языка с++.компилятор свободен в порядке вычесления левого аргумента и правого аргумента. Т.е он сначала может выполнить i++, затем i, затем сложить оба значения. А может поступить наоборот
> сначала i, затем i++, затем сложить. резуьтат будет разный.
> ...


 интересно, я смотрел как работает gcc, не знал, что есть стандартом допускаеться неопределённость.. тогда такую конструкцию нельзя использовать в принципе, буду знать

Не контракта ради, если есть ещё пару таких задачек, напиши  :smileflag:

----------


## Ull9

пожалуйста,

чем *operator new* отличается от *new operator* и отличается ли вообще?

----------


## Ull9

что быстрее
++i или i++?

----------


## Ull9

есть класс
class MyStrinh
{
privat:
char* p;
int len;
public:
MyString():len(0),p(NULL){}
};

деструктор и другие методы для простоты опускаются. 
Напиши copy construktor и assign operator

----------


## KoVadim

Ull9, Вы утверждаете, что компилятор волен в целях оптимизации выбирать порядок вычислений. Но неужели разработчики стандартов и компиляторов не подумали об этом? Если эти "особенности" стандарта и реализаций всплывают на таких элементарных конструкциях, то представляю, что может быть в более-менее навороченном коде. Теперь я понимаю, почему разработчики игрушек распространяют Debug версии своих творений - там компилятор хоть как-то управляем. А нам парят мозги, что для реализации эффектов нужны более мощьные процы, память. Relese версия просто не собирается или собирается, но не работает. 




> это означает, что при одних обстоятельствах (контексте) при выражении
> int i = foo() + boo();
> сначала выполнится foo() потом boo();


 Настолько мне известно, компилятор может переставить эти функции, только если уверен, что это не на что не повлияет. Не знаю, написано ли это в стандарте, но мои чтения RSDN.RU  и Криса Касперски (не путать с Евгением Касперским) показали, что компилятор не хочет нарываться на неприятности и поступает естественным образом, тоесть так как ожидается (но наши ожидания не всегда совпадают с разработчиковскими  :smileflag:  ).*
Вопрос в лоб*
Сами хоть раз встречались с таким поведением компилятора или нет - тоесть, что бы в одном файле он применил два разных способа. Ответы типа "одна бабка сказала" или "известный спец шепнул на ушко" не принимаются. Только исходный код для примера и скомпиленый результат. Не бойся, с дизассемблеров я умею управляться. Скомпиленый результат надо на той случай, если мой компилятор "не правильно скомпилит". pdb файл также не помешает. Пока не увижу - не поверю.
А пока все Ваши рассуждения о правильности/неправильности похожи на исследования сферического коня в вакууме.

----------


## Ull9

Вадим, можно на ты.
<<Ull9, Вы утверждаете, что компилятор волен в целях оптимизации выбирать порядок вычислений. Но неужели разработчики стандартов и компиляторов не подумали об этом?>>
именно потому что об этом подумали, принято решение не накладывать ограничения на компилятор.

<<Теперь я понимаю, почему разработчики игрушек распространяют Debug версии своих творений - там компилятор хоть как-то управляем. А нам парят мозги, что для реализации эффектов нужны более мощьные процы, память. Relese версия просто не собирается или собирается, но не работает.>>
с++, не простой язык, это для больших мальчиков, этим ножечком можно и порезатся, но никто не заставляет, ты можешь поигратся в песочнице пластмассовым совочком (ява). 

<<Настолько мне известно, компилятор может переставить эти функции, только если уверен, что это не на что не повлияет. Не знаю, написано ли это в стандарте,>>
ну раз ты не знаешь о чем разговор?  компилятор может выполнять любой порядок, не обращая внимание на сайд -эффекты.

<<показали, что компилятор не хочет нарываться на неприятности и поступает естественным образом>> единственная неприятность для компилятора нарушить стандарт. остальное проблемы программиста.

<<Сами хоть раз встречались с таким поведением компилятора или нет - тоесть, что бы в одном файле он применил два разных способа. Ответы типа "одна бабка сказала" или "известный спец шепнул на ушко" не принимаются. Только исходный код для примера и скомпиленый результат. Не бойся, с дизассемблеров я умею управляться. Скомпиленый результат надо на той случай, если мой компилятор "не правильно скомпилит". pdb файл также не помешает. Пока не увижу - не поверю.
>>
Сам не сталкивался, Тк у меня были хорошие учителя. И что значит верю не верю. мне не надо верить, читай стандарт. Например я знаю что австралия есть, но мне и в голову не придет, поехать проверить. есть книги, я им верю. 

Если ты будешь ишодить из принципа ПОKА НЕ УВИЖУ НЕ ПОВЕРЮ, то.... ты выбрал не ту профессию.

<<А пока все Ваши рассуждения о правильности/неправильности похожи на исследования сферического коня в вакууме.>>

не смеши. и больше нигде не говори, что веришь только уведенному а не написанному.
Ты не со мной споришь а со стандартом

----------


## Ull9

вот нашел ISO Standard C++

Kнига 5, стих 4

Except where noted, the order of evaluation of operands of
individual operators and subexpressions of individual expressions, and
the order in which side effects take place, is unspecified. 

И все. Точка. Kак выполнять решает компилятор. 

Пример в тему. Kонституция Украины, тоже не определяет с какой ноги тебе утром вставать Ну и что Kонституцию в топку?

----------


## Konstantin.od

> что быстрее
> ++i или i++?


 Теоретически, ++i быстрее. так как i изменяеться по ссылке, хотя с оптимизацией компиляторов, если i типа int, разницы в производительности цикла i++ и ++i не заметил

----------


## pal

> Сами хоть раз встречались с таким поведением компилятора или нет


 тут ты сильно не прав. если твой компилятор успешно компилирует некорректные программы, это не значит что надо их писать. ты проверил все варианты параметров оптимизации ? проверил на других архитектурах ? проверил другие компиляторы ? а еще не вышедшие тоже проверил ?
между прочим, правильные компиляторы на такое ругаются

----------


## Ull9

> Теоретически, ++i быстрее. так как i изменяеться по ссылке, хотя с оптимизацией компиляторов, если i типа int, разницы в производительности цикла i++ и ++i не заметил


 правильно, но если i это POD, если это скажем итератор то разница есть, и оптимизатор ее не соптимизирует.
поэтому лучше писать ++i

----------


## KoVadim

*pal*. Надо выбросить компилятор, который компилирует заведомо неверный код. Разработчиков выгнать. Ведь вы не будете доверять человеку, который один раз делает так, а на следующий - по другому.
Основная идея программирования - что мы можем точно объяснить компьютеру, что же мы хочем на понятном ему языку. Зачем стандарт, который допускает такие глупости. Я не верю, что такое пропустили. Там же не глупцы сидят.


> проверил другие компиляторы ?


 Вот завтра на работе попробую скомпилить под Linux Mandriva 2007 и FreeBSD 6.1, компилятор скорее всего gcc. версию уточню уже по месту.
По поводу других платформ - у меня нет такой возможности. Но есть идеи. Проверю - расскажу.


> а еще не вышедшие тоже проверил ?


 У меня нет машины времени 



> между прочим, правильные компиляторы на такое ругаются


 Опять сферические кони в вакууме. Пример в студию плиз+ссылку, откуда выкачать и проверить. Только не предлагайте такое, что нереально в Одессе сделать - типа мейнфрейме таком-то компилиться.



> ты проверил все варианты параметров оптимизации ?


 Если Вы также уверены в том, что сказал *Ull9*, пожалуйста приготовьте пример, в котором код


```
int i=1;
int j=2;
int k=i+++j;
```

 Давал результат не 3, а 2. Для подтверждения принимаются исходники плюс скомпиленый вариант и сопутствующие файлы для отладки (ну что бы я мог убедиться что это всё не подстроено, а действительно правда). Это касается всех, кто убеждён в том, что стандарт так просто допускает двузначности.
*Ull9*



> с++, не простой язык, это для больших мальчиков, этим ножечком можно и порезатся, но никто не заставляет, ты можешь поигратся в песочнице пластмассовым совочком (ява).


 Типичная ошибка больших мальчиков. На java не пишу. Маленьким мальчиком себя не считаю, хотя до "больших" наверное далеко. Поэтому считаю это личным оскорблением. Вы не удосужились даже спросить на каком языке я пишу. Плюс ко всему, я обращаюсь на *Вы*, а в ответ имею *ты*. 



> Если ты будешь ишодить из принципа ПОKА НЕ УВИЖУ НЕ ПОВЕРЮ, то.... ты выбрал не ту профессию.


 Какую я же должен был выбрать? Меня воспитали человеком, который должен проверить. А насчет Австрилии. Можно на худой конец GoogleMap посмотреть. К тому же тут есть другие доказательства - фотографии к примеру, а Вы мне даже фотографий (тобыш скомпилированого кода) не предоставили.
По поводу Конституции. Мне кажеться пример не слишком удачный - там сказано, что личные свободы не ограничиваются. Поэтому я волен с утра выбирать. И от того, с какой ноги я утром встану и результат моего рабочего дня слабо коррелированны. Но во времена Сталина могли и приписать такое. Он мог.

Так мне кто то пример кода с сопутствующими файлами приведет?

----------


## Konstantin.od

> Если Вы также уверены в том, что сказал Ull9, пожалуйста приготовьте пример, в котором код
> Код:
> int i=1;
> int j=2;
> int k=i+++j;
> Давал результат не 3, а 2. Для подтверждения принимаются исходники плюс скомпиленый вариант и сопутствующие файлы для отладки (ну что бы я мог убедиться что это всё не подстроено, а действительно правда).


 В этом коде нет никакой двузначности, просмотрите внимательно тот пример, для  которого результат был неопределён. 



> Это касается всех, кто убеждён в том, что стандарт так просто допускает двузначности


 не думаю, что в таком вопросе можно быть 'убеждённым', стандарт либо допускает что либо нет, все закономерности вычисления - дело частного  случая, на который нельзя полагаться. Сам удивился этому пару страниц назад. Впрочем, не стыдно, только учусь. 
Я проверил, есть такое, ссылка на стандарт - http://anatolix.naumen.ru/files/book...andard2003.zip, страница 65 по бумажной нумерации. Думаю, этого достаточно, чтобы положить конец этому спору.

----------


## pal

ты так ничего и не понял
компилятор пытается оптимизировать код, чтобы он работал быстрее
если он не сможет переставлять местами участки, он не сможет оптимизировать. понятно, что если переставлять все, что вздумается, то оно и работать будет потом, как ему вздумается. поэтому стандарт определяет, в каких случаях компилятор свободен в выборе, а в каких нет. если бы ты внимательно изучил язык, ты бы знал, что есть sequence points, ограниченные, в частности && || , ?:
а вот + ничего не ограничивает
спор ведешь совершенно никчемный - я уже сказал, что даже если сейчас нет компилятора который скомпилирует какой-то конкретный пример с undefined behavior по другому, это не делает этот пример корректным, потому что завтра такой компилятор может появиться. и он будет соответствовать стандарту, а этот пример - нет. даже если ты будешь очень громко оспаривать существование оптимизирующих компиляторов или стандарта языка

ну, а в качестве примера
[[email protected] tmp]$ cat a.cpp
#include <iostream>

int main ( ) {
        int a = 1;
        std :: cout << a + ++ a << std :: endl;
}
[[email protected] tmp]$ g++ -o a -Wall -Werror a.cpp 
cc1plus: warnings being treated as errors
a.cpp: In function ‘int main()’:
a.cpp:5: warning: operation on ‘a’ may be undefined

----------


## KoVadim

*pal*
Ваш пример неудачен. Так как играя пробелом, можно получить и не такое в этом примере.
при таком варианте "a+ + +a" имеем результат 2
при таком варианте "a++ +a" имеем результат 3
при таком варианте "a+ ++a" имеем результат 4
при таком варианте "a+ + +a" имеем результат 2
при таком варианте "a+++a" имеем законную результат 3
В данном случае пробел недопустим, так как Вас в школе должны были учить, что пробел допустим только между операторами, а вот сами операторы разрывать нельзя, что Вы и сделали.

----------


## Ull9

ну и еще одна реплика с моей стороны.



> ... Плюс ко всему, я обращаюсь на *Вы*, а в ответ имею *ты*.


 в этом топике, мой пост #68
<<Вадим, можно на ты.>> 
я полагал, что предложив ты, я расчитывал на обоюдность.ну если тебе хочется Вы, то пожалуйста.

И я полагаю, что Вы на с++ непишите. в противном случае, если вы всетаки на нем пишите, то тем хуже для вас, и еще хуже для тех на кого вы работаете.

можете спорить дальше, но не со мной, а со Стандартом.

----------


## KoVadim

*Ull9*



> Вадим, можно на ты


 Не видел. 
На С++ не пишу, но нелюблю, когда люди доказывают свою правоту, ссылаясь только на стандарт. Человек должен мыслить, иначе он просто никто.

----------


## Ull9

именно потому что я мыслю, получилось так.
прочел стандарт, несогласился, подумал, изменил свое мнение и согласился.

я действительно считаю, что стандарт очень продуман, и конкретно это сделано умно. 
а чтоб доказать свою правоту, надо именно, ссылатся на стандарт. мы спорим о СТАНДАРТИЗИРОВАННОМ продукте (с++), и спор может разрешить только ссылка на стандарт.

----------


## Ull9

таких случаев, "нелогичности" у с++, десятки, их надо просто знать.
именно поэтому с++, считается трудным. но взамен разработчик получает гораздо большую мошь
чем скажем игры в песочнице (java, delphi etc.)

----------


## KoVadim

*Ull9*
Почему вы считаете java, delphi etc. игрой в песочнице? Можно узнать Ваш уровень в этих языках?

----------


## Ull9

начинал в германии как ява программер. потом перешел/вернулся на с++.

почему в песочнице? потому что виртуальная машина, делает гарбаже коллекшн, порядок вычисления предопределен, невозможно выйти за границы массива, ну и тд. тп. она тебя все время подстраховывает.
темплейты не полностью реализованы.
тебе недоверяют и надевают на тебя памперсы.
за это ты платишь, скоростью, и перерасходом памяти. вот она и есть песочница.

----------


## KoVadim

По поводу java согласен (хоть гдето мы сходимся :smileflag:  ), но по поводу Delphi смею возразить.



> порядок вычисления предопределен


 А мне кажеться так должно быть. Хотя, наверное я не мазахист. :smileflag:

----------


## THRESHE

> начинал в германии как ява программер. потом перешел/вернулся на с++.


 И много в германии вакансий для сишников  ?

----------


## Ull9

много.
заходи допустим сюда www.jobpilot.de 
ищи по ключeвым словам с++, ....сам увидишь сколько.

----------


## THRESHE

> много.
> заходи допустим сюда www.jobpilot.de 
> ищи по ключeвым словам с++, ....сам увидишь сколько.


 Мда надо повторить немецкий. Блин обший смысл понятен, а вот терминология . 
Может ктото знает курсы по немецкому для программеров ?

----------


## Ull9

не боись.
здесь наблюдается дефицит программеров
если ты
а) знаешь ХОРОШО английский
б) знаешь ХОРОШО с++ или ява.

можешь здесь найти контракт.

----------


## pal

> *pal*
> Ваш пример неудачен. Так как играя пробелом, можно получить и не такое в этом примере.
> при таком варианте "a+ + +a" имеем результат 2
> при таком варианте "a++ +a" имеем результат 3
> при таком варианте "a+ ++a" имеем результат 4
> при таком варианте "a+ + +a" имеем результат 2
> при таком варианте "a+++a" имеем законную результат 3


 такое впечатление, что я со стенкой разговариваю
_все_ примеры с побочным эффектом ( в данном случае - варианты 2, 3 и 5 ) не корректны и результата у них соответственно никакого нет.



> В данном случае пробел недопустим, так как Вас в школе должны были учить, что пробел допустим только между операторами, а вот сами операторы разрывать нельзя, что Вы и сделали.


 если ненадолго отвлечься от битвы с ветряными мельницами и присмотреться повнимательней, то можно заметить, что никаких операторов я не разрывал

----------


## cave

Если кому-то интересно пограммить на Quick Basic - заходите сюда
сайта больше не существует
Комментарии типа "да кому это нужно" и "это щас не актуально" - просьба не писать) Каждый занимается тем, что ему дорого. А если это ещё и приносит пользу другим - то вообще супер!!!

----------


## THRESHE

> знаешь ХОРОШО с++ или ява.


 Расскажи поподробней пож :smileflag:

----------


## KoVadim

*pal*
Как не разрывал? Смотрим внимательно на своё сообщение и думаем. Может копипаст плохо работает? Но пробел точно между плюсиками есть. Это провоцирует компилятор (парсер) в нужную сторону
Я решил, что так как тут спор (дискусия:?) зашел мягко говоря в тупик, то нужно спросить в другом месте. Что и было сделано. Результат получился интересным. Мне предоставили код вместе с солюшеном, где всё компилируется и выдает 2. Сейчас ищу параметры компилятора (для VS2005), которые приводят к этому переходу. Пока не нашёл "стабильного перехода". Но он обязан быть, так как компилятор не может выбирать политику оптимизации основываясь на текущей фазе луны. Только не надо кричать - мы же говорили, что возможно. Никто из вас не удосужился привести код+солюшен. 
А теперь самое интересное, некоторые завопили, как там может быть 3, если там 2 всегда. И вот, если учитывать стандарт, то за такой код "надо отрывать руки". Так как этот код стандарт не рекомендует использовать. Вот теперь задачка решена. (ну я ещё параметрами поиграюсь)

----------


## Ull9

> *pal*
> Как не разрывал? Смотрим внимательно на своё сообщение и думаем. Может копипаст плохо работает? Но пробел точно между плюсиками есть. Это провоцирует компилятор (парсер) в нужную сторону
> Я решил, что так как тут спор (дискусия:?) зашел мягко говоря в тупик, то нужно спросить в другом месте.


 единственное место где ты должен спрашивать это стандарт.
спор не зашел в тупик. 
еше раз тебе говорю, 
с++ стандартизированный продукт, все что мне, тебе непонятно легко решается путем заглядывания стандарт. итак смотрим, стандарт однозначно говорит, что порядок, на усмотрение компилятора. точка.




> Но он обязан быть, так как компилятор не может выбирать политику оптимизации основываясь на текущей фазе луны. Только не надо кричать - мы же говорили, что возможно. Никто из вас не удосужился привести код+солюшен.


 да хоть и на фазе луны. тебе и мне это не должно быть интересно. программист решает свои задачи. и ЕДИНСТВЕННОЕ правило игры между ним и компилятором это стандарт. ну не буду я в его логику лезть. он написан умными людьми, отлажен. соответствует стандарту. ТОЧКА.




> Только не надо кричать - мы же говорили, что возможно. Никто из вас не удосужился привести код+солюшен.


 не буду я подыскивать код солюшн, иши сам. мне проверять снадарт нужды нет. Могу сказать направление. ищи мульти процессорные машины, RISC архитектуру, компилируй с максимальной степенью оптимизации. 




> А теперь самое интересное, некоторые завопили, как там может быть 3, если там 2 всегда. И вот, если учитывать стандарт, то за такой код "надо отрывать руки". Так как этот код стандарт не рекомендует использовать. Вот теперь задачка решена. (ну я ещё параметрами поиграюсь)


 ПРАВИЛьНО, такой код в принципе использовать нельзя. и надо отрывать за него яйца. 
в одном я не уверен, что ТЫ понял решение.

----------


## Ull9

> Расскажи поподробней пож


 а что подробнее? язык программирования надо знать. тут никак не обьедешь.

----------


## el_Wild

> есть класс
> class MyString
> {
> privat:
> char* p;
> int len;
> public:
> MyString():len(0),p(NULL){}
> };
> ...


 Если предположить, что len -- длина строки, то я бы написал такие copy constructor и assign operator

class MyString
{
privat:
char* p;
int len;
public:
MyString():len(0),p(NULL){};
MyString(const MyString & other);
MyString & operator = (const MyString & other);
};

MyString::MyString(const MyString & other):
len(other.len),p(new char[other.len])
{
memcpy(p, other.p, len);
}

MyString & MyString::operator=( const MyString & other )
{
if ( this == &other ) return *this ;
len = other.len ;
delete [] p ;
p = new char[ other.len ] ;
memcpy( p , other.p, len) ; 
return *this ;
}

Если что не так -- поправьте...

----------


## shipr

Добридень шановне панство.

прочитав эту ветку до конца я всётаки решил отписаться. все мы знаем из курса математики начальной школы что:
*от перемены мест слагаемых сумма не изменяется*  
посему "i+ ++i" должно быть равно "++i +i"  
на практике имеем неравенство что и приводит к неоднозначному варианту. И вообще скобки никто не отменял. 

а поповоду ява/ц++... Ну кто-то решил стать врачём, а кто-то юристом... у кого лучше профессия? Кто-то любит светлое пиво, кто-то тёмное. Каждому своё.

----------


## Ull9

правильно.
только нужно не длинну строки увеличить на 1.

фишка в том что в assign operator оч.часто забывают на равенство this проверять.

ну а теперь в чем отличие
operator new
new operator?

----------


## Ull9

> Добридень шановне панство.
> 
> прочитав эту ветку до конца я всётаки решил отписаться. все мы знаем из курса математики начальной школы что:
> *от перемены мест слагаемых сумма не изменяется*  
> посему "i+ ++i" должно быть равно "++i +i"  
> на практике имеем неравенство что и приводит к неоднозначному варианту. И вообще скобки никто не отменял. 
> 
> а поповоду ява/ц++... Ну кто-то решил стать врачём, а кто-то юристом... у кого лучше профессия? Кто-то любит светлое пиво, кто-то тёмное. Каждому своё.


 от перемены мест слагаемых, суммa не меняется и в с++ тоже. 
она меняется от порядка вычислений.
еще один недогоняющий?

----------


## KoVadim

*Ull9*



> ПРАВИЛьНО, такой код в принципе использовать нельзя. и *надо отрывать за него яйца.* 
> в одном я не уверен, что ТЫ понял решение.


 Это Вы должны были и написать в самом начале. Но этого не было.
Я понял, что можно  к вам на работу не пойду. Только не говорите, что Вам такие не нужны. Просто Вам не нужны такие как я, которые будут молиться на стандарт.
*shipr*
неправильно пытаешся определить порядок действий.

----------


## Ull9

> Только не говорите, что Вам такие не нужны. Просто Вам не нужны такие как я, которые будут молиться на стандарт.


 прости но скажу.
такие как ты на работу ко мне в тим не нужны. 
и именно так, нужны те кто молятся на стандарт. 
именно так. потом за тебя, фому-неверующего, я по ночaм переделывать нехочу.

по поводу моления.
на столике возле кровати у меня две книги. библия и стандарт. больше мне для сна ничего не нужно
ну может разве "Элементы" эвклида.

вот так.

----------


## KoVadim

*Ull9*
после меня переделывать не надо будет, так как я пишу неизвращаясь, за что многие не любят мой сишный код (хотя я и не пишу на нем каждый день) - слишком он прост для них. но я точно зная, что компилятор правильно поймёт меня. поймёт так как я хочу. Переделывать не надо. Говорят, что си разрабатывался так, что бы компилировать любой бред. Но вот что будет делать этот бред - загадка.



> на столике возле кровати у меня две книги. библия и стандарт.


 Хочу увидеть

----------


## Ull9

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

----------


## KoVadim

*Ull9*
Мож попробуем? Только не в С/С++, а в програмировании вообще.
Хотя.
А ответы "шо за бред" приниматься будут?

----------


## Ull9

ну давай,
но не в программировании вообще а в ооп. пойдет?

----------


## KoVadim

Без проблем, только желательно без привязки к конкретному языку/компилятору. А если уж и ссылаемся - то указываем точно на каком.

----------


## Ull9

расскажи в 2-3 предложениях, когда применяется паттерн bridge.

----------


## Ull9

для использования функциональности одного класса в другом классе
что нужно применить наследование или делегирование? и почему?

----------


## Ull9

когда нужно применять принцип Liskov?

----------


## Ull9

ау? ты где? в google побежал?

----------


## KoVadim

> расскажи в 2-3 предложениях, когда применяется паттерн bridge.


 Применяется для отделения реализации от абстакции. В результате чего мы можем менять одно и другое независимо.



> для использования функциональности одного класса в другом классе
> что нужно применить наследование или делегирование? и почему?


 Если я хочу релеализовать множественное наследования в языке, в котором его нет (C#, Delphi), то тут поможет только делегирование.
Наследование следует применять в том случае, если я хочу предоставить пользователям моего класса доступ до всех полей класса, функциональность которого я хочу использовать. Но пользователю моего класса необязательно знать о внутреностях класса, тогда делегирование.



> когда нужно применять принцип Liskov?


 Когда мы наплодили много классов и в них есть явно подобные общие куски. Этот прицип, сформулированый Барбарой Лисков, позволяет выделить один класс как наследник другого, чем упростить реализацию



> ау? ты где? в google побежал?


 Нет. Я же живой человек. Я должен в обед кушать. Я ктому же на работе. Меня могут вызвать на объект для устранения неисправностей. Така жизнь

----------


## Ull9

и все же 45 минут на ответ... если тебе надо было обедать. не нужно было соглашатся.

что тебе сказать.
первый ответ принимается. второй и третий нет.
каша у тебя в голове, извини.
я не учитель ты не ученик.

мне было бы интересно, пусть кто-то еще выскажется.

----------


## KoVadim

Послушаем других. 
По поводу принципа Liskov я там немного перемудрил. Может хотелось, что бы я принцип переформулировал?
Здесь у нас тоже, что и когда я  здавал вступительные экзамены. Спрашиваю экзаменаторов: 
- Вы на украинском понимаете? 
- Да, без проблем. 
- Ок. 
Отвечаю на их вопрос, ответ - вы совершенно неверно отвечаете. А вопросы то лёгкие, врядли думаю. Говорю, давайте я вам на русский переведу. Тогда я ещё тяжело переключался с одного языка на другой. Но невзирая на это, на мой ужасный русский (на тот момент), они меня поняли. Хотя я не сказал ничего нового. Я просто перевёл. Экзамен я сдал. 
Так и в нашей ситуации. Я просто не умею ещё говорить такими словами, что бы Вам было понятно.

----------


## Ull9

твой русский я прекрасно понял
но дело совершенно не в нем.
<<Если я хочу релеализовать множественное наследования в языке, в котором его нет (C#, Delphi), то тут поможет только делегирование.>>
если нет множественного наследования, то делегирование не поможет. Это принципиально неверно.

<<Наследование следует применять в том случае, если я хочу предоставить пользователям моего класса доступ до всех полей класса, функциональность которого я хочу использовать.>>
нет, наследование нужно применять когда ты хочешь, чтоб вместо базового, ты мог использовать наследованный класс. доступ тут не главное.

ну и так далее. я вижу, извини, кашу у тебя в голове.
пусть другие скажут.

----------


## KoVadim

*Ull9*
В данном случае проблема не в русском, а в понимании идиологий. Просто с годами у Вас выработалась привычка говорить "умными шаблонными фразами". Я сходу не могу выразить фразу, которая будет соответствовать научной. Знание/незнание названий/формулировок не мешает использовать это.
Это как у нас в академии. Если преподаватель спрашивает студента и хочет завалить (в нашой ситуации это как раз и должно быть, так как вас на данный момент никто и не удолетворил своим ответом сразу), то задай вопрос, на который сам не знаеш ответ либо знаеш, что этот ответ всегда сможеш дать альтернативный ответ, сославшись на авторитетный источник. Он то правильный, но без глубокого понимания вопроса студент не сможет этого обяснить. А глубина - это иногда и кандидатской попахивает. Разруливал одного психолога я на 5 курсе. Понимаеш, дал определение понятия по автору, который ему не нравиться и соответственно неверно.

----------


## THRESHE

> а что подробнее? язык программирования надо знать. тут никак не обьедешь.


 Всмысле какие технологии надо знать :smileflag:

----------


## Яр

Позвольте попробовать  :smileflag: 




> для использования функциональности одного класса в другом классе
> что нужно применить наследование или делегирование? и почему?


 Конечно, всё зависит от конкретной ситуации.
Я считаю, что применять наследование нужно с осторожностью. 
Когда без не его не обойтись и когда именно оно наиболее ясно выражает отношение между классами. 

Например, к классу А нужно добавить функциональность класса Б.
Если А состоит в отношении "_является_" по отношению к Б, то, вероятнее всего, нужно применить наследование. 
Если же А "_использует_" Б, то -- делегирование.

Если нужно использовать функциональность Б класса в А, и А помимо прочего уже участвует в какой-нибудь иерархии наследования, то кроме делегирования можно попробовать
- "подмешать" функциональность необходимого класса, применив множественное наследование (реализации).

----------


## Ull9

> Например, к классу А нужно добавить функциональность класса Б.
> Если А состоит в отношении "_является_" по отношению к Б, то, вероятнее всего, нужно применить наследование. 
> Если же А "_использует_" Б, то -- делегирование.


 правильно, наследование, это очень жесткая связь между класами. ее надо применять весьма осторожно. только тогда когда она точно нужна. 




> Если нужно использовать функциональность Б класса в А, и А помимо прочего уже участвует в какой-нибудь иерархии наследования, то кроме делегирования можно попробовать
> - "подмешать" функциональность необходимого класса, применив множественное наследование (реализации).


 насколько я понял твою идею, он плохая. см первый ответ.
тут тоже поможет анализирование дизайна по принципу Лисков.

----------


## Ull9

> *Ull9*. Я сходу не могу выразить фразу, которая будет соответствовать научной. Знание/незнание названий/формулировок не мешает использовать это.
> .


 "Кто ясно мыслит - ясно излагает"
железное правило. если ты видишь перед собой человека, который путается и жалуется на онемение языка, знай. - он незнает.

----------


## Ull9

> Всмысле какие технологии надо знать


 если идешь юниором, надо хорошо знать пожалуй только язык.

----------


## THRESHE

> если идешь юниором, надо хорошо знать пожалуй только язык.


 STL считается частью языка ? :smileflag:  Чему следует уделить особое внимание ?
Какие книги надо обязательно прочитать ?

----------


## Ull9

конечно STL,часть языка. без него никуда

читать? ну блин это много:

Stroustroup "The C++ programming language"
Scott Mayers 2 books
Alexandrescu "Modern C++ programming"
Alexandrescu ... "C++ coding standart"
Gurtovoi "Metaprogramming"
Suttis "STL"
Gamma, Vlicides "Patterns..."
"Pattern Oriented Software architecture" book 2
POSIX
UNIX

рекомендую все читать в оригинале, по английски. чтоб небыло проблем на интервью.

----------


## THRESHE

*Ull9* Спасибо за совет  :smileflag:

----------


## Ull9

когда все это прочтесь и главное поймешь, и сможешь четко без жалоб на язык пересказать.
тебя здесь с руками и ногами оторвут. гарантирую.
все удачи. жду тебя через пару лет.

----------


## THRESHE

> когда все это прочтесь и главное поймешь, и сможешь четко без жалоб на язык пересказать.
> тебя здесь с руками и ногами оторвут. гарантирую.
> все удачи. жду тебя через пару лет.


 Берегись скоро приеду

----------


## Ull9

у меня самог ушло полгода, у тебя будет два минимум.

----------


## pavlentus

> у меня самог ушло полгода, у тебя будет два минимум.


 А в каком году и возрасте покинул родину? :smileflag:

----------


## Ull9

работал в пункте приема стеклотары, надоело, купил книги пом яве. нашел контракт.
ууже в поезде понял что такое обьект.
с++ выучил уже здесь.

----------


## pavlentus

> работал в пункте приема стеклотары, надоело, купил книги пом яве. нашел контракт.
> ууже в поезде понял что такое обьект.
> с++ выучил уже здесь.


 История так схожа с той, которую я слышал давным давно, когда еще учился в школе: "Сейчас стало актуально уезжать заграницу. На сегодняшний день даже поварихи стали учить язык программирования" :smileflag:

----------


## Ull9

со мной всегда так
начинаю шутить и прикалыватся, все думают я говорю правду.
говорю правду, все думают что прикалываюсь...

<вздох>

ок всем спокойной ночи.

----------


## THRESHE

> работал в пункте приема стеклотары, надоело, купил книги пом яве. нашел контракт.
> ууже в поезде понял что такое обьект.
> с++ выучил уже здесь.


 Так это прикол ???

----------


## THRESHE

> у меня самог ушло полгода, у тебя будет два минимум.


 ушло полгода на что ?

----------


## Ull9

нет не прикол.
единственный мой прикол на всем форуме это мессаж 126.

полгода ушло у меня на прочтение того списка что я тебе дал.

----------


## pavlentus

> нет не прикол.
> единственный мой прикол на всем форуме это мессаж 126.
> 
> полгода ушло у меня на прочтение того списка что я тебе дал.


 А как ты этот список сумел запомнить и применить, или все одновременно?

----------


## Ull9

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

----------


## Ull9

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

----------


## pavlentus

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


 У меня сейчас примерно так же: "Чтение, сразу применяемое на практике".

----------


## THRESHE

> полгода ушло у меня на прочтение того списка что я тебе дал.


 Ты гонишь Интересно почему ты подумал что у меня на это уйдет два года ? :smileflag: 



> если прочтете, дальше вам решать, хотите в одессе, хотите в киев, хотите в ирландию, хотите сюда


 Никуда не хочется. Если бы еще на родине платили как в европе...

----------


## Ull9

кто одолеет книгу 
Александреску
"c++ modern design". 
я лично проверю, 
сможет обьяснить что такое тайплист.
и кто досконально разберется в библиотеках loki и boost.

я лично буду о визе хлопотать. такие головы мне очень нужны.

----------


## Ull9

> Ты гонишь Интересно почему ты подумал что у меня на это уйдет два года ?
> 
> Никуда не хочется. Если бы еще на родине платили как в европе...


 если ты это все одолеешь за полгода плюс локи и плюс буст
то ты такой как я, 
мне нужны в тим люди

----------


## pavlentus

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


 Спасибо за список. Кому-нибудь он точно понадобится, а вот делится опытом с молодежью думаю это святое.

----------


## Ull9

родина-уродина
поверь мне родину лучше любить издалека
сам проверил

----------


## THRESHE

> а вот делится опытом с молодежью думаю это святое.


 Я вообще эту тему как раз для этого создавал :smileflag:

----------


## pavlentus

> родина-уродина
> поверь мне родину лучше любить издалека
> сам проверил


 В каком году уехал? Сейчас многое изменилось....

----------


## Ull9

2001

----------


## Ull9

нихрена не изменилось. был летом.
ты поживи здесь год, тогда поймешь что ничего не изменилось.

----------


## THRESHE

> нихрена не изменилось. был летом.
> ты поживи здесь год, тогда поймешь что ничего не изменилось.


 Неужели в Германии так хорошо ? Ты в какой земле живешь ?

----------


## Ull9

bayern, muenchen

----------


## pavlentus

> 2001


 Через годика 3-4 бум на квартиры упадет, западных компаний станет чуть больше, зп поднимутся....вот тогда и заживем. При нынешних зп для молодежи - уже сказка.
В мюнхене пиво мне понравилось.

----------


## THRESHE

> bayern, muenchen


 Прямо рядом с родиной предков  :smileflag:  (Баден-вюртемберг)
Пож давай побольше советов, а то опытных сишников на форуме мало мало

----------


## Ull9

> Через годика 3-4 бум на квартиры упадет, западных компаний станет чуть больше, зп поднимутся....вот тогда и заживем. При нынешних зп для молодежи - уже сказка.
> В мюнхене пиво мне понравилось.


 непонимаю я вас.
ну давай, ладно спокойной ночи.

----------


## Ull9

> Прямо рядом с родиной предков  (Баден-вюртемберг)
> Пож давай побольше советов, а то опытных сишников на форуме мало мало


 совет простой
учится, учится и еще раз учится. копирайт не мой.
читай все что можеш найти от Александреску, 
это мой любимый автор.
ну и конечно наночь Великий Святой Стандарт.

----------


## pavlentus

> совет простой
> учится, учится и еще раз учится. копирайт не мой.
> читай все что можеш найти от Александреску, 
> это мой любимый автор.
> ну и конечно наночь Великий Святой Стандарт.


 Так почитать язык. Я с тебя балдею!

----------


## THRESHE

> совет простой
> учится, учится и еще раз учится. копирайт не мой.
> читай все что можеш найти от Александреску, 
> это мой любимый автор.
> ну и конечно наночь Великий Святой Стандарт.


 Ты уже два раза собирался идти спать  
Спасибо за совет  :smileflag:

----------


## Ull9

here is another interesting question, almost everybody fails to answer.

what is the difference between equality and equivalence?

----------


## KoVadim

Would you like answer in English?

----------


## Ull9

yeah

----------


## KoVadim

If objects are equivalent, they are equal, but on the contrary is not always correct.I am right?
===
Если объекты эквивалентны, то они равны, но наоборот не всегда верно

----------


## Ull9

э-э-э.
не совсем тебя понял
я спрашиваю этот вопрос в контексте программирования, точнее с++.

----------


## KoVadim

Равенство - это операция, которая определяет, одинаковые ли обекты.  Но они могут по разному быть представлены в памяти. Например мы можем проверять на равенство целое число и вещественное, если определим правило, по которому это определяется.
Эквивалентность - проверяет сравнение точное, побитовое, если применим к программированию. К тому же объекты должны быть одного типа.
В си указатели считаются эквивалентными, если они указывают на один объект.
Вроде так.

----------


## Ull9

э... чуствую мыслишь, 
...

даю подсказку
что это означает в c++ STL?

----------


## KoVadim

Наконец то я дождался одобрительного ответа.
К сожалению/счастию я STL знаю только на уровне расшифровки названия и некоторых базовых принципов.
Но подозреваю следующее. Если нам говорят (например некоторая функция), что объекты эквиваленты, то изменения одного призведут к изменинию другого. Если оны равны, то в памяти это будет два разных объекта - например полученых с помощью конструктора копирования. Изменения одного не повлияют на другой. (конечно, ножно добавить соответсвующую функциональность в класс и он будет это дело поправлять - что бы оставались равны, но это из области извратов)

----------


## Ull9

,
,       ,
     ,         .

,   .
,    STL.

----------


## Ull9

.

,      ,       .

----------


## pavlentus

JAVA.         .

http://www.wrox.com/WileyCDA/WroxTitle/productCd-0764568744.html

----------

> JAVA.         .
> 
> http://www.wrox.com/WileyCDA/WroxTitle/productCd-0764568744.html


 Ivor Horton    .  :smileflag: 
     ..

----------


## pavlentus

:

http://www.exampledepot.com/

    jdk        .

----------

> ,   .
> ,    STL.


     ,     :smileflag: .
      -.

,    -,   .    -,   bool.  ,   ""     ( ).        (   ==).

  ,  ,  ,   true,      .

   ""  ""  __ ,  __.
    ""  ""  __,  __ .

  , ,   
find_if(LB, LE, my_eq(""));

_ ,_

     , ,  ,  ==. 
   ,  ,        ==.       STL. (,      ,     ;      ,  .)

----------


## Ull9

..    ,
  ,     ?     ?

----------

*Ull9*,
  ,

----------


## Ull9

,   
     ,     ?

----------

,   predicate
, :

if ( predicate(a,b) && predicate(b,a) )

----------


## Ull9

p(const T&,const &T), 
  x  y   
!p(x,y)&&!p(y,x)

         .

operator==

----------

:smileflag: .

  ,   \

----------


## THRESHE

MFC     ?

----------


## lexar

> 


 ,   .        codeguru.com.     .

----------


## lexar

> java ajax ?


    .
   ,   
   , ,   .
  : "   "     .
,    ,  :
    ,
    .
 -    .

----------


## Vic87

> MFC     ?


   XP-  .

A: (SUnteXx & Andruishka)
 : 


      Windows XP (  )

   -   ,  Windows XP           (common controls),     .

Q:   ?
A: (manifest) -     XML,     ,    .           common controls,    Windows XP.


  ,        Windows XP   - .          Windows    :      comctl32.lib       InitCommonControls(),   commctrl.h
  ,   Windows XP     common controls:  "",  5.80,     Internet Explorer 5.5         Windows,  ""  - 6.0,    XP-, ..    (visual themes)
  ,        Microsoft     ""   ""?
  ,    Windows XP    -      - ,  (static text),   (editbox), ,    -    ,      - user.exe (, ,  user.exe,   user32.dll)  ,   "" (,    - ,  )   comctl32.dll
-  ""      ,     .         .


      .     ,   "data.bin".     ,     :



```
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
    version="5.1.0.0"
    processorArchitecture="x86"
    name="Author.Program_Name"
    type="win32"
/>
<description>Program Description</description>
<dependency>
    <dependentAssembly>
    <assemblyIdentity
        type="win32"
        name="Microsoft.Windows.Common-Controls"
        version="6.0.0.0"
        processorArchitecture="x86"
        publicKeyToken="6595b64144ccf1df"
        language="*"
    />
</dependentAssembly>
</dependency>
</assembly>
```

 
         FAQ  -  ,     ,   notepad.

?      !      6-  name="..." (  ,   "Author.ProgramName"     9-    (    ). 

   .
,       ,     .           "application.exe.manifest",  "application.exe" -     .        .      :        .        .

       (  SDK      RT_MANIFEST,      Visual Studio .NET.     Visual Studio 6.0             24 (  ,     "24")

    .
       XP-.     Windows  ,   ,   .
    (   ,      Windows       -       *.RC)       :

1                       24      MOVEABLE PURE   "data.bin"

        .

Q: ...   ""   ...  ?
A: (SUnteXx)          ( Project -> Settings -> Link -> Object/Library Modules )   : comctl32.lib.     ,        InitCommonControls ( )   commctrl.h
A: (Anduishka)          .        . ,        .

    ,   In-Process .
      XP-    .       .        .         .       .
    DLL   :


2                       24      MOVEABLE PURE   "data.bin"

 ,       ID=2. ,     ISOLATION_AWARE_ENABLED    ,       "windows.h" ,  ,         :

#define    ISOLATION_AWARE_ENABLED
#define    "windows.h"

,   MFC,  "windows.h"  -    ,        (Project -> Settings -> C/C++ -> Preprocessor definitions)
,  ,    SDK (    SDK   2001),     , , ,  Visual Studio 6.0,  ISOLATION_AWARE_ENABLED . ,  :       _WIN32_WINNT  0x501, ..   Windows XP. ,      :

#define      _WIN32_WINNT    0x501

   ,     .
       ,     . ,            "application.cpl.manifest",      ,    ID=123.

----------


## THRESHE

,    2      (  http://www.go4expert.com/forums/showthread.php?t=754 ) :smileflag:

----------


## Alochka

,  
    , , - . 
      ,  .

----------

...  ,    - .    ,  ,     ,       .

----------


## victor_im

> ..    ,
>   ,     ?     ?


    STL   
!( a < b ) && !(b < a )

----------


## Танюша

подскажите 3 программных продукта , которые используются , но не обновляются

----------


## Аратор

косынка,сапер и паук

----------


## Goldcoding

Кому нужна помощь в программировании на C# стучите в асю 445124940 или сюда.

----------


## Nariamishma

Народ есть кто шарит в C++ Builder??

----------

