Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Использование готовых алгоритмов vs написание своих, Какая-то критика C++ 
:(
    Опции темы
GoldFinch
Дата 2.2.2009, 16:03 (ссылка)  | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



имо программирование входит в информатику, информатика входит в математику
если программирование 1С, формошлепство и прочий быдлокодинг это приличный профессиональный уровень, то математика естественно не нужна
более того алгоритмы сейчас писать не модно, модно юзать композиции функций стандартных библиотеки где все уже есть
вот например в С++ есть stl vector, из тех кто его юзает и половина не знает что такое вектор вообще, и почему эта структура так названа, однако это приличные программисты

PM MAIL ICQ   Вверх
mes
Дата 2.2.2009, 16:08 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250



Цитата(GoldFinch @  2.2.2009,  15:03 Найти цитируемый пост)
более того алгоритмы сейчас писать не модно, модно юзать композиции функций стандартных библиотеки где все уже есть

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



--------------------
PM MAIL WWW   Вверх
vinter
Дата 2.2.2009, 17:54 (ссылка) |  (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 1
Всего: 56



Цитата(GoldFinch @  2.2.2009,  17:03 Найти цитируемый пост)
вот например в С++ есть stl vector, из тех кто его юзает и половина не знает что такое вектор вообще, и почему эта структура так названа, однако это приличные программисты

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


--------------------
Мой блог
PM MAIL WWW   Вверх
GoldFinch
Дата 2.2.2009, 18:46 (ссылка)    | (голосов:5) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



vinter, выучить stl может любой школьник, а написать свою stl далеко не каждый
ты можешь сколько угодно юзать кемто_сделанные_за_тебя библиотеки, можешь быть при этом профессионалом - т.е. зарабатывать на программировании деньги, но при этом ты всеравно будешь дилетантом в программировании как таковом
PM MAIL ICQ   Вверх
Daevaorn
Дата 2.2.2009, 18:51 (ссылка) |    (голосов:6) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 5
Всего: 70



Цитата(GoldFinch @  2.2.2009,  19:46 Найти цитируемый пост)
vinter, выучить stl может любой школьник, а написать свою stl далеко не каждый
ты можешь сколько угодно юзать кемто_сделанные_за_тебя библиотеки, можешь быть при этом профессионалом - т.е. зарабатывать на программировании деньги, но при этом ты всеравно будешь дилетантом в программировании как таковом 

бррр... чушь. Что теперь, недилетанты только те кто в машинных кодах пишут? Или физики оперирующие законами Ньютона тоже дилетанты в физике?
PM MAIL WWW   Вверх
vinter
Дата 2.2.2009, 19:22 (ссылка)  | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 1
Всего: 56



Цитата(GoldFinch @  2.2.2009,  19:46 Найти цитируемый пост)
 но при этом ты всеравно будешь дилетантом в программировании как таковом

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



--------------------
Мой блог
PM MAIL WWW   Вверх
Daevaorn
Дата 2.2.2009, 19:31 (ссылка) |  (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 5
Всего: 70



Цитата(vinter @  2.2.2009,  20:22 Найти цитируемый пост)
ок, но я буду зарабатывать деньги, а такие "математики" будут всю жизнь STL с BOOST'ом переписывать и без денег сидеть, ну собсно кто на что учился..

Я думаю те люди, которые пишут STL и BOOST ваши деньги и за деньги не считают. Так что в крайности впадать не надоsmile
PM MAIL WWW   Вверх
vinter
Дата 2.2.2009, 19:39 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 1
Всего: 56



Daevaorn, я не говрю о людях котрые написали STL И пишут boost, я говорю о тех кто его переписывает, а этим страдает очень большая часть C\C++ программистов.


--------------------
Мой блог
PM MAIL WWW   Вверх
mes
Дата 2.2.2009, 20:16 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250



Цитата(vinter @  2.2.2009,  18:39 Найти цитируемый пост)
я не говрю о людях котрые написали STL И пишут boost,
я говорю о тех кто его переписывает, 

при том делают это просто из за комплекса.. например то что окна "рисуются" системой и многие другие библиотеки не вызывают у них желание переписывания,
также то что в паскале имеется тип строки и динамический массив аналогичный std::string и std::vector тоже никого не беспокоит.
А вот то, что в cpp  допускается свобода выбора, и чтоб не ущемлять права, часть языка вынесена в namespace std ,
а также то, что наряду с контейнерами и алгоритмами, существует возможность пользоваться и "голыми" указателями и массивами,
то сразу слышны категоричные возгласы о том, что кто использует что то кроме голых типов являются неучами.
Сила cpp именно в том, что он предоставляет именно те средства, которые требует от него программист. 
И если некоторые программисты тупые, то это не вина языка. Кстати совсем "тупым" программистам на cpp составить нормально работающую программу, даже с учетом всех вспомогательных средств, гораздо труднее, чем таким же на дельфи/ паскале, т.к. последний убрегает от многих ошибок(правда ограничивая свободу мысли)

Это сообщение отредактировал(а) mes - 2.2.2009, 20:22


--------------------
PM MAIL WWW   Вверх
GoldFinch
Дата 2.2.2009, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



mes, это С++ создает ошибки, там где в других ЯП их не может возникнуть
алсо приведи пример
PM MAIL ICQ   Вверх
vinter
Дата 2.2.2009, 20:42 (ссылка) |   (голосов:5) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 1
Всего: 56



Цитата(GoldFinch @  2.2.2009,  21:39 Найти цитируемый пост)
это С++ создает ошибки

С++ ничего не создает, их создают неграмотные\невнимательные\неопытные программисты. С++ инструмент, и инструмент довольно хороший.


--------------------
Мой блог
PM MAIL WWW   Вверх
Daevaorn
Дата 2.2.2009, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 5
Всего: 70



Цитата(vinter @  2.2.2009,  20:39 Найти цитируемый пост)
я не говрю о людях котрые написали STL И пишут boost, я говорю о тех кто его переписывает, а этим страдает очень большая часть C\C++ программистов. 

Ок. Тут полностью согласен.
PM MAIL WWW   Вверх
mes
Дата 2.2.2009, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250



Цитата(GoldFinch @  2.2.2009,  19:39 Найти цитируемый пост)
это С++ создает ошибки,

даже так ?! я думал все таки неправильное обращение с языком. 



Это сообщение отредактировал(а) mes - 2.2.2009, 20:53


--------------------
PM MAIL WWW   Вверх
GoldFinch
Дата 2.2.2009, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



mes, вот ты например пишеш
if(r==INVALID_HANDLE) ...
или
if(INVALID_HANDLE==r) ...
?
PM MAIL ICQ   Вверх
pan2004
Дата 2.2.2009, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 357
Регистрация: 28.7.2007

Репутация: нет
Всего: 9



GoldFinch, оба варианта равнозначны.
Если имелось в виду, что можно перепутать == и = в if выражении, то обычно компилятор предупреждение выдает в таком случае...


--------------------
Qt4/C++ fan
WinXP SP3: MSVC++2005 Qt4.5.1 Boost1.39
сыграем в дурака?
PM MAIL   Вверх
mes
Дата 2.2.2009, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250



зачастую так:
if(r==INVALID_HANDLE) 
но во-первых, насколько мне известно, эта ошибка свойственна всем си-подобным языкам в том числе яве и шарпу,
во-вторых  я не так часто пользуюсь if чтоб в куче ифов не заметить опечатку при повторном просматривании,
в третьих когда мне случалось ошибиться, компилятор (gcc) выдавал предупреждение,
итого за время моего общения с cpp, подобная ошибка ни разу не пробралась в готовый код.




--------------------
PM MAIL WWW   Вверх
GoldFinch
Дата 2.2.2009, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



mes, я раз за тебя, что ТЫ не можешь совершить эту ошибку, но это ничего не говорит о семействе С-образных ЯП
кстати вначале ты говорил о 
Цитата(mes @  2.2.2009,  20:16 Найти цитируемый пост)
дельфи/ паскале
, а тут на C# перешел

PM MAIL ICQ   Вверх
mes
Дата 2.2.2009, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250



Цитата(GoldFinch @  2.2.2009,  20:17 Найти цитируемый пост)
, а тут на C# перешел

основываясь на Вашей фразе :
Цитата(GoldFinch @  2.2.2009,  19:39 Найти цитируемый пост)
это С++ создает ошибки, там где в других ЯП их не может возникнуть


Цитата(GoldFinch @  2.2.2009,  20:17 Найти цитируемый пост)
mes, я раз за тебя, что ТЫ не можешь совершить эту ошибку, но это ничего не говорит о семействе С-образных ЯП

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

и для меня возможность написания подобного кода :
Код

if (A* a=getA()) a->f();

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


Это сообщение отредактировал(а) mes - 2.2.2009, 21:42


--------------------
PM MAIL WWW   Вверх
GoldFinch
Дата 2.2.2009, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



mes, я могу ошибаться, то такой код 
if (A* a=getA()) a->f();
- это плохой код, не соответствующий правилам "хорошего" стиля программирования

PM MAIL ICQ   Вверх
pan2004
Дата 2.2.2009, 21:55 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 357
Регистрация: 28.7.2007

Репутация: нет
Всего: 9



Цитата(GoldFinch @  2.2.2009,  21:50 Найти цитируемый пост)
это плохой код

почему? Вполне себе обычный C++ код. Получили указатель, сразу же проверили его, и если все ОК, используем.)


--------------------
Qt4/C++ fan
WinXP SP3: MSVC++2005 Qt4.5.1 Boost1.39
сыграем в дурака?
PM MAIL   Вверх
mes
Дата 2.2.2009, 22:03 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250



Цитата(GoldFinch @  2.2.2009,  20:50 Найти цитируемый пост)
if (A* a=getA()) a->f();
- это плохой код, не соответствующий правилам "хорошего" стиля программирования

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

Это сообщение отредактировал(а) mes - 2.2.2009, 22:03


--------------------
PM MAIL WWW   Вверх
NightmareZ
Дата 3.2.2009, 05:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 10.8.2006

Репутация: -1
Всего: 13



Цитата(GoldFinch @  2.2.2009,  20:55 Найти цитируемый пост)
mes, вот ты например пишешif(r==INVALID_HANDLE) ...илиif(INVALID_HANDLE==r) ...?

Я пишу (r==INVALID_HANDLE). Считаю второй вариант придурью.

Цитата(mes @  2.2.2009,  21:09 Найти цитируемый пост)
но во-первых, насколько мне известно, эта ошибка свойственна всем си-подобным языкам в том числе яве и шарпу

В шарпе....

Код

int i = 0;

if (i = 1)
{
    DestroyAllUniverse("Die! Die! Die!");
}


....не скомпиляется.

А в случае с bool, будет выведено предупреждение.


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
GoldFinch
Дата 3.2.2009, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



а я думал эта тема будет как минимум о пяти страницах =\
PM MAIL ICQ   Вверх
Lazin
Дата 3.2.2009, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



Цитата(GoldFinch @  2.2.2009,  21:50 Найти цитируемый пост)
if (A* a=getA()) a->f();
- это плохой код, не соответствующий правилам "хорошего" стиля программирования

это не плохой стиль программирования, вот плохой стиль -
Код


class A
{
public:
    void f()
    {
        if (this)
        { do work }
    }
};

A* a = getA();
a->f();
 smile 

а вообще, в языке С++мне много чего не нравится, но достойной замены ему я не вижу ((
PM MAIL Skype GTalk   Вверх
Любитель
Дата 4.2.2009, 03:35 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



Цитата(GoldFinch @  2.2.2009,  21:17 Найти цитируемый пост)
mes, я раз за тебя, что ТЫ не можешь совершить эту ошибку, но это ничего не говорит о семействе С-образных ЯП

Какой-то странный аргумент. Да неужели мало что ли мест, где можно ошибиться?! А можно меньше на больше перпутать и полалгоритмы где-нить работать не будет. Так давай это делать не просто разными символами (меньше и больше), а какие нибудь вообще разные конструкции (например, словами!). Чтобы программист подумал прежде чем писать. Замечательный язык получится smile

Далее: о чем толком тема - что-то не понял. Надеюсь ещё прояснится ;)

Цитата(GoldFinch @  2.2.2009,  16:03 Найти цитируемый пост)
имо программирование входит в информатику, информатика входит в математику
если программирование 1С, формошлепство и прочий быдлокодинг это приличный профессиональный уровень, то математика естественно не нужна
более того алгоритмы сейчас писать не модно, модно юзать композиции функций стандартных библиотеки где все уже есть
вот например в С++ есть stl vector, из тех кто его юзает и половина не знает что такое вектор вообще, и почему эта структура так названа, однако это приличные программисты

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

Ну 1С - это вообще ИМХО не в тему. Формошлёпство - хотелось бы уточнить терминологию smile Если это те мегакалькултяторы, которые делает каждый пятый новичок на дельфях с кучей Button5_Click (ну или как там точно дизайнер их обзывает - уж не помню..), то это одно. А если просто использования визуальных средств проектирования UI - совсем другое.

И к программированию у вас странное отношение. Конечно, это вечный спор, но всё же.. Программирование сегодня - это очень обширное понятие. Но ценится не тот программист, который знает наизусть кучу алгоритмов на графах, реализует сбалансированные бинарные деревья в каждом проекте и т. д. Современное программирование - это во многом умение проектирования, дизайна модели системы. Это знания множества технологий, умение эффективно использования средства разработки (не только ИДЕ само собой, а кучу всяких кодогенераторов, анализаторов, профайлеров и пр.). Ну.. и собственно опыт программирования smile

Ну да ладно. Из заголовка темы так и не понял - ругаем С++ за стл и пр.? Вообщем, плиз, идею темы более понятно в студию smile


--------------------
PM MAIL ICQ Skype   Вверх
GoldFinch
Дата 4.2.2009, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



изначально тема называлась "программирование и математика"
PM MAIL ICQ   Вверх
Goliaf777
Дата 4.2.2009, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 19.11.2008

Репутация: нет
Всего: нет



Непонял вообще что именно ругается и вообще ради чего игра. Предложите хотя бы свой язык который вас утсраивает , выразите свою твердую точку зрения наконец-то. И вообще критика непонятна. Вы предлагаете писать программы неделями когда можно написать за несколько дней, а потом оставшиеся дни можн что-либо изучать и повышать квалификацию, или заниматься чем-либо еще. Да конечно можно пытаться писать гуи на тех же "небыдло" языках но это неоправданно, всетаки мы знаем что каждый язык нужен. И непонятно вот что. Так говроите будто можно только либо писать свои, либо использовать честно стыренные. А нельзя совмещать по необходимости и то и другое. Не надо бы слишком  крайним. Я так понимаю что опытный программист будет исползовать все возможности языка, иначе игра не стоит свечь.
PM MAIL ICQ Skype Jabber   Вверх
GoldFinch
Дата 5.2.2009, 00:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



Goliaf777, я не предлагаю писать гуй на асме. я говорю о том что есть люди которые кодят на ЯВУ и знают как написать гуй на асме, а есть люди которые кодят на ЯВУ и не знают что такое асм.
PM MAIL ICQ   Вверх
Любитель
Дата 5.2.2009, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



Конечно есть. А в чём мораль?


--------------------
PM MAIL ICQ Skype   Вверх
Carnifex
Дата 5.2.2009, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 1.5.2008

Репутация: нет
Всего: нет



Цитата(Любитель @  5.2.2009,  13:37 Найти цитируемый пост)
А в чём мораль? 

В отсутствии кругозора. "уметь написать гуи в хекс-кодах" конечно лишнее, но не знать что такое асм - признак поверхностных знаний, лишний повод засомневаться в профессионализме программиста.
PM MAIL   Вверх
Любитель
Дата 5.2.2009, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



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


--------------------
PM MAIL ICQ Skype   Вверх
vinter
Дата 5.2.2009, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 1
Всего: 56



Цитата(Carnifex @  5.2.2009,  15:04 Найти цитируемый пост)
В отсутствии кругозора. "уметь написать гуи в хекс-кодах" конечно лишнее, но не знать что такое асм - признак поверхностных знаний, лишний повод засомневаться в профессионализме программиста.

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


--------------------
Мой блог
PM MAIL WWW   Вверх
GoldFinch
Дата 5.2.2009, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



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

vinter, Java программисту надо знать байткод, принцимы работы ВМ java и т.п. 
вродебы в java используются стековые ВМ, и наверное это может както влиять на оптимальность того или иного кода, это тоже надо знать
много ли java программистов знают как выполняется их код?
PM MAIL ICQ   Вверх
vinter
Дата 5.2.2009, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 1
Всего: 56



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

Цитата(GoldFinch @  5.2.2009,  16:19 Найти цитируемый пост)
Я уже не говорю об оценке сложности алгоритмов, много ли программистов вообще имеют представление что это такое?

сложность stl гарантирована стандартом, самописных - головой.
Цитата(GoldFinch @  5.2.2009,  16:19 Найти цитируемый пост)
Зная как будет компилиться та или иная конструкция кода, можно будет прикинуть ее размер и быстродействие

я может и не прав, но по моему, с уровнем нынешних компиляторов это почти нереально.

Цитата(GoldFinch @  5.2.2009,  16:19 Найти цитируемый пост)
vinter, Java программисту надо знать байткод, принцимы работы ВМ java и т.п. 

зачем?

Цитата(GoldFinch @  5.2.2009,  16:19 Найти цитируемый пост)
много ли java программистов знают как выполняется их код?

важно знать, что он делает на том уровне, на котором его пишут, низкий уровень не важен. 
Вот тебе пример, тебе допустим надо создать клиент\серверное приложение на базе TCP, ты же не пойдешь смотреть формат IP пакета, и уж тем более фрейма физического уровня. У каждого уровня абстракции есть стандарт и гарантии по выполнению, использовать более низкий уровень из высокого можно только на свой страх и риск.


--------------------
Мой блог
PM MAIL WWW   Вверх
Carnifex
Дата 5.2.2009, 15:51 (ссылка)    | (голосов:5) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 1.5.2008

Репутация: нет
Всего: нет



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

Цитата(Любитель @  5.2.2009,  14:41 Найти цитируемый пост)
Познанию нет предела, но это не повод считать всё "поверхностным". Надо выбирать разумные пределы. 

"лишний повод"
Но всё-равно программист, не видевший асма, это всё-таки подозрительно

Это сообщение отредактировал(а) Carnifex - 5.2.2009, 15:54
PM MAIL   Вверх
vinter
Дата 5.2.2009, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 1
Всего: 56



Цитата(Carnifex @  5.2.2009,  16:51 Найти цитируемый пост)
vinter, ты никогда не слышал про асм? Никогда не видел процессорных инструкций?

какое это имеет значение? Видел, но видел на университетском уровне, т.е никогда ничего на нем серьезного не писал.
Цитата(Carnifex @  5.2.2009,  16:51 Найти цитируемый пост)
Что так задело?

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


--------------------
Мой блог
PM MAIL WWW   Вверх
Carnifex
Дата 5.2.2009, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 1.5.2008

Репутация: нет
Всего: нет



Цитата(vinter @  5.2.2009,  16:07 Найти цитируемый пост)
какое это имеет значение?

Мне просто странным кажется программист, которого никогда не интересовало во что превращает компилятор написанный им код, как это работает и как это устроено. А сферический программист на Java может конечно даже и не знать, компилируется ли его программа в нативный код или в байт-код, но мне это кажется удивительным. всё.
PM MAIL   Вверх
vinter
Дата 5.2.2009, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 1
Всего: 56



Цитата(Carnifex @  5.2.2009,  17:17 Найти цитируемый пост)
Мне просто странным кажется программист, которого никогда не интересовало во что превращает компилятор написанный им код, как это работает и как это устроено

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


--------------------
Мой блог
PM MAIL WWW   Вверх
Carnifex
Дата 5.2.2009, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 1.5.2008

Репутация: нет
Всего: нет



Цитата(vinter @  5.2.2009,  16:22 Найти цитируемый пост)
Ты изучил схемотехнику прежде чем сесть за программирование?

Зачем прежде? Программировать можно и без этого, обратного я нигде не говорил. До какого уровня спускаться, до схемотехники или до квантовой механики  - личное дело каждого, но ассемблер - всё-таки в этой иерархии почти наверху.

Цитата(vinter @  5.2.2009,  16:22 Найти цитируемый пост)
Ты знаешь в чем отличие npn перехода, от pnp?

каюсь, забыл
PM MAIL   Вверх
Любитель
Дата 5.2.2009, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



Цитата(vinter @  5.2.2009,  16:22 Найти цитируемый пост)
а ты разбирался до процессорных команд, или разбирал еще байт последовательности, импульсы? Ты изучил схемотехнику прежде чем сесть за программирование? Ты знаешь в чем отличие npn перехода, от pnp? Судя по твоей логике, это должен знать каждый пограммист.. 

Вот и я о том же...

Цитата(Carnifex @  5.2.2009,  15:51 Найти цитируемый пост)
Но всё-равно программист, не видевший асма, это всё-таки подозрительно

Вот блин. Опять унылый троль? smile 

PS Мой опыт асма это две вещи: тривиальные универский задачки + "анализ" других приложний на уровне среднесложных алгоритмов, классических пакеров и т. д. Ну и плюс тривиальный анализ кода, генеримого компилером для некоторых случаев. В основном just for fun.


--------------------
PM MAIL ICQ Skype   Вверх
vinter
Дата 5.2.2009, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 1
Всего: 56



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


--------------------
Мой блог
PM MAIL WWW   Вверх
Carnifex
Дата 5.2.2009, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 1.5.2008

Репутация: нет
Всего: нет



Цитата(Любитель @  5.2.2009,  16:33 Найти цитируемый пост)
PS Мой опыт асма это две вещи: тривиальные универский задачки + "анализ" других приложний на уровне среднесложных алгоритмов, классических пакеров и т. д. Ну и плюс тривиальный анализ кода, генеримого компилером для некоторых случаев. В основном just for fun. 

И тем не менее он есть. И так у большинства. О чём я и говорю.

Цитата(vinter)
я не понимаю смысла опускаться ниже языка, на ктором ты пишешь. Объясни свою позицию, только аргументировано, желательно с примерами из реальных проектов в твоей жизни.

Пользы от этого мало, просто знание, бессмысленное, да

Это сообщение отредактировал(а) Carnifex - 5.2.2009, 16:53
PM MAIL   Вверх
GoldFinch
Дата 5.2.2009, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



vinter, с точки зрения языка есть разница в 
Код

n=func_that_ret_const_1(...);
m=func_that_ret_const_2(...);
for(i=0;i<n;i++)
{
x=x*m;
}

и
Код

for(i=0;i<func_that_ret_const_1(...);i++)
{
x=x*func_that_ret_const_2(...);
}

?

а между
Код

switch(key)
{
case '1': x=1;break;
case '2': x=2;break;
...
case 'n': x=N;break;
}

и например
Код

... v['1'..'n']={1,2,3,  ,N};
x=v[key];

?
PM MAIL ICQ   Вверх
Carnifex
Дата 5.2.2009, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 1.5.2008

Репутация: нет
Всего: нет



Цитата(GoldFinch @  5.2.2009,  17:12 Найти цитируемый пост)
switch(key)
{
case '1': x=1;break;
case '2': x=2;break;
...
case 'n': x=N;break;
}

Кстати свитчи при достижении некоторого n компилятором превращаются в jump-tables или как там они называются, и эффективность будет почти такая же, как 
Цитата(GoldFinch @  5.2.2009,  17:12 Найти цитируемый пост)
v['1'..'n']={1,2,3,  ,N};
x=v[key];

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

Это сообщение отредактировал(а) Carnifex - 5.2.2009, 17:23
PM MAIL   Вверх
Любитель
Дата 5.2.2009, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



GoldFinch, если функция у тебя действительно возвращает константу - то поверь любой нормальный компилер с этим справится (с подстановкой значения). Что касается второго примера - аналогично. Создаст он таблицу переходов, если сочтёт нужным. Только свитч - это много буков, потому я так писать не буду. И вообще - твой пример перерождается в key - '0' (раз уж это си).


--------------------
PM MAIL ICQ Skype   Вверх
Carnifex
Дата 5.2.2009, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 1.5.2008

Репутация: нет
Всего: нет



Цитата(Любитель @  5.2.2009,  17:39 Найти цитируемый пост)
то поверь любой нормальный компилер с этим справится

были времена - не справлялись. Как узнать что эффективнее и почему это так без смены уровня абстракции?
PM MAIL   Вверх
Любитель
Дата 5.2.2009, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



Блин, да очевидно ведь! Если мы делаем больше вычислений (в цикле) - это хуже. Меньше - лучше. Причём тут асм?! smile Если бы вы привели хотя б какой-нибудь пример, ориентированный на особенности работы процессора, выравнивания там скажем - другое дело. А это... Банальное число операций. Математика уж скорее, чем асм ))


--------------------
PM MAIL ICQ Skype   Вверх
Goliaf777
Дата 5.2.2009, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 19.11.2008

Репутация: нет
Всего: нет



Цитата

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

PM MAIL ICQ Skype Jabber   Вверх
vinter
Дата 5.2.2009, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 1
Всего: 56



GoldFinch, примеры высосаны из пальца.
Цитата(GoldFinch @  5.2.2009,  18:12 Найти цитируемый пост)
vinter, с точки зрения языка есть разница в 

есть кончено, в 1 примере при ф-ии возвращающей класс я бы руки оторвал, за второй вариант.
Цитата(GoldFinch @  5.2.2009,  18:12 Найти цитируемый пост)
v['1'..'n']={1,2,3,  ,N};

это вообще че за конструкция? впервые вижу smile
нафиг там свитч x=key - '0' И все. Примеры элементарные
Упс страницу пропустил smile

Это сообщение отредактировал(а) vinter - 5.2.2009, 18:49


--------------------
Мой блог
PM MAIL WWW   Вверх
GoldFinch
Дата 5.2.2009, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



Цитата(Goliaf777 @  5.2.2009,  18:35 Найти цитируемый пост)
Все надо знать в той мере, сколько бы не повредило , если таковые есть, более важным знаниям, и по возможностям только бы увиличило, если таовые есь, более важные знания для тебя.

+1, вот например 
Любитель и Carnifex знают что switch компилится с использованием таблицы переходов, а толку-то никакого
Код
switch(key)
{
m1: case '1': x=1;break;
m2: case '2': x=2;break;
...
mN: case 'n': x=N;break;
}

компилится в массив адресов меток m1..mN ("таблица переходов"), из которого выбирается адрес для перехода на нужный case, N операторов присваивания константы переменной, и N переходов на конец switch
итого N адресов, N присваиваний, N констант, N+1 переходов, в процессе выполнения происходит 2 перехода и 1 присваивание

Код

v['1'..'n']={1,2,3,  ,N};
x=v[key];

здесь N констант и 1 операция присваивания

Добавлено через 1 минуту и 20 секунд
vinter, считай это псевдокодом, а не кодом С++
примеры вырожденные, чтобы было виднее их суть
PM MAIL ICQ   Вверх
Lazin
Дата 5.2.2009, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



GoldFinch, в идеале, чем выше уровень абстракции тем лучше, в этом направлении программирование и развивается.
Раньше, когда компьютеры были большими а /me ходил в первый класс, программисты были не глупее чем сейчас но софт был, скажем так не очень функциональный. А все из-за уровня абстракции, программировать с использованием прерываний, регистров и тд это конечно круто, но написание более менее сложной программы потребует слишком много человеко-лет. То, что сейчас пишет один программист на сишарпе за неделю в одно рыло, раньше писала-бы куча народу много месяцев.
Поэтому я считаю, что нужно использовать достижения прогресса в нашей профессии, вместо того, что-бы изучать все, что когда-то было мэйнстримом, в общем нужно смотреть вперед а не назад.
В то-же время есть вещи, не теряющие ценности со временем, дискретная математика, тервер, алгоритмы и структуры данных так-же актуальны для современных программистов как и раньше smile 
PM MAIL Skype GTalk   Вверх
Shaggie
Дата 5.2.2009, 20:24 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 570
Регистрация: 21.12.2006
Где: outer space

Репутация: нет
Всего: 72



Цитата(vinter @ 5.2.2009,  15:41)
Цитата(GoldFinch @  5.2.2009,  16:19 Найти цитируемый пост)
vinter, Java программисту надо знать байткод, принцимы работы ВМ java и т.п. 

зачем?

1) Знание принципов генерации байткода даёт знание того, почему одни конструкции в языке эффективнее других. Нередко в книгах их вбивают в голову на уровне аксиом - "эффективнее так, а не иначе", но на практике понимание движущих механизмов сильно полезнее тупого зазубривания.

