Зачем нужно изучать программирование

visibility 168
10 Янв 2023г. в 09:11

Общие слова
Стоит ли тратить время на изучение программирования? Модно ли быть программистом, а самое главное, выгодно ли? Каков статус профессии “программиста” или “разработчика программного обеспечения” в современном обществе? Если в твоей голове крутятся только такие вопросы, то, скорее всего ответ на первый вопрос - “тратить время не стоит”. Дело в том, что в настоящее время есть довольно много более популярных, прибыльных, и, что для некоторых очень важно, “статусных” профессий, но тенденции развития современного общества запросто могут в ближайшем будущем поправить ситуацию. Вот об этом и хотелось бы поговорить в рамках этого опуса. Поговорить ненаучно. Я не являюсь экстрасенсом и не замечал за собой дар пророчества. В родстве ни с Мишелем Нострадамусом, ни с Эдгаром Кейси не состою и не являюсь их поклонником. Я просто хочу поделиться своими мыслями и фантазиями на предмет грядущих изменений, как в социальном, так и в техническом аспекте развития социума и оценить место и роль в нем программиста. Думаю, что имею на это право. А заодно и проведу агитацию “ЗА” ремесло программирования и профессию разработчика программного обеспечения…

Часть 1. Облачные вычисления и новые возможности
Облачные вычисления – довольно модная в наше время тема. Уже появилась первая реклама от передовых отечественных производителей программного обеспечения, не смотря на то, что многие потенциальные пользователи даже не знают, о чем речь. Нужно отдать должное авторам рекламы, они подробно рассказывают о своих услугах у себя на сайте. Суперкомпьютеры или мэйнфреймы – весьма дорогие вещи, и использовать их вычислительные мощности непосредственно могут позволить далеко не все. Идея облачных вычислений – предоставлять пользователям удаленные или облачные ресурсы таким образом, чтобы они не замечали разницы с обычной работой на персональном компьютере. В качестве таких ресурсов может выступать как отдельный мощный сервер, так и целая инфраструктура вычислительных ресурсов с каналами передачи данных, средствами обработки сигналов, информационными хранилищами и т.д. и т.п. Пользователь таких сервисов может иметь различные права: от запуска отдельного приложения, до размещения на предоставленной ему облачной инфраструктуре информационных ресурсов целого предприятия. Разница с классической клиент-серверной архитектурой в том, что компьютер пользователя является лишь источником событий, обусловленных действиями пользователя, а также средством визуализации процесса вычислений, происходящих на выделенных ему облачных ресурсах. Все информация размещается “там” и все приложения запускаются “там” и оперативная память расходуется исключительно “там”. На компьютере пользователя занято ровно столько ресурсов, сколько потребляет “облачный портал”, которым чаще всего становится его интернет-браузер. Определение интернет-браузера, таким образом, смещается от значения “обозреватель” в сторону значения “навигатор”. Стандарт HTML5, до сих пор находящийся в стадии разработки, должен помочь стереть те самые границы между клиентом и сервером и создать у пользователя ощущение, что все, что происходит на удаленном сервере – происходит на его персональном компьютере. Далее немного фантазий и идей на тему применения облачных вычислений в будущем.

Коммерческие сети или перспективы развития b2b
Высокие технологии. Бизнес в облакахКоммерческие предприятия практически всех категорий и размеров предпринимают попытки автоматизировать свои бизнес-процессы, разворачивая на своей территории различные автоматизированные системы. Как минимум, это касается бухгалтерии и финансов. А что нужно для успешного внедрения подобных программных продуктов? В первую очередь нужна адекватная инфраструктура с серверами приложений и баз данных, каналами связи и т.д. Во вторую очередь нужен персонал, который будет способен оказывать техническую поддержку в ходе всего периода эксплуатации такой системы. Если этот персонал в штате организации, то необходимо оплачивать его обучение и периодическое “дообучение”; если за штатом – то отдельно оплачивать их услуги за каждый прецедент. В третьих, нужно обучить непосредственных пользователей. Ну и в четвертых, а точнее в нулевых – нужно оценить экономический эффект от внедрения всего это счастья - мотивировать руководство компании.

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

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

А теперь, собственно, выводы. Этот вид бизнеса только зарождается. Его пионерам потребуются не только инвестиции, современные технологии и реклама, но и большое количество квалифицированных ресурсов – программистов всех категорий, бизнес – аналитиков и архитекторов программного обеспечения, специалистов по качеству программных продуктов, консультантов и т.п. Даже если все основные ресурсы будут приобретаться за рубежом, то для того, чтобы собрать, настроить и запустить весь этот сложный механизм потребуются люди. Программистов среди них должно быть большинство. Ведь и сейчас уже сформировался высокий спрос на специалистов в области бизнес-программирования и настройки сложных ERP систем, таких как 1С, SAP, Oracle и т.п., и судя по всему, спрос и конкуренция среди них только растут.

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

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

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

