`

СПЕЦІАЛЬНІ
ПАРТНЕРИ
ПРОЕКТУ

Чи використовує ваша компанія ChatGPT в роботі?

BEST CIO

Определение наиболее профессиональных ИТ-управленцев, лидеров и экспертов в своих отраслях

Человек года

Кто внес наибольший вклад в развитие украинского ИТ-рынка.

Продукт года

Награды «Продукт года» еженедельника «Компьютерное обозрение» за наиболее выдающиеся ИТ-товары

 

С ног на голову… и наоборот

Статья опубликована в №33 (650) от 2 сентября

+33
голоса

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

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

Кто самый главный

Кто главнее в «тандеме» человек–компьютер? Кто должен пожертвовать своим временем для того, чтобы сэкономить ресурсы другого элемента данного симбиоза? И сегодня, и тридцать лет назад специалисты отвечали на этот вопрос не задумываясь. Вот только ответы были разные.

Нетрудно предугадать реакцию современного программиста или пользователя, на глаза которому попадется следующий фрагмент текста: «В системе ... неоправданно отводится 26 байт для резидентной процедуры преобразования даты, чтобы правильно обрабатывать 31 декабря в високосном году (когда это 366-й день). Это можно было оставить оператору». А ведь писал не новичок. Автор процитированных строк – Фредерик П. Брукс, чья книга «Мифический человеко-месяц, или Как создаются программные системы» уже более тридцати лет пользуется неизменным спросом.

Как-то давным-давно некий программист писал программу на языке ассемблера и вдруг заметил, что число, используемое им в качестве операнда, удивительно похоже на код команды. Присмотревшись внимательно, он понял, что есть возможность для головоломного трюка. В результате получился программный код, при выполнении которого одно из машинных слов читалось дважды. В первый раз его содержимое воспринималось как команда, а во второй – после уменьшения счетчика инструкций на двойку (в компьютерах архитектуры DEC это можно было сделать без затраты дополнительной памяти) – уже как операнд. Результатом такого фокуса стала экономия целых двух байтов! (История умалчивает, какими словами поносил автора программы тот, кому пришлось в дальнейшем ее сопровождать.)

А еще традиционной была практика представления года двумя цифрами вместо четырех (откуда и возникла проблема 2000 г., для решения которой потребовалось астрономическое количество человеко-дней).

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

«Ну и что же, – ответит читатель, – все закономерно. За тридцать лет закон Мура уменьшил стоимость памяти до пренебрежимо малой величины. Неудивительно, что о ее экономии больше никто не заботится». Это так, но примечательно другое: простое снижение цены запоминающих устройств привело к коренному изменению принципов взаимодействия человека с компьютером. По сути, все перевернулось на 180°. Теперь для того, чтобы избавить пользователя от необходимости совершать лишний щелчок мышью и сэкономить ему считаные секунды, тратится объем ресурсов, который еще не так давно показался бы попросту невероятным. В системе человек–компьютер главенствующее место занял человек, что, конечно же, правильно.

А ведь Гегель был прав

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

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

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

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

Организовывать распределенные вычисления по сети? Разумеется, это возможно и делается не только на профессиональном, но и на любительском уровне. Многим известны примеры масштабных вычислений, при которых пользователи Сети предоставляют часть своих компьютерных ресурсов для совместного решения одной проблемы. В частности, таким образом было найдено очередное простое число. Однако на промышленном уровне подобный подход недопустим. Ответ надо получить в намеченный срок, да и работать удобнее, если вычислительные мощности сконцентрированы в одном месте. Как правило, в подобных случаях применяются вычислительные кластеры – набор компьютеров, связанных высокоскоростной локальной сетью, под управлением специального ПО, обеспечивающего их работу как одной большой машины. Кто оспорит, что такой кластер – это суперкомпьютер нового поколения? Спираль развития сделала полный виток и вышла на более высокий уровень, поскольку сегодня каждый элемент кластера гораздо мощнее, чем самый совершенный суперкомпьютер недалекого прошлого.

Кто может программировать

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

Еще шестьдесят лет назад профессиональных программистов можно было пересчитать, что называется, по пальцам. Да и откуда им было бы взяться. Во-первых, тогда в мире существовал всего один компьютер, во-вторых, программирование не изучали в вузах – в июне 1948 г. профессор Том Килбум впервые в истории опробовал компьютерную программу. Можно себе лишь представить, как работали те немногие, кто был допущен к уникальному на то время оборудованию. Устройство ввода – пульт, формат представления данных – двоичный, язык программирования – машинный код. А задачи, которые приходилось им решать, никак нельзя назвать тривиальными – в основном это были дифференциальные уравнения в частных производных. Какими качествами должен был обладать человек, способный понять задачу, поставленную физиком, написать программу, ввести в память, запустить, отладить и интерпретировать результаты – и все это при полном отсутствии каких бы то ни было программных «помощников»? Одним словом, в те далекие времена программистом мог работать лишь тот, кто обладал совершенно уникальными знаниями и навыками, своего рода супермен от науки.

Первым шагом на пути к современным средствам разработки программ было создание языка FORTRAN (мнемоническое обозначение машинных команд вряд ли стоит принимать во внимание, процесс программирования этим не очень упрощался). Наконец, аппаратные средства оказались хотя бы частично скрытыми от разработчика. Затем инструментальные средства начали нарастать как снежный ком, и сегодня результаты данного процесса видят даже непрофессионалы. Звучит смешно, но появление интегрированных сред разработки привело к тому, что простейшую программу может «слепить» даже полный невежда, не имеющий ни малейшего понятия о программировании. (Правда, когда подобный «программист» берется решать более или менее сложную задачу, становится уже грустно.) Таким образом, планка серьезно понизилась. То, что раньше было делом избранных, сейчас стало доступно каждому. Вот вам еще половина витка гегелевской спирали.

А может ли эта ситуация измениться? Какое событие способно вдруг ни с того ни с сего усложнить процесс программирования на много порядков, лишив разработчика привычных инструментальных средств? На самом деле оно уже произошло! Была сформулирована идея квантовых вычислений. Квантовый компьютер – это устройство, использующее в процессе своей работы квантово-механические эффекты. Если базовый элемент памяти «классического» компьютера – бит – может находиться лишь в одном из двух состояний (0 либо 1), то базовый элемент квантового компьютера – кубит – пребывает сразу в обоих. То есть система, состоящая из n кубитов может одновременно иметь 2n состояний, а это позволяет выполнять параллельно большие объемы вычислений. Подробное описание квантового компьютера выходит за рамки данной статьи, к тому же эта тема уже освещалась на страницах «Компьютерного Обозрения» (ko-online.com.ua/12555, ko-online.com.ua/27644), однако даже из приведенной здесь информации понятно, что привычные всем инструментальные средства абсолютно неприменимы к этому принципиально новому классу устройств. Снова приходится решать проблему ввода информации, а задача интерпретации выходных данных многократно усложняется: ведь квантовый компьютер находится одновременно во всех возможных состояниях, и надо принять меры для того, чтобы выбрать нужный результат. Теперь программист должен быть физиком или, по крайней мере, иметь глубокие знания о квантово-механических эффектах, иначе он не справится с этой сложнейшей работой.

Одним словом, можно считать, что спираль развития в данной сфере уже завершила свой первый виток: программы вновь приходится создавать «голыми руками», но на этот раз в распоряжении имеется устройство, способное решить задачи, недоступные для обычных вычислительных систем. (Построенные к настоящему времени квантовые компьютеры еще недостаточно совершенны, чтобы эффективно использоваться на практике, но программы для них уже создаются. Что делать, такова природа программистов, ведь писала же Ада Лавлейс программы для машины Беббиджа, существующей только на бумаге.)

А что дальше? Казалось бы, зная закон, открытый Гегелем, нетрудно представить себе дальнейшее развитие вычислительных систем. Действительно, если от суперкомпьютеров придется снова перейти к настольным системам, можно ожидать появления настольных кластеров. Почти очевидно, что пусть не в ближайшем, а в несколько отдаленном будущем появятся системы программирования для квантовых компьютеров. Однако не станем торопиться с выводами. Реальная жизнь обычно куда интереснее и сложнее теории, пусть даже предложенной гением.

Ready, set, buy! Посібник для початківців - як придбати Copilot для Microsoft 365

+33
голоса

Напечатать Отправить другу

Читайте также

Хорошая статья и правильные мысли!

 

Ukraine

 

  •  Home  •  Ринок  •  IТ-директор  •  CloudComputing  •  Hard  •  Soft  •  Мережі  •  Безпека  •  Наука  •  IoT