Pull to refresh
0
Андрей @ActionKlo read⁠-⁠only

Пользователь

Send message

Как разрабатываются и производятся процессоры: будущее компьютерных архитектур

Reading time 9 min
Views 16K
image

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

Да, транзисторы стали меньше, чипы — быстрее, а производительность повысилась в сотни раз, но мы начинаем наблюдать стагнацию…

Это четвёртая и последняя часть серии статей о разработке ЦП, рассказывающей о проектировании и изготовлении процессоров. Начав с высокого уровня, мы узнали о том, как компьютерный код компилируется в язык ассемблера, а затем в двоичные инструкции, которые интерпретирует ЦП. Мы обсудили то, как проектируется архитектура процессоров и они обрабатывают инструкции. Затем мы рассмотрели различные структуры, из которых составлен процессор.

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

Часть 1: Основы архитектуры компьютеров (архитектуры наборов команд, кэширование, конвейеры, hyperthreading)
Часть 2: Процесс проектирования ЦП (электрические схемы, транзисторы, логические элементы, синхронизация)
Часть 3: Компонование и физическое производство чипа (VLSI и изготовление кремния)
Часть 4: Современные тенденции и важные будущие направления в архитектуре компьютеров (море ускорителей, трёхмерное интегрирование, FPGA, Near Memory Computing)
Читать дальше →
Total votes 21: ↑20 and ↓1 +19
Comments 4

Краткая и на 146% точная история языков программирования

Reading time 4 min
Views 82K


1800


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


1842


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

Читать дальше →
Total votes 195: ↑181 and ↓14 +167
Comments 154

Процесс компиляции программ на C++

Reading time 5 min
Views 200K

Цель данной статьи:


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

Читать дальше →
Total votes 44: ↑35 and ↓9 +26
Comments 29

[По докам] Flutter. Часть 2. Для iOS разработчиков

Reading time 22 min
Views 13K
После длительного перерыва я продолжу рассказывать о популярном фреймворке Flutter в формате «вопрос — ответ». Первую статью для Android-разработчиков вы можете найти здесь, а сегодня будет полезный материал для разработчиков под iOS.

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



Flutter. Часть 1. Для Android-разработчиков
Flutter. Часть 2. Для iOS-разработчиков
Flutter. Часть 3. Для разработчиков React Native
Flutter. Часть 4. Для веб-разработчиков
Flutter. Часть 5. Для Xamarin.Forms-разработчиков
Читать дальше →
Total votes 30: ↑29 and ↓1 +28
Comments 10

Теория программирования: Вариантность

Reading time 13 min
Views 40K

Здравствуйте, меня зовут Дмитрий Карловский и я… хочу поведать вам о фундаментальной особенности систем типов, которую зачастую или вообще не понимают или понимают не правильно через призму реализации конкретного языка, который ввиду эволюционного развития имеет много атавизмов. Поэтому, даже если вы думаете, что знаете, что такое "вариантность", постарайтесь взглянуть на проблематику свежим взглядом. Начнём мы с самых основ, так что даже новичок всё поймёт. А продолжим без воды, чтобы даже профи было полезно для структурирования своих знаний. Примеры кода будут на псевдоязыке похожем на TypeScript. Потом будут разобраны подходы уже нескольких реальных языков. А если же вы разрабатываете свой язык, то данная статья поможет вам не наступить на чужие грабли.


а вдруг там лис?

Читать дальше →
Total votes 60: ↑56 and ↓4 +52
Comments 62

Исследование шейдера песка игры Journey

Reading time 19 min
Views 13K
Среди множества инди-игр, выпущенных за последние 10 лет, одной из самых любимых для меня определённо является Journey. Благодаря своей потрясающей эстетике и красивому саундтреку Journey стала примером превосходства практически в каждом аспекте разработки.

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