Еще несколько простых примеров “сложения”. 3D телевидение уже выходит на общедоступный уровень, Skype – одно из самых популярных средств видеосвязи, Игровая приставка Xbox компании Microsoft позволяет использовать уникальный игровой контроллер Kinect для того, чтобы играющий мог общаться с виртуальным миром компьютерной игры исключительно посредством движений своего тела. В развлекательных центрах уже довольно давно доступны сеансы в так называемых 4D и 5D кинотеатрах. Вопрос, что мешает, например, реализовать компьютерную игру в тот же большой теннис, но не с приставкой, а с другим человеком, находящимся за несколько тысяч километров от вас? Правильно, практически ничего, кроме мощного вычислительного ресурса, который в состоянии обрабатывать движения игроков в реальном времени и управлять контроллерами обратной связи, синхронизируя их работу “на местах”. Усилия не одного десятка первоклассных программистов, и довольно состоятельные бизнесмены смогут общаться друг с другом не только сидя перед монитором в режиме видеоконференции, но и с теннисной ракеткой в руке.

В настоящее время социальные сети на пике своей популярности, поскольку удовлетворяют потребности миллионов в общении. А какие виды доступных зрелищ еще существуют? Сериалы! Организация общения с актерами в ходе развития сюжета интерактивного фильма – мечта миллионов домохозяек. Желание общаться с себе подобными в социальных сетях со временем может и поубавиться, а вот общение с любимыми героями сериала, да еще и с возможностью повлиять на ход сюжета может запросто “лишить” большинство семей их прекрасных половинок… Про роль программирования и программистов предлагаю додумать самостоятельно.

Часть 2. Искусственный интеллект и судьбы профессий
Экспертные системы. Фемида в трендеДля начала пару общих тезисов. Базы знаний - это целое направление в информационных технологиях, которое обсуждается, не так широко, как, например, обычные базы данных. Для некоторых база знаний и искусственный интеллект суть одно и то же, а некоторые вообще не слышали такого словосочетания. Тем не менее, многие слышали про слово “статистика”, и, возможно, ассоциируют его с чем-то обыденным из повседневных новостных сводок. Для тех, кто хорошо знаком с математикой и в процессе получения высшего образования посвятил много времени изучению точных наук, термин “статистика” связан с теорией вероятности. Но я обещал не вдаваться в науку. Про статистику нужно понимать одно: статистика тем более достоверная, чем больший объем данных в ходе ее получения было обработано. Анализ статистики и формирование на основе результата такого анализа далеко идущих выводов – одна из основных задач экспертных систем. Иными словами, с использованием базы знаний мы имеем возможность достаточно адекватно оценивать типовые ситуации на основе анализа большого числа разобранных ранее подобных прецедентов. Разработка экспертных систем и программирование, это как возведение здания и строительство. Ну а теперь позволю себе немного пофантазировать на тему применения экспертных систем в ближайшем будущем.

Адвокат, прокурор, судья
Представим, что у нас, глядя на Великобританию, таки ввели прецедентное право. Понимаю, что выражение “глядя на Великобританию” мало ассоциируется с реальностью в России, но, все же, напряжемся и представим. Предположим, что лучшие программисты разработали базу данных, способную хранить подробное описание всех судебных прецедентов и связанных с ними решений суда. Естественно, что все прецеденты четко классифицированы по виду права, типу преступления и т.д. и т.п. Те же программисты разработали экспертную систему, которая воспринимает эту базу данных, как некую базу знаний и способна “прогнозировать” решение суда на основе имеющейся базы прецедентов и подробного описания рассматриваемой ситуации. Согласен, полагаться на решение бездушного калькулятора в ходе вынесения судебного решения, как минимум, не гуманно, но предвзятость и субъективность оценки ситуации будет сведена к минимуму. И тем эффективнее будет работать система, чем больший объем “опыта” буде храниться в ее базе знаний. Профессия адвоката, прокурора, судьи и другие юридические должности не исчезнут, поскольку участие человека в таких процессах всегда будет оставаться необходимым, но их роль будет смещена в сторону экспертов. Судья, выслушав суть дела, аккуратно заполняет электронную анкету и отправляет запрос в базу знаний. Проанализировав выводы автоматизированной экспертной системы, вся троица – адвокат, прокурор и судья, а, возможно, и в сотрудничестве с присяжными, будут делать свои экспертные заключения: является ли рассматриваемый ими случай “обыденным” среднестатистическим или исключением из правил. Именно они будут вносить каждый новый прецедент в базу знаний судебной практики и определять для него соответствующие весовые коэффициенты - я уверен, что в современных экспертных системах без нечеткой логики будет не обойтись. Фемиду можно будет изображать уже не слепой и с весами, а в очках и перед монитором или с ай-фоном в руке. Да, за честное и непредвзятое правосудие надо будет платить… И платить в том числе программистам…

Андроиды
Многим профессиями повезет не так, как юридическим. Многие профессии, как мне кажется, просто исчезнут. Например, страховые агенты и сейчас не далеко ушли в своих действиях от роботов. Как они оценивают размер ущерба? Правильно, исходя из статистики и текущих цен на рынке. Какие варианты возмещения ущерба они предлагают? Правильно – те, которые перечислены в вашем полисе. Ну и т.д. Зачем здесь участие человека? Дать субъективную оценку степени повреждения автомобиля или ущерба здоровью? А может быть предложить решение по спорной ситуации? На последний вопрос дан ответ в предыдущем разделе. Статистика и экспертные системы запросто могут свести на нет важность опыта в подобных профессиях, а именно личный опыт и определяет градацию сотрудников в сфере страхования. Программирование, как профессия, появилось относительно недавно, но исчезнет оно явно одним из последних. Программирование вытесняет своих конкурентов, и началось это уже давно. Сначала появился конвейер, а потом его автоматизировали. Появился кассовый автомат, а потом его сменит гибрид банкомата и сканера. Был кассир – стал турникет. Был пилот – стал автопилот. На очереди, я надеюсь, “авточиновник”, “автогаишник”, “автополицейский” и т.д. Единые экспертные системы и базы знаний против личного опыта отдельно взятого индивида – делайте ставки. Можно заключить, что программист - враг для общества номер один, но так вправе считать, с моей точки зрения, только андроиды... С прогрессом нельзя справиться. А если ты что-то не можешь победить, то постарайся это возглавить - изучай программирование.

Творческие профессии
Вот эта категория профессий или, если угодно, призваний, безусловно, никуда не денется. Хотя, мне кажется, для человека творческого желание обывателей классифицировать его деятельность является раздражающим фактором. Классификации подвержено все: музыка, живопись, литература, кино и прочие виды искусства. Я не берусь предполагать, что какое-либо программное обеспечение сможет в будущем оценивать то или иное произведение искусства. Оценивать как в денежном эквиваленте, так по степени важности его для истории человечества. Вряд ли это произойдет. Но вот в чем я уверен, что они смогут заменить “экспертов в искусстве”. Именно “экспертов”, а не ценителей. Ну, например, захотелось вам классифицировать понравившуюся музыкальную композицию – проиграли ее на специальном плеере, а искусственный интеллект выдал вам ответ: относится ли он к фьюжну или новоорлеанскому джазу. Смысла в таких системах может быть и не много, но проводить подобную классификацию будут способны далеко не самые тривиальные программные продукты, для которых найдутся свои потребители.

Часть 3. Проблемы поиска или что актуально уже сегодня
Яндекс. Сделано в РоссииЭту часть повествования хочу посвятить интернет-поисковикам. Если вы знакомы с SEO (Search Engine Optimization), то также знакомы и с некоторыми принципами, по которым интернет – поисковики, такие как Google и Яндекс осуществляют поиск и ранжирование запрашиваемой пользователем информации. Остановлю свое внимание на Яндекс по нескольким причинам. Во-первых – это самая раскрученная и мощная отечественная интернет поисковая система. Во-вторых – Яндекс всеми доступными способами декларирует, что его алгоритмы поиска граничат по своей гениальности с искусственным интеллектом. В третьих – именно Яндекс публикует принципы работы этих алгоритмов. Публикует кратко, скрывая большое количество скелетов в шкафах, но, тем не менее, в достаточном объеме, чтобы уловить их суть и понять их слабые места. Итак, для того чтобы адекватно отвечать на запросы пользователя вначале нужно сформировать базу возможных ответов - индекс. Индекс представляет собой базу данных результатов сканирования интернет ресурсов поисковыми роботами. Поисковые роботы, известные так же, как поисковые пауки, перемещаются по просторам интернета – мировой паутине и собирают досье на размещенные в этой самой паутине ресурсы. Далее, они оценивают “ценность” каждого ресурса в целом, проводят анализ контента и, на основе результатов этого анализа, добавляют ссылки на страницы сайта в разделы индекса. Выбираемые разделы индекса ассоциированы с теми запросами пользователей, которые наиболее близки тематике сайта в целом и содержимому каждой добавляемой страницы в частности. Или вообще ничего никуда не добавляют, если считают, что сайт не достоин попасть в индекс. Все, казалось бы, просто, если не вдаваться в подробности этапа оценки той самой “ценности” ресурса, а ведь именно результат такой оценки и определяет окончательную позицию сайта в ответе поисковика на запрос пользователя. Страницы в результате поиска сортируются в порядке убывания их релевантности – соответствия содержания страницы смыслу запросу. Релевантность вычисляется Яндекс-ом не только на основе содержимого, но и в соответствии с той самой “ценностью” ресурса. Получаем своего рода “управляемую демократию” или, если угодно, цензуру со стороны отечественного интернет монстра. Слово “ценность” я беру в кавычки, потому как считаю, что иногда это всего лишь ценность ресурса для Яндекса, но не для пользователя. Постараюсь объяснить причину своих сомнений, описав кратко алгоритм оценки сайта поисковой машиной Яндекс.

