Являются ли программисты айтишниками? И является ли проектирование на уровне регистровых передач программированием?

Перед нами девушка Лиля, с FPGA платой и учебником Харрис & Харрис в руках, на фоне самого высокого на Земле дерева Sequoia sempervirens, недалеко от Стенфорда в Silicon Valley.
Представьте, что вы приехали сюда в командировку в типичную электронную компанию. Усаживаетесь в офисе, входите со своего ноубука (в Америке их чаще называют лаптопами) в корпоративную сеть и пытаетесь что-то напечатать. А принтер не подсоединяется. Вы обращаетесь к ко-воркеру «Что делать?», а он вам говорит: «Обратитесь в IT». Вы в замешательстве «В Ай-Ти? А я что — не айтишник?»
Спокойствие. Если вы программист, вы не IT, вы software engineer и работаете в отделе Software Engineering Department. Если вы электронщик, вы тоже не IT, вы работаете в Hardware Engineering Department. IT Department — это другое, это отдельный от разработки отдел, это группа сисадминов, которые поддерживает внутри-корпоративную сетку и ведут учет выданых сотрудникам лаптопов.
Но это слишком тривиально, обсудим более интересный вопрос: вот все эти люди, которые пишут код на языке описания аппаратуры Verilog, который потом превращается в дорожки и транзисторы из silicon на фабрике — они программисты? Аппарентли, нет.

Код на Verilog выглядит как программа? Но код на HTML тоже незнакомому с ним человеку может показаться похожим на программу.
В язык Верилог входят все черты языков программирования, в SystemVerilog есть даже классы и ООП, но это связано с тем, что верилог используется не только для написания кода, который превращается («синтезируется») в железо, но и для написания моделей, тестового окружения и тестов.
Код на синтезируемом подмножество верилога использует уровень абстракции, который называется «уровень регистровых передач» — Register Transfer Level, RTL (не путать с другими расшифровками аббревиатуры, например Run Time Library или Resistor–Transistor Logic).
Тут человек, который не знаком с верилогом, но программировал на ассемблере, услышав слово «регистровая передача» может кивнуть «а понятно, это как в MOV R5, R0». Нет, непонятно. Проблема в том, что слово «регистр» в данном случае является омонимом. У слова «регистр» если два (точнее три, но сконцентрируемся на двух) разных значения:
1. Регистр в контексте программирования на ассемблере. Электронщики называют такие регистры software-visible registers, «регистры, видимые софтверу» или architecture registers, «архитектурные регистры», чтобы не путать с микроархитектурой (архитектура и микроархитектура — это столь же разные вещи как культура и физкультура).
2. Регистр как набор из D-триггеров в электронной схеме. Те регистры, которые видит программа и которые доступны инструкциям (см. пункт первый) — тоже на электронном уровне строятся из D-триггеров, но кроме них в процессоре есть на порядок или два порядка больше других регистров. Регистры используются для хранения данных между стадиями конвейера, для буферов при сбрасывании в кэш данных, как состояние в конечных автоматах итд.
[3. Есть еще memory-mapped registers, хорошо знакомые например программистам микроконтроллеров, но опустим их из этого поста для сохранения фокуса]
Так вот.
Когда вы пишете на верилоге:
— вы создаете схему, на уровне регистровых передач, которая реализуется комбинационным облаком из элементов и-или-не итд и стоит между вводами, регистрами (в значении 2, то есть D-триггерами) и регистром r (опять в значении 2, то есть группой D-триггеров).
Register transfer в контексте проектирования — это задание правила трансфера (функции) превращения состояния регистров из предыдущего такта, перед положительным фронтом тактового сигнала clock, в состояние регистров в новом такте.

А вот когда вы пишете:
— вы создаете программу, последовательность из нуликов и единичек, которая хранится в памяти, откуда ее вытаскивает процессор (схема), декодирует и на ее основе меняет свое внутреннее состояние, которое включает PC — program counter, software visible регистры и другие регистры (в значении 2).

Схема которая строится с помощью так называемого маршрута RTL2GDSII из кода на верилоге, является не абстрактной диаграммой, а случае ASIC design совершенно конкретной электрической схемой, изготавливаемой на фабрике. C металлическими дорожками меди, которые соединяют блоки ASIC library, которые реализуют функции and2, and3, andor, mux, dff (d-flip-flop) итд.
«Ну а как с FPGA design? Ведь там мы не переделываем микросхему на фабрике, а меняем ее, загружая биты в память конфигурации. Разве bitstream — это не программа?»

В случае FPGA design схема является более виртуальной — она задаётся набором битов подключенным к контрольным сигналам мультиплексоров, идущим к lut (lookup table) и другим элементам clb (ячеек) уже сделанной на фабрике микросхемы FPGA. Но эта схема все равно не является программой. Потому что словом «программа», по сложившейся с 1940-х годов традиции, называют цепочку инструкций фон-Нейманновской машины (сейчас кто-то решит показать эрудицию и заговорит о гарвардской архитектуре, но мы возразим эрудиту вот такой картинкой:

В американских, [западно]европейских и [южно и восточно]азиатских электронных компаниях никто синтезируемый код на верилоге программой не называет. Говорят просто «RTL’: «напишите RTL», «готов RTL?» , а не «напишите программу?» , «готова ли программа?» итд.

Как же научиться RTL?
Группа энтузиастов по подьему образования в России и Украине на уровень 21 века провела в сентябре в Сколково Школу Синтеза Цифровых Схем с упражнениями на FPGA платах. Школа оказалась популярна (на 25 мест было 86 заявок) и мы решили ее расширить до полноценного семестрового курса по субботам, с объемом материала на уровне университетских лабораторных по FPGA (типа MIT 6.111), к которым добавили элементы компьютерной архитектуры, базовый туториал для ASIC и некоторые умения из промышленности.
Новый цикл занятий начнется с 30 октября 2021, закончится 12 февраля 2022, и будет проходить по субботам в Сколково в Москве, с трансляцией в казанский Иннополис и другие места. Регистрация уже открыта .
Среди преподавателей на школе — инженеры российской компании Syntacore / Ядро, SberDevices, IRQ, ИнСис и Inline Group (использование FPGA для высокоскоростного трейдинга на бирже), преподаватели МИЭТ, МИРЭА, МГУ, ВШЭ МИЭМ, Черниговского ЧНТУ, российского представительства Mentor Graphics / Siemens EDA. Школа поддержана компанией Cadence Design Systems.
Место еще не выбрано окончательно, но занятия будут проходить или в Технопарке Сколково, или вот в таком занятном здании, которое называется Гиперкуб и в котором можно поместить больше участников. Вы можете высказать в опросе, что лучше — технопарк или гиперкуб:

Школа предназначена для трех категорий слушателей:
- Школьники-старшеклассники олимпиадного типа смогут понять, что представляют из себя работы в микроэлектронной промышленности: проектирование чипов для смартфонов, игровых приставок и самоуправляющихся автомобилей, или использование микросхем реконфигурируемой логики для управления космическим кораблем.
- Студенты младших курсов смогут заложить твердую основу для дальнейшего изучения схемотехники и архитектуры компьютеров в их вузах.
- Преподаватели вузов, физматшкол или кружков технологии смогут найти материал для постановки или улучшения своих курсов.
Школа может также понравиться кросс-дисциплинариям. Вот например участники школы на ChipEXPO распознают с помощью FPGA платы мелодии, которые играет для них преподавательница флейты Мария Беличенко:

План семинаров школы:
30 октября 2021: 1. Введение в маршрут проектирования и упражнения с комбинационной логикой.
13 ноября 2021: 2. Последовательностая логика и конечные автоматы.
20 ноября 2021: 3. Разбор учебного проекта: модульная графичеcкая игра со спрайтами.
27 ноября 2021: 4. Разбор учебного проекта: распознавание и генерация звуков и мелодий.
4 декабря 2021: 5. Конвейеры и систолические массивы, с приложением для искуственного интеллекта.
11 декабря 2021: 6. Архитектура: вид процессора с точки зрения программиста.
18 декабря 2021: 7. Микроархитектура: вид процессора с точки зрения схемотехника.
25 декабря 2021: 8. Пробуем маршрут RTL2GDSII: как разрабатываются массовые микросхемы.
15 января 2022: 9. Элементы микроархитектуры 1: очереди FIFO и кредитные счетчики.
22 января 2022: 10. Элементы микроархитектуры 2: арбитры, банки и разделение памяти.
29 января 2022: 11. Элементы микроархитектуры 3: строим процессорный кэш.
5 февраля 2022: 12. Имитация собеседования на позицию проектировщика цифровых микросхем.
12 февраля 2022: 13. Разбор имитации интервью с вручением поощрительных призов.

Популярная группа GSPD (что расшифровывается как «Государственная Служба Пропаганды Дискотек» — про это у них есть песня) сочинила также песню «У России три пути — Рейвы, Водка и Айти».
Но они неправы! У России несомненно есть и четвертый путь — проектирование сверхбольших интегральных микросхем с продвинутой микроархитектурой. Для гаджетов, сетевой инфраструктуры, ускорителей машинного обучения, космических аппаратов и самоуправляемых автомобилей. И для этого нам всем нужно подготовить будущих супердизайнеров проектирования на уровне регистровых передач. Из современных школьников и студентов.
Кое-что из этого будущего уже появляется — например российский процессор Скиф для планшетов, спроектированный в зеленоградском НПО Элвис. Но одного Элвиса не хватит, чтобы изделия на российских микросхемах значимо проникли например на Consumer Electronics Show в Лас-Вегасе — для этого нужна на порядок бОльшая инженерная экосистема.
Чем отличается АЙТИшник от программиста?
Программисты-то различаются сами по себе (хотя бы по тому, в какой сфере пишут и на каком языке пишут) и частенько ошибочно программистами называют эникейщиков. «ITшник» — это просто обобщенное название человека, работающего в IT-сфере, будь-то сисадмин, программист и т. д.
Остальные ответы
Так называемые «айтишники» — это все, работающие в сфере информационных технологий, а программисты — лишь какая-то их часть.
Информационные Технологии не только компьютеры
Эникейщик, сисадмин, программист.
1. Техподдерка пользователей.
2. Создание сетей и их функционирование, обслуга сервера.
3. Создание программной части того с чем работают оба предыдущих.
Если проводить аналогию с врачами, то айтишник схож с терапевтом, а например java developer будет кардиологом
Какая разница между айтишником и программистом или ее нет?!
![]()
Есть ли разница между айтишником и программистом? Есть, и она принципиальная. Каждый программист , возможно , будет айтишником, но не каждый айтишник , возможно , будет программистом.
Айтишник — это специалист, который владеет IT-технологиями. Программирование входит в IT-технологии, но , помимо программирования , там есть еще куча всего. Поэтому айтишник может вообще не знать программирование, но быть крутым специалистом в другой IT-сфере.
Программист — это специалист, который знает языки программирования и пишет при помощи них программы и приложения. С точки зрения IT-сферы, программист — узкая специализация, однако программисты также подвержены собственной градации в зависимости от того, что программируют: игры, приложения для компьютера, программы для мобильного телефона и другое.
Какая разница между айтишником и программистом
- бизнес-аналитик;
- аналитик больших данных;
- разработчи к программ или игр под разные операционные системы;
- специалис т из сферы кибербезопасности;
- системны й администрато р ;
- DevOps;
- системны й инжене р ;
- архитекто р систем;
- те с тировщи к ;
- технически й писател ь ;
- UX/UI-дизайне р ;
- верстальщи к ;
- и другие специалисты.
Разница между айтишником и программистом у «нас» и у «них»
- если ты «программист», то ты не «айтишник», потому что ты принадлежишь касте «soft engineer» и работаешь в отделе «Software Engineering Depar tm ent»;
- если ты занимаешься электронным оборудованием, то ты тоже не «айтишник», потому что ты работаешь в «Hardware Engineering Depar tm ent»;
- «айтишником» ты будешь , тольк о е сли работаешь в «IT Depar tm ent» — это отдел, которы й по своей функциональности напоминает «наше» системное администрирование, где нужно поддерживать корпоративную работу.
Заключение
Разница между айтишником и программистом есть — это нужно осознать и принять. Если вы работаете в странах СНГ, тогда нужно запомнить, что под термином «айтишник» может скрываться какая-нибудь профессия , связанная с IT-индустрией. Поэтом у е сли этот термин связывают с вами, тогда лучше будет уточнить у оппонента, что он подразумевает под словом «айтишник».
Если вы работаете или планируете работать в американской или просто продвинутой IT-компании в вашей стране, тогда будьте готовы к тому, что под термином «айтишник» будет скрываться конкретный специалист, который работает в IT-отделе. По функциональности он идентичен с «нашим» системным администратором.
Программист везде будет программистом — специалистом, владеющим языком программирования. Все , что необходимо запомнить: программисты тоже бывают разные, потому что пишут программы под разные устройства и операционные системы.
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
Разработчик и программист: в чем разница?

Большая часть людей, которая не связана со сферой IT, считает, что слова «разработчик» и «программист» являются синонимами. Более того, даже специалисты в сфере IT редко разделяют эти понятия. Честно сказать, я и сам часто в своих статьях использую оба термина, подразумевая под ними какой-то конкретный образ.
Однако, потратив немного времени на изучение этого вопроса, я обнаружил различные мнения о том, какие отличия имеются между разработчиками и программистами.
Разработчик
Разработчик включает в себя более глубокое понятие, чем программист. Дело в том, что разработчиков связывают с творчеством. Программирование само по себе является творчеством, но, если говорить откровенно, оно нередко представляет из себя рутинную работу.
Разработчик не просто что-то программирует, он создает то, что в будущем должно стать одним целым: сайт, программное обеспечение, возможно, игра. Условно говоря, разработчик разбирается с концепцией, архитектурой, с техническим заданием. Разработчик полностью продумывает программный продукт, который должен отвечать поставленным требованиям.
Программист
Программист, в свою очередь, представляет из себя человека, который пишет код (впрочем, разработчик тоже постоянно этим занимается). Программисту нужно реализовать какую-то конкретную задачу. Программист знает, какие инструменты нужно использовать, чтобы реализовать задуманное. Если говорить простыми словами, программист действует по шаблонам, которые требуют наименьшие затраты и дают лучший результат.
Кстати, некоторые меняют данные понятия между собой, внося еще большую путаницу в этом вопросе.