Как вы думаете что более полезно для глубокого понимания работы компьютера изучение функционального
Недавно мне пришло в голову, что я (и я думаю, что большинство людей) изучил компьютерное программирование, начав с чего-то вроде Visual Basic. Я начал задаваться вопросом, начали ли мы сначала с нижнего уровня, было бы легче сейчас.
Как вы думаете, имеет ли значение как программист понимание таких вещей, как работа процессора, основные инструкции и тому подобное? Я имею в виду, в конце концов, разве мы не разговариваем с ним в конце концов?
Если бы мы начали с уровня ЦП и учили оттуда, мы могли бы обнаружить, что можем легче понять, как управлять им на высоком уровне.
Есть даже шутка о C. Язык программирования C: язык, который сочетает в себе всю элегантность и мощь языка ассемблера со всей удобочитаемостью и удобством сопровождения языка ассемблера.
Вы ничего не упускаете, даже если не разбираетесь в процессоре досконально.
Но если вы действительно хотите снизить производительность из своей программы, есть реальная ценность в том, чтобы знать, что скрывается под капотом, изучите язык процессора / ассемблера, если программа того заслуживает.
Это идет в обе стороны.
Например, многие люди, которые начинали на более высоком уровне, понятия не имеют, почему сдвиги намного быстрее, чем умножение и деление, или влияние ветвления и т. Д.
В результате они часто пишут код, который медленнее, но более понятный для обычного человека. (Обратите внимание, что для некоторых приложений скорость работы важнее, чем простота понимания)
Кто-то, кто понимает, что происходит за кулисами (сколько тактовых циклов занимают различные операции, как работает конвейер ЦП, влияние кэширования и т. Д.), Часто может написать очень быстрый код, но для многих это может быть затруднительно. понимать / поддерживать. (Это особенно сложно в приложениях, где «оптимизация» не дает ощутимых преимуществ, а ремонтопригодность более важна)
Лично я чувствую, что знание того, «что происходит внизу», по крайней мере, дает мне возможность знать влияние решений, которые я принимаю.
Честно говоря, на данный момент я не против оставить компилятору много деталей / оптимизаций на низком уровне. Вероятно, он работает лучше, чем я бы в любом случае:]
Я довольно много узнал о низкоуровневом программировании и считаю, что это чрезвычайно полезно для каждой части кода, который я пишу. Даже в языках высокого уровня есть некоторые версии, скажем, базовых примитивов синхронизации (мьютексы / блокировки, условия, семафоры); им все равно придется читать с диска или с сетевой карты; им по-прежнему приходится копировать байты из одного места в памяти в другое, и так далее . Дело в том, что тот факт, что вы используете язык высокого уровня, не означает, что бесполезно знать, как эти вещи работают. Если у вас есть понимание того, как работает компьютер на самом низком уровне, вы всегда можете применить эти знания для написания более эффективного и / или менее подверженного ошибкам кода, независимо от того, насколько абстрактна ваша платформа. Знания о низкоуровневых операциях могут даже научить вас тому, что вы никогда бы не узнали иначе - нет лучшего способа научиться правильно использовать что-то вроде мьютекса, чем реализовать его. (Хорошо, может быть, это немного преувеличено, но, надеюсь, вы поняли мою мысль)
В итоге, я бы сказал, что да, для программистов на всех уровнях абстракции было бы неплохо изучить основы. Но я не думаю, что начинать с основ - хорошая идея. Программы на уровне ассемблера, как известно, трудны для понимания, и я думаю, что попытка навязать это новичку в программировании, скорее всего, обескуражит его / ее. Я упоминал, что понимание основных операций поможет вам писать более эффективный и / или менее подверженный ошибкам код, но, конечно, совсем не обязательно писать код. Так что, на мой взгляд, большинству людей, вероятно, будет лучше всего начинать где-то посередине, где они все еще могут цепляться за знакомые концепции, такие как объекты, знакомясь с процессом кодирования. После некоторого опыта в этой области, CPU - честная игра ;-)
Мы профессионалы. Ожидается, что мы будем знать, как все работает «под капотом», даже если обычно мы не работаем на этом уровне.
Есть еще сообщество программистов, которые научились таким образом.
Я не сомневаюсь, что знание оборудования, с которым вы работаете, может дать вам отличное понимание того, как лучше всего написать код для этого оборудования. Сказав это, некоторые из наиболее аппаратно-зависимых кодов, с которыми я столкнулся (и написал), также были наименее удобочитаемыми и поддерживаемыми.
Я думаю, что для программирования в целом это не так важно. Однако, как только вы попадете в критические области производительности, это ключевой навык.
Я думаю, что понимание базовой архитектуры полезно для любого программиста, и что слишком много абстракции может быть плохим.
Я не знаю, является ли работа с нижнего уровня хорошей идеей, поскольку современные процессоры очень сложны - я выучил Visual Basic, а затем Java, но я так рад, что выучил C и некоторые послесловия на языках ассемблера, поскольку это помогло мне писать критичный для производительности код.
Языки более высокого уровня предназначены для того, чтобы абстрагироваться от низкоуровневой архитектуры системы, над которой мы работаем. Хотя это не означает, что архитектурную информацию следует игнорировать, это означает, что ценность этой информации уменьшается. Знания об архитектуре действительно могут помочь вам использовать систему по-разному, но обычно эти способы включают обход абстракций, которые предоставляют нам наши языки высокого уровня. Хорошо это или нет, я оставляю вам.
Это один из тех вопросов, на который нет однозначного ответа.
На практике нет, в этом нет особого смысла, если только вы не делаете что-то очень конкретное (в этом случае вы бы задали гораздо более конкретный вопрос).
Теоретически, и это аргумент, который будут использовать все противники, да, всегда полезно знать (. почти все) . пока не дойдет до программирования только с единицами и нулями :)
Если бы вы начали с самого низкого уровня, вы, вероятно, никогда бы не добрались до этого «высокого» уровня - именно по этой причине изначально были написаны языки «высокого уровня».
«Если бы мы начали с уровня ЦП и учили оттуда, мы могли бы обнаружить, что можем легче понять, как управлять им на высоком уровне».
Я начал программировать в 70-х годах, когда вам абсолютно необходимо было знать, как работает оборудование, потому что ваш выбор был Фортран (или Jovial) против ассемблера.
Теперь я использую Java и Python… ну, я понятия не имею. У меня есть ноутбук Dell, MacBook, iMac и сервер, который я не могу точно определить.
У них могут быть процессоры Intel или PowerPC или - ну - я думаю, что сервер 64-битный, но я не знаю, какой именно.
Многое (очень много) о некоторых процессорах не помогло. Не мешает ничего не знать о современных процессорах.
Программное обеспечение фиксирует знания. Конкретное оборудование не имеет ничего общего со знаниями, полученными с помощью программного обеспечения.
Это придало мне больше уверенности в том, что я делаю, и дало мне знание о том, когда следует сосредоточиться на производительности или ремонтопригодности (почти в 99% ситуаций я выбираю последний вариант :)
Я начал программировать на базовом языке (на бумажной ленте!), Но одним из лучших опытов в начале моей карьеры была работа во встроенных системах, написание программ на языке C и ассемблере и, зачастую, кросс-компиляция. Очень полезно знать, что делает оборудование, как язык более высокого уровня сопоставляется с ЦП и т. Д. Это, безусловно, поможет вам понять указатели, арифметику указателей, выравнивание структуры данных, расширение знака и даже производительность программного обеспечения и поведение операционной системы, если вы в какой-то степени разбираетесь в оборудовании.
Более важным, чем понимание конструкции ЦП, является понимание «12-слойного пирога» абстракции, лежащего в основе современного языка. Вот почему "Элементы вычислительных систем" Нисана и Шокена - это моя любимая книга по программированию; вам потребуется «От NAND к тетрису за 12 шагов» с сопутствующими модульными тестами, чтобы убедиться, что вы «выполнили условия контракта» на уровне чипа, уровне ALU, уровне ЦП, уровне машинного кода и т. д. на всем пути вверх.
Одно дело сказать, что инкапсуляция важна ; совсем другое дело - увидеть, насколько этот бизнес был бы невозможным без инкапсуляции между этими 12 уровнями. Книга учит вас, что помимо определенной сложности человеческий мозг перестает быть эффективным, а инкапсуляция - это основной инструмент, который мы используем для управления абстрактными задачами. Процесс создания компьютерной игры путем построения ЦП из логических схем изменил то, как я программирую, потому что он научил меня думать о неблагоприятной взаимосвязи между сложностью и коммуникацией, а также о высшей важности четкого публичного контракта между уровнями.
Название работы: Магистрально-модульная организация компьютера
Категория: Конспект урока
Предметная область: Педагогика и дидактика
Описание: Такая конструкция удобна для пользователя поскольку все устройства можно разместить на столе так как ему хочется. Поэтому далее мы подробно рассмотрим основные узлы компьютера процессор память и устройства ввода и вывода и взаимодействие между ними.
Дата добавления: 2014-04-22
Размер файла: 236 KB
Работу скачали: 13 чел.
Урок 1. 10 класс
1. Магистрально-модульная организация компьютера
1.1. Что значит «устройство компьютера»?
устройство конкретного экземпляра компьютера: набор микросхем, тип основной платы, конструкцию и разновидности модулей памяти и т.п.;
семейство компьютеров, например, IBM-совместимые персональные компьютеры; различные конструкции компьютеров (настольные компьютеры, портативные ком- пьютеры, карманные компьютеры);
функциональное устройство компьютера, т.е. его основные узлы и способы взаи- модействия между ними.
Каждый из этих подходов полезен при решении определенных задач. Так для на- стройки конкретного компьютера необходимо точно знать марки и параметры его уст- ройств. Определить эти данные можно с помощью специального программного обеспече- ния. К сожалению, любые знания в этой области очень быстро устаревают, поскольку ап- паратура постоянно меняется.
Если изучать особенности одного семейства компьютеров , мы получим «однобо- кое» представление об устройстве компьютерной техники, так как каждое семейство име- ет свои особенности.
Современные компьютеры очень разнообразны и поэтому имеют самую различную конструкцию и внешний вид. Настольный ПК состоит из системного блока и подключен- ных к нему внешних устройств. Такая конструкция удобна для пользователя, поскольку все устройства можно разместить на столе так, как ему хочется.
Карманные персональные компьютеры (КПК) 21 умещаются на ладони. У большин- ства из них даже нет клавиатуры, а для ввода информации нажимают пластиковой палоч- кой (она называется стилус ) на сенсорный (реагирующий на прикосновение) экран.
С другой стороны, мощные серверы и суперкомпьютеры по-прежнему собираются в виде крупных «шкафов», напоминающих ЭВМ предыдущих поколений. Наконец, нельзя
не упомянуть и о бытовой электронике, которая все больше и больше приближается к тра- диционным компьютерам.
практически не изменяется. Поэтому далее мы подробно рассмотрим основные узлы ком- пьютера (процессор, память и устройства ввода и вывода) и взаимодействие между ними.
1.2. Взаимодействие устройств
Процессор должен обмениваться данными с внутренней памятью и устройствами ввода и вывода. Выделить отдельные каналы для связи процессора с каждым из много- численных устройств нереально. Вместо этого сделана общая линия связи, доступ к кото- рой имеют все устройства, использующие ее по очереди. Такой информационный канал называется шиной .
Традиционно шина делится на три части:
шина данных, по которой передаются данные;
шина адреса, определяющая, куда именно передается информация;
шина управления, которая организует процесс обмена (несет сигналы чтение/запись, обращение к внутренней/внешней памяти, данные готовы/не готовы и т.п.).
шина данных шина управления
По сравнению с первыми ЭВМ, взаимодействие процессора с внешними устройст- вами организуется теперь по-другому. В классической архитектуре процессор контроли- ровал все процессы ввода-вывода. Получалось так, что быстродействующий процессор тратил много времени на ожидание при работе с значительно более медленными внешни- ми устройствами. Поэтому появились специальные электронные схемы, которые руково- дят обменом информацией между процессором и внешними устройствами. В третьем по-
«на ходу» подменять их резервными, что создает видимость диска, который полностью свободен от дефектов 23 .
Как видно из приведенной выше схемы, теперь данные могут передаваться между внешними устройствами и ОЗУ напрямую, минуя процессор. Кроме того, наличие шины существенно упрощает подсоединение к ней новых устройств. Архитектуру, которую можно легко расширять за счет подключения к шине новых устройств, часто называют магистрально-модульной .
Если спецификация на шину (детальное описание всех ее логических и физических
1.3. Обмен данными с внешними устройствами
Существуют три режима обмена данными между центральным процессором (ЦП) и внешними устройствами:
программно-управляемый ввод/вывод; обмен с устройствами по прерываниям; прямой доступ к памяти (ПДП).
При программно-управляемом обмене все действия по вводу или выводу преду-
При обмене по прерываниям устройства ввода-вывода в случае необходимости са- ми требуют внимания процессора. Например, клавиатура оповещает процессор каждый
раз, когда была нажата или отпущена клавиша; все остальное время процессор выполняет программу, вообще «не отвлекаясь» на клавиатуру. Когда прерывание произошло, ЦП
Представим себе, что в кабинете начальника идет совещание, и в этот момент по те- лефону поступает важная информация, требующая немедленного принятия решения. Сек- ретарша, не дожидаясь конца совещания, сообщает начальнику о звонке. Тот, прервав свое выступление, снимает трубку, выясняет суть дела и сообщает свое решение. Затем он продолжает совещание, как ни в чем не бывало. Здесь роль ЦП играет начальник, а теле-
Механизм прерываний используется не только в аппаратной части, но и в програм- мах, которые основаны на обработке событий (нажатий на клавиши, команд управления от мыши и т.п.). Такая технология лежит в основе современных операционных систем и применяется в системах разработки программ MS Visual Studio , Visual Basic , Delphi , Laza- rus и им подобных.
В обоих описанных выше вариантах управление обменом выполнял центральный процессор. Именно он извлекал из памяти выводимые данные (или записывал туда вводи- мые), подсчитывал их количество и полностью контролировал работу шины. Если переда-
ваемые данные не требуют сложной обработки, ЦП напрасно расходует время на прове- дение обмена. Чтобы освободить процессор от этой работы и увеличить скорость переда- чи крупных блоков данных от устройства ввода в память и обратно, применяется прямой доступ к памяти (ПДП, англ. DMA = D irect M emory A ccess ).
Принципиальное отличие ПДП состоит в том, что в этом режиме процессор не про- изводит обмен, а только подготавливает его, программируя контроллер ПДП: устанавли- вает режим обмена, а также передает начальный адрес ОЗУ и количество циклов обмена. Далее контроллер в ходе ПДП самостоятельно наращивает первое значение и уменьшает второе, что позволяет освободить центральный процессор.
Изложенный материал о режимах ввода/вывода может быть сведен в таблицу (здесь
Прежде, чем начать, хотелось бы обратиться к «бывалым» завсегдатаям нашего любимого сайта, поскольку я предвижу различную реакцию на появление материалов для новичков. Прежде всего, вспомните себя в начале своего «компьютерного пути». Вам также было необходимо с чего-то начинать. И теперь, когда вы достигли недосягаемых вершин и можете с уверенностью назвать себя Камрадом, вам не пристало свысока смотреть на неопытных пользователей. Вместо этого вы можете передать им свой бесценный опыт, чтобы он не оказался в забвении, и получать от этого наставническое удовлетворение. Кроме того, любому сообществу всегда требуется «молодая кровь», иначе оно деградирует и растворится в бесформенную массу. Поэтому скажем новичкам — добро пожаловать!
Итак, начнём! С каждым годом реальный мир на планете всё более и более компьютеризируется. Каждый человек всё чаще испытывает потребность в знаниях в этой области. Но если вы почувствовали, что вам все эти новейшие технологии цивилизации ещё и интересны, то у вас есть шанс получить увлечение на всю жизнь! Именно с этого чувства зарождается компьютерный энтузиаст – человек, для которого компьютеры и всё, что с ними связано стали неотъемлемым хобби на протяжении всей жизни. Не важно, сколько вам лет, какие у вас знания, образование и какой у вас доход. Компьютерный мир необъятен и он подарит вам общение, знания и море положительных впечатлений, которые не иссякнут никогда! Вы даже сможет стать фанатом определенного лагеря, как в футболе, и вести непримиримую борьбу с оппонентами.
реклама
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); > > >);Заманчиво! С чего начать?
Прежде всего, с настроя. Для того, чтобы стать компьютерным энтузиастом вам потребуется получить огромное количество знаний. На это потребуется время. Но не стоит пугаться этого – новые знания будут приносить вам удовольствие. Всю информацию вы будете получать из интернет-ресурсов. Черпайте знания из как можно большего количества источников. Ведь сколько людей, столько и точек зрения. И со временем вы будете чувствовать себя как рыба в воде: научитесь разбираться в устройстве компьютеров, сможете самостоятельно подбирать комплектующие, производить сборку и настройку компьютеров, производить модульный ремонт, настраивать программы, станете уверенным пользователем интернета, будете разбираться в терминологии, сможете разгонять комплектующие (стать оверклокером), научитесь майнить криптовалюты, в конце концов. Кроме того, поднимется и ваша самооценка. А ваши родные, друзья и знакомые будут считать вас незаменимым человеком. В этом хобби нет каких-то планок, которые перед вами кто-то ставит, нет сроков и неразрешимых задач. Всё решаете вы сами! Вы – свободный художник!
Самое первое, что вам необходимо усвоить — это что такое компьютер и из каких основных частей он состоит. Определение компьютера вы найдёте сами, а по его составным частям мы кратко пройдёмся сейчас. Простым языком, компьютер состоит из системного блока и периферии.
реклама
Большая коробка, которая стоит под вашим столом это и есть системный блок. Не называйте его процессором, поскольку это моветон и неверное определение. В обиходе допустимо называть его компьютером, «компом», «системником». Его внутреннее устройство на самом деле довольно простое. Хотя компоненты, из которых он состоит, являются вершиной человеческой мысли. После прочтения статью вы сможете аккуратно открыть левую боковую крышку вашего системника и уже самостоятельно взглянуть на его устройство. Это так же увлекательно, как разобрать в детстве новую игрушку, чтобы посмотреть что внутри. Не забудьте предварительно его полностью обесточить и на данном этапе ничего не касайтесь. Приступим к изучению компьютерной анатомии.
1. Корпус.
реклама
Корпус — это скелет компьютера, на который крепятся все детали (комплектующие). Корпусов бесконечное количество видов. Для начала разберитесь в форматах корпусов. В первую очередь он определяется форматом поддерживаемых материнских плат. Основные: E-ATX, ATX, Micro-ATX и Mini-ITX. По мере углубления знаний вы узнаете о таких характеристиках как: качество изготовления, функциональность, «продуваемость», количество слотов расширения, пылезащищенность, наличие актуальных и дополнительных функций. Есть и такая характеристика как «крутость» внешнего дизайна. Существует даже целое направление по дизайну — моддинг.
2. Материнская плата.
Материнская плата является связующим звеном между всеми комплектующими. Все они подключаются к ней для совместной работы. Это сложное техническое устройство. Наши гуру называют их нежно: «мать», «материнка» или «мамка». Основные форматы материнок описаны выше. Разные материнки поддерживают разные типы комплектующих (процессоров, оперативной памяти и прочих дискретных устройств). Получите максимум знаний по данному устройству. Без них вы не сможете самостоятельно производить сборку компьютера или его апгрейд.
3. Процессор.
Центральный процессор – основное вычислительное устройство, исполняющее код программ. Это «соображалка» компьютера. А вкупе с оперативной памятью и устройством хранения он образует мозг вашего компьютера. Процессор устанавливается только в ту модель материнской платы, которая его поддерживает. Это важнейший элемент системы. Подробные знания об устройстве процессора можно получить из обзоров. Выбирайте первые качественные обзоры процессоров новых линеек. Там часто разбирается архитектура, которая помогает понять внутреннее устройство процессора. Сгодятся и качественные обзоры прошлых лет. Набирайте максимальную базу знаний по процессорам.
4. Оперативная память.
В оперативной памяти компьютер хранит данные, которые он использует в текущий момент или собирается использовать в процессе работы. Она энергозависимая и после выключения компьютера все данные из неё пропадают. Начните с того, что узнайте типы оперативной памяти (для ПК, серверов, DDR3, DDR4). Затем узнайте о частотах, вольтажах, типах используемых чипов и их компоновке, типах охлаждения чипов.
5. Накопители HDD и SSD.
В этих устройствах долговременной энергонезависимой памяти, хранятся все данные, которые сохраняются после выключения компьютера. Проще говоря, все программы и файлы. Фото вашего любимого кота и ваши видео из отпуска хранятся именно там. Тема довольно интересная и не сложная, если пройти по ней поверхностно. Вы улучшите и углубите свои знания о накопителях, когда решите сменить HDD/SSD в вашем компьютере или при сборке нового.
6. Кулер процессора
Это не самое сложное устройство, задачей которого является охлаждение процессора во время его работы, ввиду его нагрева. Узнайте о воздушном и жидкостном охлаждении, о типах креплений (поддержка различных сокетов). Изучите тему термоинтерфейсов – это паста, которая служит проводником тепла между поверхностью подошвы кулера и крышкой процессора. От выбора кулера будет зависеть качество работы вашего процессора. Не забудьте пройтись по теме корпусных вентиляторов и способов регулирования их работы.
7. Блок питания.
С блоком питания вы уже сталкивались. «Зарядка» от вашего телефона это тоже блок питания. В компьютере он внутренний и более сложный. Как и для человека, для компьютера качественное питание является залогом хорошего здоровья и долголетия. Но, чтобы разбираться в его внутреннем устройстве, уже таки желательно иметь профильное образование. Но вам будет достаточно узнать общее внутренне устройство и типы используемых компонентов. А при выборе вы можете руководствоваться качественными обзорами и мнением уважаемых гуру в соответствующей ветке конференции Overclockers.
8. Видеокарта.
Чаще всего это самый дорогой компонент вашего компьютера. Отвечает за вывод изображения на монитор. Но не всегда. На сегодняшний день он отвечает ещё и за наполнения деньгами вашей банковской карты, если вы решите стать майнером. Высокий спрос на данный компонент породил небывалый скачек цен. У вас будет много времени на изучение устройства и возможностей видеокарт, поскольку по вменяемым ценам в магазинах они появятся не скоро.
Итак, мы закончили с начинкой системного блока. Как видите всё просто. Не сложнее, чем залезть под капот автомобиля и найти там бачок омывателя. Самостоятельная сборка компьютера позволит вам сэкономить кучу денег — больше, чем при вызове мастера по стиральным машинкам, но меньше чем при заездах в автосервис. Женщины без ума от рукастых мужчин, разбирающихся в компьютерах. Если же вы девушка (женщина), то сборка компьютера вашему избраннику станет апофеозом феминизма! Самостоятельная сборка вашего первого компьютера подарит вам чувства, отдаленно схожие с материнскими при рождении дитя или чувства маленького бога, сотворившего новую форму жизни. Молоко не появится, но это незабываемо!
Программная часть.
Но системный блок это лишь «железо». Это как человек в коме. Его сердце бьётся, а по жилам течет кровь, но он лишь овощ. Важнейшей частью компьютера является программная. Именно она заставляет компьютеры оживать. Первая и основная программа компьютера это BIOS. Это спинной мозг компьютера. Узнайте о нём. Вы даже прямо сейчас можете увидеть его воочию, перезагрузив компьютер и сразу непрерывно нажимая клавишу «DEL» на вашей клавиатуре. Поводите мышкой или понажимайте клавишами-стрелочками, но пока-что больше ничего другого не трогайте, не нажимайте и не меняйте. Ещё не пришло время это делать. Затем нажмите клавишу «ESC» на клавиатуре и выйдите без сохранения.
Затем наступает очередь изучения операционной системы (ОС). Их также довольно много, но самая распространенная из них «Windows». Вы уже с ней знакомы. В принципе, она будет работать и без вашего участия. Но изучение операционной системы позволит вам самостоятельно устранять ошибки в её работе, не вызывая платного мастера. А ошибки в «Windows» происходят периодически. Если правильно настроенное «железо» может работать годами без вмешательства, то с операционной системой так получается не всегда. Её изучение также позволит вам её правильно настраивать под свои нужды, устанавливать нужные вам программы, расширяя таким образом функционал вашего компьютера. Изучение ОС приведет к изучению других программ, начиная от интернет-браузера наподобие Google Chrome, «фотошопа” и заканчивая полезными утилитами. Программы это основная рабочая среда, а компьютер служит для обеспечения их работы. Изучив «железную» часть, вы сможете почти всё время уделить «софтовой»(программной), лишь иногда оглядываясь на «железные» новинки. А впереди ещё огромный рынок периферии, поражающий своим многообразием. Оставьте его на потом, когда придет время выбора.
Вот мы и разрезали ленточку с надписью «Welcome» нашего микро-гайда в мир компьютеров. Если вы смогли воодушевиться и выбрать компьютеры и всё что с ними связано своим хобби на всю жизнь, значит я не зря нажал клавиши на клавиатуре несколько тысяч раз. Даю вам слово – вы не пожалеете!
В IT-сообществе существует определенный культ глубоких знаний, последователи которого считают, что если ты не знаешь во всех подробностях устройство архитектуры компьютера и не пишешь на ассемблере, то ты вообще не программист. Однако суровые реалии современного бизнеса говорят обратное, узкоспециализированные специалисты в одной области менее востребованы, чем много профильные «мастера на все руки», которые обладаю не самыми глубокими познаниями, но во многих областях. Давай разбираться, почему это так?
Главный фактор, влияющий на это – бизнес. Многопрофильный специалист может быть банально дешевле в плане оплаты труда, но при этом найти ему применение на порядок проще.
Глубокие знания далеко не всегда нужны каждому работодателю. Даже больше можно сказать, что большинству контор решают базовые задачи (создание простых веб-приложений и сайтов, внедрение и интеграция готовых информационных систем, поддержка, аутсорс и аутстаф разработка), в которых переплачивать за глубокие знания просто бессмысленно. Да еще и работнику с высоким уровнем будет банально скучно решать типичные задачи. Но именно это направление бизнеса больше всего представлено на рынке.
Намного проще (и дешевле) иметь в штате крепких середнячков, которые звезд с неба не хватают, но при этом способны быстро решать большинство проблем заказчиков. Да, при возникновении реальных трудностей, таким специалистам достаточно сложно разобраться в сути и причинах проблемы. И на такой случай выгоднее единоразово обратиться за помощью к гуру, но не держать его на окладе на постоянной основе.
При этом следует заметить, что в некоторых областях разработки без действительно глубоких знаний в одной предметной области действительно не обойтись. Там реально интересные, сложные, креативные задачи, для решения которых потребуются вся имеющаяся информация. А обладать по-настоящему глубокими знаниями во многих областях практически не реально для человека, технологии слишком быстро развиваются и слишком объемны при доскональном изучении, и чисто физически может не хватать времени и памяти, чтобы держать все это в голове.
Но выбирая такое направление нужно быть на сто процентов уверенным, что ты готов посвятить этой теме всю свою карьеру, ведь сконцентрировавшись на чем-то одном, в другом ты будешь знать на много меньше. И если вдруг ты перегоришь, то будет очень тяжело как морально, так и финансово начинать почти с нуля. Вспоминается поговорка, что не нужно хранить все яйца в одной корзине. Но я еще раз хочу подчеркнуть, что настоящих грандиозных успехов можно добиться, если сконцентрироваться на одном. Здесь тебе нужно хорошо поразмыслить о себе и своих целях, и принимать решение самостоятельно.
Кстати, сейчас все более популярной становится профессия архитектора, который как раз обладает знаниями об огромном количестве библиотек, фреймвоках, паттернах и правил, при этом умея быстро и оптимально их комбинировать для решения проблемы заказчика. Это позволяет на порядок сократить количество собственных разработок компании, экономить бюджет и увеличивать скорость разработки.
Еще хочу уточнить, что на начальном этапе обучения разработке ни в коем случае не нужно распыляться на одновременное изучение множества языков программирования. Изучи для начала хорошо один язык, и только потом, когда действительно будет опыт практического применения и понимание логики, можешь приступать к изучению другого (если тебе это действительно необходимо). А полезные материалы по программированию всегда можно найти в моей группе Вконтакте , там ежедневно публикуются книги и видео по различным языкам. Присоединяйся, если интересно.
Читайте также: