Нужно ли программисту знать устройство компьютера

Обновлено: 05.07.2024


Говорят, что нет. Типа это область ответственности радиотехника, а не программиста.
Получается, что программист - это что-то вроде продвинутого пользователя, он освоил более сложные программы, на которых можно писать другие программы, но при этом понятия не имеет, что происходит внутри компьютера, какие процессы там протекают, какие преобразования тока происходят. То есть уметь ремонтировать компьютер он уже не обязан (не винду переустановить, а поменять, если сгорело что-то), верно?
Просто тут такое дело, я заканчиваю универ по специальности АСОиУ. Программы пишу неплохо, но по специальности работать не собираюсь, ибо неинтересно мне всё это. Я вообще на эту специальность случайно попал, рассудив примерно так: "Мне 18 лет, я сам не знаю. чего хочу, поэтому пойду на программиста - знание ПК сегодня пригодится везде". Сейчас я знаю, чего хочу, и это не программирование. Но у меня вот прям комплекс неполноценности возник: я ощущаю себя обезьяной, которую надрессировали "программировать мышкой", научили, как писать программы, но при этом я понятия не имею, как работает компьютер внутри. У меня нет глубинного понимания работы ПК. Это для меня некий чёрный ящик: ты ему команду, а он тебе ответ, а как оно всё это вычисляется - фиг его знает. Такие дела.
Зависит от квалификации, в которой собираешься программировать.
Если ты сферический веб-кодер в вакууме, и никуда далее бравзеров лезть не собираешься, то тебе врядли нужно знать, на каком железе будет выполняться твой жабонедоскрипт.
Но если ты имеешь хоть какое-то отношение к программированию на компилируемых языках, то ты должен знать гораздо больше. Ведь в компилируемых языках преобладают данные примитивных типов куда более. Представлять, как твоё число лежит в памяти, и сколько оно там будет обрабатываться куда полезнее, чем писать наугад всякую херню, которая будет занимать слишком много времени. Знать архитектуру каждого конкретного процессора не нужно. Но иметь общие представления о том, как процессор обрабатывает вашу программу, следует. Это поможет избежать глупых ситуаций. Ведь для языков, таких как Си, ты хозяин барин. Если ты напишешь, что 2*2 = 5, оно и будет так. Главное, синтаксис не нарушать.
А про системных программистов помолчу. И так понятно. Огромное кол во людей хеллоу ворд написать самостоятельно не могут - на форумы лезут. Собсно, знать как оно все устроено не обязательно. Тоже самое как люди, которые ставят 5 видеокарт и подключают осцилограф как экран не знаюткак написать программу на C++. У каждого свои обязанности. Кто то делает самолеты, а кто то пилотирует их. Во-первых, каждый должен заниматься своим делом. Во-вторых, у тебя крайне упрощенные понятия о том, что должен знать программист. А в-третьих, программисты бывают разные. Системные программисты обязаны знать, как функционирует железо.

Если вы считаете, что программирование - это умение пользоваться более сложными программами, то это значит, что вас плохо учили программированию :-)

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

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

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




Блджад, куда делся из моего поста заголовок треда в который я отвечаю? Запилите как было.

чтобы программист тридцать лет назад считался программистом, нужно ли ему было знать, как и из чего сделаны перфокарты?


1. да
2. нет. это уг.

зы: а чо за глюки. это только я вижу??


> Они слабо представляют себе как данные хранятся в памяти

Ну, я на самом деле слабо представляю, как работает трансляция адресов на более новых x86.


>много из них даже не представляют что и как устроенно в компьютере



>Ну, я на самом деле слабо представляю, как работает трансляция адресов на более новых x86.


> чтобы программист тридцать лет назад считался программистом, нужно ли ему было знать, как и из чего сделаны перфокарты?


Ваша аналогия гавно, вы ничерта не понимаете в аналогиях.

быдло не нужно, очевидно же

спроси у художника химический состав красок, ёпт.


>Я думаю, что тогда если и холиварили


>спроси у художника химический состав красок, ёпт.

Вся проблема заключается в том, что не надо учить подробности, но хотя-бы что такое АЛУ человек должен знать, что такое регистры тоже.

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


