Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

История развития программирования в России .

Содержание:

Введение

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

Объектом исследования в курсовой работе являются направления развития компьютерных технологий в России.

Предмет исследования – история развития программирования в России.

Целью исследования в курсовой работе является углубленное изучение истории развития программирования в России.

Для достижения поставленной цели сформулированы следующие задачи:

  1. изучить теоретические основы развития программирования;
  2. рассмотреть вклад отдельных ученых в развитие программирования в России.

Методологической основой исследования являются учебная и методическая литература по программированию, статьи в периодической печати и Интернет-ресурсы.

ГЛАВА 1.Исторические аспекты развития программирования

1.1 Разработка языков программирования и компиляторов в СССР

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

Основоположником информатики в СССР, в частности раздела автоматизации программирования, является Алексей Андреевич Ляпунов, первым предложивший рассматривать программу как последовательность чередующихся этапов, на которых выполняется некая обработка данных. Этап Ляпунов предложил назвать оператором, а схемой счета — совокупность операторов и логических условий. Схема и совокупность спецификаций каждого оператора — это программа. Взгляд на программу в таком ключе стал революционным и сразу лег в основу первых трансляторов (компиляторов) или программирующих программ, как их тогда называли.
Первым в мире транслятором языка высокого уровня является ПП (Программирующая Программа), он же ПП-1, успешно испытанный в 1954 году. Транслятор ПП-2 (1955 год, 4 в мире транслятор) уже был оптимизирующим и содержал собственный загрузчик и отладчик, библиотеку стандартных процедур.

Первыми программами, принадлежащими системному программному обеспечению, были трансляторы — ассемблеры и автокоды на Западе, программирующие программы (ПП) у нас.

Сотрудники отдела программирования исследовали реализуемость операторных схем и определили основные типы операторов, соответствующие решаемым задачам: Ai — арифметические операторы, Pi — логические операторы, управляющие счетом, Fi — операторы переадресации, позволяющие переходить к следующему значению индекса.

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

Типы операторов соответствовали подавляющему большинству решаемых тогда задач, а именно — вычислительным задачам. Выделялись арифметические операторы Аi, ведущие вычисление по формулам, логические операторы Рi, осуществляющие управление счетом, операторы переадресации Fi, позволяющие переходить к следующему значению индекса (и обратные им операторы восстановления), все же неарифметические вычисления объединялись в так называемые нестандартные операторы Hi, для которых спецификацией был их машинный код. Специального подъязыка описания данных, зачатки которого появились в более поздних ФОРТРАНе и Алголе, не существовало.

Программирующая программа ПП-1 являлась одним из первых в мировой практике трансляторов и, по-видимому, имела самый высокий уровень входного языка.

Программирующая программа ПП-2, была создана под руководством М. Р.Шура-Буры в 1955 году для машины Стрела-1, основывалась на ПП-1 как прототипе. В ПП-2 были усовершенствованы алгоритмы трансляции и было уделено заметное внимание оптимизации программ — экономии выражений, оптимальному сочетанию переадресации и восстановления (иначе говоря, наилучшей реализации вычисления индексных выражений), оптимальному отведению памяти для так называемых рабочих ячеек. Это был, по-видимому, первый оптимизирующий транслятор.

https://habrastorage.org/files/c2d/77d/8db/c2d77d8db42a4d53bb42315cc0fd7d1e.png

Рис.1. Принцип взаимодействия узлов ЭВМ

ПП для БЭСМ развивала входной язык программирующих программ. Она объединяла схему и спецификацию операторов в одном тексте, был введен первый структурный оператор — оператор цикла (соответствующий современным циклам с параметром).

ПП-2 послужила идейной основой двух проектов — ПП для Стрелы 4 и ПП для Стрелы 7. Первая из них представляла собой зачаток настоящей системы программирования: помимо собственно транслятора она содержала систему сборки модулей и некоторые средства отладки. Транслятор получал такие фрагменты объектной программы, которые потом назовут модулями, а система сборки создавала программу из оттранслированных модулей и библиотечных программ.

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

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

В конце пятидесятых прошлого столетия развивался и подход к автоматизации программирования с помощью библиотек стандартных программ. Были разработаны — стандартная составляющая программа — ССП ( осуществляла статическую загрузку и связывание стандартных программ из достаточно обширной библиотеки), интерпретирующая система (ИС), ИС-2 уже реализовывала некоторые функции будущих операционных систем, осуществляя динамическое связывание, подкачку и смену используемых подпрограмм, причем все это делалось с небольшими накладными расходами и весьма скромными запросами на память. Высокая эффективность ИС-2 и хорошо продуманный интерфейс с основной программой сделали ее (как и положено операционной системе) неотъемлемой частью комплекта поставки ЭВМ.

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

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


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

