Re[11]: труд программера переоценен
От: xtile  
Дата: 29.12.05 14:28
Оценка:
Здравствуйте, ggg, Вы писали:

SZI>>этого дерева реализуется алгоритм BSP+PVS. Или метод порталов, или много ещё чего.

ggg>Ну и где _сложная_ _математика_ в BSP алгоритме? Посчитать нормаль, скалярное и векторное произведения?
ggg>Имхо, математики тут особо нет, просто хорошо нужно понимать сам алгоритм.
Не поверишь, но к 30 годам большая часть программистов не может решить квадратное уравнение. О каких матрицах, сплайнах и кватернионах может идти речь ?


SZI>>2) Динамика.

SZI>> а) Скелетная/морфическая анимация — Сплайновая и кватерионная интерполяция.
ggg>Операции с кватернионами (кстати, они есть в dx sdk) не сложнее операций с матрицами.
ggg>В сплайнах особой сложности не вижу.
ggg>К тому же все это (выгрузка анимации, и интерполяция ее) написано один раз, возможно, кем-то одним из разработчиков, остальные люди вряд ли знают все тонкости сплайновых преобразований.
Пишется одним, но представлять суть должны все, т.к. выгребание багла — занятие коллективное.


SZI>> б) Обработка столкновений с последующей реакцией.

SZI>> в) RagDoll(это когда трупики так, как надо падают )
ggg>Часто используют соответствующие движки — от tokamak'а, например, до havok.
ха-ха.. Не понимая как работает алгоритм фиг прикрутишь эти движки, т.к. их по жизни нужно напильником дотачивать.


SZI>> Скриптовый интерпретатор.

ggg>lua
да, один из. А, например, проверка синтаксиса?


SZI>> Всё это нужно делать САМОМУ! Никакой поддержки со стороны DX или OGL.

ggg>Есть куча middleware.
Опять же его нужно напильником постоянно обрабатывать, иначе ничего кроме убогого клона не получится.


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

ggg>А если чего нет (или не могут купить), так такую работу делают 1-2 человека из команды разработчиков.


ggg>Или у вас в команде _каждый_ разработчик в состоянии написать скриптовый интерпретатор? Если да, то почему же зарплаты в геймдеве низкие и в массе своей черно-темно-серые?

ЗП белые, чуть-чуть ниже рынка, но не намного. Зато работа очень интересная

да, кстати, в AI иногда серьезные вещи используются вплоть до нейронных сетей, но далеко не всегда. Зачастую хватает обычных ДКА, да и то кастрированных, т.к. поведение AI должно быть в первую очередь предсказуемым для дизайнеров/программитов.
Re[7]: труд программера переоценен
От: Pzz Россия https://github.com/alexpevzner
Дата: 29.12.05 14:29
Оценка:
Glоbus wrote:
>
>>> А что за задачка?
>
> Pzz>Подсчитать количество локальных максимумов в массиве целых чисел.
> Pzz>Локальный максимум — такой элемент массива, который больше своих
> соседей.
>
> А это че — на графы разве задачка?

Нет, не на графы.

> Я б решил так

>
> template<class TTPred,class TTIterator>
> size_t countMaxes( TTIterator _start_it, TTIterator _end_it, const TTPred& _pred = TTPred() )

Уй, мама родная! А зачем так сложно? Можно, я не буду это читать?

Замечу только, что раз уж Вы пользуетесь итераторами, то знать размер
массива (вернее, в Вашем случае — не массива, а последовательности) Вам
не нужно. Что позволит Вашему алгоритму работать не только с массивами,
но и со списками, и вообще с любыми последовательностями.
Posted via RSDN NNTP Server 2.0
Re[16]: труд программера переоценен
От: Владислав Россия  
Дата: 29.12.05 14:29
Оценка: 9 (1) +3 -1 :)
Здравствуйте, Pzz, Вы писали:

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


May be. А зачем этим многим нужно выступать? Что бы показать как они "круты"?! Так они это и без вас знают. Что бы доказать вам, что ваш способ тестирования при приёме на работу крайне неудачен? Так Вас не переубедить, ведь если , допустим, сказать вам, что куча многомиллионных проектов обошлась без рукописных поисков максимумов/сортировок/обходов графов (использовались библиотеки, естественно) то вы же не поверите ни одному слову.

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