2) Принципы работы JVM - это, например, способ загрузки классов при запуске, порядок инициализации конструкций в классе, выделение и использование памяти, различные алгоритмы сборщика мусора и их переключение в зависимости от специфики приложения...

Лишнее? Ну... можно писать код и без всего этого мусора в голове (и даже без знания математики, проверено smile ). Только вот выше быдлокодера подняться будет проблематично.


--------------------
Цитата(alina3000 @  6.3.2014,  10:47 Найти цитируемый пост)
Сорри что не по теме 
PM MAIL ICQ GTalk Jabber   Вверх
Lazin
Дата 5.2.2009, 20:28 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



И вообще, С++, на мой взгляд - достаточно низкоуровневый язык, те кто пробовал программировать на python/ruby ну или даже C#/Java в общем на современных языках программирования, или на функциональных ЯП, таких как haskell, которые многие считают языками программирвания будущего, меня поймут ;)
PM MAIL Skype GTalk   Вверх
GoldFinch
Дата 5.2.2009, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



Цитата(Lazin @  5.2.2009,  20:23 Найти цитируемый пост)
программисты были не глупее чем сейчас но софт был, скажем так не очень функциональный. А все из-за уровня абстракции, программировать с использованием прерываний, регистров и тд это конечно круто, но написание более менее сложной программы потребует слишком много человеко-лет.