1.2 Алгол

А. А. Берс, А. Ф. Рар «Становление Новосибирской школы программирования. Мозаика воспоминаний»:

Что на меня в Алголе 68 произвело наибольшее впечатление? Во-первых, это был первый язык, в котором был очень богатый список средств описания типов, и можно очень четко и формально описать структуры с вариантами и скомбинировать с массивами и т.д., и т.п., и все что по этому поводу проделывалось. Во-вторых, там был прекрасный механизм приведений, который позволял достаточно глубоко пользоваться описанными типами для того, чтоб перебрасывать по ним значения. И конечно, сама двухэтажная грамматика. И тут уже у меня возникло желание воспользоваться этим для того, чтобы делать хороший русский перевод.

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

Как любил говаривать ван Вейнгаарден: «не пишите такие программы» и «ёсли у вас есть язык, то на нем надо уметь выражаться».

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

https://habrastorage.org/files/c3b/856/54e/c3b85654ecee48dfb99054d001709a16.jpeg

Рис. 2 – ГОСТ язык программирования АЛГОЛ

Сейчас в объектных языках всё очень хорошо: вы должны с помощью этого значения привести объект в определенное состояние. Приведя, вы можете из этого состояния вычитывать это значение столько раз, сколько вам надо, и получите, что оно обозначало. То есть вот эта композитная программа очень красиво позволяла писать синтаксические выражения, очень связного характера. И поскольку языки программирования всегда тащили за собой английский жаргон, причем не язык, а именно жаргон… Тут еще одна вещь была, на мой взгляд, существенной — это работа над созданием русских национальных вариантов Алгола 68. Ершов и я, мы стремились к тому, чтобы все можно написать и без латинских букв, чтобы программы можно было бы практически читать вслух, — вещь недоступная для предыдущих языков. А синтаксис вообще удалось перевести как математический стих — все правила сохранили, и мнемонический смысл, и точную форму.

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

Единственный отечественный язык программирования, получивший общемировую известность, это язык Рефал. Однако распространённость этого языка мала. Первая версия Рефала была создана в 1966 году Валентином Турчиным в качестве метаязыка для описания семантики других языков. Впоследствии, в результате появления достаточно эффективных реализаций на ЭВМ, он стал находить практическое использование в качестве языка программирования. В настоящее время основными диалектами языка являются Рефал-2 (1970-е), Рефал-5 (1985) и Рефал+ (1990), отличающиеся друг от друга деталями синтаксиса и набором дополнительных средств, расширяющих первоначальный вариант. 

1.3 Язык программирования Рефал

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

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

Рефал — язык бестиповый. В его основе лежит понятие объектного выражения как универсального типа данных. Все аргументы и результаты всех функций являются объектными выражениями.

Объектное выражение определяется таким образом, что операция конкатенации делается неявной, скрытой. Точнее сказать, что конкатенация на уровне значений выражается конкатенацией на уровне имен. Это свойство вытекает из основной цели Рефала как метаязыка для описания различных языковых объектов. Оно придает особую выразительную силу и остальным средствам языка, таким как образцы и результатные выражения.

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

Язык определения функций Рефала, основанный на понятиях образца и результатного выражения чрезвычайно прост и компактен. Его минимальная версия получила название Базисный Рефал. Диалект Базисного рефала под названием Рефал-2 был реализован на многих типах отечественных ЭВМ и долгое время играл роль де-факто стандарта языка Рефал.

Язык Рефал-5 содержит Базисный Рефал в качестве подмножества. Расширения языка Рефал-5 качественно меняют стиль программирования.

В настоящее время существует две реализации языка Рефал-5: одна выполнена Д. Турчиным, другая — Н. Кондратьевым и Арк. Климовым. Обе имеют практически один и тот же входной язык, но отличаются рядом особенностей реализации. Вторая известна также под названием Рефал-6, однако следует помнить, что это название не языка, а его реализации.

Был также разработан язык Рефал Плюс, в отличии от Рефал-5 доведенный до концептуальной полноты (расширение рефала средствами обработки неуспехов). 

1997 год. Рефал прочно занимает свою нишу, не опасаясь никаких конкурентов. Например, он успешно используется физиками Обнинска, многими математическими центрами в России. Одно из основных применений Рефал – разработка трансляторов с языков программирования, когда сам Рефал используется как метаязык. В ИПМ на нем был очень быстро написан высокоэффективный транслятор Cern Fortran.

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