Позвольте дать вам один совет. На собеседовании просите у соискателей реализовать несколько типов сортировок, пирамидальную например, нещадно гоняйте людей по сложностям алгоритмов, просите дать определение интеграла и решить квадратное уравнение. Чем больше от вас уйдёт хороших специалистов, тем больше их придёт в другие фирмы. Например к нам.
Suum cuique (лат.)
Re[23]: труд программера переоценен
От: Me_ Россия  
Дата: 29.12.05 14:32
Оценка: :)
Здравствуйте, Gorbatich, Вы писали:

Pzz>>Никого я здесь не провOцирую. И тем более, не провАцирую.


G>Читали правила?


G>Не допускается проявление грубого или неуважительного...

G>указывать на орфографические и синтаксические ошибки и т. д.

Падонковская лексика тут тоже запрещена
Re[17]: труд программера переоценен
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 29.12.05 14:42
Оценка:
Здравствуйте, Владислав, Вы писали:

В>Позвольте дать вам один совет. На собеседовании просите у соискателей реализовать несколько типов сортировок, пирамидальную например, нещадно гоняйте людей по сложностям алгоритмов, просите дать определение интеграла и решить квадратное уравнение. Чем больше от вас уйдёт хороших специалистов, тем больше их придёт в другие фирмы. Например к нам.


А зачем вам вообще собеседование? В резюме и так всё написано.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[17]: труд программера переоценен
От: Pzz Россия https://github.com/alexpevzner
Дата: 29.12.05 14:43
Оценка:
Владислав wrote:
>
> Pzz>Думаю, многие из тех, кто сейчас сидит и посмеивается, выступили бы
> не лучше Вас...
>
> May be. А зачем этим многим нужно выступать? Что бы показать как они
> "круты"?! Так они это и без вас знают. Что бы доказать вам, что ваш
> способ тестирования при приёме на работу крайне неудачен? Так Вас не
> переубедить, ведь если , допустим, сказать вам, что куча многомиллионных
> проектов обошлась без рукописных поисков максимумов/сортировок/обходов
> графов (использовались библиотеки, естественно) то вы же не поверите ни
> одному слову.

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

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

> Согласитесь, что соискатель выбирает фирму а фирма соискателя. Это

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

Никто, кстати, не отказывался.

> Позвольте дать вам один совет. На собеседовании просите у соискателей

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

Это Вы уже проецируете на нас какие-то свои негативные ожидания. Ничего
подобного мы не делали.

Я, кстати, прошел несколько раундов собеседований в разных московских
конторах. Попадались мне и в таком роде, как Вы говорите. Мне было очень
забавно посмотреть на этот процесс с другой стороны. И особенно было
забавно сравнить, как мало в среднем информации добывают о соискателе
другие конторы, тратя при этом неимоверные усилия.
Posted via RSDN NNTP Server 2.0
Re[18]: труд программера переоценен
От: Владислав Россия  
Дата: 29.12.05 16:36
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>А зачем вам вообще собеседование? В резюме и так всё написано.


Собеседования существуют для того, что бы проверить человека на 3 основных способности:
1. Умение работать в команде (уживётся ли он с коллективом).
2. Культура кода, знание языка (небольшое тестовое задание или пример 5 строк прямо на интервью).
3. Знание технологий, необходимых для написания продакшн кода в соответствии со спецификой конторы.

И этого обычно достаточно. Естественно, если фирма занимается game dev либо созданием симуляторов либо ещё т.п. то и алгоритмы так же должны входить в этот список.

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

Imho.
Suum cuique (лат.)
Re[18]: труд программера переоценен
От: Владислав Россия  
Дата: 29.12.05 16:47
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Это Вы уже проецируете на нас какие-то свои негативные ожидания. Ничего

Pzz>подобного мы не делали.

Ок. Тогда sorry , видимо я что — то неправильно понял читая эту ветку.
Suum cuique (лат.)
Re[8]: труд программера переоценен
От: Glоbus Украина  
Дата: 29.12.05 17:20
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Glоbus wrote:

>>
>>>> А что за задачка?
>>
>> Pzz>Подсчитать количество локальных максимумов в массиве целых чисел.
>> Pzz>Локальный максимум — такой элемент массива, который больше своих
>> соседей.
>>
>> А это че — на графы разве задачка?

Pzz>Нет, не на графы.


>> Я б решил так

>>
>> template<class TTPred,class TTIterator>
>> size_t countMaxes( TTIterator _start_it, TTIterator _end_it, const TTPred& _pred = TTPred() )

Pzz>Уй, мама родная! А зачем так сложно? Можно, я не буду это читать?


Pzz>Замечу только, что раз уж Вы пользуетесь итераторами, то знать размер