дело было не в том, что небыло стандартных библиотек с готовыми алгоритмами, это все было достаточно давно. проблема была в железе с крайне жесткими ограничениями по объемам памяти и производительности. мне повезло попрограммировать ГУЙ для ДОС когда у тя может быть не более 10 64Кб сегментов памяти, а процессор с трудом тянет всякую анимацию типа анимированного курсора мыши (последовательность битмапов хранить негде, поэтому анимация рассчитывалась в реал-тайме)

Добавлено через 2 минуты и 19 секунд
Lazin, функциональные языки не менее древние чем императивные. Недостатков у них более чем хватает.
PM MAIL ICQ   Вверх
vinter
Дата 5.2.2009, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 1
Всего: 56



Цитата(Shaggie @  5.2.2009,  21:24 Найти цитируемый пост)
почему одни конструкции в языке эффективнее других


Цитата(Shaggie @  5.2.2009,  21:24 Найти цитируемый пост)
порядок инициализации конструкций в классе, выделение и использование памяти, различные алгоритмы сборщика мусора и их переключение в зависимости от специфики приложения...

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


--------------------
Мой блог
PM MAIL WWW   Вверх
Lazin
Дата 5.2.2009, 22:41 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



Цитата(GoldFinch @  5.2.2009,  20:57 Найти цитируемый пост)
функциональные языки не менее древние чем императивные. Недостатков у них более чем хватает. 

