Сложность и перспективы
За прошедшие тридцать-тридцать пять лет персональные компьютеры, сервера, умные телефоны и Интернет прочно вошли в нашу жизнь. Но мало кто знает, до чего сложной является эта техника, каково количество дорогостоящих ошибок, допущенных при её создании, насколько трудно разрабатывать для неё программное обеспечение и какова его реальная стоимость. Понимание приходит с опытом.
Компьютерная техника постоянно развивается, предоставляя всё новые функции и возможности, дешевеет и дорожает одновременно, используемые технологии стремительно меняются и меняют окружающий мир. Устройств, на которых мы учились, занимались и играли лет двадцать пять - тридцать назад, в школе и университете, на рынке уже почти нет. Например, помните ли вы модели ZX Spectrum или БК, где в качестве накопителей использовались магнитофон и компакт-кассета, а вместо монитора - телевизор? А как вам компьютер ДВК с объемом ОЗУ в 48 килобайт и стоимостью 15 600 рублей, в ценах середины 1980х, когда 100 рублей в месяц были приличной зарплатой? В те далёкие времена электронно-вычислительная машина с терминалами могла занимать пространство размером с большой шкаф или комнату. Кстати, появившиеся чуть позже ЕС-1842 (являвшиеся клонами компьютеров на i286) были самыми производительными советскими компьютерами, собранными на полностью отечественной элементной базе.
С каким количеством операционных систем и сред вы работали? Про себя могу рассказать, что знаком не менее, чем с тридцатью пятью, умею их устанавливать, настраивать и использовать, включая дополнительное оборудование, а для более чем десятка из них даже писал программное обеспечение. Работал с несколькими сотнями программных пакетов, начиная от бесплатных и свободных, распространяемых по лицензиям класса GNU GPL или входящих в комплект операционных систем, и заканчивая специализированными, используемыми в ВУЗах и на предприятиях, а также приобретёнными в магазинах и интернет-магазинах для себя или для клиентов.
Про программы, лежащие в основе работы всех современных цифровых и цифро-аналоговых приборов и аппаратуры следует рассказать отдельно. Они используют архитектуру и специализированные алгоритмы (последовательности действий), управляя большинством существующей техники: современным телевизором, умными и беспроводными телефонами, цифровым фотоаппаратом, принтером, офисной телефонной станцией, инжекторным двигателем и приборами в автомобиле, холодильником, микроволновой печью, стиральной машиной, кассовым аппаратом, высоконагруженным сервером, сетевым маршрутизатором, валидатором проездных карт, банкоматом, промышленной линией на заводе, электрическим счётчиком, музыкальным центром, накопителем на жестких магнитных дисках, тонометром или глюкометром, турникетом в метро или на входе в бизнес центр, сигнализацией, системами жизнеобеспечения на космической станции и многим другим.
Программное обеспечение функционирует в миллиардах и триллионах устройств, которые люди используют для своей повседневной деятельности. Именно этим и объясняется неимоверная сложность современных программно-аппаратных комплексов.
Многим людям кажется, что писать программы легко. На самом деле это очень трудная и дорогостоящая работа. Начнём с того, что для того, чтобы стать программистом нужно элементарно очень много всего знать. Профессионалам требуется серьезная математическая подготовка, знание типовых алгоритмов, структур данных и языков (обратите внимание на рекомендуемые Гейл Лакман Макдауэлл в её книге “Карьера программиста”), для того, чтобы избежать в процессе своей работы “изобретения велосипеда” или создания некачественных программ, работающих с большим количеством ошибок.
Так как технологии постоянно развиваются, архитекторам вычислительных систем, менеджерам проектов и рядовым разработчикам нужно непрерывно, кроме решения основных задач, изучать существующие и перспективные разработки, в том числе – в смежных областях, работать над улучшением качества программных продуктов.
Более того, нужно учитывать, что некоторые задачи в области математики и вычислительной техники на данном уровне развития науки являются неразрешимыми или трудноразрешимыми, в принципе. А большая часть других задач являются дорогостоящими, и, при выборе неправильного подхода к решению, весьма трудозатратными и ресурсоёмкими.
Цитирую профессора Стивена Скиену: “Задача выполнимости действительно является задачей на один миллион долларов, т.к. институт Clay Mathematical Institute предлагает премию такого размера любому, кто решит вопрос P = NP”. А ему можно верить, так как Скиена - один из авторитетнейших специалистов в области алгоритмизации, которого приглашают на консультации ведущие научно-исследовательские центры Америки. Для того, чтобы он дал одну из них, связанную с улучшением процесса селективной сборки на производстве, ему, кроме финансов, срочно выделили корпоративный самолет, доставивший его в другую часть страны. Результатом этой консультации стала написанная им программа, которая позволила собирать на основе имеющегося количества деталей семь приборов из восьми максимально возможных, при том что специалисты оплачивающей его услуги компании “самостоятельно смогли получить только шесть работающих приборов”.
Сложность и стоимость разработки программ непрерывно растут на протяжении всего времени развития компьютерной отрасли. Платформы и технологии безостановочно изменяются.
В старших классах школы, в начале 1990х, для разработки программы, работающей в среде DOS нам требовалось чуть-чуть лекций преподавателей кружка, умение рисовать блок-схемы, начальное знание одного языка программирования высокого уровня, немного компьютерного времени, среда разработки с отладчиком и пара недорогих пособий объемом по триста страниц каждое, с примерами кода и документацией по операционной системе.
В середине 1990х, на первых курсах университета мы успешно решали уже более сложные задачи от кафедры систем управления. Для разработки программного комплекса, работающего в консольном и графическом режимах в среде MS DOS или Free DOS, осуществляющего отображение хранящихся на диске изображений и построения их трехмерных проекций, имеющего размеры в откомпилированном виде около 50-100 килобайт, требовалось фантастически много.
Компьютерное время в лаборатории с компьютерами, объединенными в локальную сеть, научный руководитель, среда разработки с отладчиком, минимальные знания трех языков программирования – высокоуровневых C и C++ для написания основного кода и низкоуровневого Assembler для оптимизации медленно выполняющихся участков программы, изучение многочисленных томов справочной литературы: три книги по языкам программирования, одна по системе команд процессоров Intel i386/i486, пособие по управлению видеоадаптерами в графических режимах, четырехтомник по современной машинной графике. То есть, для написания программы размером в 100 кб выполняемого кода потребовалось изучить литературу общим объемом 2500 страниц!
В период с конца 1990х до начала 2010х, для веб-разработки, кроме базовых знаний по устройству современных компьютеров и операционных систем, потребовалось освоить ещё больше. Для создания динамического Интернет-сайта, от небольшого - объемом в 1 мегабайт до серьезного “взрослого” - объемом в 1 гигабайт пришлось приобрести и изучить более десятка книг, по 700-900 страниц каждая. На самые разные темы: языки, протоколы, настройка веб-серверов, проектирование баз данных, хранение и доступ к информации сервере, оптимизация запросов, принципы работы браузеров, графические редакторы, верстка сайтов, версии операционных систем класса Linux и Windows, принципы разработки систем управления сайтами, лучшие практики кодирования. Требовалось владеть уже пятью-семью языками программирования и разметки: например – Perl, PHP, JavaScript, SQL, HTML, CSS, XML. Общий объем книг и справочной документации, которые необходимо было прочитать и понять превысил 10 000 страниц.
Для оптимистов сообщу, что, к сожалению, и этого оказалось мало.
В период с начала 2000х по 2020е в области комьютеростроения произошла настоящая революция. Гигантские корпорации и небольшие фирмы, производящие аппаратуру и программы, непрерывно эволюционировали, работая над уменьшением размеров устройств, разработкой многоядерных процессоров, увеличением срока службы и надежности оборудования, добавлением новых функций – например беспроводных, а также увеличением количества и размеров разнообразных операционных систем. Самой большой своей ошибкой в этот период времени, один из основателей компании Microsoft, сэр Уильям Гейтс, считает потерю доли рынка мобильных устройств – умных телефонов и планшетных компьютеров.
Лидерство в этом сегменте рынка захватили компания Google c операционной системой Linux-класса Android, установленной на громадном количестве оборудования и компания Apple со своими iPhone, iPоd и iPad. Хотя, ещё в начале 2000х-начале 2010х на коммуникаторах успешно работала система от Microsoft - Windows CE, а на большинстве телефонов – специализированные операционные системы производителей, например, Symbian от Nokia или BADA от Samsung.
Достоинства платформы Android, которые помогли ей заслуженно занять около 70-80% рынка мобильных устройств и планшетных компьютеров – широкий спектр оборудования, производящегося по всему миру, плюс отличный Интернет-магазин с большим выбором книг, музыки, фильмов и полезных программ, а также поддержка современных многоядерных процессоров, по приемлемой стоимости. Большинство мобильных аппаратов на базе платформы Android относительно недороги, но умеют использовать две SIM-карты, оборудованы слотом расширения для карт памяти, имеют встроенную точку доступа (что позволяет их использовать в качестве роутера), могут быть в комплекте с аккумулятором повышенной ёмкости, ударопрочным стеклом, сканером отпечатков пальцев, объемными фото- и видео-камерами, а также оснащены множеством датчиков (например, шагомером) и беспроводными интерфейсами.
К этим аппаратам можно подключить и беспроводные наушники, и современный беспроводной лазерный принтер - это позволит набрать текст статьи в редакторе и распечатать (в результате отпадает необходимость в покупке ноутбука или стационарного компьютера). Современный мобильный телефон на платформе Android, оснащённый технологией NFC можно использовать для оплаты проезда в транспорте или оплаты покупок в магазине, вместо или вместе с банковской картой, а также для осуществления переводов денежных средств, используя приложение “Сбербанк онлайн”.
Основные проблемы компаний, разрабатывающее коммерческое программное обеспечение кроются не только в сложности, но и в многообразии имеющихся технологий. Некоторые из них интенсивно развиваются, другие постепенно угасают. Довольно сложно угадать, что будет популярным на рынке и “выстрелит” через год, или, тем паче, через пять лет. Как видите, в своё время ошибся даже сэр Уильям Гейтс. Хорошо написанное программное обеспечение обычно имеет приемлемые размеры, приятный дизайн, решает задачи пользователя, содержит разумное количество ошибок, его разработчики предоставляют грамотную техническую поддержку, а если программа коммерческая, она обязательно включает продуманную защиту.
Согласно исследованиям независимых экспертов, наиболее успешные и устойчивые небольшие фирмы (не крупные корпорации с десятками тысяч сотрудников!) обычно используют для написания и внедрения своих проектов не более 12 языков программирования и разметки, в то время как средний разработчик знает на приличном уровне всего около 3-4 языков. Для эффективного решения задач знаний одного специалиста часто бывает мало, поэтому возникает неизбежная необходимость в слаженной командной работе.
Если попытаться использовать в работе небольшой компании размером в 25-200 сотрудников больше 12 языков, наступает коллапс, потому что сложность проекта возрастает экспоненциально, по мере добавления новых средств разработки. Ухудшается качество и читаемость кода, требуется всё более высокая квалификация персонала, который, естественно, хочет за свою работу всё больше денег, пропорционально возрастающей сложности продуктов.
По мнению эксперта мирового уровня Гейл Лакман Макдауэлл, минимальной базой для успешной работы программистом в серьезных компаниях, таких как Microsoft, Apple, Google, является знание основных алгоритмов и наиболее распространенных языков C, C++, Java. От себя я бы добавил необходимость освоить проектирование баз данных и язык запросов SQL.
Каждый из этих языков обладает определёнными достоинствами и недостатками. Например, язык C позволяет разрабатывать программное обеспечение для максимально большого спектра оборудования и сред разных поколений, включая бортовые системы самолётов и операционные системы реального времени.
Более современный объектно-ориентированный язык C++ с успехом используется как для решения различных прикладных задач, так и для классического программирования в операционных системах Linux и Windows, mac OS. Для создания программ на C++ существует большое количество сред разработки, его последние реализации поддерживают параллельное программирование и многопоточность. При правильном написании кода это позволяет выполнять скомпилированные программы на современных многоядерных процессорах существенно быстрее.
Параллельные вычисления не всегда являются панацеей. Объясняется это просто – далеко не все алгоритмы можно эффективно распараллелить. Скажем, задача поиска простых чисел в заданном диапазоне, может быть решена на четырёхядерном процессоре быстрее, чем на одноядерном, если разделить диапазон на равные части и осуществлять поиск частичных решений на всех ядрах одновременно, а впоследствии объеденить результаты. Напротив, алгоритмы, в которых интенсивно используется рекурсия, будут выполняться почти с одинаковой скоростью, как на одноядерном процессоре, так и на многоядерном (основная нагрузка будет приходится на одно ядро, а остальные будут простаивать). Поэтому и возникает сложная задача балансировки нагрузки.
Получить существенные преимущества от параллельных вычислений можно, например, при решении задачи поиска дубликатов в большом объеме информации – например, среди 10 млрд интернет-адресов. Приняв средний размер URL за 100 символов, мы получим, что для решения задачи надо обработать 4 терабайта данных. Представляется возможным написать программу, которая разместит их на нескольких сотнях компьютеров, которые, работая параллельно, гораздо быстрее выдадут дублирующиеся URL. Используя распределённые вычисления, совмещая сегменты данных и кэша на разных компьютерах кластера, можно повысить скорость обработки запросов в поисковых системах.
Отлично работающим примером такой системы параллельной обработки из реальной жизни является организованная в Санкт-Петербурге справочная служба “Здоровье Города”. Позвонив в колл-центр этой службы, вы можете у оператора уточнить фактическое наличие интересующего вас медицинского препарата в аптеках и медицинских магазинах города. Вам ответят, есть ли вообще лекарство в наличии в данный момент, и, если да - в каких конкретно, а если нет, то сориентируют по срокам поставки. Для того, чтобы эта служба работала, аптеки и магазины подключены к специальным интернет-серверам, программное обеспечение на которых учитывает все поставки лекарств в торговые точки и факт их отпуска со склада. Аптеки, в которые препарат не был завезён, и в которых он закончился, не будут участвовать в итоговой выдаче. Эта справочная служба, интегрированная с информационной системой, экономит время жителей города, снижая нагрузку на персонал аптек, и уменьшая затраты на телефонные разговоры. Ведь раньше, для того, чтобы получить эту информацию, каждому жителю города нужно было обзвонить все возможные аптеки, спросив в каждой, есть ли у них сейчас интересующее лекарство.
Пользуется громадным успехом и распространенностью объектно-ориентированный язык Java. В него встроена поддержка многопоточности. Для Java существует громадное количество классов с готовыми решениями на все случаи жизни – от обмена информацией по специализированным протоколам до работы с системами геопозиционирования, платежными системами, графикой и базами данных – как локальными, так и удалёнными.
Конечно, есть у этого языка и недостатки – требуется наличие виртуальной машины Java Virtual Machine для выполнения программ (желательно аппаратной), относительно невысокая скорость компиляции и сборки практически на любом оборудовании и количестве оперативной памяти – хоть на 256 мегабайтах ОЗУ в начале 2000х, хоть на 4 гигабайтах ОЗУ в начале 2010х. Де факто, Java является рекомендуемым для разработки под Android, но далеко не единственным.
К сожалению, далеко не все перспективные проекты в области компьютерных технологий закачиваются успешно, далеко не все стандарты и аппаратные решения выживают на рынке. Пример безусловного успеха - сорокалетняя история компакт-дисков и двадцатипятилетняя история dvd-дисков, как и техники для их записи и воспроизведения.
В то же время наблюдается относительно небольшая доля рынка и популярность у blue-ray дисков и аппаратуры, несмотря на гораздо большую ёмкость и поддержку фильмов в формате 3D. Секрет прост – модная в кинематографе и компьютерных играх технология, позволяющая получать объемные изображения, опасна для глаз и нервной системы четверти зрителей. Вследствие этого, после первоначального ажиотажа, связанного с новой технологией, посещаемость сеансов стереофильмов и продажа такой аппаратуры в США упали.
Даже у известных компаний бывают провальные проекты и заводской брак. Нередок случай, когда инновационная машинка для стрижки бороды с микропроцессором и сенсорным управлением, выдвигающимися титановыми лезвиями, а также возможностью зарядки не только от сети переменного тока, но и от USB-порта компьютера, ломается через три месяца эксплуатации, и, согласно заявлению сервис-центра, является неремонтопригодной ввиду отсутствия запчастей.
Иногда и некоторые патентованные технологии от мировых брендов в коммерческом секторе, по разным причинам, уступают продукции конкурентов. Пример - закрытие одного из передовых проектов японской компании Sony – программы Track ID, позволяющей по фрагменту музыкальной композиции или песни определить её название, исполнителя и найти онлайн магазин в котором этот трек продаётся. Выиграло борьбу c TrackID и получило финансирование аналогичное по функциям программное решение Shazam, которое недавно было приобретено компанией Apple.
С гордостью можно упомянуть и новинки рынка программного обеспечения – например, пакет для фильтрации онлайн-рекламы и антифишинга AdGuard. Стоимость годовой лицензии составляет около 200-300 рублей за устройство. Разработчики AdGuard максимально приблизили нас к решению проблемы, из-за которой в 1995 году убили директора Первого телеканала Владислава Листьева – возможности отключить рекламу для тех, кто не согласен её смотреть.
Цитирую Евгения Додолева: “Эфир – это отличный и очень быстрый способ зарабатывать деньги… Влад Листьев создавал ряд программ, пытаясь навязать Останкино новую программную сетку. И наступил момент, трагичный для Влада, когда он объявил на полгода мораторий на рекламу. Что было дальше - вы знаете. Позднее выяснилось, что Листьев увел 5 млрд рублей рекламных денег… Ребята, увлеченные бизнесовым проектом, зашли слишком далеко”.
Программа настолько инновационная, что её существование противоречит политике компании Google, зарабатывающей в том числе на продажах рекламы в сети Интернет. В результате этот передовой программный продукт был убран из их магазина Google Play. Конечно, всю возможную рекламу исключить с помощью AdGuard не представляется возможным. С помощью обновляющихся ежедневно баз успешно фильтруется лишь до 90-95% раздражающих баннеров, рекламных роликов, текстовой рекламы и маркетинговых трекеров. Однако и это – прогресс. Недавно там появилась новая, очень сложная функция фильтрации HTTPS-трафика. Своих денег продукт, однозначно, стоит.
На деле с внедрением передовых технологий возникают сложности. Реальная ситуация в Петербурге – во многих небольших и крупных фирмах, включая транснациональные корпорации до сих пор используют старые приемы – например, для управления проектами и контроля их состояния дирекцией, используют текстовые редакторы и электронные таблицы, причём только на 5-10% функциональных возможностей, находясь на уровне 1985 года. В таких компаниях экономят на повышении квалификации сотрудников, не используют облачные технологии, не используют поддержку разных версий документов и совместную работу над ними, а также возможности программирования на Visual Basic, который интегрирован в офисные пакеты Microsoft уже на протяжении 25 лет.
В противовес этому, с другой стороны, лучшие коммерческие фирмы внедряют облачные документооборот и бухгалтерию. Корпоративные многопользовательские интранет-системы дают возможность контролировать доходы компании и действия её сотрудников - от бухгалтера до менеджера по продажам, в режиме реального времени с мобильных устройств или компьютеров дирекции предприятия. Однако, это требует соответствующих вложений в инфраструктуру, оборудование, программное обеспечение, безопасность и квалифицированных специалистов.
Наиболее удачные системы и программы развиваются, менее удачные теряют долю рынка и прекращают своё существование. Многим разработкам мешают их собственные недостатки и ограничения или же усилия конкурентов, успешно внедряющих новые технологии.
Выпущенная несколько лет назад на dvd диске программа с энциклопедией “Кирилл и Мефодий” не выдержала конкуренции с интернет-энциклопедией “Википедия” по следующим причинам: в Интернет-энциклопедии находятся самые свежие данные и большее количество статей на разных языках по сравнению с дисковой версией энциклопедии, версия с диска оснащена защитой с одноразовым регистрационным кодом, что делает невозможной её использование на том же компьютере после замены операционной системы, сама программа энциклопедии “Кирилл и Мефодий” рассчитана на функционирование в среде Windows старых версий и не поддерживает работу в других системах.
Гипермаркеты и торговые сети сегодня, кроме вложений в логистику и физическое присутствие товаров или продуктов на полках их магазинов, развивают свои сайты и разрабатывают для клиентов мобильные приложения с неплохим функционалом.
В мобильном приложении сети “Пятёрочка” вы можете завести дисконтную карту, накапливать бонусные баллы с каждой покупки, получать сведения об актуальных акциях, скидках и торговых предложениях, создавать список покупок, и даже посмотреть, что и когда вы приобрели в этом универсаме. В мобильном приложении торговой сети “Карусель” вы сможете выбрать наиболее близко расположенный к дому “любимый” гипермаркет и, перед тем, как пойти туда, уточнить фактическое наличие интересующих товаров и продуктов и их цены, по его базе. Мобильное приложение сети “О’кей” позволяет заказать продукты на дом, добавить несколько карт лояльности – скажем, на себя, родителей и детей, а также контролировать приобретенные товары и продукты в конце отчётного периода по дате покупки и по группам, строя красивые диаграммы.
У современного программного обеспечения и компьютерных систем ещё не очень долгая история, но очень интересное будущее, которое требует всё больше новых грамотных специалистов, способных находить решения дорогостоящих, востребованных многими и ещё не решенных, перспективных задач из областей, связанных с искусственным интеллектом, системами управления и распределенными вычислительными системами.
Например, в ближайшие 100-200 лет запланировано создание и выпуск полуавтономного (беспилотного) транспорта, для чего требуется принципиально новый математический аппарат, поддерживающая инфраструктура (например, в 1000-2000 раз более точная система геопозиционирования для определения координат), а также большие финансовые ресурсы и изменение международного законодательства. О целесообразности исследований в этом направлении сейчас спорят. Особенно много возражений со стороны водителей, которые прекрасно понимают, что если проект будет реализован, они просто потеряют работу. Подробности читайте подробнее в моей статье “Полуавтономный транспорт”.
Не такое далёкое будущее – разработка и внедрение комбинированных информационных и вспомогательных систем и устройств с использованием глобальной сети Интернет. Например, какого функционала не хватает холодильнику для того, чтобы продавать его не за 25-40 тысяч рублей, а за 150-250 тысяч рублей, по крайней мере, в первое время? На мой взгляд это встроенная программно-аппаратная система на базе простого планшета (скажем, на Android) и сканера RFID-меток, которая определяет какие конкретно продукты с этими метками лежат внутри холодильника и, в целом, на кухне, а также вместо хозяина следит за сроком годности этих продуктов.
Система, которая предоставляет владельцу устройства список возможных рецептов, которые можно приготовить из имеющихся продуктов, а при наличии подключения к сети способна выдавать ещё больший список рецептов блюд, в который входят продукты, которых сейчас дома нет, но их можно приобрести в близлежащих магазинах (согласно их онлайн базам данных), плюс адреса магазинов и текущую стоимость. В случае упрощённой реализации систему можно оснастить сканером специального типа QR-кодов и заносить в неё или удалять купленные продукты руками, а не с помощью RFID-меток.
Можно обеспечить её связь с умным телефоном или домашним планшетом, оснастить программу списком рецептов кухонь разных народов и всеми возможными диетами. В первое время — это будет решением только для платежеспособной элиты, а в дальнейшем, после удешевления – и для всех остальных. Следствием её внедрения станет рост продаж продуктов, нужных для приготовления выбранных блюд, в магазинах около дома, подключивших свои онлайн базы к этой системе, а также большее разнообразие в меню тех, кто не умеет готовить или хочет попробовать чего-то нового.
Конечно, современные вычислительные машины имеют огромную сложность, поэтому содержат ошибки и могут работать неправильно. Классический пример – аппаратная ошибка в процессорах компании Intel: “В середине 1994 года профессор Томас Найсли из Линчбургского колледжа обнаружил, что его новенький компьютер на базе Pentium при делении 4 195 835 на 3 145 727 делает ошибку, система выдаёт 1,333739068 вместо 1,333820449. Следующие четыре месяца он потратил на новые подсчёты и понял, что проблема в самом чипе Pentium”. Аппаратные ошибки в вычислительном блоке или алгоритме функционирования готового устройства, которое не имеет возможности перепрошивки, к сожалению, неустранимы. Этот случай повлиял на индустрию в целом. Сейчас значительная часть программно-аппаратных комплексов оснащены возможностями перепрошивки микропрограмм и обновления системного программного обеспечения.
Имея современную аппаратуру и программы, вы воочию можете взглянуть на новые технологии в действии – например, убедитесь, что линейные размеры модуля ТВ- и FM-тюнера, выпущенного десять лет назад – полпачки сигарет, а его толщина – меньше пяти миллиметров. Попробуйте использовать распознавание речи на платформах Android или Windows. Голосовые запросы к поисковым системам Яндекс и Гугл, средствами браузера Google Chrome или ассистента Yandex Алиса, работают. Плохо видящим или незрячим, может помочь развивающаяся возможность чтения электронных книг с помощью синтеза речи.
Новые поколения медицинских приборов, выпускающиеся с 2017-2018 года, также поддерживают синтез речи – например, современные тонометры уже умеют проговаривать ваше давление, а современные глюкометры могут озвучить уровень сахара в крови.
По сравнению с началом-серединой 1990х персональные компьютеры становятся все миниатюрнее, а некоторые - и дешевле, при одновременном улучшении технических характеристик. Стоимость компьютера на базе процессоров Intel или AMD упала c 1500-3000$ до 300-350$ за ноутбук с предустановленной операционной системой. Смартфон на Android можно приобрести за 80-150$, и, установив на него необходимые программы, фотографировать с его помощью, слушать музыку, разговаривать в сети сотовой связи. Однако, и это не предел! Например, небольших размеров плата Raspberri Pi стоимостью около 20$ позволяет подключить плоский телевизор или монитор и клавиатуру, использовать flash-память вместо накопителя на жестких дисках и, установив операционную систему Linux, редактировать тексты или работать в электронных таблицах.
Одним из самых главных и сложных вопросов в области разработки и внедрения информационно-вычислительных систем и программ является квалификация сотрудников и управленцев. На российском рынке труда можно даже встретить ситуацию, когда техническим специалистам в одной фирме предлагают зарплату всего в 15 тысяч рублей, а в другой – от 3000-4500$ в месяц, при сравнимом круге обязанностей и необходимых навыков - например, в области мобильной или веб-разработки. Как уже было показано выше, эти области являются чрезвычайно сложными в освоении и дорогостоящими, прежде всего из-за многообразия имеющихся подходов и решений. Цена ошибки велика. Поэтому здесь имеет смысл ориентироваться на уровень зарплат, принятый на международном рынке.
Оценить квалификацию руководителя таких компаний и эффективность работы отдела кадров довольно сложно, но можно. В общем случае для этого нужно оценить прибыль и себестоимость продукции, показатели качества, соотношение темпов роста производительности труда и заработной платы, текучесть персонала, надежность работы персонала (вероятность возможных сбоев в работе), равномерность загрузки персонала.
Современные информационные системы предоставят вам необходимый минимум данных об анализируемой фирме – из реестра юридических лиц можно получить сведения об акционерах, размере уставного капитала, о прибыли и сумме налогов, уплаченных компанией в последние годы, о значениях ключевых экономических показателей, наличии судебных дел, где компания выступает в качестве истца или ответчика, её участии в госзакупках и суммах контрактов. Личная беседа с управленцами, менеджерами и клиентами компании (для оценки степени их удовлетворённости продукцией или услугами) поможет расставить точки над i, приняв правильное решение.
Как вы убедились, прочитав эту статью, программирование, разработка и внедрение современных информационно-вычислительных систем является очень непростой, но перспективной и интересной задачей, для решения которой нужно не только много знать, но и постоянно повышать свою квалификацию.
Список литературы:
- Фредерик Брукс “Мифический человеко-месяц или как создаются программные системы. 2е издание”, 2000
- И. Ф. Зайнетдинова “Оценка деятельности работников организации”, 2016, стр. 82-91
- Steven S. Skiena “The Algorithm Design Manual. Second Edition”, 2011
- Gayle Laakmaan McDowell “Cracking the coding interview. 5th Edition”, 2012, стр. 24, 44, 311
- Michael S. Malone “The Intel Trinity”, 2015, стр. 439-449
- Евгений Додолев “Влад Листьев: Поле чудес в стране дураков”, 2014, стр. 385
- Рето Майер “Android 4. Программирование приложений для планшетных компьютеров и смартфонов”, 2014, стр. 730
- Б. Харди, Б. Филлипс, К. Стюарт, К. Марсикано “Android. Программирование для профессионалов”, 2016
- Журнал “Наука и жизнь”, 2011, номер 6, стр. 50
- Форум разработчиков Embarcadero
https://community.idera.com/developer-tools/platforms/f/
android-platform/70942/android-permission-send_sms
- Интернет-энциклопедия Wikipedia, статьи
ZX_Spectrum,
Диалоговый_вычислительный_комплекс,
БК_(семейство_компьютеров),
ЕС_ПЭВМ,
Параллельный_алгоритм
https://ru.wikipedia.org
Свидетельство о публикации №220021301889