• Анализ сишного Hello World

    • Translation
    Hello World — одна из первых программ, которые мы пишем на любом языке программирования.

    Для C hello world выглядит просто и коротко:

    #include <stdio.h>
    
    void main() {
      printf("Hello World!\n");
    }

    Поскольку программа такая короткая, должно быть элементарно объяснить, что происходит «под капотом».
    Читать дальше →
  • Нерассказанная история ИИ

    • Translation

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


    Давайте с вами изучим эту, человеческую историю ИИ – то, как инноваторы, мыслители, работники, а иногда и спекулянты создавали алгоритмы, способные воспроизводить человеческую мысль и поведение (или делать вид, что их воспроизводят). Идея о сверхразумных компьютерах, не требующих человеческого участия, может быть захватывающей – но истинная история умных машин показывает, что наш ИИ настолько хорош, насколько хороши мы сами.

    Когда Чарльз Бэббидж сыграл в шахматы с первым механическим турком


    Прославленный инженер XIX века, возможно, вдохновлялся первым примером шумихи вокруг ИИ



    Читать дальше →
    • +12
    • 3.2k
    • 3
  • Дуглас Энгельбарт: «Augmenting Human Intellect: A Conceptual Framework» (шаг 2)

    • Translation
    Всем привет.

    Представляю вам коллективный (хабра-) перевод основного документа (282 000 знаков), дела всей жизни Дугласа Энгельбарта. (Подробнее: 50 лет спустя. The Mother of All Demos)

    image

    Я считаю, что:

    1. Первоисточники крайне важны, иначе появляются «трактователи», которые интерпретируют ради своей выгоды (если не тупости).
    2. Проект надо делать открыто, публично и коллективно, а не в втихомолку пилить продукт пару лет, чтоб «завоевывать рынки». И тем более что все «заморочки» закрытой организации наследуются в продукт.
    3. Проект должен быть бесплатным и даже радикальнее — приносить убытки множеству игроков отрасли (гудбай венчурные инвесторы).
    4. Проект должен создаваться вне капиталистической логики, копирайта, текущего права и морали.

    Слово Дугласу Энгельбарту:

    Augmenting Human Intellect: A Conceptual Framework

    By Douglas C. Engelbart
    October 1962


    I. Введение


    II. Conceptual Framework


    А. Общие сведения


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

    Все воздействие человека на мир в основном связано с тем, что он может передавать миру через свои ограниченные моторные каналы. Это, в свою очередь, основано на информации, получаемой из внешнего мира по ограниченным сенсорным каналам; об информации, побуждениях и потребностях, возникающих в нем; и на его обработку.
    Читать дальше →
    • +17
    • 4.5k
    • 8
  • Разбираем протокол пейджерных сообщений POCSAG, ч2

      Привет, Habr!

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


      Для тех кому интересно, как это работает, продолжение под катом.
      Читать дальше →
    • DIY тепловизор на Raspberry PI или «Кажется теперь я знаю, чем займусь этим летом»

        image

        Всем привет!

        Пришла зима, а с ней и задача проверить теплоизолирующие свойства построек загородной резиденции дачи. А тут ещё оказалось, что на известном китайском сайте появились вполне доступные тепловизионные модули. Не собрать ли себе экзотическую и, возможно, даже полезную вещь — самодельный тепловизор? Почему бы и нет, вроде и Raspberry где-то валялась… Что из этого вышло — расскажу под катом.
        Читать дальше →
      • Data Science: книги для начального уровня

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

          Ключевыми навыками для начинающих специалистов являются:

          • умение писать код (Python);
          • способность визуализировать свои результаты;
          • понимание того, что происходит «под капотом».

          На эти три категории разделены книги, которые специалисты Plarium Krasnodar подобрали для читателей с начальными знаниями в Data Science.

          Читать дальше →
          • +17
          • 28.7k
          • 8
        • Пишем свой язык программирования, часть 3: Архитектура транслятора. Разбор языковых структур и математических выражений

          • Tutorial
          image

          Введение


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

          Для начала, по устоявшимся традициям, я приведу ссылки на предыдущие статьи:

          Часть 1: пишем языковую ВМ
          Часть 2: промежуточное представление программ

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

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

          И немного о проекте:

          Небольшой сайт проекта
          GitHub репозиторий

          Ну и также скажу сразу, что все написано на Object Pascal, а именно — на FPC.

          Итак, начнем.
          Читать дальше →
        • Новый язык программирования Mash

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

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

          • Tutorial

          Введение


          Доброго времени суток всем хабрачитателям!

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

          Я буду описывать создание языка, который описал ранее тут.

          Он заинтересовал многих и вызвал бурную дискуссию в комментариях. Следовательно — тема интересна многим.

          Думаю, что сразу стоит выложить информацию о проекте:

          Сайт (будет заполнен документацией чуть позже).
          Репозиторий

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

          Кодить я умею на C/C++ и на Object Pascal. Проект я писал на FPC, т.к. на мой взгляд этот язык гораздо проще и лучше подходит для написание подобного. Вторым определяющим фактором стало то, что FPC поддерживает огромное количество целевых платформ и пересобрать проект под нужную платформу можно с минимумом переделок. Если вы по непонятным мне причинам не любите Object Pascal, то не спешите закрывать пост и бежать кидаться камнями в комментарии. Этот язык весьма красив и нагляден, а кода я буду приводить не так уж и много. Только то, что нужно.

          Итак, начну пожалуй я своё повествование.
          Читать дальше →
        • Книга “Электричество шаг за шагом” от Рудольфа Свореня



            Сегодня день информатики, и кто-то возможно помнит первые уроки по информатике в школе, и свой первый учебник “Основы информатики и вычислительной техники” (1990 год):

            Открыть

            В числе авторов этого учебника был — Р.А. Сворень.

            Про легендарного человека — Рудольфа Анатольевича Свореня мы делали серию публикаций (раз, два), и в том числе про его замечательную книгу “Электроника шаг за шагом”, про то как она изменила жизнь людей. Изначально была озвучена идея переиздания этой полюбившийся многим книги (на данный момент мы собрали почти 2000 заявок от людей, кто ждут переиздание).

            Книги Рудольфа Анатольевича обладают удивительным качеством — изложение материала настолько доступно и понятно, от простого к сложному, что всё становится “по полочкам” и по окончании книги люди действительно начинают осознанно и самостоятельно разбираться в предмете.

            Есть хорошие новости — в ближайшее время готовится к выходу из печати новая книга “Электричество шаг за шагом” — на КДПВ — картина из неё. Эта картина показывает то цельное восприятие мира, что было у Рудольфа Анатольевича — и “электричество” для него был важным фрагментом Картины Мира, про который он хотел так же рассказать.

            Книга “Электричество шаг за шагом” ещё не поступала в продажу (хотя была готова в 2012 году), и у вас есть возможность купить книгу — сделать предзаказ.

            Подробности под катом.
            Читать дальше →
          • Полное руководство по CMake. Часть вторая: Система сборки

            • Tutorial


            Введение


            В данной статье рассмотрено использование системы сборки CMake, применяемой в колоссальном количестве проектов на C/C++. Строго рекомендуется прочитать первую часть руководства во избежание непонимания синтаксиса языка CMake, явным образом фигурирующего на протяжении всей статьи.

            Читать дальше →
          • Прерывания от внешних устройств в системе x86. Часть 2. Опции загрузки ядра Linux

              В предыдущей части мы рассмотрели эволюцию доставки прерываний от устройств в x86 системах (PIC → APIC → MSI), общую теорию и все необходимые термины.

              В этой практической части мы рассмотрим как откатиться к использованию устаревших методов доставки прерываний в Linux, а именно рассмотрим опции загрузки ядра:

              • pci=nomsi
              • noapic
              • nolapic

              Также мы посмотрим на порядок, в котором ОС смотрит таблицы роутинга прерываний (ACPI/MPtable/$PIR) и какое влияние на него окажет добавление опций загрузки:

              • pci=noacpi
              • acpi=noirq
              • acpi=off

              Возможно вы пробовали комбинации из всех этих опций, когда какое-либо устройство не работало из-за проблемы с прерываниями. Разберём, что именно они делают и как они меняют вывод /proc/interrupts.
              Читать дальше →
              • +34
              • 8.3k
              • 4
            • «Высокий уровень самодисциплины». Джеффри Рихтер о том, как кодить, писать книги и создавать свои компании


                Сегодня в нашей виртуальной студии один из самых известных дотнетчиков — Джеффри Рихтер.

                В данный момент он — Partner Software Architect в Microsoft, работающий по направлению Distributed Cloud Apps & Storage. Иначе говоря, человек, который знает об Azure Storage всё.

                F.A.Q.

                Слишком много текста. О чём это всё?
                Чтобы вам было веселей читать, для этой статьи мы придумали более интересную вёрстку. Слева будут говорящие головы, а справа — текст. Если вам уныло листать до интересующей части, то в оглавлении есть анкерные ссылки. В ролях:


                Евгений phillennium Трифонов (нетехнические вопросы)
                • Советы разработчикам по созданию компании
                • Комбинирование разных видов деятельности
                • Что читать, что изучать, как писать


                Олег olegchir Чирухин (технические вопросы)
                • Зачем Рихтер изучает JS, Golang и Python
                • Стоит ли продолжать писать на C++
                • Эволюция и будущее разработки на платформе Windows, .NET и вообще
                • Захватит ли JavaScript мир, нужна ли типобезопасность
                • Немного о пользе облачных провайдеров
                • Что лучше иметь — личный самолет или личный вертолёт
                • Как всё успевать



                Почему эта статья попала в хаб JavaScript?
                Только для тех, кому интересно мнение архитектора Azure относительно JS и его позиция в холиваре о типобезопасности. Этот холивар перетекает у нас из интервью в интервью, и конца ему не видно.


                Почему эта статья попала в хаб С++?
                Изначально Рихтер писал книги про C++. Только для тех, кому интересно мнение архитектора Azure относительно будущего и применимости C++


                Джефф стал известен еще в начале 90-х, когда написал книгу о том, как программировать Windows 3.1. Его книга «Programming Applications for Microsoft Windows» стала классикой, позже выпускалась как «Windows via C/C++» и выдержала несколько изданий.

                С появлением .NET он написал «CLR via C#» — тоже получилась классика, тоже несколько изданий. В то время он был одним из основателей компании Wintellect и, формально не будучи частью Microsoft, оказался более свободен в оценках. Чем и заработал репутацию крупного независимого эксперта по Windows. Это человек-легенда уровня Чарльза Петцольда и Дона Бокса.



                Читать дальше →
              • Песочница и шпаргалка по изучению Python

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


                  В итоге все свои эксперименты я вылил на GitHub.


                  Читать дальше →
                • «Зачем мы все это делаем?» — создатель Prisma и бывший лид проектов VK о своем новом секретном проекте



                    Помните приложение Prisma? В 2016 казалось, что через него была пропущена каждая вторая фотка в мире. Историю взлета и спада его популярности обсуждали тоже везде (в том числе и на Хабре).

                    Но в июне этого года создатель «Призмы» Алексей Моисеенков (darkolorin) вместе с сооснователем покинул компанию, не комментируя причины ухода. Почти сразу они стали известны и так. Алексей запустил новый стартап и уже поднял на него $1 млн инвестиций.

                    Компания называется Capture Technologies inc., но что она выпустит, пока не говорят. Известно, что это некий «аналог социальной сети, в котором большую роль будет играть камера и технологии искусственного интеллекта».

                    Мы с fillpackart напросились на беседу и попытались разузнать, хотя бы что у этого проекта под капотом, но снова свалились в обсуждение «быть или не быть».
                    Читать дальше →
                  • Подводные грабли SmartTV разработки

                      image

                      Привет, Хабр!

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

                      Всем кому интересна данная тема или просто любопытно посмотреть на новый фреймворк, который может и в SmartTV, просим под кат.
                      Читать дальше →
                    • Атомная память: 8-битный алфавит и 192-битная мелодия из игры Mario



                        С точки зрения науки наш прекрасный мир, окружающий нас, это нескончаемый поток данных. Каждый твит, каждый комментарий под видео на YouTube, переписка с родными посредством мессенджеров, кино, игры, цифровые книги и т.д. и т.п. Все это формирует так называемое информационное поле Земли. Концентрация данных в нем с каждым годом растет. Так к 2025 году общий объем данных в мире составит 163 зеттабайта (по данным forbes). Для примера, у меня есть внешний накопитель объемом 1 Тб, что по современным меркам не так и много. 163 зеттабайта это эквивалентно 163 миллиардам моих HDD. Площадь такого скопища носителей составила бы примерно 1,47 Тм2 (1 Тм = 1012 м), не говоря уже про массу в 26 080 000 тонн.

                        Это все забавные цифры, но проблема хранения большого объема данных существует, и ее пытаются решить многие ученые в мире. Сегодняшние наши герои смогли усовершенствовать собственное изобретение, использующее технологию атомной памяти. Как они это реализовали и как скоро подобная технология станет общедоступной мы узнаем из их доклада. Поехали.
                        Читать дальше →
                        • +14
                        • 6.3k
                        • 1
                      • «Ручной» манипулятор

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

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


                        Читать дальше →
                      • Инструменты Apple для машинного обучения


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


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

                          Читать дальше →
                        • Mind map вместо тест-кейса, или Как визуализация позволяет тестировать приложение быстрее


                            Привет! Меня зовут Катя, и я работаю тестировщиком мобильных приложений более пяти лет. Последние три года я тружусь в iOS-команде Badoo, и еженедельно мы релизим от трёх до семи новых фич, от трёх до пяти технических тасков и от пяти до 13 багфиксов. Как вы понимаете, приложение меняется с такой скоростью, что поддерживать классическую тестовую документацию (test cases) неэффективно: почти всегда она будет устаревшей.

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

                            В этом случае визуализация позволяет сэкономить кучу времени, поэтому мы решили попробовать использовать mind maps (или «ментальные карты»), которые так же удобны в использовании, как чек-листы, но более наглядны за счёт визуального формата.

                            Сегодня мы подробненько разберём созданную мной mind map для тестирования iOS-приложения (далее именуемую «моя прелесть»), а также пройдёмся по ресурсам, которые можно использовать при построении mind map для мобильного приложения, чтобы покрыть максимальное количество важных сценариев.
                            Читать дальше →