В этой статье, разделённой на два поста, я отдам должное наследию Journey, научив вас тому, как воссоздать точно такой же рендеринг песка при помощи шейдеров. Вне зависимости от того, нужны ли в вашей игре песчаные дюны, эта серия туториалов позволит вам научиться воссоздавать конкретную эстетику в вашей собственной игре. Если вы хотите воссоздать красивый шейдер песка, использованный в Journey, то сначала нужно понять, как он был построен. И хотя он выглядит чрезвычайно сложным, на самом деле он состоит из нескольких относительно простых эффектов. Такой подход к написанию шейдеров необходим для того, чтобы стать успешным техническим художником. Поэтому я надеюсь, что вы совершите со мной это путешествие, в котором мы не только исследуем создание шейдеров, но и научимся сочетать эстетику и геймплей.
Total votes 26: ↑26 and ↓0 +26
Comments 2

Вечная классика: чему современным экшен-играм стоит поучиться у DOOM

Reading time 15 min
Views 41K


Сколько игр завоевали такую популярность, что были установлены на большее число компьютеров, чем Microsoft Windows?

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

Лучше посмотрим, какие уроки могут извлечь экшен-игры из DOOM: хорошие и плохие.
Total votes 57: ↑53 and ↓4 +49
Comments 130

Дизайн интерфейса для игры, рисуем пак иконок

Reading time 7 min
Views 17K
Всем привет!

Я Михаил Кравченко, дизайнер игровых интерфейсов.
Это статья о том как нарисовать пак иконок для игры. Ниже вы видите результат.



Фиксируем требования к результату


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

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

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

Вот пример такого списка:

  • Предметы должны быть похожи на другие подобные предметы из прошлых вторжений;
  • Будет 5 типов предметов — кольца, браслеты, броши, подвески и камни;
  • У каждого типа предмета будет три степени редкости. Чем более редкий предмет, тем больше силы он дает;
  • Степень редкости предмета нужно как-то показать визуально;
  • У камней помимо редкости есть 4 цвета — синий, красный, желтый и зеленый;
  • Предметы выпадают из бойцов армии вторжения, поэтому должны иметь характерные для этих противников черты и цвета;
  • Картинки нужны в формате Tga, размер — 128x128 пикселей.
Читать дальше →
Total votes 23: ↑21 and ↓2 +19
Comments 6

CodeSide. Новая игра для знаменитого соревнования Russian AI Cup

Reading time 5 min
Views 16K


Сообщество участников чемпионатов и команда Mail.ru Group в сотрудничестве с Codeforces.com приглашают вас на самую настоящую бойню, от которой вы получите бессонные ночи и мозоли на руках, поскольку будете участвовать в одном из самых живых и интересных чемпионатов по программированию искусственного интеллекта в мире — Russian AI Cup. Поверьте, что организаторы всего этого безумия продали все свои души ради создания игры, в которую вы захотите играть.

Вам будут нужны только доступ в Интернет, компьютер, голова конечно же, ну и желание ворваться в самую незаурядную тусовку. Возможно, что ещё пригодится кофе. Добро пожаловать!

Каждый год мы ломаем наши головы, чтобы придумать тему следующего соревнования. Так мы делаем уже с далёкого 2012 года. В этой статье я не буду рассказывать про предыдущие соревнования. Полезные ссылки будут в конце статьи.
Читать дальше →
Total votes 76: ↑76 and ↓0 +76
Comments 28

Руководство Google по стилю в C++. Часть 8

Reading time 6 min
Views 56K
Часть 1. Вступление

Часть 7. Ещё возможности C++
Часть 8. Именование
Часть 9. Комментарии




Все мы при написании кода пользуемся правилами оформления кода. Иногда изобретаются свои правила, в других случаях используются готовые стайлгайды. Хотя все C++ программисты читают на английском легче, чем на родном, приятнее иметь руководство на последнем.
Эта статья является переводом части руководства Google по стилю в C++ на русский язык.
Исходная статья (fork на github), обновляемый перевод.
Читать дальше →
Total votes 28: ↑19 and ↓9 +10
Comments 21

Нарратив и «подземелья»: как геймдизайнеру связать локации с сюжетом

Reading time 5 min
Views 9.7K


Много раз задумывался, что повествование в играх с открытым миром — отдельное искусство геймдизайна. Надо вовлечь игрока в исследование локаций, разнообразить все сайд-квестами, не слишком отвлекать от основной линии, и так далее. И нашел статью, где описывается один такой инструмент — концепт «подземелий» для последовательного перехода между важными частями сюжета. Всё на примерах Metroid, Zelda, Control и с общими выводами.
Читать дальше →
Total votes 19: ↑15 and ↓4 +11
Comments 3