Шаг 1. Определяем критерии оценки сайта. На этом этапе сотрудники Яндекс, называемые ассесорами, пытаются выделить набор критериев, по которым предстоит “оценивать” сайты. К самым простым таким критериям можно отнести возраст сайта, количество страниц, средний объем страницы, средний объем текстовой информации на странице, соответствие текстового содержимого страницы назначению ресурса и т.д. Для более сложных критериев, таких как дизайн, стиль изложения, достоверность информации или удобство пользовательского интерфейса разрабатываются специальные методики преобразования качественной оценки в цифровую форму, для того, чтобы эти оценки были понятны роботу.

Шаг 2. Обучаем поискового робота. Те же ассесоры отбирают наиболее достойные и наиболее “отстойные” по ИХ мнению ресурсы и “скармливают” их роботу. В процессе этого вычисляются значения критериев, определенных на предыдущем шаге, и получаемому набору значений ставится в соответствие экспертная оценка “ценности”. Таким образом формируется эталонная “база знаний” о понятиях “качества” интернет ресурса, в процессе чего робот познает, что такое хорошо, а что такое плохо...Важно научить робота разделять сайты на категории: для одних сайтов особую роль играет актуальность информации (новостные сайты), для других, к примеру, полнота и научный стиль повествования (информационные сайты), а для третьих - поведение пользователей при их просмотре (развлекательные сайты).

Шаг 3. Робот делает первые шаги. Суть дальнейших действий робота проста. Сталкиваясь с новым ресурсом, он также вычисляет для него набор значений критериев оценки “ценности” и смотрит по своей “базе знаний”, чему этот набор больше соответствует: похож ли сайт больше на “мусор” или ценность его граничит с одним из чудес света. От этого и зависит степень “предвзятости” робота при дальнейшей семантической (смысловой) оценке содержимого сайта. На словах все просто, но на практике машине постоянно помогают люди, корректируя ее оценки путем совершенствования тех самых методик, по которым она (машина) эти оценки получает.

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

А теперь самое главное: ради чего я начал развивать эту тему. Ведь очевидно, что за шагом 3 должен следовать шаг 4 – самообучение робота! Не будут же сотрудники компании самостоятельно постоянно повышать его “квалификацию”. И этот процесс действительно можно смело относить к задачам программирования искусственного интеллекта. Здесь работы для программиста непочатый край, и это порой видно по ответам поисковика на некоторые запросы. Хочу представить вашему вниманию сценарий превращения “белого” в ”черное” при неконтролируемом процессе самообучения. Конечно, в случае интернет поисковика это вряд ли приведет к результатам, красочно представленным авторами фильмов “Терминатор” и “Матрица”, но неадекватное поведение робота будет гарантировано.

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

Будни программистаПодведем промежуточные итоги. Программирование искусственного интеллекта – работа крайне интересная и достаточно высоко оплачиваемая (мнение автора, что так должно быть). Что может быть лучше, когда работа приносит и моральное и материальное удовлетворение? Возможно, Яндекс в скором времени, консолидировав все свои IT ресурсы, создаст по настоящему гениальный поисковой алгоритм, а, возможно, появится достойный конкурент, ведь поиск в интернете и реклама неразлучны, а реклама – это очень большие деньги. В любом случае, хорошие программисты без достойной работы не останутся.

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

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



Оставить комментарий

Ваше имя::


Комментарий::




Ничего не найдено