Pzz>массива (вернее, в Вашем случае — не массива, а последовательности) Вам
Pzz>не нужно. Что позволит Вашему алгоритму работать не только с массивами,
Pzz>но и со списками, и вообще с любыми последовательностями.

Я думаю, если бы вы таки-почитали то, что я написал, то увидели бы, что этот метод как раз и заточен так, чтобы работать с любой последовательностью, заданной двумя итераторами.
Удачи тебе, браток!
Re[9]: труд программера переоценен
От: kollega Россия  
Дата: 29.12.05 17:23
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Задача — повод для разговора (вернее, ее решение, даже неоконченное).


Pzz>Скажите, а что, я очень сложную задачку привел, что все так

Pzz>заволновались? Я ведь не просил, например, компилятор написать на
Pzz>коленке

Да простая задачка. Не знаю, что народ возмущается.
Re[9]: труд программера переоценен
От: Pzz Россия https://github.com/alexpevzner
Дата: 29.12.05 17:26
Оценка:
Glоbus wrote:
>
> Pzz>Замечу только, что раз уж Вы пользуетесь итераторами, то знать размер
> Pzz>массива (вернее, в Вашем случае — не массива, а последовательности) Вам
> Pzz>не нужно. Что позволит Вашему алгоритму работать не только с массивами,
> Pzz>но и со списками, и вообще с любыми последовательностями.
>
> Я думаю, если бы вы таки-почитали то, что я написал, то увидели бы, что
> этот метод как раз и заточен так, чтобы работать с любой
> последовательностью, заданной двумя итераторами.

Длина-то последовательности Вам зачем? Содержательно она не нужна. Если
вам по каким-то причинам так кодировать _удобнее_, это Ваши сложности.
Вычисление длины, например, для односвязанного списка это не дешевая
операция. Или на таком уровне абстракции это уже считается неважным?
Posted via RSDN NNTP Server 2.0
Re[8]: труд программера переоценен
От: Glоbus Украина  
Дата: 29.12.05 17:28
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Glоbus wrote:

>>
>>>> А что за задачка?
>>
>> Pzz>Подсчитать количество локальных максимумов в массиве целых чисел.
>> Pzz>Локальный максимум — такой элемент массива, который больше своих
>> соседей.
>>
>> А это че — на графы разве задачка?

Pzz>Нет, не на графы.


>> Я б решил так

>>
>> template<class TTPred,class TTIterator>
>> size_t countMaxes( TTIterator _start_it, TTIterator _end_it, const TTPred& _pred = TTPred() )

Pzz>Уй, мама родная! А зачем так сложно? Можно, я не буду это читать?


Pzz>Замечу только, что раз уж Вы пользуетесь итераторами, то знать размер

Pzz>массива (вернее, в Вашем случае — не массива, а последовательности) Вам
Pzz>не нужно. Что позволит Вашему алгоритму работать не только с массивами,
Pzz>но и со списками, и вообще с любыми последовательностями.

Все-таки позволю себе привести пример не с массивом, с листом:

int main(int argc, char* argv[])
{
    std::list<int> list;
    list.push_back( 4 );
    list.push_back( 1 );
    list.push_back( 2 );
    list.push_back( 3 );
    list.push_back( 1 );
    list.push_back( 3 );
    list.push_back( 1 );
    list.push_back( 3 );
    size_t result = countMaxes< std::greater<int> >( list.begin(), list.end() );
      return 0;
}


Если судить по вашему замечанию, уважаемый, то мой пример кода работать не будет.
Удачи тебе, браток!
Re[10]: труд программера переоценен
От: Glоbus Украина  
Дата: 29.12.05 17:31
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Glоbus wrote:

>>
>> Pzz>Замечу только, что раз уж Вы пользуетесь итераторами, то знать размер
>> Pzz>массива (вернее, в Вашем случае — не массива, а последовательности) Вам
>> Pzz>не нужно. Что позволит Вашему алгоритму работать не только с массивами,
>> Pzz>но и со списками, и вообще с любыми последовательностями.
>>
>> Я думаю, если бы вы таки-почитали то, что я написал, то увидели бы, что
>> этот метод как раз и заточен так, чтобы работать с любой
>> последовательностью, заданной двумя итераторами.

Pzz>Длина-то последовательности Вам зачем? Содержательно она не нужна. Если

Pzz>вам по каким-то причинам так кодировать _удобнее_, это Ваши сложности.
Pzz>Вычисление длины, например, для односвязанного списка это не дешевая
Pzz>операция. Или на таком уровне абстракции это уже считается неважным?

Так, это уже лучше То есть все-таки сошлись на том, что будет работать с любой последовательностью? Чудненько Да, насчет длинны тут можно и поспорить. Единственное предназначение — избежать инкремента итератора, указывающего на элемент за обрабатываемым в том случае, если обрабатываемый элемент — граничный. Тут возможно с вами, многоуважаемый и соглашусь — можно переписать и красивше.
Удачи тебе, браток!
Re[11]: труд программера переоценен
От: Glоbus Украина  
Дата: 29.12.05 17:34
Оценка:
Здравствуйте, Glоbus, Вы писали:

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


Pzz>>Glоbus wrote:

>>>
>>> Pzz>Замечу только, что раз уж Вы пользуетесь итераторами, то знать размер
>>> Pzz>массива (вернее, в Вашем случае — не массива, а последовательности) Вам
>>> Pzz>не нужно. Что позволит Вашему алгоритму работать не только с массивами,
>>> Pzz>но и со списками, и вообще с любыми последовательностями.
>>>
>>> Я думаю, если бы вы таки-почитали то, что я написал, то увидели бы, что
>>> этот метод как раз и заточен так, чтобы работать с любой
>>> последовательностью, заданной двумя итераторами.

Pzz>>Длина-то последовательности Вам зачем? Содержательно она не нужна. Если

Pzz>>вам по каким-то причинам так кодировать _удобнее_, это Ваши сложности.
Pzz>>Вычисление длины, например, для односвязанного списка это не дешевая
Pzz>>операция. Или на таком уровне абстракции это уже считается неважным?

G>Так, это уже лучше То есть все-таки сошлись на том, что будет работать с любой последовательностью? Чудненько Да, насчет длинны тут можно и поспорить. Единственное предназначение — избежать инкремента итератора, указывающего на элемент за обрабатываемым в том случае, если обрабатываемый элемент — граничный. Тут возможно с вами, многоуважаемый и соглашусь — можно переписать и красивше.


И так — убираем ненужный расчет длины
— как оцените, драгоценнейший, такой вариант?
template<class TTPred,class TTIterator>
size_t countMaxes( TTIterator _start_it, TTIterator _end_it, const TTPred& _pred = TTPred() )
{
    size_t nCnt = 0;
    size_t nCurr = 0;
    TTIterator val_it = _start_it;
    TTIterator prev_it = val_it, next_it = val_it;
    TTIterator last_it = _end_it;
    if( _start_it != _end_it )
    {
        --last_it;
        ++next_it; 
    }//if
    while( val_it != _end_it )
    {
        if( (val_it == prev_it || _pred( *val_it, *prev_it )) &&
            (val_it == next_it || _pred( *val_it, *next_it )))
        {
            ++nCnt;
        }//if
        ++val_it;
        if( nCurr == 0 ) ++prev_it;
        if( val_it != last_it ) ++next_it;
        ++nCurr;
    }//while
    return nCnt;
}
Удачи тебе, браток!
Re[11]: труд программера переоценен
От: Pzz Россия https://github.com/alexpevzner
Дата: 29.12.05 17:36
Оценка:
Glоbus wrote:
>
> Pzz>Длина-то последовательности Вам зачем? Содержательно она не нужна. Если
> Pzz>вам по каким-то причинам так кодировать _удобнее_, это Ваши сложности.
> Pzz>Вычисление длины, например, для односвязанного списка это не дешевая
> Pzz>операция. Или на таком уровне абстракции это уже считается неважным?
>
> Так, это уже лучше То есть все-таки сошлись на том, что будет работать с
> любой последовательностью? Чудненько Да, насчет длинны тут можно и
> поспорить. Единственное предназначение — избежать инкремента итератора,
> указывающего на элемент за обрабатываемым в том случае, если
> обрабатываемый элемент — граничный. Тут возможно с вами, многоуважаемый
> и соглашусь — можно переписать и красивше.

Ну вот, почти договорились.

А теперь представьте себе, что Вы по каким-то причинам вынуждены
работать с последовательностью, которую два раза туда-сюда не пробежишь.
Например, это не последовательность целых чисел, а последовательность
товарных вагонов, и пробег по последовательности означает физическое их
перемещение. А мазута (для тепловоза) у Вас конечное количество. Будет
Ваш алгоритм работать с такой последовательностью?
Posted via RSDN NNTP Server 2.0
Re[12]: труд программера переоценен
От: Pzz Россия https://github.com/alexpevzner
Дата: 29.12.05 17:42
Оценка:
Glоbus wrote:
>
> И так — убираем ненужный расчет длины
> — как оцените, драгоценнейший, такой вариант?