Как работает Flutter

Reading time 18 min
Views 58K


Как Flutter работает на самом деле?


Что такое Widgets, Elements, BuildContext, RenderOject, Bindings?..


Сложность: Новичок


Вступление


В прошлом году (прим: в 2018), когда я начал свое путешествие в сказочный мир Flutter, в Интернете было очень мало информации по сравнению с тем, что есть сегодня. Сейчас, несмотря на то, что уже написано много материалов, лишь небольшая их часть рассказывает о том, как на самом деле работает Flutter.


Что же такое Widgets (виджеты), Elements (элементы), BuildContext? Почему Flutter быстрый? Почему иногда он работает не так, как ожидается? Что такое деревья и зачем они нужны?


В 95% случаев при написании приложения вы будете иметь дело только с виджетами, чтобы что-то отображать на экране или взаимодействовать с ним. Но неужели вы никогда не задумывались, как вся эта магия работает внутри? Как система узнает, когда обновить экран и какие части должны быть обновлены?


Содержание:


Читать дальше →
Total votes 14: ↑13 and ↓1 +12
Comments 6

Простите, пользователи macOS, но Apple зашла слишком далеко

Reading time 6 min
Views 160K

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

Тем временем я убедился, что Cogmind (и другое моё ПО) идеально работает через Wine и подобные ему пакеты. Разумеется, в Steam я никогда не говорил о поддержке Mac, потому что это не был отдельный скачиваемый файл, работающий сам по себе. Я готовился к выпуску версии 1.0, и откладывал решение о том, стоит ли принимать меры для реализации полной поддержки платформы, на будущее.

На текущий момент я уже достаточно прождал и увидел, чтобы прийти к осмысленному решению: официальная поддержка macOS просто недостижима для меня.

Почему такое решение было принято именно сейчас: если вы следите за разработчиками инди-игр, сообществами или новостями, то должны были слышать о шумихе, связанной с Apple. К сожалению, мой голос тоже присоединится к этому хору.
Читать дальше →
Total votes 156: ↑141 and ↓15 +126
Comments 563

Где брать аудио для разработки игр и других коммерческих проектов? Библиотеки со звуками природы

Reading time 4 min
Views 10K
Существует множество сервисов и приложений для релаксации, в которых можно послушать звуки природы. Но что если вы хотите использовать такие аудиозаписи в рамках собственного проекта?

В подборке расскажем о пяти библиотеках, откуда можно скачать реальные звуки природы и использовать их в коммерческих целях.

Читать дальше →
Total votes 17: ↑16 and ↓1 +15
Comments 2

Как Алиса узнаёт страны по фотографиям. Исследование Яндекса

Reading time 6 min
Views 11K
Привет! Меня зовут Евгений Кашин, и я работаю в лаборатории машинного интеллекта Яндекса. Недавно мы запустили игру, в которой пользователи соревнуются с Алисой в угадывании стран по фотографиям.

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

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


Читать дальше →
Total votes 56: ↑54 and ↓2 +52
Comments 16

Как работают пули в видеоиграх?

Reading time 6 min
Views 51K
Игры FPS (first-person shooter, шутер от первого лица) стали неотъемлемой частью видеоигровой индустрии ещё с момента появления в 1992 году популярнейшей Wolfenstein 3D. С тех пор жанр эволюционировал: улучшалась графика, увеличивались бюджеты на разработку, развивалась экосистема киберспорта. Но что насчёт их фундамента — механики стрельбы? Как проходило развитие на этом фронте? Почему в некоторых играх оружие кажется реальными, а в других похоже на игрушки?

Hitscan


В предыдущую эпоху многие игры для рендеринга 3D-сцен в 2D-изображения использовали технику под названием raycasting («бросание лучей»). Raycasting позволяет движку определять первый объект, с которым пересечётся луч. Но потом разработчики задались вопросом: «Что, если выпустить луч из ствола оружия, чтобы имитировать пулю?» Благодаря этой идее родился hitscan («сканирование попадания»).


Пример raycasting