Вообще имхо человек на должен знать устройство

но он должен быть готов его понять. он должен понимать, почему и зачем?



>Быдлокодеры считают Юникод побайтно

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





1. Общие представления все-таки нужны. А в детали вникать нафиг не нужно, если не занимаешься низкоуровневым системным программированием.

ну так ёпт, это в школе проходят.



>самые базовые понятия: про регистры

и почему именно 255 максимальное число влезающее в байт.


Во-первых, для этого нужна математика, а не знание потрохов машины, во-вторых, это всё равно не спасёт программиста на Java от ошибок типа:

плакал от того как он был написан, или так просто лук жена на кухне резала?

Если Python/Ruby/PHP/Java, то эти знания необязательны. Более того, как раз таки люди, заморачивающиеся подобной ерундой, и пишут нечитаемый, трудно сопровождаемый бажный быдлокод.





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

Для кого тот же справочник по математике Корна и Корна написан?


Во-первых, для этого нужна математика, а не знание потрохов машины, во-вторых, это всё равно не спасёт программиста на Java от ошибок типа: .

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

> Я думаю, что тогда если и холиварили, то на тему, бюст которой из девочек-перфораторщиц округлее и изящнее.

Холивары были за машинное время - кому нужнее. 30 минут пакетной обработки на ЕС-1033 в ночь для дипломника - счастье. Зато и программы вылизывали, и алгоритмы проверяли тщательно.

>Холивары были за машинное время - кому нужнее.

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


а просто то что у него есть команды, что они по очереди исполняются,

Просто иметь представление. Так же как автолюбителю иметь представление о принципе работы сцепления.


у меня знакомый парень, учиться на психолога. 2 года мучал - научи прораммировать.

Надоело, ткунл в rubby. Теперь он доволен как слон

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

а о том, что память виртуальная - он до сих пор не знает



Программа обучения программированию строится вокруг профильного языка и прикладных инструментов. Лишь после трудоустройства вчерашние студенты узнают, что изученные дисциплины — вершина айсберга. Вот 5 наук из мира IT, в которых придется разобраться и веб-разработчику, и кодеру микроконтроллеров.

Тестирование

Тестировщик ПО — востребованная профессия: только в Москве открыто 529 вакансий. Тем не менее, в малых и средних компаниях, во фрилансе и непрофильных организациях такой позиции нет, а ответственность за качество кода лежит на самих разработчиках.

В прошлом году мы публиковали статью “Тестирование кода для чайников”. Там вы найдете основные виды тестов и список must-read книг. Если работодатель потребует от вас больше, например написать программу проверки и сертифицировать её, намекните на необходимость поднять зарплату. Или обратиться к специалистам.

Безопасность

Тестирование кода приведёт вас в другую науку — безопасность ПО. Обеспечить её нужно при помощи:

  • набора правил по оформлению кода;
  • модульности;
  • ограничения допуска третьих лиц;
  • тестов для выявления плавающих и случайных ошибок.

Разработчик отвечает за решение первых двух задач, за решение других — специальное ПО. Исключение — программы с повышенными требованиями безопасности, используемые в военных изделиях, общественном транспорте, опасной технике. За безопасность по всем пунктам здесь отвечают и человек, и ПО.

Любой профессиональный программист хоть раз в карьере сталкивается с необходимостью работать с сетями. Это моя мама может объяснить передачу данных словом «магия», а разработчик обязан разбираться в теме и знать, какие могут быть проблемы.

Каждая область IT диктует свои требования к сетевой роли программиста. В вебе он отвечает на взаимодействие «клиент-сервер», в работе с микроконтроллерами — за настройку протоколов передачи, а системный администратор должен понимать сети на всех уровнях. Вот и получается, что без чтения книг по этой теме никуда.

Железо

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

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

Тайм-менеджмент

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

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

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

реклама