например?

Цитата(GoldFinch @  5.2.2009,  20:57 Найти цитируемый пост)
дело было не в том, что небыло стандартных библиотек с готовыми алгоритмами, это все было достаточно давно. проблема была в железе с крайне жесткими ограничениями по объемам памяти и производительности. мне повезло попрограммировать ГУЙ для ДОС когда у тя может быть не более 10 64Кб сегментов памяти, а процессор с трудом тянет всякую анимацию типа анимированного курсора мыши (последовательность битмапов хранить негде, поэтому анимация рассчитывалась в реал-тайме)

Ну а я про что, раньше этого так и было, а сейчас это все не актуально.
Сейчас новый сервер дешевле нового программиста, так-что делайте выводы. Раньше программисты оптимизировали все что только можно на микроуровне, там операцию сэкономили, там избавились от лишней отрисовки на экране и вроде как быстрее заработало. Но на современном железе ты этого "быстрее" скорее всего не заметишь. Какая нафик разница сортируется массив из 1kk строк за 0.1 сек или за 0.05 сек. Такой импрувмент начальство скорее всего не оценит. Оценят максимально корректную программу, которая создаст как можно меньше проблемм. 
В большинстве современных приложений причина тормозов - I/O, неоптимально разработанные алгоритмы( O(N*N) когда можно сделать O(ln(N))), неправильная работа с динамической памятью(фрагментация, слишком частое выделение - освобождение памяти), локи в многопоточных приложениях. Все это борется не с помощью вставок на асме, а на более высоком уровне, использованием асинхронного ввода вывода, буферизованного, оптимальных алгоритмов обработки данных, написанием своего специализированного менеджера памяти, ну и правильным проектированием приложеиня и использоанием наиболее подходящих в конкретном случае примитивов синхронизации.

Это сообщение отредактировал(а) Lazin - 5.2.2009, 22:44
PM MAIL Skype GTalk   Вверх
Shaggie
Дата 5.2.2009, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 570
Регистрация: 21.12.2006
Где: outer space

Репутация: нет
Всего: 72



Цитата(vinter @  5.2.2009,  21:54 Найти цитируемый пост)
Знание принципа раскрытия инструкций в байт код, не дает никаких преимуществ. Если считаешь иначе, приводи конкретный пример. 

Классика из любой книги на Java:
Код

public class Str {
    public static void main(String[] args) {
        String str = "";
        for (int i = 0; i < 10000; i++) {
            str += "abc";  //  плохо!
        }
    }
}

Общеизвестно - присваивание String в цикле является признаком неумелого программирования и просаживает скорость приложения. Какова причина? Смотрим байткод с помощью "javap -c":
Код

public static void main(java.lang.String[]);
  Code:
   0: ldc #2; //String 
   2: astore_1
   3: iconst_0
   4: istore_2
   5: iload_2
   6: sipush  10000
   9: if_icmpge 38
   12:  new #3; //class java/lang/StringBuilder
   15:  dup
   16:  invokespecial #4; //Method java/lang/StringBuilder."<init>":()V
   19:  aload_1
   20:  invokevirtual #5; //Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
   23:  ldc #6; //String abc
   25:  invokevirtual #5; //Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
   28:  invokevirtual #7; //Method java/lang/StringBuilder.toString:()Ljava/lang/String;
   31:  astore_1
   32:  iinc  2, 1
   35:  goto  5
   38:  return