В большинстве реализаций оружия с hitscan при выстреле игрока физический движок выполняет следующие операции:

  • Определяет направление, в котором указывает оружие.
  • Выпускает из ствола оружия луч на заданное расстояние.
  • Использует raycasting для определения того, попал ли луч в объект.

Если движок определил, что объект находится на линии огня, то он сообщит ему об этом, сказав, что в него «попала» пуля. Затем цель может выполнить все вычисления, необходимые для регистрации повреждений.
Total votes 73: ↑69 and ↓4 +65
Comments 56

Как работает рендеринг 3D-игр: обработка вершин

Reading time 13 min
Views 35K
image

В этом посте мы рассмотрим этап работы с вершинами. То есть нам придётся снова достать учебники по математике и вспомнить линейную алгебру, матрицы и тригонометрию. Ура!

Мы выясним, как преобразуются 3D-модели и учитываются источники освещения. Также мы подробно объясним разницу между вершинными и геометрическими шейдерами, и вы узнаете, на каком этапе находится место для тесселяции. Чтобы облегчить понимание, мы используем схемы и примеры кода, демонстрирующие, как в игре выполняются вычисления и обрабатываются значения.

На скриншоте в начале поста показана игра GTA V в каркасном (wireframe) режиме отображения. Сравните её с намного менее сложным каркасным отображением Half-Life 2. Изображения созданы thalixte при помощи ReShade.

Читать дальше →
Total votes 31: ↑31 and ↓0 +31
Comments 8

Как заговорить на английском через месяц. 9 простых и проверенных шагов

Reading time 8 min
Views 386K
Хабр, привет!

Меня зовут Марина Могилко, я кофаундер онлайн-платформы LinguaTrip.com.

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

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

Итак, начинаем! Осторожно: под катом мини-словарик на все случаи жизни.

image
Total votes 99: ↑64 and ↓35 +29
Comments 184

Полезные расширения Google Chrome для программиста

Reading time 4 min
Views 39K
Работа программиста настолько сложна и разнообразна, что в ней просто не обойтись без помощи различных инструментов. Подготовил список из 34 полезных расширений Google Chrome, которые облегчат вашу жизнь и сэкономят время.

image

1. Octotree

Если вы любите GitHub и помногу читаете код, то, вероятно, знаете, как неудобно устроен обзор GitHub-файлов онлайн. Теперь этот процесс можно упростить при помощи расширения Octotree. Здесь предоставляется панель инструментов с удобной навигацией, также поддерживающая приватные репозитории.

2. PerfectPixel by WellDoneCode

Это расширение позволяет разработчикам накладывать изображения полупрозрачным слоем поверх HTML и делать попиксельное сравнение.

3. GitHub Repository Size

Удобный и простой плагин, отображающий как объем отдельного репозитория, так и размер кажого файла в нем.
Читать дальше →
Total votes 35: ↑26 and ↓9 +17
Comments 11

Почему сериал «Чернобыль» настолько плохо описал ядерную энергию

Reading time 9 min
Views 101K

Нет, чернобыльская радиация не навредила вашему ребёнку

Статья Майкла Шелленбергера – известного автора и колумниста, пишущего про энергию и окружающую среду.

С начала мини-сериала «Чернобыль» от HBO, рассказывающего о ядерной катастрофе 1986 года, журналисты расхваливали его за точность воспроизведения фактов и событий, даже несмотря на то, что его создатели допустили некие творческие вольности.

«Первое, что нужно понять насчёт мини-сериала „Чернобыль“ от HBO, — писал журналист из The New York Times, — то, что довольно многое является выдумкой. Однако другое, и более важное его свойство: это не так уж и важно». Журналист отметил ту же неточность, что и я в прошлой статье на ту тему: «жертвы радиации часто по какой-то причине оказываются испачканными кровью».

Однако «базовые вещи HBO показала правильно»,- пишет он, а именно то, что Чернобыль – «это больше тема лжи, предательства и прогнившей политической системы, чем вопросы того, хорошая или плохая ядерная энергия в принципе».
Total votes 183: ↑142 and ↓41 +101
Comments 701

Information

Rating
Does not participate
Location
Гродно, Гродненская обл., Беларусь
Date of birth
Registered
Activity