1.4 Язык программирования Алмо

Язык системного программирования (машинно-ориентированный язык), задумывался как язык-посредник при трансляции с различных языков. Для каждой аппаратной платформы достаточно было написать транслятор Алмо — и появлялась возможность работать с множеством языков программирования, которые имели трансляцию в Алмо. Были созданы реализации языка для основных отечественных машин того времени (М-20, БЭСМ-6, Минск 2, Урал 11) и трансляторы с Алгола-60 и ФОРТРАНа в Алмо, причем все трансляторы также были написаны на Алмо и “раскручены” на всех этих машинах. Язык Алмо имел в своей основе некоторую абстрактную машину, отражавшую особенность существовавшего тогда класса машин, и в этом отношении Алмо-подход предвосхищал появившиеся позже Р-код, М-код и прочие подобные подходы. Машинная ориентированность явно прослеживалась в языке — регистровые объекты, постфиксная запись выражений, оперирование с битами машинных слов и т.д.

ГЛАВА 2. Развитие новосибирской школы программирования

2.1 Развитие новосибирской школы программирования на рубеже XX – XXI века

В 1990-е гг. фундаментальные исследования И.В. Поттосина вылились в разработку принципов построения окружения программирования. Они сочетали широкий набор инструментов конструирования программ с участием глубоких семантических преобразований и поддержкой структурной разработки. Эти принципы решали проблемы интеграции разнообразных инструментов в развитых окружениях программирования, автоматизированного преобразования программ для достижения качества. Его идеология дисциплинированного программирования содержала подходы, позволяющие повышать надежность создаваемого ПО.

Работы И.В. Поттосина и его учеников сыграли большую роль в развитии международного сотрудничества и популяризации в нашей стране языков и систем профессора Никлауса Вирта. Игорь Васильевич являлся научным руководителем Дмитрия Кузнецова, одного из разработчиков архитектуры рабочей станции «Кронос», ориентированной на языки высокого уровня Си, Паскаль, Модула-2. Предполагалось, что на базе процессора «Кронос» будет создана отечественная бортовая вычислительная машина. По экономическим причинам «Кронос» так и остался на стадии опытного образца, но эта разработка послужила основой для использования Модула-2 в создании программного обеспечения БЦВМ. В конце 1980-х гг. язык Модула-2, созданный Н. Виртом, был принят Советом Министров СССР в качестве базового языка разработки бортового программного обеспечения для спутников. Тогда же был запущен проект СОКРАТ по разработке инструментальной системы поддержки программирования встроенных систем. Тем самым началось тесное сотрудничество И.В. Поттосина и его программистов с Красноярским научно-производственным объединением прикладной механики им. М.Ф. Ре-шетнева (НПО ПМ). Сотрудничество ИСИ СО РАН и НПО ПМ продолжается по сей день. Программное обеспечение для спутников, созданных в Красноярске-26, разрабатывалось на Модуле-2, что обеспечивало его исключительную надежность. Продолжением этих работ являлись исследования в области анализа программ и методологии программирования. И.В. Поттосин предложил принципы построения окружений программирования, необходимые при создании программных систем с повышенными требованиями к их эффективности и надежности и реализованные в экспериментальном окружении программирования для встроенных ЭВМ.

И.В. Поттосин был крупным организатором науки. Практически с самого начала своей деятельности он являлся бессменным руководителем научных подразделений ВЦ СО АН и КБ СП (Конструкторского бюро системного программирования). Когда не стало Андрея Петровича Ершова, Игорь Васильевич как его преемник и символ продолжения духа и традиций Отдела, Сибирской школы программирования, сделал много для сохранения памяти о своем выдающемся друге и коллеге. Им инициированы исследования по истории программирования, он написал ряд биографических очерков о научном вкладе академика А.П. Ершова, организовал ряд конференций его памяти [9–11]. Более десяти лет И.В. Поттосин руководил Рабочей группой по языкам и системам программирования в Комиссии по системному математическому обеспечению, которую возглавлял А.П. Ершов. Им составлен обзор российских академических исследований и разработок в области трансляции, находившихся в сфере координации руководимой им рабочей группы [12].

