Search
Write a publication
Pull to refresh
44
0

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

Send message

Логика сознания. Часть 7. Самоорганизация пространства контекстов

Reading time26 min
Views24K

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

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

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

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

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

Моим самым важным проектом был интерпретатор байт-кода (или «как увидеть матрицу»)

Reading time4 min
Views19K


В форумах я часто вижу вопросы от начинающий программистов на С++: «какую посоветуете литературу?». Обычно я отвечаю набором надежных книг с дополнением: никакое количество прочитанных книг не заменит практику. Нужно на самом деле делать что-то. Но что? Что может быть хорошим проектом? Нужно что-то, что научит многому, но при этом достаточно простое и интересное, чтобы не заскучать. Я недавно задумался над этим вопросом, и, кажется, нашел ответ. Вам несомненно стоит написать интерпретатор байт-кода. Для меня такой проект оказал решающее значение в становлении всей последующей карьеры.


Как все началось


В 200Х году я учился на втором курсе в университете. У меня уже был небольшой опыт в программировании. Я умел использовать абстракции, доступные в С++, я не понимал на самом деле как все работает. Для меня компилятор и операционная система были просто черными коробками, работающими благодаря магическим заклинаниям, и я в целом считал это приемлемым.

Читать дальше →

История PowerPoint. Как стартап изменил формат презентации

Reading time43 min
Views50K
«Выступление» означает демонстрацию слайдов с текстом, изображениями и графиками. Конечно, можно обойтись и просто словами, но желательно прибегать к наглядным материалам. Визуальные элементы помогают запомнить и привлечь внимание. И сегодня у слова «презентация» есть ясный синоним — PowerPoint.

Конечно, существуют другие программы, которые позволяют создавать и редактировать презентации. Но явление, когда люди создают бессмысленные скучные наборы слайдов, называют «смертью от PowerPoint». Мы ведь не называем плохой стиль письма «смертью от Word», мы не называем ошибки в вычислениях «смертью от Excel». Программа PowerPoint стала стандартом для визуального сопровождения выступлений.

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

У компьютеров были сотни килобайтов ОЗУ, а Microsoft была мелкой фирмой. Её Windows не пользовалась особым успехом, Word и Excel куда лучше продавались на Mac. Если для выступления были нужны слайды, выступающий не создавал слайды самостоятельно. Приходилось полагаться на отдел дизайна, который слабо представлял, чего от него хотят. А результат демонстрировали на кодоскопе или, реже, на 35-мм плёнке.

В этот странный период свет увидел PowerPoint, ещё не в составе пакета Microsoft Office. Но обо всём по порядку.
Ещё 70 тысяч знаков текста на полчаса чтения

Главные характеристики качественного кода

Reading time3 min
Views30K


Как часто вы поражаетесь, читая чужой код, и думаете «господи, ну и каша...». Скорее всего, достаточно часто. И можете ли вы быть уверенным, что никто не думал также когда читал ваш код? Другими словами, насколько вы уверены в чистоте своего кода? Можно быть уверенным только если полностью понимаешь, что значит чистый код.


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


1.Плохой код делает слишком много, чистый код сфокусирован


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


Но я бы не ограничивал определение классами. В свой последней статье Ральф Вестфал (Ralf Westphal) представил более широкое определение принципа единственной обязанности:


Функциональная единица на определенном уровне абстракции должна отвечать за один аспект требований системы. Аспект требований это признак или свойство требования, которое может изменяться независимо от других аспектов.
Читать дальше →

Искусство дизайна противников в игре Zelda: A Link to the Past

Reading time13 min
Views11K
Позвольте начать эту статью, вкратце указав, о чем в ней не будет идти речь. Это не утомительный справочник по каждому монстру в Zelda: A Link to the Past и не всеобъемлющий обзор методов создания каждого класса противников. Это, скорее, статья о том, как на примере игры Zelda: A Link to the Past создавать противников, исходя из их функций.

Читать дальше →

Жестокая реальность создания FPS для мобильных устройств

Reading time12 min
Views14K
Создание игр жанра FPS (шутер от первого лица) для мобильных устройств всегда было «твёрдым орешком». Несмотря на множество попыток разработчиков с разной степенью успеха, самые ярые фанаты до сих пор ждут истинного кандидата.
Читать дальше →

Неожиданная история микропроцессоров

Reading time10 min
Views32K

Вы думаете, что всё началось с Intel 4004, но всё не так просто




Intel 4-битный 4004

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

В 1960-м был показан новый тип транзисторов: транзистор со структурой металл-окисел-полупроводник, МОП-транзистор. Сначала технология не выглядела многообещающей. Они были медленнее, менее надёжными и более дорогими, чем биполярные. Но к 1964-му интегральные микросхемы на МОП-транзисторах уже могли похвастаться большей плотностью и меньшей стоимостью производства, чем биполярные. Сложность интегральных микросхем росла согласно закону Мура, но технология МОП вырвалась вперёд.
Читать дальше →

«Операционные системы: зачем они инженеру»

Reading time10 min
Views40K
Подвигло меня к написанию этого материала публикация «История языков программирования: как Fortran позволил пользователям общаться с ЭВМ на «ты».
Читать дальше →

Симулятор нервной системы. Часть 3. Ассоциативный нейроэлемент

Reading time9 min
Views11K


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

Простая идея алгоритма работы нейрона позволила решить эту проблему.
Читать дальше →

Память, консолидация памяти и бабушкины нейроны

Reading time13 min
Views32K


Первый вопрос, который возникает перед исследователями нервной системы и когнитивных процессов это, что такое память? Что такое память в биологическом аспекте? Как проявляется память на уровне отдельного нейрона? И в какой форме хранится информация в нервной системе?

И сейчас мы ответим на эти вопросы.
Читать дальше →

Пять видов систем крафтинга в играх

Reading time9 min
Views37K
За последние годы крафтинг развился от редкоприменимой механики ролевых игр до практически повсеместного дополнения ко всем последним новинкам индустрии. Сегодня он используется не только в почти любой RPG, но также в шутерах от первого лица, экшн-играх, симуляторах вождения и даже в системе присвоения значков пользователям Steam.

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


Читать дальше →

Оптимизация кода: процессор

Level of difficultyHard
Reading time18 min
Views117K
Все программы должны быть правильными, но некоторые программы должны быть быстрыми. Если программа обрабатывает видео-фреймы или сетевые пакеты в реальном времени, производительность является ключевым фактором. Недостаточно использовать эффективные алгоритмы и структуры данных. Нужно писать такой код, который компилятор легко оптимизирует и транслирует в быстрый исполняемый код.

image

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

Программируем «Мегапроцессор»

Reading time8 min
Views17K
На Geektimes летом была статья про Megaprocessor — процессор из дискретных транзисторов и светодиодов, который весит полтонны и занимает всю гостиную в обычном таунхаусе под Кембриджем. Я решил воспользоваться своей географической близостью к этому мегапроекту, и запрограммировать для него что-нибудь презентабельное — например, спортировать для Megaprocessor мою предыдущую хабрапрограммку «Digital Rain».

Система команд Megaprocessor описана на сайте разработчика.

Большинство команд состоят из одного байта, за которым может следовать непосредственный операнд (один или два байта). Регистров общего назначения всего четыре (R0-R3), при этом они не равноправны: например, для команд доступа к памяти адрес должен быть либо в R2, либо в R3; а операнд — в одном из двух оставшихся регистров.

Программистам, привыкшим к системе команд x86 или ARM, набор команд Megaprocessor покажется крайне бедным: нет ни косвенной адресации «база+смещение», ни непосредственных операндов у арифметических команд (за исключением addq ±1, addq ±2). Зато есть пара неожиданных возможностей: отдельная команда sqrt, и режим .wt для команд сдвига, который заменяет результат суммой выдвинутых битов. Таким образом можно, например, парой команд ld.b r1, #15; lsr.wt r0, r1 вычислить количество единичных битов в r0 (вопрос, столь любимый собеседователями на работу!). Мнемоника ld для команды, загружающей в регистр непосредственное значение (вместо привычной по x86 или ARM мнемоники mov) указывает на способ её выполнения: фактически, с точки зрения процессора, выполняется ld.b r1, (pc++).

Итак, приступим.

Разбор графики Supreme Commander

Reading time9 min
Views27K

Total Annihilation занимает в моём сердце особое место, потому что это была моя первая RTS; вместе с Command & Conquer и Starcraft это одна из самых лучших RTS, выпущенных во второй половине 90-х.

Через десять лет, в 2007 году, был выпущена её наследница: Supreme Commander. Благодаря тому, что над игрой работали одни из основных создателей Total Annihilation (дизайнер Крис Тейлор, программист движка Джонатан Мейвор и композитор Джереми Соул), ожидания фанатов были очень высокими.

Supreme Commander была тепло принята критиками и игроками благодаря своим интересным особенностям, таким как «стратегический зум» и физически реалистичная баллистика.

Давайте посмотрим, как движок SupCom под названием Moho рендерит кадр игры. RenderDoc не поддерживает игры под DirectX 9, поэтому реверс-инжиниринг выполнялся при помощи старого доброго PIX.
Читать дальше →

Симулятор нервной системы. Часть 2. Модулируемый нейроэлемент

Reading time7 min
Views16K


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

Здравствуй, Geektimes, и мы переходим ко второй части, которая будет посвящена второму типу нейроэлементов – это модулируемому нейроэлементу.
Читать дальше →

Персона. Деннис Ритчи — создатель языка С и ОС UNIX

Reading time8 min
Views40K


Деннис Ритчи – создатель языка программирования Cи. Он вместе с Кеном Томпсоном разработал Cи для создания операционной системы UNIX. «У Ньютона есть фраза о стоящих на плечах гигантов», – говорит Брайан Керниган. «Мы все стоим на плечах Денниса».

«Практически все в веб создано на основе – Cи и UNIX», – рассказал изданию Wired Роб Пайк (Rob Pike), легенда программирования. – «На языке Cи написаны браузеры. На ядре UNIX работает почти весь Интернет, и оно также написано на языке Си. Веб серверы – написаны на языке C. А если не на нем, то на Java или C++. А эти языки производные от Си. Python и Ruby также базируются на Cи. Я ручаюсь за то, что все сетевое оборудование работает на программах, написанных на С. Действительно трудно переоценить то, что, сколько всего в современной информационной экономике основано на работе Денниса».

«Недаром же Windows, когда-то написали на Cи, – добавляет он. А UNIX лежит и в основе настольной операционной системе Apple, Mac OS X и IOS. Эти системы установлены в iPhone и iPad».
Читать дальше →

Симулятор нервной системы. Часть 1. Простой сумматор

Reading time5 min
Views25K


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

Частично система воплощена в простенькой программе, созданной на игровом движке Unity3D. Это своего рода симулятор нервной системы, благодаря которому возможно имитировать не только простые рефлексы, но и демонстрировать различные явления в нервной системе, такие как привыкание, сенсибилизация и образование условных рефлексов. А также возможно эмулировать временную и долговременную память и её консолидацию, эмоции и эмоциональное поведение. Причем как простые эмоции, к примеру, голод и насыщение, так и более сложные, такие как любопытство, страх или привязанность. Благодаря системе у нас появится возможность разобраться в предназначении различных областей мозга, в том, как происходит распознавание зрительных образов, как происходит обучение и эмоциональная оценка происходящего.

Корабли дальней космической связи

Reading time8 min
Views53K


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

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

17 научно-исследовательских судов работали в Службе космических исследований Отдела морских экспедиционных работ Академии наук СССР. Флот участвовал во всех наиболее значимых событиях космической программы СССР и даже частично дожил до наших дней. Да, таких кораблей почти не осталась, но технология использования кораблей измерительного комплекса не устарела и сохраняет актуальность.
Читать дальше →

Не все языки программирования одинаково полезны

Reading time7 min
Views55K


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

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

Какие-то знаковые системы проще для освоения, какие-то сложнее. Однако среди них есть и весьма причудливые. А есть настолько сложные, что осваивают их только самые хардкорные разработчики.
Читать дальше →

Компенсация лагов для оружия в MechWarrior Online

Reading time12 min
Views17K


Задержка в сети (лаг) — это реальность, которую нужно учитывать в многопользовательских играх. Сообщениям, передаваемым через Интернет, требуется время, чтобы достичь точки назначения. В зависимости от маршрута и его длины передача этих сообщений может занять довольно долгое время. Это может негативно влиять на процесс игры, особенно в динамичных клиент-серверных играх, таких как FPS. То, что кажется очень простой задачей (стреляй, пытаясь попасть в цель), внезапно становится очень сложным в создании плавного игрового процесса для всех игроков. Думаю, не нужно говорить, что создавать многопользовательские игры сложно, при этом возникает множество проблем, которые разработчики должны решить. В этой статье я расскажу, как система вооружения MechWarrior Online справляется с лагом.
Читать дальше →

Information

Rating
Does not participate
Location
Тернополь, Тернопольская обл., Украина
Date of birth
Registered
Activity