Компьютер для программиста

Компьютер для программиста

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

Авторы публикации

Рубрика

IT-Технологии

Журнал

Журнал «Научный лидер» выпуск # 19 (64), май ‘22

Дата публицакии 08.05.2022

Поделиться

Если вы только хотите стать программистом или например переходите из одной области программирования в другой. Например из WEB-разработки в Data Science или машинное обучение, то вам может прийти в голову вопрос: “Какой компьютер вам нужен для того чтобы заниматься программированием?”.

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

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

Монитор. Как обычно выглядит экран разработчика, когда он занимается программированием? Большую часть времени на экране у него находится программа, которая называется IDE(Integrated development environment), среда разработки. Кроме того ему приходится запускать программу, которую он разрабатывает. Многие программисты любят, чтобы IDE у них было на одном мониторе, а сама программа запускалась на другом. Еще программисты практический постоянно сидят в браузере, они ищут какие-то ответы на свои вопросы. В общем, в этом случае, скорее всего, понадобиться второй монитор. Но есть исключения. Если вы мобильный разработчик - вы можете запускать программу не в эмуляторе, не на своем компьютере, а на настоящем телефоне. Тогда вам, наверное, будет намного легче обойтись без второго монитора, кроме того есть вариант режима работы, когда вы не запускаете программу, а например пишете unit-тесты. Сами эти тесты при этом могут выполняться прямо в самой IDE, то есть все это происходит на одном экране, на одном мониторе. Ну и разумеется, если у вас монитор достаточно большой, вы можете просто разместить все ваши окна на одном мониторе, в разных его концах.

VR-очки. В этих очках есть приложение, которое может организовать вам виртуальный desktop. То есть вы надеваете очки и у вас как будто перед глазами несколько больших мониторов. Эта вещь достаточно экзотическая, она не всем подойдет. Да и сидеть 8 часов в VR очках не очень то удобно, но тем не менее такая опция есть. Стоят эти VR очки условно 500 долларов (02.04.2022). Эта цена примерно равна стоимости двух больших, хороших мониторов. Так что варианты есть очень разные.

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

Следующий выбор, который у вас есть Mac или PC. Mac ужасно, неоправданно дорогие. Есть две причины, почему разработчик может выбрать Mac:

  1. Разработка для мобильный устройств, для смартфонов. Разрабатывать для айфонов можно только с помощью Mac(с небольшими исключениями).
  2. Если вы испытываете какие-то нежные, эстетические чувства к Mac OS. Такое тоже бывает. И вообще Mac OS достаточно удобная операционная система для разработки.

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

  1. Процессор. Тут очень важно знать какие программы вы запускаете, какие утилиты вы используете для того, чтобы понять параллелиться то, что вы делаете или нет. То есть может ли выполняться та работа, которую делает эта утилита на нескольких процессорах, на нескольких ядрах или нет. Как правило в последнее время все должно параллелиться нормально. Ну и когда вы выбираете процессор, нужно смотреть на тактовую частоту, на то насколько он быстрый, на количество ядер, то есть насколько параллельных процессов ваша утилита может распараллелить ваши вычисления и на поколение процессора. Потому что в каждом следующем поколении в процессоре появляются новые команды, которые позволяют делать туже самую работу, за меньшее количество тактов. Ну и что касается процессоров в десктопах разумеется можно поменять за несколькими исключениями, а в ноутбуках как правило поменять нельзя. Поэтому цена ошибки вашего выбора в этих двух случаях будет немножко разная.
  2. Память. Важно понимать две важные характеристики: скорость памяти, объем.