В 1990 г. на базе ряда отделов ВЦ был создан Институт систем информатики СО АН. Во вновь созданном Институте И.В. Поттосин стал заместителем директора по научной работе, а в тяжелые для всей отечественной науки 1990-е гг. принял на себя нелегкие обязанности директора (1991–1998). Уже в самом начале своего директорства И.В. Поттосин столкнулся с серьезными проблемами организационного плана. Экономическая ситуация, сложившаяся в России в первое десятилетие перестройки, отразилась и на коллективе ИСИ СО РАН. Уже в октябре 1992 г. вышло Постановление Президиума РАН с рекомендацией Объединенным ученым советам ликвидировать ряд институтов СО РАН и передать часть сотрудников в другие институты5. В этот список попал и ИСИ СО РАН. 16 октября 1992 г. ученый совет ИСИ высказал несогласие с таким решением. В дальнейшем сотрудники института, его руководство предприняли ряд действий, направленных на активизацию общественного мнения, получение поддержки коллег из других научных центров в пользу сохранения ИСИ СО РАН.

Ко времени появления рекомендаций Президиума РАН в штате Института насчитывалось около 190 человек, из них 95 научных сотрудников, в том числе 1 член-корреспондент, 4 доктора наук, 22 кандидата наук (3 профессора и 6 доцентов). За два с половиной года существования ИСИ, созданного в апреле 1990 г., его сотрудники выполнили большой объем научно-исследовательских и экспериментальных работ. В активе Института было 4 монографии, свыше 80 публикаций в центральных российских и зарубежных изданиях. На базе Института проведено 3 международных конференции, готовилась очередная — по формальным методам в программировании, намеченная на 1993 г. Силами сотрудников Института в Сибирском отделении издательства «Наука» выпускался сборник «Системная информатика» [7;12].

За сохранение ИСИ СО РАН высказались отечественные и зарубежные коллеги: Научный совет по программированию Отделения информатики, вычислительной техники и автоматизации РАН, НИИ системных исследований РАН, Москва (директор профессор В.Б. Бетелин), НПО прикладной механики, Красноярск (генеральный конструктор академик М.Ф. Решетнев), Научный совет РАН по проблеме «Искусственный интеллект» (академик Г.С. Поспелов), чл.-корр. С.С. Лавров (Институт прикладной астрономии РАН, Ленинград), М. Брой (Технический университет Мюнхена), М. Нива (Институт Блеза Паскаля, Париж), Э. Тыугу (Королевский институт технологий, Стокгольм), М. Синцов (Католический университет Лувен, Бельгия) и многие другие. Профессор Ф. Жорран из Университета Гренобля писал, что «будет большой ошибкой свести научно-исследовательскую работу ИСИ до функций обслуживания программистов для вычислительных задач». В конце ноября в Институте работала комиссия по проверке научной деятельности. Она пришла к заключению об актуальности и высоком качестве научных исследований в ИСИ СО РАН. Институт систем информатики был сохранен в составе Сибирского отделения РАН.

В условиях невнятной государственной политики в области науки и вычислительной техники и отсутствия адекватного финансирования Институту и его директору пришлось самостоятельно определять приоритеты в исследованиях и учитывать международное разделение труда в сфере информатики. Задачей директора в первую очередь было сохранение кадрового потенциала. В Институт приходили молодые специалисты из НГУ, но отток кадров был значительным. Сотрудники ИСИ уезжали работать за рубеж, находили более высокооплачиваемую работу внутри страны. В 1997 г. коллектив сократился практически на четверть, до 154 чел., а численность научных сотрудников — до 70 чел.

В 1997 г. И.В. Поттосин как директор Института и председатель его ученого совета сыграл определяющую роль в поисках перспективных направлений работы института. Теоретические и методологические основы создания систем информатики, в том числе теоретические основания информатики; методы и инструменты построения программ повышенной надежности и эффективности; методы и системы искусственного интеллекта; системное и прикладное программное обеспечение вычислительных машин, систем, сетей и комплексов, на многие годы вошли в программу работы ИСИ СО РАН.

И.В. Поттосин активно участвовал в воспитании научной смены. С 1968 г. он прошел ступени от ассистента до профессора, заведующего кафедрой программирования механико-математического факультета Новосибирского университета. Эта кафедра была организована после долгой борьбы в 1993 г., и И.В. Поттосин, который к этому моменту защитил докторскую диссертацию, с полным основанием стал ее первым руководителем. В течение многих лет он читал свой курс программирования и вел спецкурс по методам трансляции. Теории и практике системного программирования Игорь Васильевич посвятил десятки статей, он также подготовил несколько вузовских учебников в соавторстве со своими коллегами М.М. Бежановой и Л.А. Москвиной [13; 14]. Среди его учеников — доктора и кандидаты наук, сотни выпускников Новосибирского университета и Высшего колледжа информатики, становлению которого и совершенствованию преподавания информатики в котором он содействовал. Игорь Васильевич в свое время поддержал инициативу сотрудников ИСИ по организации олимпиады по программированию. Она проводится с 1999 г. как Открытая Всесибирская студенческая олимпиада по программированию, а с 2001 г. носит его имя. Теперь в ИСИ и НГУ на постоянной основе действуют организационные структуры, обеспечивающие ее подготовку и проведение: оргкомитет, жюри олимпиады, тренинг-классы для участников.