Пусть это оценивают знатоки C++

Я к их числу не принадлежу...

> template<class TTPred,class TTIterator>

> size_t countMaxes( TTIterator _start_it, TTIterator _end_it, const TTPred& _pred = TTPred() )
> {
> size_t nCnt = 0;
> size_t nCurr = 0;
> TTIterator val_it = _start_it;
> TTIterator prev_it = val_it, next_it = val_it;
> TTIterator last_it = _end_it;
> if( _start_it != _end_it )
> {
> --last_it;
> ++next_it;
> }//if
> while( val_it != _end_it )
> {
> if( (val_it == prev_it || _pred( *val_it, *prev_it )) &&
> (val_it == next_it || _pred( *val_it, *next_it )))
> {
> ++nCnt;
> }//if
> ++val_it;
> if( nCurr == 0 ) ++prev_it;
> if( val_it != last_it ) ++next_it;
> ++nCurr;
> }//while
> return nCnt;
> }
Posted via RSDN NNTP Server 2.0
Re[7]: труд программера переоценен
От: Юнусов Булат Россия  
Дата: 29.12.05 17:55
Оценка:
Здравствуйте, lynn-lynn, Вы писали:

LL>Ага, первый аргументированный ответ. Вот тут я с Вами полностью согласен. Да, я именно формочки + SQL умею и на них зарабатываю. В геймдев мне никогда не светит, там да — там надо алгоритмы колбасить. Только ведь из исходных постов было не ясно — куда же должен попасть человек со знанием графов. А мне на собеседованиях на роль MSSQL девелопера сортировки предлагали писать и списки реверсировать. Это — адекватно? Я должен дальше сидеть и с уважительным видом слушать этот бред из-за которого я пол Москвы проехал? В каждой избушке свои игрушки, но думать ведь надо о чем на собеседованиях спрашиваешь у человека и не надо думать что у всех вежливости хватит на то чтобы отсидеть пару часов двигая биты в байте, когда тебя берут отчеты в кристале рисовать.


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

Представь себе некий типичный смарт клиент.
В базе на сервере энное количество табличек (допустим 50) и связей (путь будет тоже 50).
Юзверь на клиенте получает какие то данные в датасетовом виде, что то туда добавляет (допустим pk у нас гуиды так что добавления безгеморойно можно делать на клиентах), что то удаляет, а что то, соотвественно, изменяет. Затем все изменения шлет накатываться на сервер.
Внимание вопрос — как без графов ты собираешься разрулить порядок наката изменений каждой таблички на базу?
Re[7]: труд программера переоценен
От: gear nuke  
Дата: 29.12.05 18:29
Оценка:
Здравствуйте, Gorbatich, Вы писали:

G>Зачем голову забивать лажей, когда везде валяются заготовки типа qsort().


Для того, что бы понимать, когда вместо такой заготовки нужно использовать пузырёк?
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Re[7]: труд программера переоценен
От: WolfHound  
Дата: 29.12.05 18:55
Оценка: +3
Здравствуйте, Gorbatich, Вы писали:

G>Самое интересное что в твоем Гейм Дев ничего кроме умножения матариц поворота нету ) А про физические процессы, дык там все формулы 9 класса ) Если у человека есть аттестат то он их знает, а если забыл то вспомнит.

Поверь человеку который не по наслышке знает что такое гейм дев... ты очень сильно ошибаешся.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[11]: труд программера переоценен
От: gear nuke  
Дата: 29.12.05 18:56
Оценка:
Здравствуйте, AmSpb, Вы писали:

AS>Представим ситуацию,

AS>1. Программист думает неделю над своим тупым алгоритмом и в конце недели реализовывает не самую эффективную его версию.
AS>2. Программист знает, где искать, быстро находит в инете эффективный алгоритм и встраивает его в проект, пусть на это ушел 1 день.

AS>Имея эти две ситуации, как вы думаете, какая из них ситуация выгодна бизнесу, а какая убыточна?


Сам лично делал ооооочень тупые, медленные и громоздкие реализации свободно доступных в сети алгоритмов. Делалось это даже не с целью продажи конкретному заказчику, а так... research — просто посмотреть, что получится и с большой вероятностью нигде не использовать. И да, это конечно же было выгодно бизнесу, иначе бы за это не платили
Ситуации очень разные бывают.
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.