Файл: История развития программирования в России.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 25.04.2023

Просмотров: 64

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Компании, работающие на внутреннем рынке, в основном позиционируются как системные интеграторы, обслуживающие крупные предприятия в платежеспособных отраслях. Есть еще целый ряд компаний, ориентирующихся на мелкий бизнес и индивидуальных покупателей, хотя компьютерное пиратство изрядно подрывает этот рынок. Наконец, многие ориентируются на международный рынок, поскольку заметная ценовая разница по сравнению с западными странами и изобилие талантливых программистов дают России уникальную возможность в области глобального (офшорного) программирования. Эту нишу заполнили сотни компаний, ориентированных на предоставление услуг по аутсорсингу. По оценке компании McKinsey, в 1999 году в российском офшорном программировании было занято от 5 до 8 тыс. профессиональных программистов, а общий объем этого рынка составлял от 60 до 100 млн. долл. при темпах роста от 40 до 60% в год [4]. Правда, российские источники считают, что приведенные цифры сильно занижены. Так, по оценкам компании Market-Visio/EDC, общий доход российского рынка офшорного программирования в 2001 году составил 194 млн. долл. при темпах роста 227% в год.

Международный рынок аутсорсинга отличается жесткой конкуренцией, здесь есть свои общепризнанные лидеры — Индия и Ирландия [7, 8]. В 2000-2001 годах Индия заработала на этом рынке 6,3 млрд. долл. По количественным показателям Россия сегодня отдаленно напоминает Индию в 1990 году.

В последние два-три года компании, специализирующиеся на глобальном программировании стали объединяться в ассоциации, такие, как «Форт-Росс» в Петербурге и «СибАкадемСофт» в Сибири (в процессе создания аналогичная ассоциация в Москве, которая, однако, ничем фактически полезным пока не отличилась). Основной задачей этих ассоциаций стало лоббирование интересов компьютерной индустрии в российском правительстве и маркетинг возможностей отечественных компаний на Западе путем, например, проведения международных конференций типа Software Outrsourcing Summit

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

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

Motorola открыла лабораторию с небольшой группой программистов в Петербурге в 1993 году, сейчас в ней работает более 200 программистов;


Sun Microsystems начала работать в России более 10 лет назад; на сегодняшний день в Москве и Петербурге работают более 300 сотрудников, принимающих участие в разработке новых продуктов и сопровождении существующих;

Intel открыла свою лабораторию в Нижнем Новгороде в 1993 году; сегодня в этом подразделении работает около 200 программистов, планируется увеличить их число до 500 [9];

SAP при поддержке компании Siemens Business Services развернула в Петербурге подразделение из 40 программистов, численность которых планируется довести до 100.

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

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

В Москве сосредоточены основные денежные потоки, а также менеджмент страны и практически всех крупных российских компаний, поэтому многие здешние компьютерные компании ориентированы на внутренний рынок (хотя есть и исключения, например, Luxoft, VDI и Auriga).

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

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

Практически все программные компании в России начинались с небольшой группы квалифицированных программистов. Чаще всего, на этом этапе вопросы качества вообще специально не рассматривались — компании в основном полагались на профессионализм отдельных сотрудников. Однако по мере роста возникали все новые и новые проблемы, связанные с качеством программных продуктов и процессов. Поэтому сегодня большинство российских компаний (особенно работающих с западными заказчиками) понимают важность обеспечения качества. За последние несколько лет рынок услуг, связанных с качеством, значительно вырос. Еще три-четыре года назад ни в одной российской компании не было внутренней программы улучшения качества, а сегодня десятки компаний уже получили сертификат соответствия стандарту ISO 9001, многие планируют сертификацию на следующие несколько лет.


Работы по обеспечению качества в России чаще всего основываются на ISO 9001, который еще в советские времена был положен в основу национального стандарта ГОСТ ИСО Р 9001. На сегодняшний день ISO 9001 по-прежнему остается наиболее доступным из всех программных стандартов: существует множество сертифицирующих органов (как национальных, так и международных) и множество курсов по ISO 9001. Прочие стандарты менее популярны и прежде всего по причине их недостаточной распространенности и высокой стоимости сертификации. Многие российские компании планируют сертификацию по стандарту СММ, однако еще ни одна из них еще не достигла этого; среди подразделений западных компаний необходимо отметить лабораторию Motorola в Петербурге, достигшую пятого уровня СММ.

Развитие российской индустрии программирования затруднено целым рядом проблем. Самая большая трудность — это компьютерное пиратство. 88% используемых в России программ являются нелицензионными (в среднем по миру — 36%). Только Вьетнам, Китай и ряд стран бывшего СССР имеют еще худшие показатели по этой проблеме. Некоторые компании пытаются избежать столкновения с этой проблемой путем ориентации создаваемых продуктов на западный рынок. Этот подход (известный также как «скандинавская» или «израильская» модель) представляется очень многообещающей, так как из-за разницы в уровне цен на исходном и целевом рынке финансовый результат может многократно превышать затраты. Единственная проблема заключается в том, что требуются значительные начальные финансовые вложения, отсутствующие у большинства российских компаний. Финансовый рынок в России также недостаточно развит для того, чтобы поддерживать подобные проекты. Поэтому, несмотря на целый ряд примеров успешной реализации подобной модели (например, антивирусная система AVP или графические средства, разработанные компанией ParaGraph и приобретенные впоследствии Silicon Graphics), все еще неясно, станет ли эта модель массовой в России.

Еще одна проблема, затрагивающая все отрасли России, — неразвитая инфраструктура. Почта, транспорт, муниципальные услуги либо ненадежны, либо просто плохи в большинстве регионов, может быть, за исключением отдельных крупных городов. Естественно, это затрудняет работу всех предприятий, зависящих от инфраструктуры. Например, расцвет электронной коммерции во всем мире практически не затронул России: очень мало людей владеют и пользуются кредитными картами, лишь 6,3% всего населения имеют доступ к Сети, и, наконец, почта крайне ненадежна. Только с телефонизацией дела обстоят относительно хорошо — в России насчитывается 21,3 телефонных аппарата на 100 жителей, что, конечно, значительно хуже, чем 59,5 для промышленно развитых стран, но все-таки лучше, чем среднемировое значение 15,1.


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

Глава 2. Характеристика задачи и описание алгоритма задачи

2.1. Общая характеристика задачи

Классическая задача по программированию, если говорить об её представлении в автоматизированных тестирующих системах, состоит из нескольких компонентов:

Непосредственно условие задачи в текстовом виде;

Набор входных и выходных тестов (файлов). При этом, тесты могут разделяться на тесты предварительного и полного тестирования.

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

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

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

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

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

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


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

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

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

Защита системы от вредоносных решений обычно выполняется в три этапа.

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

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

Третий этап является самым важным и сложным в реализации, так как он напрямую зависит от операционной системы. Программа-решение участника должно запускаться в специальном «контейнере», который ограничен одной единственной директорией исполнения. В Linux-системах для реализации такого контейнера используется утилита chroot, в Windows-системах необходимо создавать специальные Job- объекты, внутри которых есть возможность запускать процессы с наложением ограничений.