2.2 Система программирования Сигма

Г. Г. Степанов:

… название языка — Сигма — неожиданно очень удачно стало соответствовать сути разработанного языка, которую можно описать как «Символьный Генератор и Макроассемблер». 
Всего в истории языка Сигма было три его реализации: на М-20, на БЭСМ-б и на самом языке Сигма. Первая, конечно самая памятная, т.к. это была мол первая работа в области системного программирования (да и вообще первая работа). Вторая была выполнена на лучшей, по моему мнению, отечественной машине БЭСМ-6. Третья опиралась на вторую, была раскручена сама через себя и могла генерировать программы как для БЭСМ-6, так и для СМ-4 и ЕС ЭВМ.

Сигма — СИмвольный Генератор и МАкроассемблер — обладал двумя важными и в то время новыми особенностями. Синтаксически ограничиваемый макросами, ондопускал генеральную линию создания программ — подстановку описанных макросов. Язык содержал средства формального описания конкретной архитектуры: была разработана система параметров, в терминах которой фиксировалось представление языка для конкретной ЭВМ. Таким образом, общая Сигма-программа вместе с описанием архитектуры ЭВМ транслировалась на данную ЭВМ. Параметрами архитектуры были длина слова, представление значений типов в машинном слове и т.п., так и правила заполнения шаблонов машинных команд.

Элементарный Преобразователь СИмвоЛьнОй иНформации — считался исключительно простым языком. Переменные в нем не имели типа и не описывались, идентификатор переменной просто обозначал содержимое ячейки, отведенной для этой переменной. Константы в языке могли быть либо натуральными числами, либо восьмеричными числами, либо — наборами двоичных цифр. Выражения были только двуместные; арифметические выражения обращались со значениями операндов, как с представлениями натуральных чисел; были еще поразрядные операции, операции сдвига и операция извлечения адреса данного объекта (позволяющая программисту управлять до некоторой степени распределением памяти). Объектами языка были так называемые списки (упакованные массивы) и слова (умещающиеся в одном машинном слове последовательности элементов разной длины). Программист мог задать двоичную кодировку для символа или множество двоичных кодировок для класса символов. Существовали переходы на метку условные и безусловные а также процедуры, замкнутые и открытые. 

Законным оператором языка была машинная команда представленная в восьмеричном виде. Именно в таком виде должны были осуществляться операции ввода-вывода. Используемые программой таблицы хранились как помеченные последовательности машинных команд; совместив в памяти такую последовательность с некоторым описанным списком, программист мог использовать для выбора элемента таблицы механизм выборки элемента списка[6;15].

А. Ф. Рар: Заявленной целью разработчиков языка было предоставить удобный рабочий инструмент системным программистам… 

Мы стремились достичь разумного компромисса между такими требованиями, как простота и удобство языковых средств, простота трансляции и возможность получения эффективной программы… 

Отладка эта состояла в классической раскрутке ( bootstrapping ): Эпсилон-текст транслятора я пропускал через написанный вручную Эпсилон-транслятор, а получившийся новый транслятор проверял на нормальных Эпсилон-программах. Раскрутка эта дала заодно ответ на… вопрос: «[насколько] программы, полученные путем Эпсилон-трансляции, проигрывают по сравнению с программами, написанными вручную?» Оказалось… всего в 1,35 раза.

Проект Бета был основан на предположении о конвергенции основных алгоритмических языков, как и методов трансляции и оптимизации. Первоначально основными входными языками считались Алгол 68 и ПЛ/1. Язык Паскаль появился на свет одновременно с началом работ над проектом Бета и вскоре был включен в список его входных языков как основной входной язык «пробной реализации» БЕТА-системы. 

Центральным звеном проекта Бета был Внутренний язык, который должен был стать единым языком-посредником в БЕТА-системе «наибольшим общим делителем» входных языков и «наименьшим общим кратным» выходных машин. Кроме этой своей роли промежуточного языка, позволяющего уменьшить число путей в схеме m -языковой n -машинной трансляции с m * n до m + n, внутренний язык должен был также явиться средой оптимизирующих преобразований, т.е. он еще должен был быть достаточно богат, чтобы на нем было возможно представить результаты оптимизации; например, экономию совпадающих подвыражений в операторе a [ i, j, k ] := b [ i, j, k ] + c [ i, j, k ].

Одновременно предполагалось опробовать слишком много новшеств: многоязычие на входе, многомашинность на выходе; новые языки (например при начале работ существовали только неполные экспериментальные трансляторы с Алгола 68) и новые методы оптимизации для новых прикладных областей — и всё это в рамках научно-исследовательского института, полупроизводственная работа силами сотрудников, ориентированны на получение научных результатов.

Автокод МВК Эльбрус — Эль-76


https://habrastorage.org/files/6ca/62e/c32/6ca62ec32ee5400c98c47a20e405ed92.png

Из книги В.М. Пентковского об автокоде «Эльбрус».

В советское время не стеснялись программировать на русском

Изначально этот язык был назван — автокод Эльбрус, затем был переименован в Эль-76. Несмотря на то, что Эль-76 является языком достаточно высокого уровня, есть основание называть его «автокодом». Эльбрус просто не имел языка более низкого уровня, т.е. «ассемблера». Т.е. язык минимального уровня Эльбрус — это Эль-76, остальные языки уже строились над ним. Это — замечательная иллюстрация высокого научного и инженерного уровня отечественных ИТ в то время. 

Эль-76 — язык программирования, использующий русскую лексику. Разработан в середине 70-х годов в СССР. Эль-76 предназначен для многомашинных вычислительных комплексов типа «Эльбрус». Объединяет в себе особенности машинного языка, непосредственно управляющего работой устройств ЭВМ, и изобразительные средства языка высокого уровня (во многом аналогично Алголу-68). Эль-76 поддерживает методику структурного программирования, т.е. композиции программы из процедур, линейных последовательностей операторов, циклов, альтернативных сочленений с выбором альтернативы по условию или по номеру альтернативы и параллельно выполняемых ветвей. Язык имеет специальные средства описания поведения программы в особых случаях — т.н. ситуации и структурные переходы. Основной особенностью Эль-76 является возможность хранения в памяти ЭВМ информации о типе переменной величины вместе с ее значением и ее изменения в ходе выполнения программы.

Рапира

https://habrastorage.org/files/8e4/9a9/7e3/8e49a97e331143d7a092574c5a2cc333.png

Язык программирования Рапира — один из двух входных языков учебной системы программирования, входящей в состав интегрированной программной среды «Школьница». Рапира представляет собой концентрическое семейство языков с последовательно расширяемым набором возможностей. Каждый концентр можно рассматривать как замкнутый язык-оболочку.

Четырнадцатая линия парижского метрополитена. Поезд, в котором нет кабины машиниста. Движение поездов на этой линии полностью управляется Ада-программой. ТАНТК им. Г. М. Бериева — самолетов-амфибия с бортовым программным обеспечением на базе языка Ада.

Ада предоставляет высокоуровневые средства программирования асинхронных процессов и является единственным языком, который без всяких оговорок можно назвать модульным. Применяется для разработки небольших и средних программ с тем же успехом, как и современные клоны Си, Паскаля, Бейсика и Java.

Язык этот назвали в честь Августы Ады Лавлейс – женщины, которая считается первым программистом на Земле.

2.3 Рынок программирования в России

Редакция vc.ru попросила представителей рекрутинговых сайтов и агентств и венчурных фондов рассказать о том, какие ИТ-профессии, на их взгляд, окажутся наиболее востребованными в индустрии в 2017 году. Своим мнением поделились представители HeadHunter, Superjob, ФРИИ и других компаний.

Все опрошенные vc.ru специалисты сходятся во мнении, что спрос на ИТ-специалистов в 2017 году в России продолжит расти. По данным HeadHunter, в 2016 году 64% ИТ-компаний в России увеличили свой штат, а 54% отметили, что в плане развития бизнеса год выдался лучше, чем предыдущий. Количество вакансий в ИТ-сфере выросло на 19%, тогда как в целом по рынку этот показатель увеличился на 9%.

Более половины предложений в ИТ, продолжают аналитики HeadHunter, приходится на разработчиков. Компания приводит данные по количеству вакансий для разработчиков на сайте в 2016 году:

https://png.cmtt.space/paper-media/c9/3a/84/f218e081401a78.png

По данным HeadHunter, в 2016 году упал спрос на Python-разработчиков (на 32%) и на Scala-разработчиков (на 21%).

Аналитики Superjob рассказывают, что зарплаты PHP-разработчиков в 2016 году выросли на 12%. Ещё больший рост показали доходы специалистов по работе с базами данных Oracle и Java-разработчиков (21% и 14% соответственно).

«Предложения по зарплате будут расти для мобильных разработчиков, веб-разработчиков, специалистов по информационной защите, кибербезопасности, аналитиков Big Data со знаниями в других предметных областях. Технологии будут всё больше внедряться в другие отрасли, к примеру, в HR-сфере востребованность в аналитиках с техническим бэкграундом вырастет», — предполагают представители Superjob.

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

Мария Игнатова руководитель службы исследований HeadHunter

Который год подряд ИТ-отрасль ощущает себя заметно лучше остальных, выступая локомотивом всего рынка труда. В частности, в нашем ежегодном опросе работодателей о том, как у них заканчивается год, лишь 7% признались, что закончили 2016 год хуже, чем 2015. Оценка результатов года у представителей ИТ-бизнеса — самая позитивная.

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

По информации нашего проекта «Банк данных заработных плат», где ежеквартально сами компании обновляют данные по своему ФОТу, работодатели из ИТ-отрасли в среднем увеличили зарплаты сотрудникам в пределах 2%. Сейчас средняя реальная зарплата в ИТ по России в целом — 78 тысяч рублей до вычетов.

Евгения Дворская генеральный директор JungleJobs

Ничего сверхъестественного не произойдёт. Традиционно будут востребованы разработчики Java, PHP, С++, С# (и спрос на них продолжит расти), разработчики мобильных приложений, аналитики, дизайнеры интерфейсов, UX/UI-специалисты, тестировщики, менеджеры проектов.

Из интересного: специалисты по Big Data и Data Science станут более востребованы. Но здесь встаёт вопрос в оценке этих специалистов. Не все могут адекватно оценить кандидата в силу относительной новизны направления и непонимания критериев оценки.

Катерина Гаврилова основатель DigitalHR

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

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

Рекрутинг становится эффективнее и интереснее. Например, появился инструмент  Codefights, где в реальном времени программист соревнуется с оппонентом. Так тестируется, сможет он пройти собеседование в компании или нет. У IBM вообще есть несколько удачных кейсов, когда в процессе рекрутинга не участвует человек. Конечно, это работает не для всех вакансий. Но для вакансий колл-центра, к примеру, может быть эффективно.

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

Очень трудно удержаться от скепсиса и не сказать: будет всё то же. Та же Big Data, тот же VR. Но специалистов по новым профессиям: VR, «интернет вещей», — до сих пор считанные единицы. С ботами двоякая история — с одной стороны, они распространяются, с другой — способы их создания упрощаются, что делает их менее интересными для разработчиков и более интересными для обычных пользователей. Точно станет больше и вакансий, и специалистов по блокчейну.

В 2017 году будет ещё больше вакансий для специалистов, связанных с персонализацией данных, машинным обучением, Data Science. Мы видим это и по рекрутинговой сфере: приходит больше автоматизации, тестируют сервисы, которые парсят социальные сети и могут спрогнозировать поведение кандидата или сотрудника. Например, насколько часто человек склонен менять работу.

В интернет-маркетинге будут всё так же востребованы те, кто готов делать сам, «ручками», а не менеджерить. Нужны специалисты, которые сами могут настроить контекст, таргетинг в соцсетях. Сейчас уже недостаточно найти крутого контентщика. Теперь нужен inbound-маркетолог. Потому что нужны не только статьи на сайте, а грамотные соцсети, правильная рассылка — запоминаться пользователям своей экспертностью.

Сейчас компании хотят, чтобы кандидаты понимали основы кодинга. Даже если им не придётся писать код на своей работе. Курсы программирования есть для детей с самого раннего возраста. На западе учат программировать заключённых. Получается, что навык программирования становится для нашего мира новым условием существования в обществе. Раньше учили писать и читать — а сейчас программировать. Это нужно учитывать и понимать, как будет меняться мир.

Сергей Негодяев управляющий инвестиционным портфелем ФРИИ

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

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

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

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

Отдельно хочется отметить специалистов по кибербезопасности, причём очень разного профиля — от классических вирусологов до специалистов по защите ЧПУ, АСУ ТП и даже чайников.

Заключение

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

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

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

б) для числовых данных установить, какие это будут числа: целые, вещественные или комплексные;

в) для целых чисел определить возможные минимальные и максимальные их значения;

г) определить, с какой точностью придется оперировать вещественными числами: обычной или удвоенной;

д) для символьных данных установить, отдельные ли символы будут использоваться или их строки;

