Различия

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

Ссылка на это сравнение

articles:idealpc [2017/09/05 02:55] (текущий)
Строка 1: Строка 1:
 +====== idealpc ======
 +<​sub>​{{idealpc.odt|Original file}}</​sub>​
 +
 +====== идеальный ПК для кодера ======
 +
 +крис касперски ака мыщъх, no-email
 +
 +**что такое идеальный ПК? это бесконечная тактовая частота,​ неограниченная оперативная память и чудовищно надежный жесткий диск простилающийся до самых границ вселенной. вряд ли такой компьютер будет когда-нибудь создан на практике,​ во всяком случае в ближайшие несколько лет нам придется оперировать с конечными числами,​ однако,​ выбрать достойную конфигурацию можно уже сейчас.**
 +
 +===== введение =====
 +
 +Какая из конфигураций наиболее оптимальна для кодера?​ Можно, конечно,​ не заморачиваться с этими вопросами,​ а просто купить самый крутой и самый навороченный ПК, переплатив несколько тысяч долларов за возможности,​ большая часть из которых никогда не будет востребована. К тому же "​дорого"​ вовсе не синоним слова "​хорошо",​ а "​круто"​ вовсе не обозначает "то, что вам нужно"​. Потребности кодеров имеют свою специфику,​ о которой мы и собираемся рассказать.
 +
 +Естественно,​ у каждого из нас есть свои собственные вкусы и предпочтения,​ поэтому не стоит воспринимать эту стать как догму. Обращать в свою веру я никого не собираюсь,​ но вот идеями поделюсь с большим удовольствием.
 +
 +===== процессор =====
 +
 +Компиляция – весьма ресурсоемкий процесс. Даже на самых "​крутых"​ процессорах полная пересборка типичного программистского проекта растягивается на несколько часов, поэтому,​ экономить на процессоре,​ право же, не стоит. Желательно,​ чтобы у процессора была не только впечатляющая тактовая частота,​ но и достаточно вместительный кэш первого и второго уровней. Усеченные версии "​топовых"​ процессоров,​ ориентированные на массовый рынок, (типа CELERON'​ов) кодеру приобретать право же не стоит. Ведь время – деньги. Каждая секунда,​ проведенная в томительном ожидании под сенью компьютера,​ – прямой убыток от упущенной выгоды. Системные программисты (и разработчики драйверов в том числе) зачастую получают до 200$ за час своей работы,​ окупая процессор буквально за один день!
 +
 +Разгонять процессор (как и все остальные компоненты ПК) категорически не рекомендуется! Кодер как никто другой должен быть уверен в надежности аппаратного обеспечения,​ чтобы уверенно отличать свои программистские ошибки от сбоев машины (вполне типичный случай:​ накануне сдачи судьбоносного проекта уже отлаженная программа внезапно начинает сбоить,​ причем воспроизвести последовательность действий,​ приводящую к ошибке несмотря на все усилия так и не удается – плавающий глюк, что может быть хуже! Программист не спит ночами,​ много курит, нервничает,​ ругается матом, внося в исходный код большое количество исправлений,​ доламывающих программу окончательно. Между тем, источник ошибок сидит вовсе не в ней, а в разогнанном процессоре!). Нормальные кодеры не разгоняют процессоры – они их тормозят!
 +
 +Какой процессор выбрать – Intel или AMD? Для конечного потребителя это вопрос вкуса, но кодер не может полагаться на свой собственный вкус. Он – слуга потребителя. В идеале следует иметь несколько компьютеров с различными конфигурациями,​ но на практике это не всегда достижимо (особенно в отношении начинающих),​ поэтому приходится выбирать что-то одно. Аргументы в пользу Intel: он законодатель мод, захвативший львиную долю рынка и не собирающий ее никому отдавать. Вопреки распространенному мнению,​ процессоры Intel и AMD не полностью совместимы друг с другом (в частности,​ они по разному обрабатывают флаги, помеченные в документации как "​неопределенные"​). Поэтому,​ программа,​ закладывающая на некоторые не вполне "​легальные"​ особенности поведения процессора (не зависимо от того, осведомлен кодер об их "​недокументированном"​ статусе или нет), на другом процессоре может просто не пойти!
 +
 +Еще более строгие условия налагает оптимизация. Стратегия построения оптимального кода определяется внутренней архитектурой процессора,​ а она у Intel и AMD очень неодинакова. Оптимизация под AMD с экономической точки зрения совершенно бессмысленна – количество поклонников этого процессора относительно невелико,​ причем большая часть из них приходится на довольно воинствующих субъектов,​ предпочитающих программы не покупать,​ а… "​национализировать"​ или попросту говоря пиздить. Опять-таки,​ качество документации от AMD все еще оставляет желать лучшего,​ а Intel предлагает не только великолепное (и к тому же бесплатно рассылаемое в печатном виде) руководство по оптимизации,​ но и высокопроизводительные библиотеки оптимизированные на все случае жизни. Поклонникам AMD (прежде чем размазывать мой анус здоровенными валунами):​ поймите меня правильно. Я не качу бочку ни на AMD, ни на ее процессоры (а AMD делает хорошие процессоры!). Если вы разрабатываете операционную систему массового назначения (например,​ Linux), то при миллионных объемах продаж поддержка "​редкоземельных"​ процессоров становится вполне оправданной. Однако,​ для "​мелкокалиберных"​ программных пакетов,​ это не так. Оптимизация под несколько процессорных архитектур существенно увеличивает время разработки программы,​ но практически никак не сказывается на объемах продаж. Так что делайте выводы!
 +
 +Аргументы в пользу AMD: если эта фирма разорится (или просто свернет линейку x86 процессоров),​ голубой гигант Intel'​а превратиться в мрачного монополиста,​ не заботящегося ни о новых разработках,​ ни о своих потребителях. Не забывайте,​ что Intel (как впрочем и AMD) это не благотворительная организация,​ а коммерческая бизнес-машина,​ целью которой является нажива. Новые исследования и разработки ведутся только для того, чтобы удержать лидирующее позиции и не дать конкурентам вырваться вперед. Если бы не было конкурентов,​ не было бы и инвестиций в исследовательскую деятельность.
 +
 +Сильной стороной AMD является поддержка двух наборов мультимедийных инструкций – Intel и AMD (хотя поддержка Intel-инструкцийвыходит с опозданием). Intel же, напротив,​ демонстрирует красивую мину при плохой игре, делая вид, что никакого AMD вообще не существует. Поэтому,​ если вы не собираетесь заниматься низкоуровневой оптимизаций на уровне планирования потока машинных команд,​ но хотите использовать мультимедийные команды – AMD, вероятно,​ будет наилучшим выбором.
 +
 +Обязательно позаботьтесь о хорошем охлаждении,​ не только "​мощном",​ но и бесшумном. Рев куллеров способствует чему угодно,​ но только не концентрации мысли. Системы водяного охлаждения при всех их достоинствах все еще остаются достаточно "​сырыми"​ во всех смыслах этого слова. Лучше использовать пассивные системы охлаждения,​ либо не имеющие вентилятора вообще,​ либо использующие пропеллер с крупного габаритными лопастями,​ практически не издающие шума.
 +
 +===== оперативная память =====
 +
 +Чем больше памяти – тем лучше (кашу маслом не испортишь,​ а уж памятью – тем более). Необходимый комфортный минимум составляет 128 – 256 Мбайт. Дальнейшее наращивание объема памяти само по себе не обеспечивает прироста быстродействия,​ однако,​ позволяет работать с несколькими приложениями одновременно ("​работать с приложениями одновременно"​ это совсем не тоже самое, что "​время от времени переключаться между туевой хучей приложений",​ последнее к объему памяти некритично).
 +
 +Наиболее остро в оперативной памяти нуждаются эмуляторы виртуальных машин – непременный атрибут всякого кодера. Чтобы быть уверенным,​ что ваша программа работает под всей линейкой операционных систем типа Windows или, упаси боже UNIX, она должна быть тщательно протестирована под ними! Раньше для этого приходилось дробить диск на разделы,​ устанавливая на каждый из них свою операционную систему,​ сейчас же это достигается при помощи эмуляторов (например,​ Microsoft Virtual PC). Особенно они полезны при разработке драйверов и прочих низкоуровневых штучек,​ вызывающих перезагрузки и зависания системы. Естественно,​ перезагрузки эмулятора воспринимаются менее болезненно. Для комфортной работы с эмулятором желательно иметь от 512 – 1024 Мбайт оперативной памяти,​ в противном случае все будет очень сильно тормозить.
 +
 +Стандартном де-факто в настоящее время является DDR400, устанавливаемая парами (для двухканальных контроллеров). Менее производительная память не сможет в полной мере использовать все преимущества широких и быстродействующих процессорных шин (FSB – Front Side Bus). Более дорогая DDR533 не имеет никаких преимуществ по сравнению с DDR400 (не считая того, что она лучше разгоняется,​ но как уже говорилось выше, кодерам лучше ничего не разгонять). Судите сами. Системная шина процессора Pentium-4 имеет частоту 200 MHz и передает четыре порции данных за такт. DDR400 работает на частоте 100 MHz и тоже передает четыре таких порции за такт. Два DDR400 модуля обеспечивают 100% загрузку процессорной шины (во всяком случае теоретически) и полностью синхронизованы с ней (200 делится на 100 без остатка). DDR533,​работающая на частоте 133 MHz и передающая все те же четыре порции за такт, уже не обеспечивает 100% загрузки процессорной шины, поскольку работают в асинхронном режиме (200 не делится на 133 без остатки) и шинный контроллер вынужден простаивать некоторое время в ожидании прихода фронта/​спада тактового импульса или… переключить DDR533 на частоту 400 MHz, при которой она будет работать абсолютно с той же скоростью,​ что и DDR400. Так зачем же платить больше,​ ничего не приобретая взамен?​
 +
 +===== чипсет =====
 +
 +При выборе компьютера на чипсет обращают внимание в последнюю очередь. А зря! Не все чипсеты одинаковы! При профилировке программы (профилировкой называется измерение скорости отдельных участков кода для выявления горячих точек – съедающих максимум производительности) очень важна воспроизводимость результата,​ т. е. чтобы время двух прогонов одного и того же участка программы отличалось как можно меньше. Различные побочные факторы,​ неизбежно вносимые чипсетом,​ произвольным образом изменяют время каждого из прогонов,​ делая результат профилировки в той или иной степени недостоверным. Небольшими отклонениями (в пределах нескольких процентах) можно и пренебречь,​ но когда время соседних прогонов отличается вдвое и даже втрое, ни профилировка,​ ни следовательно оптимизация программы становится невозможной. Чипсеты от Intel и AMD достаточно надежны и обеспечивают хорошую степень постоянства и воспроизводимости результатов. SiS и VIA в этом плане выглядят намного хуже и от их использования лучше всего воздержаться.
 +
 +Большинство современных чипсетов (начиная,​ с Intel 845) содержат специальный высокоточный таймер (High Precision Event Timers или сокращенно HPET), тактируемый частой от 10 MHz и обеспечивающий точность замеров в пределах 0,1 мс (для сравнения точность ACPI таймера,​ присутствующего на большинстве материнских плат и часто называемого PM-таймером – Power Management Timer – редко превышает 1 мс). Чем короче "​тик"​ таймера,​ тем выше "​разрешающая способность"​ профилировщика. Естественно,​ для работы с HPET-таймером профилировщик должен "​знать"​ о нем и потому старые профилировщики не дают никаких преимуществ.
 +
 +===== видеоподсистема =====
 +
 +Религиозные войны ЖК против ЭЛТ то затихают,​ то, собравшись с силой, вспыхивают вновь. Каждая сторона приводит свои аргументы,​ а между тем производство ЭЛТ мониторов среднего класса переживает не лучшие времена,​ дыша на ладан. Если так пойдет и дальше,​ вопрос выбора перестанет стоять.
 +
 +Лично мне работать с ЭЛТ намного приятнее. Он естественно отображает цвета, адекватно реагирует на смену разрешения (ЖК в этом случае вынужден либо уменьшать картинку,​ либо заниматься интерполяцией,​ качество которой так себе). Что же касается текстового режима (а нормальные кодеры работают преимущественно в нем одном),​ здесь ЭЛТ был и остается вне конкуренции.
 +
 +Считается,​ что на ЖК меньше устают глаза. В действительности же, все зависит от конкретного монитора и индивидуальных особенностей восприятия конкретного глаза (даже двух!). Я знаю людей, которые даже с хорошим ЖК могут работать не больше пары часов, а на ЭЛТ – все дни напролет. Так же справедливо и обратное утверждение.
 +
 +В общем, выбор монитора – дело ответственное и универсальных рецептов здесь нет. Единственное неоспоримое достоинство ЖК – предельно низкое энергопотребление (при работе от UPS или аккумуляторов это актуально). Ну еще габариты. ЖК можно запросто поставить на полку, окружив себя мониторами со всех сторон (а кодерам,​ как уже говорилось,​ зачастую приходится работать на нескольких компьютерах одновременно).
 +
 +Что же касается размаха диагонали,​ то она опять-таки зависит от личных предпочтений и специфики работы. Программисты,​ призирающие мышь и преимущественно обитающие в текстовых редакторах консольного режима,​ обычно выбирают 15" мониторы,​ поскольку уже на 17" у них начинают "​разбегаться глаза"​. Визуальные среды разработки,​ перегруженные графическими "​финтивлюшками",​ требуют не менее 17", а лучше даже 21", однако,​ в этом случае монитор следует подальше отодвинуть от глаз, иначе Рабочий Стол не уместится в поле зрения,​ а постоянное "​вождение глазами"​ не только утомительно,​ но еще и не безопасно,​ поскольку вызывает различные трудноизлечимые заболевания.
 +
 +Видео карта с мощным графическим ускорителем реально нужна только тем кодерам,​ которые разрабатывают игры или другие 3D-приложения. Главное,​ чтобы она обеспечивала превосходную четкость тонких линий, актуальную при работе с мелким шрифтом и чтении документации в pdf-формате. Обычно этим славятся карты, ориентированные на верстку и прочие печатные процессы. Лично я использую Matrix Millennium G450, ныне давно снятую с выпуска (но можно найти и другие,​ аналогичные ей карты).
 +
 +В любом случае,​ если изображение слегка дрожит,​ кажется размытым или подернутым туманным оттенком,​ попробуйте заменить карту и/или монитор,​ иначе необратимо испорите глаза – второй по важности инструмент кодера после головы. Замечательно,​ если карта и монитор поддерживают цифровой интерфейс,​ одним махом отсекающий львиную долю источников помех и кривизну ЦАП/​АЦАП'​ов,​ однако,​ его наличие не является обязательным. Цифровой интерфейс не превратит дешевую 20-долларовую карту в "​принцессу",​ а в дорогих картах аналоговый интерфейс по качеству практически не отстает от цифрового.
 +
 +===== жесткий диск =====
 +
 +Главное свойство жесткого диска – это надежность. Затем идет быстродействие и объем. Собственно,​ объем всех современных жестких дисков таков, что заполнить их ценными данными просто нереально (фильмы,​ музыку и порнографию в расчет не берем).
 +
 +Для достижения наивысшего быстродействия к компьютеру можно подключить два жестких диска, повесив каждый из них на "​свой"​ канал IDE-контроллера,​ и создать чередующийся (stripped) динамический диск (Windows 2000 и XP это позволяют) или прикупить RAID контроллер уровня 0 для всех остальных операционных систем. Параллельная запись/​чтение практически удваивает производительность дисковой подсистемы,​ значительно увеличивая быстродействие всего компьютера в целом. (Внимание:​ не надо вешать несколько дисков на один IDE-канал – в смысле на один провод – это только снизит их быстродействие).
 +
 +Считается,​ что жесткие диски с интерфейсом SCSI более производительны,​ чем IDE. При обработке большого количества перекрывающихся запросов,​ характерных для серверных программ,​ это действительно так. Но на домашнем компьютере (даже если это компьютер кодера) SCSI не обеспечивает никаких преимуществ. Возможно,​ вам скажут,​ что SCSI-устройства намного удобнее программировать,​ чем IDE. Совершенно верно, но! хитрая бестия Windows автоматически транслирует SCSI-запросы в IDE, поэтому с прикладного уровня между SCSI и IDE-дисками нет никаких различий! К тому же, те SCSI-контроллеры,​ что интегрированы в материнскую плату, не выдерживают никакой критики (хотя бы уже потому,​ что контроллеры различных материнских плат плохо совместимы друг с другом и при смене материнской платы или отказе контроллера содержимое дисков становится недоступно вплоть до приобретения точно такого же контроллера). Нормальный же SCSI контроллер стоит не дешевле пары сотен баксов и для домашнего компьютера это довольно расточительное решение.
 +
 +Для увеличения надежности хранения данных,​ несколько дисков могу быть подключены параллельно. Такой том называется зеркальным (mirror) и соответствует RAID массиву уровня 1. Windows 2000/​XP поддерживает зеркальные динамические диски, не требуя приобретения дополнительного оборудования,​ кроме собственно самих жестких дисков. Зеркальные тома защищают от отказов самих накопителей (и образования плохих секторов на них), но не в состоянии предотвратить остальные типы разрушений данных (поломка блока питания,​ пожар, отказ контроллера,​ сбой драйвера файловой системы,​ нашествие вирусов и т. д.), поэтому ценные данные обязательно должны резервироваться на внешние накопители информации!
 +
 +===== резервные накопители =====
 +
 +Высокая надежность современных жестких дисков создает обманчивую иллюзию идиллии безопасности и большинство "​нормальных"​ людей либо вообще не задумываются о резервировании,​ либо используют для этой цели CD-R/RW диски. Когда же данные все-таки теряются,​ они начинают рвать на себе волосы в разных местах и отрывать яйца всем подряд (начиная с вирусописателей и заканчивая Биллом Гейтсом).
 +
 +Кодер должен резервировать все публичные версии своих продуктов,​ поскольку ошибка может обнаружиться в любой из них. Представьте,​ звонит вам Вася Пупик и сообщает,​ что версия X.Y.Z при такой-то последовательности действий выбрасывает сообщение о критической ошибке по указанному адресу. Естественно,​ во всех остальных версиях по данному адресу находиться совершенно посторонний код и анализировать его бессмысленно…
 +
 +Чтобы там ни говорили рекламные лозунги и слоганы,​ CD-R/RW диски были и все еще остаются достаточно капризными и ненадежными носителями данных,​ зачастую разрушающимися без всяких видимых причин в самый неподходящий момент. Я уже молчу о том, что их очень легко поцарапать или по рассеянности выложить под яркий, губительный для них ​ ультрафиолет (например,​ оставить на солнце).
 +
 +Намного более надежен ZIP. Дискеты,​ которыми я интенсивно пользуюсь на протяжении последних десяти лет еще ни разу не дали ни одного сбоя, поэтому я им полностью доверяю,​ хотя и слышал от друзей,​ что у них с ZIP'​ом были проблемы. Но как бы там ни было, случаи необратимой потери данных носят единичный характер.
 +
 +Достойной альтернативой ZIP'у выглядит стример – самый надежный накопитель данных,​ который только можно встретить в продаже. Однако,​ скорость архивирования оставляет желать лучше и потому в практическом применении он не вполне удобен.
 +
 +Магнитооптические накопители сочетают высокую скорость обработки данных с превосходной надежностью их хранения,​ однако,​ цена на них явно завышена и для рядового кодера они все еще остаются недостижимой роскошью.
 +
 +===== принтер =====
 +
 +Читать с экрана неудобно и кодеру постоянно приходится что-то распечатывать. Прежде всего это документация. Типичная спецификация насчитывает несколько сотен листов (иногда до тысячи) и таких спецификаций требуются сотни, не говоря уже о том, что время от времени их приходится перепечатывать по причине выхода новой версии или чрезмерной "​измочаленности"​ распечаток.
 +
 +Затем идут листинги программы и дампы отладчика. И вот тут есть одна сложность. Зачастую печать идет не через драйвер принтера,​ а напрямую и если принтер не поддерживает кириллической кодировки в соответствующей кодовой странице (Windows, MS-DOS или KOI‑8), то это ласты. Поэтому,​ при выборе принтера обязательно обращайте внимание на его "​русифицируемость"​. Лазерные принтеры наиболее предпочтительны. Они не слишком дороги и обеспечивают превосходную скорость печати при смехотворной удельной стоимости расходных материалов (а при больших объемах печати это актуально).
 +
 +===== устройства ввода =====
 +
 +Кому-то больше нравится стандартная классическая клавиатура,​ кто-то с первого взгляда влюбляется в эргономичную. О вкусах,​ как говориться не спорят. Оба типа клавиатур обеспечивают практически одинаковую скорость набора,​ но стандартная клавиатура занимает на столе намного меньше места и к тому же гораздо чаще встречается. Привыкнув к эргономичной клавиатуре,​ вы не сможете быстро адаптироваться к стандартной и поэтому будете вынуждены всюду таскать ее за собой. Шутка.
 +
 +Мышь. Независимо от того оптическая она или нет, это большое зло. Привыкайте работать с горячими клавишами и макросами (благо даже визуальные среды разработки это позволяют). Поверьте,​ это значительно ускоряет процесс программирования и к тому же предотвращает ряд профессиональных заболеваний. Ведь мыши, даже ручные,​ рано или поздно "​кусаются"​ и последствия такого укуса как правило фатальны. Боль в запястьях и прочие неприятности. Скажите честно – вам это надо?
 +
 +===== заключение =====
 +
 +Если наше видение идеального ПК сильно отличается от вашего,​ не спешите кидаться камнями. Ведь бешенная популярность ПК как раз и объясняется тем, что вместо фиксированного набора конфигураций,​ потребителю предлагается конструктор из которого можно собрать все, что угодно.
 +
 +Герой фильма "Fight Club" как-то сказал по этому поводу:​ "​I'​d flip through catalogs and wonder: what kind of dining set defines me as a person?"​ ("Я шарился по каталогам,​ ломая голову над вопросом:​ какая конфигурация столового сервиза определяет психотип моего внутреннего Я"). Компьютер для кодера – это не просто инструмент. Это его средство взаимодействия с реальностью. Это частичка его самого. Говорят:​ каков хозяин,​ таков и пес. Так почему компьютеры в этом плане должны вести себя иначе?
 +
 +