Как правило количество памяти намного более важно, чем ее скорость и недостаток память памяти он очень заметен. Если не хватает памяти, то компьютер начинает сбрасывать не используемый участок памяти в своп, то есть на диск, а скорость дисковой системы на несколько порядков медленнее, чем скорость памяти. И в этом случае тормоза становятся ну очень заметны. Но к счастью память можно докупить практический везде, практически во всех десктопах и почти во всех ноутбуках(за исключением каких-то макбуков и mac mini). Следующий момент это дисковая система. Тут варианта как правило два: жесткий диск, SSD. SSD, понятно, намного быстрее, мы выбираем SSD. А на счет объема памяти нужно понимать, что чем ее больше, тем лучше, тут все просто.

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

  1. Видеокарта. Программисту видеокарта нужна в достаточно экзотических случаях. У видеокарты тоже есть два важных атрибута, которые влияют на ее скорость: объем видеопамяти, количество конвейеров(насколько вычисления в этой видеокарте распараллеливаются).  Опять же, как правило, в ноутбуках видеокарту поменять нельзя, а десктопах, как правило, можно.
  2. Интернет. Тормоза также могут быть из-за интернета. Причин тут побольше:
  • У вас может быть медленный провайдер
  • У вас может быть медленная сетевая карта
  • У вас может быть медленный Wi-Fi
  • У вас может быть “зашумленный” Wi-Fi
  • Проблема в скорости серверов, с которых вы что-то скачиваете. Но на это вы уже не можете повлиять

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

  1. С++ разработчик, который производит компиляцию программы в объектный код.

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

    Например, если приложение написано на JavaScript, то компьютер читает с диска множество javascript файлов и собирает из них один большой или несколько не очень больших файлов и сохраняет их снова на диск. И конечно, в этом случае, нагрузка на компьютер приблизительно такая же как и в предыдущем случае. То есть нужен быстрый диск, быстрый процессор и достаточное количество памяти.
  3. Контейнеры.

    Многие программисты используют утилиту, которая называется Docker. Грубо говоря это означает, что на вашем компьютере запускается несколько виртуальных машин. В каждой из этих машин запускается отдельная программа. Например сервер базы данных или сервер кэширования. Разумеется контейнеры создают дополнительную нагрузку на диск, но кроме того они употребляют очень много памяти, ну и как правило, во время создания таких контейнеров, создается несколько промежуточных копий, которые занимают очень много места на диске. Поэтому этот процесс достаточно требователен к объему диска.
  4. Эмуляторы.

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

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

Что же делать, если компьютер не удовлетворяет каким-то требованиям? Можно ли придумать какую-то альтернативу, не покупая новый компьютер. ДА!

На сегодняшний день есть очень много облачных решений, которые позволяют работать в облаке на компьютере, которые находятся не у вас дома, а где-то там на серверах. Например у Amazon есть решение, которое называется “Cloud Nine” и вы в браузере фактический можете запускать IDE и разрабатывать свое серверное решение. Конечно, все это стоит денег, но если вам по какой-то причине надо сделать что-то быстро и какое-то время на решение найти, то это тоже может сработать.

Бывает случаи, когда у вас есть мощный десктоп на котором вы можете комфортно работать, но вам нужна мобильность, то вы можете взять какой-то слабый ноутбук и использовать программу “Remote Desktop” до вашего большого компьютера. Это, конечно, не так комфортно как работать на нормальном ноутбуке, но это может быть как временное решение.

Следующий случай, если вы хотите заниматься мобильной разработкой, в том числе разработкой под айфоны, но у вас нет Mac, то вам не повезло, но есть решение. Есть утилита, которая называется “Expo”. Она подходит для разработки по React Native. И разумеется вам понадобиться iphone, чтобы запускать это приложение, но вам не нужен будет Mac. И это утилита позволяет, скорее всего, позволят выкладывать приложение в App Store. Хорошее временное решение.

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

Список литературы

  1. Herbert Frielingsdorf, Franz-Josef Lintermann, Udo Schaefer, Walter Schulte-Göcking. Einfache it system. 400 стр.
  2. Дэвид Харрис, Сара Л. Харрис. Цифровая схемотехника и архитектура компьютера. ДМК-пресс, 2013. С. 794.
  3. ninacarrot. Статья Хабр. Процессор. 2011г.
  4. Касперски К. Техника оптимизации программ. Эффективное использование памяти. 2003 г., 560 стр.
  5. Дэвид Паттерсон, Джон Хеннесси. Архитектура компьютера и проектирование компьютерных систем [2012].
  6. Michael LL.M. Eur. Schmidl, Axel Funk, Catherine Dechamps, Henning LL.M. Frase, Holger Heinbuch, Joachim Schrey, Thomas LL.M. Söbbing, Wolfgang LL.M. Fritzmeier. Handbuch IT-Outsourcing. 2450 стр. 125 иллюстраций.

Предоставляем бесплатную справку о публикации,  препринт статьи — сразу после оплаты.

Прием материалов
c по
Осталось 5 дней до окончания
Размещение электронной версии
Загрузка материалов в elibrary