Механика: исходная строка сохраняется в стеке (2). В цикле на каждой итерации создаётся новый объект StringBuilder (12), сохранённая строка извлекается из стека и добавляется к нему (к слову: и если её размер больше 16 символов, происходит новое выделение памяти и перемещение на неё объекта) (16-20), добавляется строка "abc" (25), из содержимого StringBuilder создаётся новый объект String (28) и сохраняется обратно в стек (31). А всё оттого, что объект String является неизменяемым (immutable), и операции со сложением строк через оператор (+) неявным образом используют StringBuilder. Но одно дело зазубрить и поверить на слово, а другое - увидеть в байткоде собственными глазами. Понимаю, пример выглядит чрезмерно наглядным и даже в какой-то степени уникальным - но мой point про полезность понимания подтверждает на сто процентов. Плюс на форуме есть цикл статей от Domestic Cat. Вот, к примеру, цитата из второго поста после обсуждения некоторого количества кода, подтверждающая полезность тщательного изучения генерируемого байткода:
Цитата(Domestic Cat @  27.11.2004,  08:09 Найти цитируемый пост)
Какая мораль следует из всего этого? Простая: синхронизировать метод оптимальнее, чем кусок этого метода! Потеря идет как в скорости (за счет манипуляций с локом), так и в размере кода. 


Цитата(vinter @  5.2.2009,  21:54 Найти цитируемый пост)
ты приводишь знания о спецификации языка, а это есть стандарт

Сборщики мусора в стандарт языка не входят, это спецификация JVM, с которой знакомится гораздо меньшее число разработчиков. Однако при приёме на работу про них могут серьёзно спросить. Почему JVM легко относится к огромным количествам короткоживущих объектов; особенности работы JVM, при запуске которой установлен ключ "-client"; или "-server"; чем отличается на деле работа последовательного GC от параллельного; для чего разработан инкрементальный GC и в каких специфичных случаях он даёт выигрыш приложению; почему требуется быть осторожным с вызовом System.gc() (считается, что это всего лишь рекомендация JVM к запуску сборки мусора, которую она вправе проигнорировать. Однако на деле при запуске такого GC чистится не только молодое поколение, но и старое, в результате приложение может серьёзно приостановиться и ни о каком soft real-time речи уже не будет).


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


