Форум на Берлоге инженера
Май 21, 2012, 11:24:07 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости: ВНИМАНИЕ!!!
В связи с большим наплывом спамеров баним всех и вся. Если вас случайно забанили, найдите уж какой-то способ сообщить об этом (умные люди знают как это сделать). Сообщите свой IP адрес, адрес электронной почты и имя пользователя - РАЗБАНИМ.
 
   Начало   Помощь Поиск Календарь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Какой ты программист?  (Прочитано 2660 раз)
Vladimir
Администратор
Профессионал
****

Карма: 3
Offline Offline

Сообщений: 453


Просмотр профиля WWW
« : Декабрь 25, 2006, 01:14:24 »

Пройдите тест на то, какой Вы программист.

Решите сначала вот такую задачу:

Цитировать
Переменная i представляет собой полное слово с фиксированной
точкой. i принимает значения 1 либо 2. Если i оказалось равным 1,
замените его на 2 и наоборот.

Потом идите вот по этой ссылке.
Тест старенький, но есть в нём некая мудрость....
Записан
Vladimir
Администратор
Профессионал
****

Карма: 3
Offline Offline

Сообщений: 453


Просмотр профиля WWW
« Ответ #1 : Декабрь 25, 2006, 01:27:22 »

Надо сказать, что последнее "правильное" решение не совсем честное. Ведь в условии чётко говорится, что переменная может быть либо 1, либо 2. А тут вдруг такое: "если вдруг окажется, что i первоначально не было равно ни единице ни двойке". Нечестно это, господа!

Лично я предложил такое решение:

Код:
i=i^3;

Оно близко к решению #7 - Математик. Не знаю как для других, но мне такие решения по душе. И непонятного в них ничего не вижу.
Добавлю к своей реализации, что нужно заранее знать, с каким компилятором работаешь. Что i объявлена правильно. Кстати, это же решение на asm выглядит как одна команда. Без переходов и проч.
На ARM и RISC я бы сделал XOR (тот код, который указал). На DSP, скорее всего, сделал бы вычитание. А на i86 - подумал и поэкспериментировал бы (скорость выполнения зависит от контекста программы - команд, которые идут до и после данной).

Это моё решение, как инженера. Smiley

А решение #6 (Самое умное) вызывает у меня лёгкую усмешку. Оно заставит машину делать выборки из памяти, сравнения и переходы. Впрочем, всё зависит от "умности" компилятора.

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

Карма: 3
Offline Offline

Сообщений: 453


Просмотр профиля WWW
« Ответ #2 : Март 28, 2009, 11:34:56 »

Наверное стоит почитать и задуматься: Матрица компетентности программиста (Часть II)

А это исходник документа (на английском): Programmer Competency Matrix
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006-2008, Simple Machines LLC Valid XHTML 1.0! Valid CSS!