е) уточнить, какие структуры данных будут фигурировать в программе: одномерные, двухмерные, трехмерные массивы, множества, списки и др.;

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

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

  1. Определить способ ввода исходных данных задачи, а именно установить, будут ли вводиться все исходные данные сразу или последовательно частями (ввод с подкачкой), откуда будет осуществляться ввод.
  2. Определить способ вывода данных решения, а именно на какие устройства, кроме видеотерминала, следует выводить результаты решения, какие форматы вывода необходимо использовать для размещения данных на внешних носителях информации.
  3. Программировать следует так, чтобы размещенные в ОП исходные данные задачи в процессе выполнения программы не изменялись. Это необходимо для многократного прогона программы во время ее отладки и возможности использовать эту программу в виде составной части другой программы.
  4. При программировании арифметических выражений необходимо применять самые быстродействующие операции. Например, если нужно вычислить 42, то лучше программировать операцию 4x4. Она выполняется быстрее, чем возведение в степень. Если есть необходимость вычислить 2 х b, то лучше применить операцию b + b, так как сложение на компьютере выполняется быстрее, чем умножение.
  5. Если окажется, что некоторые группы команд программы повторяются в нескольких ее местах, их следует запрограммировать отдельно и оформить в виде подпрограммы, к которой можно обращаться из основной программы в местах повторений групп команд. Это сократит длину программы.
  6. При программировании циклов необходимо следить за тем, чтобы величины, не изменяющиеся в цикле, были вынесены за его пределы. В особенности это касается вложенных циклов, так как именно на их обработку чаще всего тратится львиная доля времени выполнения программы. В общем же нужно стремиться минимизировать число повторений в циклах.

9. Программу рекомендуется составлять не на экране монитора компьютера, а на столе. Это гарантирует меньшую усталость глаз и сокращает появление дополнительных ошибок.

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

Список использованных источников

  1. Долгов В. А. Китов Анатолий Иванович – пионер кибернетики, информатики и автоматизированных систем управления. М.: КОС·ИНФ, 2014. С. 92–93.
  2. Поттосин И. В., Криницкий Н.А., Бухтияров Н. А., Фролов Г. Д., Войти-шек Л. В., Левина А.А. Программирующая программа ПП-С // Министерство обороны СССР: Сб. науч. тр. М., 1958. № 1. С. 7–79.
  3. Поттосин И. В. Решение некоторых дифференциальных уравнений и их систем методом исключения параметров // Министерство обороны СССР: Сб. науч. тр. М., 1958. № 1. С. 105–111.
  4. Рар А. Ф. История Эпсилон // Становление новосибирской школы программирования (мозаика воспоминаний): Сб. науч. тр. / Под ред. И.В. Поттосина. Новосибирск, 2001. C. 66–72.
  5. Андрей Петрович Ершов — ученый и человек / Ред.-сост. М.А. Бульонков и др.; под ред. А.Г. Марчука. Новосибирск: Изд-во СО РАН, 2014. – с.26 – 33.
  6. Поттосин И. В. Некоторые вопросы оптимизации в автоматическом программировании: Автореф. дис. ... канд. физ.-мат. наук. Новосибирск, 1969.
  7. Поттосин И. В. Операционные системы // Тр. I Всесоюз. конф. по программированию. Пленарные доклады. Киев, 1968. С. 20–46.
  8. Поттосин И. В., Рар А. Ф., Катков В. Л. Эпсилон — система автоматизации программирования для задач символьной обработки // Тр. I Всесоюз. конф. по программированию. Киев, 1968. С. 88–108.
  9. Поттосин И. В. А.П. Ершов — пионер и лидер отечественного программирования // Становление новосибирской школы программирования (мозаика воспоминаний): Сб. науч. тр. / Под ред. И.В. Поттосина. Новосибирск, 2014. С. 7–16.
  10. Поттосин И. В. Андрей Петрович Ершов: жизнь и творчество // А.П. Ершов. Избр. труды. Новосибирск: ВО «Наука», 2015. С. 5–29.
  11. Поттосин И. В. А.П. Ершов и становление новосибирской школы программирования // Становление новосибирской школы программирования (мозаика воспоминаний): Сб. науч. тр. / Под ред. И. В. Поттосина. Новосибирск, 2013. С. 28–40.
  12. Поттосин И.В. Текущее состояние российских разработок в области трансляции. Препр. № 30 / Ин-т систем информатики СО РАН СССР. Новосибирск, 1995. – с.83 – 99.
  13. Поттосин И. В., Бежанова М. М. Современные понятия и методы программирования. - М.: Научный мир, 2016. – 67 – 77.
  14. Поттосин И. В., Бежанова М. М., Москвина Л. А. Практическое программирование. Структуры данных и алгоритмы. - М.: Логос, 2015. – 163 .с