--------------------
Цитата(alina3000 @  6.3.2014,  10:47 Найти цитируемый пост)
Сорри что не по теме 
PM MAIL ICQ GTalk Jabber   Вверх
vinter
Дата 6.2.2009, 06:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 1
Всего: 56



Цитата(Shaggie @  6.2.2009,  00:30 Найти цитируемый пост)
Механика: исходная строка сохраняется в стеке (2). В цикле на каждой итерации создаётся новый объект StringBuilder (12), сохранённая строка извлекается из стека и добавляется к нему (к слову: и если её размер больше 16 символов, происходит новое выделение памяти и перемещение на неё объекта) (16-20), добавляется строка "abc" (25), из содержимого StringBuilder создаётся новый объект String (28) и сохраняется обратно в стек 

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

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


--------------------
Мой блог
PM MAIL WWW   Вверх
W4FhLF
Дата 6.2.2009, 06:49 (ссылка) |    (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 2
Всего: 121



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

Для примера возьмём умножение матриц. Много зависит от того, как мы храним матрицу в памяти(линейно, либо построчно), а для этого нужно понимать, что при линейном хранении вероятно кэш-промахов меньше, чем при построчном. В то же время для маленьких матриц(эмперически установил для себя границу таких матриц, где общее число элементов < 50000) это не имеет смысла, т.к. маленькая матрица может уместиться полностью в кэш современных процессоров. С другой стороны, хотим мы реализовать умножение. Сколько бы мы не оптимизировали классический алгоритм нифига путнего из этого не выйдет. Для больших матриц частые кэш-промахи съедят любую оптимизацию(одно обращение к памяти может занимать тысячи тактов). А вот если взять и транспонировать одну из матриц, а потом перемножать последовательно строка*строка(а не строка*столбец), то мы получаем эффективную работу с кэшем и, допустим в моём случае, десятикратный прирост производительности на матрицах размером 1024х1024. Далее можно этот процесс векторизировать, т.е. заюзать SSE2, но тут уже действительно надо знать ассемблер и подходящии инструкции, а так же принципы их работы, понимать саму парадигму SIMD. А кому этого мало, можно вообще перенести перемножение больших матриц на GPU,  а там опять новая архитектура и её особенности и опять же, чем лучше знаком с аппаратными особенности(в разумных пределах), тем лучше. 

Знание ассемблера полезно при профайлинге приложений, чтобы не смотреть как осёл на асм-листинги и тайминги без понимания сути.

В тоже время, лично я, стараюсь использовать сторонние библиотеки. Зачастую, кстати, в них находишь очень хорошие реализации многих вещей(если заглянуть в исходники), но в моём последнем проекте, например, присутствует огромные объём вычислений связанных с матрицами. Я решил, что будет лучше написать свой класс для работы с матрицами, нежели пользоваться сторонним, т.е. просто изобрёл свой велосипед, но это было обоснованно в итоге и вполне оправдано. 

Всё зависит в итоге от разработчика и его профессионализма. Если я знаю, что у меня какой-то цикл выполняется 10 раз в час, при этом он совсем не нагружен, то лучше я вызов метода/функции в него помещу, ибо код будет более читабелен, а вынос переменной за цикл здесь является излишней оптимизацией, никому ненужной. 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Lazin
Дата 6.2.2009, 08:56 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 4
Всего: 154



Согласен, но в моей практике не было программ, умножающих матрицы очень много раз, да и если программа написана корректно и алгоритм правильный, заюзать SIMD и оптимизировать работу с кэш памятью не проблема (кстати асм тут не нужен) а вот если ваш алгоритм - ### и программа написана не пойми как, то тут уже сложно будет что-то сделать smile 
В общем, корректную программу сделать быстрой легко, а быструю корректной - сложно. (не помню чьи это слова)
PM MAIL Skype GTalk   Вверх
MAKCim
Дата 6.2.2009, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



на самом деле я согласен с W4FhLF

Цитата(W4FhLF @  6.2.2009,  06:49 Найти цитируемый пост)
Думаю, что для разработки высокопроизводительных приложений важно не знание асма, сколько знание архитектуры и основных принципов работы процессора (что, в прицнипе, подразумевает знание ассемблера в какой-то степени). При этом знание ассемблера совершенно не подразумевает знание архитектуры. 


т. к ассемблер - самый обычный ЯП, хоть и низкого уровня
он проще и С, и уж тем более С++
знание ассемблера - не есть критерий кругозора
важно уметь к месту и с пользой _применять_ определенный инструмент
язык сам по себе ничто, окружение (на любом уровне абстракции) - решает

Добавлено через 7 минут и 16 секунд
Цитата(GoldFinch @  5.2.2009,  20:57 Найти цитируемый пост)
ГУЙ для ДОС когда у тя может быть не более 10 64Кб сегментов памяти

unreal mode? ;)


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
GoldFinch
Дата 6.2.2009, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



MAKCim, 640Кб памяти под ОС+софт - 10 сегментов по 64Кб...
PM MAIL ICQ   Вверх
MAKCim
Дата 6.2.2009, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 8
Всего: 207



GoldFinch
это понятно
я к тому, что есть unreal mode


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
W4FhLF
Дата 6.2.2009, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 2
Всего: 121



Цитата(Lazin @  6.2.2009,  08:56 Найти цитируемый пост)
В общем, корректную программу сделать быстрой легко, а быструю корректной - сложно. (не помню чьи это слова)


Я согласен. 

Основные узкие места должны быть продуманы ещё на этапе проектирования. И именно здесь необходим широкий кругозор, чтобы правильно оценить "узость" этих мест. Допустим я сразу знал, что работа с матрицами -- узкое место моего проекта, но первые варианты класса Matrix вообще никакой оптимизации в себя не включали. В таком виде проект был доведён до первой стабильной версии, а далее уже кое-что оптимизировано. Но использование низкоуровневых средств языка для оптимизации в общем случае я считаю злом.

Добавлено через 1 минуту и 52 секунды
Цитата(MAKCim @  6.2.2009,  09:38 Найти цитируемый пост)
знание ассемблера - не есть критерий кругозора


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


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
neutrino
Дата 13.2.2009, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



Гмм... делетанты, неделетанты...