Программист – самая популярная компьютерная специальность. Она имеет множество разновидностей, так одни программисты пишут программы и целые операционные системы, например, Виндовс, Линукс и Андроид. Другие создают сайты, форумы, социальные сети и электронные магазины. Третьи настраивают 1С Бухгалтерию, так популярную на просторах России. Четвёртые пишут вирусы, антивирусы, фаерволы и прочие программы для защиты или кражи информации.

MSI RTX 3070 сливают дешевле любой другой, это за копейки Дешевая 3070 Gigabyte Gaming - успей пока не началось

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

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

реклама

var firedYa28 = false; window.addEventListener('load', () => < if(navigator.userAgent.indexOf("Chrome-Lighthouse") < window.yaContextCb.push(()=>< Ya.Context.AdvManager.render(< renderTo: 'yandex_rtb_R-A-630193-28', blockId: 'R-A-630193-28' >) >) >, 3000); > > >);

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

Теперь рассмотрим особенности данных профессий и ограничения по здоровью. Программист и системный администратор – это чистая и сугубо интеллектуальная работа для так называемых белых воротничков.

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

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

Базовые навыки для каждой специальности

реклама

Программист

Начинать стоит с изучения английского языка, а не с языков программирования, как многие до сих думают. Поскольку львиная часть языков программирования будет именно на английском, также как и справка, форумы и многие полезные книги. Второй крайне полезный навык – быстрый набор текста. Например, можно освоить слепой десятипальцевый набор с помощью клавиатурных тренажёров. Я осваивал быстрый набор текста по программе «СОЛО на клавиатуре», большое спасибо её авторам! Третье – заранее развивайте свою память, сейчас в интернете довольно много разных методик. Будучи программистом, вам придётся запоминать названия нескольких тысяч команд и их назначение.

Плюсы работы: Возможность полного перехода на удалённую работу. В свободное от работы время, вы сможете подрабатывать написанием программ, находя заказчиков в интернете. Когда клиентов станет достаточно много, сможете оформить ИП или, объединившись с коллегами, открыть свою компанию.


реклама

Системный администратор

Прежде всего, это знание английского и опыт установки и настройки операционных систем и всевозможных программ. Нужно знать не только вездесущую Windows, но и операционные системы семейства Unix, такие как Linux (их много версий), RedHat и другие. Сейчас есть практика установки на некоторые компьютеры государственных предприятий операционных систем Линукс, чтобы сэкономить на покупке лицензии Windows. На этих компьютерах также используется бесплатная альтернатива Microsoft Office, обычно это OpenOffice или WPS Office (бывшая Kingsoft Office). Отмечу, что OpenOffice совместима с документами Microsoft Office только на 90-95%, в то время, как WPS Office имеет 100% совместимость. Так открыв в «Открытом Офисе» документ, созданный в Ворде, вы рискуете получить непонятные символы вместо части текста.

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

Также системному администратору, наряду с навыками удалённого подключения к компьютерам пользователей и их настройкой, придётся регулярно общаться с самими пользователями ПК. А тут кроются свои подводные камни! С некоторыми людьми придётся проявить недюжинную выдержку и самообладание, поскольку их знание компьютера может стремиться к нулю. Другие могут быть слишком нетерпеливыми, и пока вы настраиваете их компьютер, каждые 15 минут названивать вашему начальнику с жалобами на невозможность работать и сорванные по вашей вине сроки сдачи проектов.

Плюсы работы: Опыт общения с разными людьми, многие из которых будут звать вас настроить компьютер или роутер у себя дома. Благодаря «сарафанному радио», вы сможете получить регулярные «шабашки» и связи в самых разных кругах, включая врачей и юристов.


Ремонтник оргтехники

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

Плюсы работы: Возможность общения с разными людьми, шанс обзавестись постоянными клиентами и подрабатывать дома. А позднее можно открыть свой сервисный центр.


Связист

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

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


Зарплата

Теперь перейдём к самому главному для многих из нас – финансовой отдаче каждой специальности. Поскольку от неё зачастую зависит возможность завести семью, приобрести жильё, путешествовать во время отпуска и тратить часть денег на хобби. Больше всех, как правило, зарабатывают программисты, поскольку их работа наиболее сложная и хорошими программистами становится лишь небольшой процент студентов.

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

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

Читайте также: