[Из песочницы] NeoBook: среда программирования для непрограммистов
Для кого эта статья
Статья написана, в первую очередь, для тех, кто не является профессиональным программистом, но хочет уметь создавать свои собственные компьютерные программы для компьютеров с Windows. Программирование сегодня — это универсальная компетенция, которая обязательно пригодится человеку практически в любой профессиональной области и, конечно, для личных целей. Для преподавателей информатики и программирования статья тоже может быть полезна, поскольку в ней речь идёт о NeoBook — визуальной среде программирования в которой можно успешно научиться программированию с нуля и создавать полноценные приложения. Опытные программисты также используют NeoBook вместо профессиональной IDE, когда нужно быстро создать что-то достаточно простое.
Почему я решил написать о NeoBook
За 10 лет программирования в NeoBook и за 5 лет обучения студентов этой программе я много раз ловил себя на мысли — почему же так мало людей знает о том, что с помощью NeoBook можно самостоятельно создавать функциональные и красивые приложения практически любого назначения? Причем, для обычного уверенного пользователя компьютера освоить NeoBook до уровня создания полезных, красивых и надежных программ — дело одного месяца занятий по полчаса в день (и это справедливо для обычного пользователя персонального компьютера без всякой начальной подготовки в области программирования).
Программирование в NeoBook даёт быстрый ощутимый результат, что чрезвычайно важно при обучении программированию, в особенности, для современной молодежи и для занятых людей. Пришло время исправить эту несправедливость и рассказать о NeoBook всем, кто ещё лишь выбирает свой первый язык программирования — ведь это не просто учебный язык, но и позволяющий писать приложения вполне профессионального уровня для компьютеров с Windows.
Зачем гуманитарию программирование
Поскольку сам я не являюсь профессиональным программистом (я психолог), то, вероятно, правильнее всего было бы здесь просто поделиться своим опытом и через него приступить к описанию возможностей NeoBook.
Случилось так, что мне потребовалось кое-что компьютеризировать, а конкретно — свою методику диагностики силы мотива (силы желания, стремления…). Прознав про различные конструкторы тестов, я стал перебирать их один за другим и терзать разработчиков письмами, вроде «было бы хорошо добавить ещё такую-то возможность в Вашу замечательную программу».
Как всегда бывает в случае использования готовых конструкторов тестов — то одно, то другое мне не подходило… И мириться с ограничениями никак не хотелось. Наконец, в голову пришла светлая мысль сделать программу самому. Но как? Нанимать специалиста или попробовать полностью самостоятельно?
Избранная для компьютеризации методика очень проста (предъявить вопросы, перемножить баллы полученные в виде ответов и выдать интерпретацию в соответствии с заданным диапазоном), а нанимать программиста — затратно и, в моем случае, неудобно (предполагались существенные обновления программы). Поэтому я решил создать программу самостоятельно и стал читать книги по Delphi, потом Delphi для чайников, потом для школьников, потом для детей… Я бы, наверное, дошел до уровня «Delphi для младенцев», если бы такая книга существовала.
Поскольку базовых знаний в области программирования у меня не было, я не мог отделить важную информацию от второстепенной и толком не мог приступить к практике. Упражнения по кодингу в духе «нарисуй лесенку» вводили меня в состояние тяжелой депрессии. Думаю, что до этого порога дошло порядочное количество неофитов — это тот самый момент, когда хочется опустить руки.
На мое счастье я клюнул на рекламу одного интернет-предпринимателя — он предлагал платные уроки программирования в NeoBook и называл её «программой для создания программ». Так я узнал о NeoBook. В поисках дополнительной информации о ней я набрел на форум необукеров, где меня и научили работе с программой.
Что же можно создать в NeoBook?
Сначала у меня были сомнения –, а возможно ли в NeoBook сделать что-то стоящее, не зря ли я трачу свое время? Но теперь я могу сказать, что за всё время работы с NeoBook я ещё ни разу не столкнулся с реально нужной мне задачей, которую не смог бы решить сам или с помощью сообщества необукеров (среди которых есть и создатели многочисленных функций и плагинов для NeoBook). Для личной и профессиональной жизни я делал:
- интерактивные предметные и психологические тесты, анкеты и опросники;
- стимульный материал для различных научных исследований;
- мультимедийные программы-тренажеры для развития навыков и способностей;
- диагностические комплексы (например, батарею методик с отправкой результатов тестирования мне на электронную почту);
- электронные книги с гиперссылками, закладками и эффектом перелистывания страниц;
- интерактивные меню автозагрузки для DVD и CD дисков;
- иллюстрированные базы данных с форматированным текстом, фильтрами поиска и печатью отчетов;
- защищенный веб-браузер для тестирования студентов (пока студент проходит онлайн тест, он не может открыть ничто другое ни в веб-браузере, ни на компьютере вообще);
- программу мониторинга активности и дистанционного (с телефона) управления компьютером для ребенка (свой родительский контроль);
- удобную базу данных для хранения паролей;
- скриншотер для пожилых родителей (чтобы в один клик из трея могли отправить мне скрин экрана на почту);
- лаунчеры, виджеты, информеры, напоминалки, мультимедийные презентации и многое другое.
При желании можно создать свой собственный простой графический или текстовой редактор (например, личный дневник, оформленный как Вам хочется), программу создания коллажей или визиток, свой органайзер, пополняемый каталог рецептов, мультимедиа плеер или аудио-конвертер в подарок, простой веб-мессенджер или локальный сетевой чат, программы сбора и обработки данных для научных исследований с сохранением результатов в файл (в т.ч. PDF и RTF), программы работы с файлами на веб-сервере, программы видеонаблюдения, можно создать свой плагин для браузера и многое, многое другое.
Для непрограммиста это перечисление полезно тем, что указывает на действительно огромные возможности NeoBook и отвечает на вопрос — стоит ли NeoBook потраченного на ее освоение времени. Для себя я сделал вывод, что ещё как стоит! При этом функционал NeoBook непрерывно расширяется с помощью плагинов и функций, которые активно пишут для NeoBook профессиональные программисты. За что им низкий поклон!
Заглянем в NeoBook
Вот так выглядит окно NeoBook в режиме редактирования (открыт проект предметного теста к видеолекции «Развитие логики мышления», квадратными точками выделен текстовой объект с вопросом теста):
На скриншоте представлено главное окно русифицированной NeoBook (версии 5.8.7). Кстати, справочный файл также переведен на русский язык, как и большинство плагинов.
NeoBook обладает всеми признаками среды программирования, в ней есть:
- визуальный конструктор интерфейса (обеспечивающий проектирование по принципу «что вижу, то и получу» — программа создаётся простым перетаскиванием объектов и в этой части напоминает обычный текстовой или графический редактор; нужный код прописывается в свойствах проекта, в свойствах созданных объектов и страниц для разных доступных событий);
- редактор кода (с подсветкой синтаксиса и окном помощника настройки параметров команды; редактор кода доступен в окнах настройки свойств проекта, страниц проекта, а также используемых объектов; код пишется на своём скриптовом языке — можно сказать на очень упрощенном Delphi);
- интерпретатор (работает в режиме тестовой компиляции, а также встраивается в конечное приложение при финальной компиляции и делает созданную программу в дальнейшем полностью независимым от NeoBook приложением);
- отладчик (с возможностью видеть текущие значения переменных и выполняемые команды, позволяющий управлять скоростью выполнения скрипта и даже с построчным выполнением кода в режиме паузы, что делает отлов ошибок довольно простым занятием).
Основные возможности и ограничения NeoBook
Среда программирования NeoBook позволяет создавать простые утилиты и программы с многооконным растягиваемым интерфейсом с окнами любой формы со всеми стандартными объектами (кнопка, список, выпадающий список, чекбокс, радиокнопка, слайдер, изображение, таймер, поле ввода, надпись, текст, многостраничный текст, браузер, контейнер и др.).
Для кодирования доступны разнообразные события (левый клик, правый клик, наведение мыши, уход мыши, перетаскивание, срабатывание таймера, изменение состояния объекта, изменение состояния или размера окна приложения и др.); позволяет использовать в проектах главное, контекстное и трей меню; можно сделать сменяемый на лету интерфейс (язык и скины); доступны различные средства аудио, видео, анимации (GIF, Flash, NeoToon), а также браузер (на основе IE или Chrome), который можно встроить прямо в приложение NeoBook и работать с интернетом через него.
NeoBook даёт возможность взаимодействовать с периферийными устройствами (например, превратить обычную веб-камеру в камеру с датчиком движения), использовать различные интернет и интранет протоколы (HTTP, HTTPS, FTP, TCP, IP, UDP); умеет работать с командной строкой Windows, с целыми папками, архивами (zip, zlib, rar, cab) и с отдельными текстовыми, графическими, мультимедиа, исполняемыми, а также системными и конфигурационными файлами (в том числе BAT, CMD, INI, INF, SCF, CFG, и реестром Windows); может шифровать и хешировать, вызывать другие программы и управлять ими; создавать локальные и глобальные сочетания клавиш (и отправлять их другим приложениям); может скомпилировать автономный, не требующий установки (portable) exe-файл Вашей программы или дополнить Вашу программу инсталлятором.
Из ограничений следует отметить, что NeoBook не поддерживает многопоточность (что в значительной степени компенсируется плагинами, которые могут взять на себя параллельную со скриптом NeoBook работу) и NeoBook не поддерживает динамическое создание объектов (хотя, как правило, можно заранее заготовить необходимое их количество).
Язык NeoBook
Язык NeoBook можно отнести к скриптовым интерпретируемым языкам высокого уровня.
Он состоит из специальных слов — команд. С помощью этих команд можно отдавать компьютеру «приказы». Например, команда AlertBox — это «приказ» показать на экране окно с заголовком, картинкой, текстом сообщения и кнопкой ОК. Правила написания команд называют синтаксисом.
Последовательность команд (где каждая пишется всегда с новой строки) — это код программы, который впоследствии будет выполняться так называемым плеером NeoBook. Будучи встроенным в Вашу программу этот плеер будет считывать код и выполнять (проигрывать) его построчно — команда за командой (при тестовой компиляции этот процесс можно наблюдать в окне отладчика).
Например, если мы напишем команду AlertBox в свойствах кнопки (на событии «левый клик»), то когда пользователь нажмет левой кнопкой мыши по данной экранной кнопке в нашей программе, плеер NeoBook прочитает и выполнит команду — т.е. покажет окно сообщения.
Как именно плеер делает то, что делает необукеру знать не обязательно, а вот список понятных плееру команд необукеру необходим. Конечно же, все команды описаны в Справке к NeoBook и всегда доступны через меню «Команды» в редакторе кода, поэтому команды можно не знать (или не помнить), а просто выбирать из списка доступных. Благо, для каждой команды есть подсказка.
Посмотрим, как выбирать команды на следующем примере.
Привет, Мир!
Приведу для примера синтаксиса классический пример: «Привет, Мир!». Заодно покажу как выбирать команды в редакторе кода через меню «Команды».
По этой ссылке доступен видеоролик (1 мин, 2 сек, без озвучания) показывающий весь процесс создания программы с одной единственной кнопкой, клик по которой вызывает окно сообщения с заданным текстом (резервная ссылка).
Для вывода на экран монитора простого окна сообщения достаточно одной команды:
AlertBox "Тут заголовок окна" "Привет, Мир!!! ))"
В первой программе новичка этот код может быть помещен на кнопку, клик по которой в работающей программе должен открыть данное окно приветствия.
Стиль создаваемого по команде AlertBox окна заимствуется из Windows, изображение по умолчанию можно заменить на любое своё (в т.ч. прозрачное и любого размера), как я сделал в этом случае:
Команда AlertBox поддерживает и многострочный текст (перенос строки в редакторе кода указывают спецсимволом — вертикальной чертой). Спецсимволы не обязательно заучивать, поскольку можно редактировать текст сообщения более удобным для непрограммиста способом — через окно помощника настройки параметров команды. Это окно открывается автоматически при выборе команды через меню «Команды» (см. цифру 3 на скриншоте ниже — открыт редактор кода на событии «Left Click» экранной кнопки).
Видно, что команды сгруппированы по разделам («Навигация», «Сообщения/Диалоги», «Мультимедиа» и др.), клик по разделу (цифра 4 на скриншоте ниже) откроет список доступных в этом разделе команд. При этом, если навести мышь на команду из списка (см. цифру 5 на скриншоте), то в специальном желтом поле внизу списка команд отобразится подсказка — назначение команды:
Клик в этом списке по команде AlertBox, как и по любой другой команде имеющей параметры (то, что можно настроить или изменить), откроет окно помощника настройки параметров этой команды. Непрограммистам (по крайней мере поначалу) проще вписывать значения параметров в таком окне помощника — он контролирует правильность написания синтаксиса (например, не забудет закрыть кавычки), плюс, в окне помощника новые строки можно делать просто клавишей Enter, как в любом обычном текстовом редакторе:
При нажатии на кнопку «Тест» (на скриншоте выше отмечена цифрой 3) сможем посмотреть как будет выглядеть окно, даже без запуска тестовой компиляции программы:
Окно помощника обеспечивает правильность заполнения параметров команды, и тем существенно облегчает жизнь как новичкам, так и преподавателям. Это окно помощника в редакторе кода можно потом вызвать в любой момент для любой команды имеющей параметры — просто двойным кликом по строке с командой.
В редакторе кода команда AlertBox теперь выглядит так (стрелкой отмечен знак переноса строки — вертикальная черта):
Присвоение значения переменной
Ещё показательный пример синтаксиса: как задать переменной какое-то значение (т.е. как поместить в ячейку памяти какое-то содержание).
Переменная — это ячейка памяти компьютера имеющая имя. Имя играет роль адреса, по которому можно найти нужную ячейку. Подобно тому, как в ячейку камеры хранения мы можем класть разные вещи, так и в ячейку памяти компьютера можно складывать разное содержимое, при этом имя ячейки остается тем же самым.
Чтобы создать переменную или изменить её значение в NeoBook достаточно команды SetVar.
У этой команды есть два параметра (того, что может меняться) — это «имя переменной» (оно может быть задано и на русском языке, хотя программисты рекомендуют использовать латиницу), и «новое значение» (может быть любого типа — числом, строкой и т.д.). Имя переменной в NeoBook всегда пишется в квадратных скобках.
Командой SetVar мы помещаем в ячейку памяти с таким-то именем такое-то содержимое (цифру, текст, файл или что угодно ещё). Вот так можно поместить в переменную нужную строку текста:
SetVar "[ИмяПеременной]" "А тут новое значение (содержимое) переменной"
При этом, в NeoBook не требуется, чтобы переменная уже существовала или была заранее объявлена (если переменной нет, то командой SetVar она будет автоматически создана), не нужно выделять память или задавать переменной тип (о типах данных можно не знать вообще, однако, при желании, тип переменной всегда можно задать специальной командой). Всё это существенно упрощает программирование в NeoBook.
Удобно и то, что команда SetVar поддерживает простые математические операции, что позволяет легко создавать различного рода счетчики (например, счетчик правильных ответов в тесте):
SetVar "[VsegoBallov]" "10"
SetVar "[VsegoBallov]" "[VsegoBallov]+1"
После выполнения этих двух команд переменная [VsegoBallov] будет содержать 11.
А вообще для математических вычислений есть своя команда.
Чтобы очистить переменную достаточно оставить второй параметр команды пустым (присвоить переменной пустоту):
SetVar "[VsegoBallov]" ""
Редактор кода
Редактор кода в NeoBook поддерживает автоподсветку синтаксиса. Цвета можно настроить свои, по умолчанию же комментарии к коду начинаются с точки и подсвечиваются серым цветом шрифта, переменные в редакторе кода выделяются красным цветом шрифта, а команды — синим. В качестве примера приведу фрагмент кода на событии «Left Click» на кнопке «Результат» (из предметного теста к видеолекции):
На скриншоте отображено начало скрипта обработки результатов теста. Если бы имя команды где-то было написано с ошибкой, то такая команда вместо синего была бы окрашена в черный цвет.
Во время написания кода окно редактора не обязано быть таким компактным, как показано на скриншоте, можно развернуть его на весь экран используя специальную кнопку на панели инструментов (см. цифру 2, на скриншоте выше) — между кнопкой «Вставить переменную» (см. цифру 1) и меню «Команды» (см. цифру 3). Работать в развёрнутом окне редактора удобно, когда код большой.
Видео-пример создания приложения в NeoBook
По этой ссылке доступен видеоролик (8 мин, 46 сек, без озвучания), в котором можно увидеть весь процесс создания простенького предметного теста с программной обработкой результатов тестирования и выводом сообщения пользователю (резервная ссылка).
Интервью с создателем
Специально для этой статьи мне удалось взять краткое интервью у создателя NeoBook — Дэвида Райлей (David Riley, NeoSoft Corporation, официальный сайт: neosoftware.com). Поскольку город Бенд (штат Орегон, США) находится далеко от Тюмени (города, в котором я живу), я задал свои вопросы по почте, а Дэвид любезно согласился ответить.
1. Как у вас возникла идея создать NeoBook? Когда и почему вы решили это сделать? Если возможно, расскажите нам немного о себе.
Дэвид: Я не помню точно, откуда пришла идея NeoBook. В то время людей интересовала новая концепция «цифровых публикаций» или «электронных книг», как их тогда называли. (Сегодня мы называем их e-books). Это была первоначальная цель NeoBook, поэтому она называется Neo-BOOK. После того, как была выпущена первая версия, мы обнаружили, что большинство людей используют ее как инструмент программирования, а не как средство публикации. Так NeoBook постепенно превратилась из средства публикации книг в платформу разработки для непрограммистов.Когда я был моложе, я был одержим программированием, именно этим я и занимался большую часть своего времени. Став старше, я больше не увлекаюсь этим настолько. Я редко программирую, хотя иногда делаю маленькие утилиты для себя и своих друзей.
2. В каком году вышла первая публичная версия программы? Какой день можно считать днем рождения NeoBook? Вы сохранили ее скриншоты?
Дэвид: Первая версия NeoBook для DOS 1.0 была выпущена в конце 1993 года. Я думаю, что день рождения приходится где-то на конец ноября или начало декабря. Где-то могут быть снимки экрана, но они, вероятно, на моем старом компьютере с дисководами гибких дисков, поэтому нет простого способа получить их. Я нашел старое печатное руководство с 1994 года, так что оно, видимо, из первой или второй версии NeoBook. Вот скан страницы, которая демонстрирует старый интерфейс программы для DOS:
3. Что вдохновляло и поддерживало вас при создании и развитии программы?
Дэвид: Я думаю, что было две вещи. Первая — была искренним желанием сделать что-то, что люди сочли бы полезным. Мы получили много отзывов от пользователей и предложений, которые я собирал в отдельный список. Некоторые предложения были ужасны или неосуществимы, но многие были действительно хороши. Я поработал над списком предложений и реализовал как можно больше хороших. Другая вещь, которая мотивировала меня, была необходимость зарабатывать деньги, чтобы содержать себя и сотрудников, которые у меня были в то время.
4. Вы написали программу полностью самостоятельно?
Дэвид: Я фактически делал большую часть программы NeoBook самостоятельно. Как и в большинстве крупных приложений, я использовал много библиотек, как коммерческих, так и общедоступных. Я не знаю как разделить код, который я написал с нуля, и код, полученный из библиотек и других источников.
5. Планируете ли вы принять участие в разработке программы с Луисом под новым брендом программы (VisualNEO Win)?
Дэвид: Я помогал немного, но я не планирую участвовать в каком-либо крупном развитии в будущем.
6. Что бы вы хотели сказать поклонникам NeoBook?
Дэвид: Спасибо за вашу поддержку. Мне жаль, что я не смог продолжать в том же духе, но я думаю, что Луис вдохнет новую жизнь в NeoBook.
Дэвид, большое Вам спасибо!
Новая жизнь
С 1 сентября 2018 года NeoBook передана для дальнейшего развития испанскому программисту Луису Эрнандесу Пенья (Luis Hernández Peña, SinLios Soluciones Digitales, Becerril De La Sierra, Spain) и NeoBook называется теперь VisualNEO Win (официальный сайт программы: visualneo.com). На момент публикации статьи функционал VisualNEO Win ничем не отличается от NeoBook 5.8.7 Professional (это последняя версия под старым названием), поэтому до существенного обновления можете рассматривать эти программы как одно и то же.
С 2014 года я преподаю программирование в среде NeoBook для магистрантов-психологов (как часть курса «Инновационные и коммуникационные технологии в деятельности психолога», а с 2016 года веду семестровый электив «Основы программирования для гуманитариев», целиком построенный на NeoBook, для бакалавров всех специальностей Тюменского государственного университета. В 2016-м году мне удалось выиграть грант В. Потанина на создание онлайн-курса «Быстрое программирование с нуля для гуманитариев» (сделал его на открытой платформе Moodle) и теперь программированию в NeoBook / VisualNEO Win могут совершенно бесплатно и в любое время учиться все, кто пожелает. В этом курсе полностью представлено всё содержание ранее написанных мною учебника и практикума по NeoBook.
Курс рассчитан на 15–30 часов самостоятельных занятий (для всех пользователей персональных компьютеров от 14 лет, без начальной подготовки в области программирования) и позволяет освоить NeoBook всего за месяц (если заниматься по 30–60 минут в день) до уровня самостоятельного создания полезных, надежных и красивых программ начального и среднего уровня сложности. Теоретическая часть курса представлена лекциями, а практическая — пошаговыми инструкциями (со скриншотами и краткими видео), позволяющими создать простую и завершенную программу.
Последовательность создаваемых по инструкции проектов подобрана так, чтобы сразу на практике познакомить необукера со всеми основными возможностями среды программирования NeoBook, одновременно предлагая ему варианты ответа на вопрос «зачем мне учиться программированию?».
Информация для программистов
NeoBook позволяет использовать внешние DLL, локальные и глобальные переменные; поддерживает работу с массивами, развитыми логическими операторами, регулярными выражениями, рекурсией; позволяет оформлять код в подпрограммы и функции (в т.ч. созданные на других языках программирования: VBScript и JScript, а с помощью специальных плагинов ещё на языках PHP, PdScript, AutoIt, Ruby и newLISP); есть возможности вызова функций WinAPI. Программисты Delphi, Visual Basic, C++, С#, VB.NET (и любой другой программной среды с поддержкой элементов управления ActiveX) могут встраивать скомпилированные в NeoBook приложения в свои программные продукты. Отдельно следует подчеркнуть, что функционал NeoBook почти неограниченно расширяем с помощью плагинов: программисты, поддерживающие развитие NeoBook, создают новые плагины на самые разные темы (SDK есть для Delphi, C++ и PowerBasic). Например, с помощью плагина NeoBookDBPro (который использует ODBC и технологию ADO) проект NeoBook может работать с множеством форматов баз данных: Microsoft Access, MySQL, SQLite, Microsoft SQL Server, Oracle, PostgreSQL, Paradox, dBase и др.
Заключение
В завершение хочу подчеркнуть, что сочетание простоты освоения и больших возможностей делает NeoBook (теперь VisualNEO Win) очень эффективным инструментом как создания программ, так и обучения программированию. В первую очередь — для молодежи и гуманитариев, при обучении которых традиционно возникает множество проблем.
В NeoBook можно создавать компьютерные программы вполне профессионального уровня, а можно делать прототипы программ или интерфейсов. NeoBook может с успехом использоваться и как первый язык программирования для изучения (начиная с 11–14 лет), и как полноценная среда разработки приложений для людей, работающих в любой профессиональной области и желающих автоматизировать выполнение каких-либо задач.
Если же в какой-то момент функционала NeoBook станет мало (например, если потребуется делать веб-приложения, работающие на сайте), то после NeoBook будет уже «делом техники» изучить любой другой язык программирования, поскольку к этому моменту будет освоено самое сложное умение — «думать как программист». Именно поэтому я считаю, что NeoBook не снижает порог вхождения в мир программирования, а снимает его фактически полностью.
Ссылки
- Бесплатный онлайн курс, посвященный программированию в NeoBook / VisualNEO Win: https://distant.orgpsiholog.ru/course/view.php? id=20
- Официальный сайт VisualNeo Win: https://visualneo.com
- Форум «Русский дом для NeoBook»: http://neobooker.ru
- Русскоязычный форум для всех продуктов VisualNEO: https://visualneo.info
- Лёвкин В.Е. NeoBook. Быстрое программирование с нуля для гуманитариев: учебник / В.Е. Лёвкин. — М.; Берлин: Директ-Медиа, 2016. — 218 с. ISBN 978–5–4475–8750–5; То же [Электронный ресурс]. — URL: https://www.directmedia.ru/book_450198_NeoBook_byistroe_programmirovanie_s_nulya_dlya_gumanitariev/
- Лёвкин В.Е. NeoBook. Практикум по быстрому программированию с нуля: учебное пособие / В.Е. Лёвкин — Москва; Берлин: Директ-Медиа, 2018. — 190 с. ISBN 978–5–4475–9464–0; То же [Электронный ресурс]. — URL: https://www.directmedia.ru/book_486254_NeoBook_praktikum_po_byistromu_programmirovaniyu_s_nulya/