При поиске элемента в векторе, в каждой итерации вектор делает только одну проверку. Какую именно и как это реализовано?

Если бы вы писали СТЛ::вектор, то писали бы также?

Добавлено через 3 минуты и 37 секунд
Цитата(MAKCim @  6.2.2009,  08:38 Найти цитируемый пост)
знание ассемблера - не есть критерий кругозора
важно уметь к месту и с пользой _применять_ определенный инструмент
язык сам по себе ничто, окружение (на любом уровне абстракции) - решает

Угу. Желательно знать как в конкретном камне реализованы бранчи, кэш, пайпы. Тогда можно сделать очень качественный рескеджулинг. Правда компилятор сделает эту же работу с 70-80% успеха. Стоит оно того?


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
GoldFinch
Дата 16.2.2009, 14:10 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



Цитата(neutrino @  13.2.2009,  13:12 Найти цитируемый пост)
При поиске элемента в векторе, в каждой итерации вектор делает только одну проверку. Какую именно и как это реализовано?

вот возьми и посмотри как это реализовано, както кроме if Xi=Y на ум больше ниче не приходит, что еще можно проверять, развечто if f(Xi)=f(Y)

а СТЛ::вектор я бы не писал, потомучто мне вообще непонятен синтаксис этой части С++, зачем надо юзать два двоеточия и угловые "скобки"

Цитата(neutrino @  13.2.2009,  13:12 Найти цитируемый пост)
компилятор сделает эту же работу с 70-80% успеха.

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

PM MAIL ICQ   Вверх
Любитель
Дата 16.2.2009, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: 5
Всего: 92



Цитата(GoldFinch @  16.2.2009,  14:10 Найти цитируемый пост)
зачем надо юзать два двоеточия и угловые "скобки"

Убило smile 


--------------------
PM MAIL ICQ Skype   Вверх
nerezus
Дата 16.2.2009, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 13
Всего: 43



Цитата

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


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
GoldFinch
Дата 16.2.2009, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: нет
Всего: 26



почему-то в С++ есть . :: -> ,а в vba и делфи только .
что же удобнее?

насчет удобства шаблонов, цитата из википедии
Цитата
Spirit — одна из наиболее сложных частей Boost, предназначенная для написания парсеров напрямую в C++ тексте программы в виде близком к форме Бэкуса-Наура.

Код
bool parse_numbers(const char* str, vector<double>& v)
{
   return parse(str,
       //  начало грамматики
       (
           real_p[push_back_a(v)] >> *(',' >> real_p[push_back_a(v)])
       )
       ,
       //  конец грамматики
       space_p).full;
}


" real_p[push_back_a(v)] >> "  - это называется удобный синтаксис??
PM MAIL ICQ   Вверх
vinter
Дата 16.2.2009, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 1
Всего: 56



Цитата(neutrino @  13.2.2009,  14:12 Найти цитируемый пост)
При поиске элемента в векторе, в каждой итерации вектор делает только одну проверку.

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

Цитата(GoldFinch @  16.2.2009,  15:10 Найти цитируемый пост)
както кроме if Xi=Y на ум больше ниче не приходит, что еще можно проверять, развечто if f(Xi)=f(Y)

ну почему же, есть еще проверка на эквивалентность. Которая используется в ассоциативных массивах.
!( x < y ) && !( x > y )

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

Это сообщение отредактировал(а) vinter - 16.2.2009, 17:53


--------------------
Мой блог
PM MAIL WWW   Вверх
neutrino
Дата 16.2.2009, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



Цитата(vinter @  16.2.2009,  16:52 Найти цитируемый пост)
ну на самом деле у вектора нет никакого поиска, поиск есть в алгоритмах. Если я не ошибаюсь, то по стандарту он должен сравнивать  по ==.

Uгу, вот именно эту проверкu оn i делаетsmile Bез проверки, дошел оn дo концa или нет.


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
nerezus
Дата 16.2.2009, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 13
Всего: 43



Цитата

почему-то в С++ есть . :: -> ,а в vba и делфи только .
что же удобнее?
 Ну как бы -> юзать никто не заставляет - это лишь аналог *.
А аналогов :: нету, насколько помню.


Хотя мне самому это не нравится =\


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
vinter
Дата 16.2.2009, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 1
Всего: 56



Цитата(neutrino @  16.2.2009,  19:09 Найти цитируемый пост)
Bез проверки, дошел оn дo концa или нет.

есть проверка, если элемент не найден возвращается last iterator


--------------------
Мой блог
PM MAIL WWW   Вверх
neutrino
Дата 16.2.2009, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



Цитата(vinter @  16.2.2009,  17:13 Найти цитируемый пост)
есть проверка, если элемент не найден возвращается last iterator

Gмм... Pо-моему проверки тo каk раз нет i POJETOMU возвращается ласт_итератор. Kаk сделат' просмотр массива быстрым. Pоставить искомыj элемент в конец и сканироват' пока не нашел. Tаким образом не надо провеят' вышеl ты за границы массива или нет. A с другой стороны всегда есть индиация того nашел ли ты искомый элемент или нет.

Zвиняйте за транслит. Iз-под оперы пшу. Ет' еще конкуеррор, но в неm тоже транслиt не пашеt.


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
vinter
Дата 16.2.2009, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 1
Всего: 56



neutrino, че то я тебя не понимаю, как по твоему он может вернуть последний итератор, если у него нет проверки? при отсутсвии проверки был бы ексепшн
Цитата(neutrino @  16.2.2009,  19:26 Найти цитируемый пост)
Pоставить искомыj элемент в конец и сканироват' пока не нашел

класно, а если для вставки понадобиться перераспределение памяти? Да и это в корне не правильно, так использовать немодифицирующий алгоритм.

Добавлено через 1 минуту и 50 секунд
реализация msvc
Код

_InIt _Find(_InIt _First, _InIt _Last, const _Ty& _Val)
    {    // find first matching _Val
    _DEBUG_RANGE(_First, _Last);
    for (; _First != _Last; ++_First)
        if (*_First == _Val)
            break;
    return (_First);



--------------------
Мой блог
PM MAIL WWW   Вверх
neutrino
Дата 17.2.2009, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



Got. Thnx smile




--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




[ Время генерации скрипта: 0.2432 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.