Система программирования предоставляет программисту возможность
Понятие системы программирования.
Системы программирования — это комплекс инструментальных программных средств, предназначенный для работы с программами на одном из языков программирования.
Системы программирования предоставляют сервисные возможности программистам для разработки их собственных компьютерных программ.
В настоящее время разработка любого системного и прикладного программного обеспечения осуществляется с помощью систем программирования, в состав которых в первую очередь входят:
· трансляторы с языков высокого уровня;
· средства редактирования, компоновки и загрузки программ;
· макроассемблеры (машинно-ориентированные языки);
· отладчики машинных программ.
Системы программирования, как правило, включают в себя:
· текстовый редактор (Edit), осуществляющий функции записи и редактирования исходного текста программы;
· загрузчик программ (Load), позволяющий выбрать из директория нужный текстовый файл программы;
· запускатель программ (Run), осуществляющий процесс выполнения программы;
· компилятор (Compile), предназначенный для компиляции или интерпретации исходного текста программы в машинный код с диагностикой синтаксических и семантических (логических) ошибок;
· отладчик (Debug), выполняющий сервисные функции по отладке и тестированию программы;
· диспетчер файлов (File), предоставляет возможность выполнять операции с файлами: сохранение, поиск, уничтожение и т.п.
Ядро системы программирования составляет язык. Существующие языки программирования можно разделить на две группы: процедурные и непроцедурные.
Процедурные (или алгоритмические) программы представляют из себя систему предписаний для решения конкретной задачи. Роль компьютера сводится к механическому выполнению этих предписаний.
Процедурные языки разделяют на языки низкого и высокого уровня.
Языки низкого уровня(машинно-ориентированные) позволяют создавать программы из машинных кодов, обычно в шестнадцатеричной форме. С ними трудно работать, но созданные с их помощью высококвалифицированным программистом программы занимают меньше места в памяти и работают быстрее. С помощью этих языков удобнее разрабатывать системные программы, драйверы (программы для управления устройствами компьютера), некоторые другие виды программ.
Программы на языках высокого уровня близки к естественному (английскому) языку и представляют набор заданных команд.
В общем случае язык – это заданный набор символов и правил, устанавливающих способы комбинации этих символов между собой для записи осмысленных текстов. Основой любого естественного или искусственного языка является алфавит, определяющий набор допустимых символов языка.
Алфавит – это счётное множество допустимых символов языка. Будем обозначать это множество символом V. Интересно, что согласно формальному определению, алфавит не обязательно должен быть конечным (перечислимым) множеством, но реально все существующие языки строятся на основе конечных алфавитов.
Цепочка символов α является цепочкой над алфавитом V; α(V), если в нее вводят только символы, принадлежащие множеству символов V. Для любого алфавита V пустая цепочка λ может как являться, так и не являться цепочкой λ(V). Это условие оговаривается дополнительно.
Если V – некоторый алфавит, то:
V+ – множество всех цепочек над алфавитом V без λ;
V* – множество всех цепочек над алфавитом V, включая λ.
Справедливо равенство: V* = V+<λ>.
Языком L над алфавитом V: L(V) называется некоторое счетное подмножество цепочек конечной длины из множества всех цепочек над алфавитом V. Из этого определения следуют два вывода: во-первых, множество цепочек языка не обязано быть конечным; во-вторых, хотя каждая цепочка символов, входящая в язык, должна иметь конечную длину; эта длина может быть сколь угодно большой и формально ничем не ограничена.
Все существующие языки подпадают под это определение. Большинство реальных естественных и искусственных языков содержат бесконечное множество цепочек. Также в большинстве языков длина цепочки ничем не ограничена (например, этот длинный текст – пример цепочки символов русского языка). Цепочку символов, принадлежащую заданному языку, часто называют предложением языка, а множество цепочек символов некоторого языка L(V) – множеством предложений этого языка.
Каждый язык – это множество цепочек символов над некоторым алфавитом. Но кроме алфавита язык предусматривает и задание правил построения допустимых цепочек, поскольку обычно далеко не все цепочки над заданным алфавитом принадлежат языку. Символы могут объединяться в слова или лексемы – элементарные конструкции языка. На их основе строятся предложения – более сложные конструкции. И те и другие, в общем виде, являются цепочками символов, но предусматривают некоторые правила построения. Таким образом, необходимо указать эти правила, или, строго говоря, задать язык.
Язык задать можно тремя способами:
– перечислением всех допустимых цепочек языка;
– указанием способа порождения цепочек языка (заданием грамматики языка);
– определением метода распознавания цепочек языка.
Первый из методов является чисто формальным и на практике не применяется (большинство языков содержат бесконечное число допустимых цепочек и перечислить их просто невозможно).
Второй метод предусматривает некоторое описание правил, с помощью которых строятся цепочки языка. Тогда любая цепочка, построенная с помощью этих правил из символов алфавита языка, будет принадлежать заданному языку. Например, правила построения цепочек символов русского языка (мы изучали их в средней школе).
Третий способ предусматривает построение некоторого логического устройства (распознавателя) – автомата, который на входе получает цепочку символов, а на выходе выдает ответ: принадлежит или нет эта цепочка заданному языку.
Синтаксис языка – это набор правил, определяющий допустимые конструкции языка. Синтаксис определяет «форму языка» – задает набор цепочек символов, которые принадлежат языку. Чаще всего синтаксис языка можно задать в виде строгого набора правил, но полностью это утверждение справедливо только для чисто формальных языков.
Семантика языка – это раздел языка, определяющий значение предложений языка. Слово «семантика» с греческого переводится как обозначающий. Семантика определяет «содержание языка» – задает значение для всех допустимых цепочек языка. Семантика для большинства языков определяет неформальными методами (отношения между знаками и тем, что они обозначают, и изучаются семиотикой). Чисто формальные языки лишены какого-либо смысла.
Лексика – это совокупность слов (словарный запас) языка. Слово или лексическая единица (лексема) языка – это конструкция, которая состоит из элементов алфавита языка и не содержит в себе других конструкций. Иначе говоря, лексическая единица может содержать только элементарные символы и не может содержать других лексических единиц.
Лексическими единицами (лексемами) русского языка являются слова русского языка, а знаки препинания и пробелы представляют собой разделители, не образующие лексем.
Языки программирования занимают некоторое промежуточное положение между формальными и естественными языками. С формальными языками их объединяют строгие синтаксические правила, на основе которых строятся предложения языка. От языков естественного общения в языки программирования перешли лексические единицы, представляющие основные ключевые слова. Кроме того, из алгебры языки программирования переняли основные обозначения математических операций, что также делает их более понятными человеку.
Для задания языка программирования необходимо решить три вопроса:
− определить множество допустимых символов языка;
− определить множество правильных программ языка;
− задать смысл для каждой правильной программы.
Только первые два вопроса полностью или частично удаётся решить с помощью лексики формальных языков.
Первый вопрос решается легко. Определяя алфавит языка, мы автоматически определяем множество допустимых символов. Для языков программирования алфавит − это чаще всего тот набор символов, которые можно ввести с клавиатуры. Основу его составляет младшая половина таблицы международной кодировки символов (таблицы ASCII), к которой добавляются символы национальных алфавитов.
Второй вопрос решается в теории формальных языков только частично. Для всех языков программирования существуют правила, определяющие синтаксис языка. Правда их недостаточно для того, чтобы строго определить все возможные синтаксические конструкции.
Третий вопрос в принципе не относится к теории формальных языков, поскольку, как уже было сказано, такие языки лишены какого-либо смысла. Для ответа на него нужно использовать другие подходы. В качестве таких подходов можно указать следующие:
− изложить смысл программы, написанной на языке программирования, на другом языке, более понятном тому, кому адресована программа;
− использовать для проверки смысла некоторую «идеальную машину», которая предназначена для выполнения программ, написанных на данном языке.
Грамматика − это описание способа построения предложений некоторого языка. Иными словами, грамматика − это математическая система, определяющая язык.
Фактически, определив грамматику языка, мы указываем правила порождения цепочек символов, принадлежащих этому языку. Таким образом, грамматика − это генератор цепочек языка. Она относится ко второму способу определения языков − порождению цепочек символов.
Грамматику языка можно описать различными способами. Например, грамматика русского языка описывается довольно сложным набором правил, которые изучают в начальной школе. Но для многих языков (и для синтаксической части языков программирования в том числе) допустимо использовать формальное описание грамматики, построенное на основе системы правил (или продукций).
Правило (или продукция) − это упорядоченная пара цепочек символов (α, β). В правилах очень важен порядок цепочек, поэтому их чаще записывают в виде α→β (или α: = β). Такая запись читается как «α порождает β» или «β по определению есть α».
Грамматика языка программирования содержит правила двух типов: первые (определяющие синтаксические конструкции языка) довольно легко поддаются формальному описанию; вторые (определяющие семантические ограничения языка) обычно излагаются в неформальной форме. Поэтому любое описание (или общепринятый стандарт) языка программирования обычно состоит из двух частей: вначале формально излагаются правила построения синтаксических конструкций, а потом на естественном языке дается описание семантических правил.
Язык, заданный грамматикой G, обозначается как L(G).
Две грамматики G и G’ называются эквивалентными, если они определяют один и тот же язык: L(G) = L(G’). Две грамматики G и G’ называются почти эквивалентными, если заданные ими языки различаются не более чем на пустую цепочку символов: L(G) <λ>= L(G’) <λ>.
Дата добавления: 2016-06-02 ; просмотров: 2037 ; ЗАКАЗАТЬ НАПИСАНИЕ РАБОТЫ
Инкапсуляция в объектно-ориентированном программировании означает возможность
О +отделения интерфейса (спецификации) методов от их реализации
Объектно-ориентированньгй подход к программированию использует следующие базовые понятия:
в) метод обработки
д) класс объектов
Понятию «класс» объектно-ориентированного программирования соответствует в классическом программировании понятие.
О+тип данных
В основе объектно-ориентированного подхода к программированию лежит метод.
О+ нисходящего проектирования
Концепция полиморфизма в объектно-ориентированном программировании означает возможность использования.
О+ многозначных функций
Понятие «наследование» характеризует .
О +способность объекта сохранять свойства и методы класса-родителя
Свойства объекта при создании приложения в объектно-ориентированном программировании можно изменить
О +на этапе проектирования формы и на этапе создания программного кода приложения
25)
Система программирования предоставляет программисту
Возможность.
+О автоматической сборки разработанных модулей в единый проект
Системами программирования являются:
в) Adobe PhotoShop
д) Borland Delphi
Интегрированная система программирования включает компонент для
Создания исходного текста программы, который называется .
+О текстовым редактором
Интегрированная система программирования включает компонент для перевода исходного текста программы в машинный код, который называется .
+О компилятором
Одной из важных функций, реализуемых системой программирования, является.
+О автоматическая сборка разработанных модулей в единый проект
26)
Тестирование, при котором выявляется, что сделанные изменения не повлияли на функциональность предыдущей версии, называется .
Выберите из предложенного списка те действия, которые относятся к этапу «Постановка задачи» при решении задачи на компьютере:
1. определение формы выдачи результатов;
2. разработка математической модели;
3. проектирование алгоритма;
4. описание данных (их типов, диапазонов, структур);
Этапы создания программных продуктов в порядке следования:
д) анализ задачи
Тестирование, при котором разработчик теста имеет доступ к
исходному коду программы, называется .
+О тестированием «белого ящика»
Деятельность, направленная на исправление ошибок в программной системе, называется .
Профессия программист
Как стать программистом
Правда ли, что программирование — ну самая востребованная специальность в мире? Кто такие системные и прикладные программисты? Сколько лет нужно учиться на программиста? В какой вуз и колледж поступить, чтобы стать программистом?
Говорят, что в мире есть 10 видов людей. Те, кто понимает двоичный код… и те, кто не понимает.
Юмор программистов
Программирование зародилось в XIX веке, и до середины XX века, когда случился бурный рост информационных технологий, создание программ для машины было сродни искусству. Программирование было уделом избранных. Сегодня же профессия программиста распространена и очень востребована. В 2017 году в мире насчитывалось 18.2 млн разработчиков программного обеспечения, из них 1.3 млн — в России.
Давайте посмотрим, какое будущее у профессии программиста. И что ему угрожает.
Программист – это специалист, создающий исходный код для программы. Такой программой может быть операционная система компьютера, видеоигра, web или мобильное приложение и даже алгоритм работы микроволновки. Программный код пишется на специальном языке программирования. Он состоит из обычных слов и некоторых специальных символов. Сегодня насчитывается несколько сотен языков программирования, но самые распространенные из них – Java, Python, PHP, C#, JavaScript, C, С++, Objective-C, Swift. Какой язык программирования выбрать, программист решает сам в зависимости от конкретной задачи (сделать игру, приложение для web или программу для сервера) и собственных знаний. Квалифицированный программист уверенно использует 2-4 языка.
Если вы думаете, что программист = компьютерщик, то это далеко не так. Самое удивительное, что программист не обязательно работает на компьютере. Он может писать код программы хоть на салфетке, а компьютер ему нужен, чтобы применить этот код и протестировать.
Не стоит также приравнивать программиста к «айтишнику». Под общим названием «IT-специалист» скрывается более 50 разных профессий и должностей. Например, UIX-дизайнер (разработчик интерфейсов), account-менеджер (специалист техподдержки), системный администратор, devops («инженер по автоматизации IT-процессов»), менеджер IT-проекта – это «айтишники», но не программисты. Однако стоит помнить, что в любую из IT-профессий можно попасть через образование программиста.
По специализации программисты делятся на системных, прикладных и веб-программистов. Прикладные программисты занимаются написанием различных программ и приложений: игры (например, популярная игра Angry birds), офисные приложения (например, Microsoft Office Word) и многое другое. Системные программисты занимаются созданием операционных систем (например, Android или iOS). Веб-программисты разрабатывают интернет-сайты и программы, которые поддерживают работу этих сайтов.
На сайтах вакансий вы найдете разделение программистов по тем языкам, с которыми они работают: программист C++, программист Delphi, PHP-программист. А также по типам задач, которые они выполняют: программист баз данных, фронтенд / бекенд разработчик, мобильный / десктоп разработчик, программист 1С, программист Битрикс, геймдев, архитектор ПО, системный инженер и т.д.
Плюсы и минусы профессии программиста
Профессия программиста очень притягательна для современных абитуриентов. В 2018 году в технических вузах самый большой конкурс пришелся на специальности «Прикладная математика», «Информатика и вычислительная техника», «Электроника и наноэлектроника». В 2019 году проходные баллы по ЕГЭ на эти специальности обещают только вырасти. Что так привлекает молодых в программировании?
Плюсы профессии программист:
✔ Высокая зарплата. Средняя зарплата высококвалифицированного программиста 70-100 тыс. рублей.
✔ Востребованность. Рынок труда для программистов растет за счет цифровизации всех сфер общественной жизни. Онлайн-образование, телемедицина, интернет вещей (IoT), даже сельское хозяйство не обходится теперь без IT-специалистов.
✔ Интересные задачи и простор для творчества. Что делает программист на работе? Пишет код, тестирует, проверяет на уязвимости, переписывает код. Тем не менее, конечный результат кодирования – это рабочая программа с разными целями. Одни программисты создают игры. Другие программируют роботов. Третьи делают полезное приложение под Android. Четвертые создают агрегатор, который соберет все билеты мировых авиакомпаний в один сервис для бронирования авиабилетов. Разнообразно, не правда ли? А когда продукт начинает исправно работать, программист испытывает радость, как персонаж папа Карло, который из деревянного полена выстругал живого мальчика.
✔ Возможность удаленной работы и свободный график. Программисты – это каста людей, к которым не применяют строгих офисных правил. Для поддержания креативности и работоспособности им разрешают работать из дома, приходить позже на работу. И, если вы еще не знаете, лучшие офисы принадлежат именно IT-компаниям. Загляните в Google, Microsoft, Яндекс и Mail.Ru.
✔ Карьерный рост в России и за рубежом. Для программирования нет географических границ. Во-первых, многие российский специалисты работают удаленно в иностранных проектах. Во-вторых, переехать в «Силиконовую» долину (более точно ее называть «Кремниевой») для IT-профессионала с отличным знанием английского гораздо проще, чем, например, бухгалтеру, юристу или инженеру-строителю, которым придется изучать специфику профессии в конкретной стране.
✔ Сидячий образ жизни. Без физических нагрузок в нерабочее время программист рискует большую часть зарплаты тратить на врачей. Особенно страдают зрение и опорно-двигательный аппарат.
✔ Быстрое устаревание знаний. Программисту необходимо постоянно учиться. Программирование развивается стремительно, поэтому программист обязательно должен читать профильные журналы и интернет-ресурсы, получать новые знания и сертификаты на курсах. Иначе его ценность как специалиста на рынке труда упадет.
Чтобы стать программистом, можно пойти тремя путями:
1. После 11 класса в вуз по направлению 09.00.00 «Информатика и вычислительная техника» или 10.00.00 «Информационная безопасность».
2. После 9 класса в колледж на эти же направления, а потом пойти или не пойти в вуз.
3. Учиться на курсах программирования и самому.
IT-сфера отличается молодостью и современным подходом к образованию. При трудоустройстве ценится не столько диплом, сколько те навыки (hard skills), которые у будущего сотрудника в багаже. Работодатель даст тестовое задание по программированию и по его результатам примет или не примет соискателя на работу. Именно поэтому приобретать знания и опыт в информационных технологиях можно и дома с помощью книг, online-курсов и создания небольших программ. Какой вариант образования лучше, решает каждый сам. Главный вопрос, который должен задать себе программист – «Достаточно ли я усидчивый и целеустремленный человек, чтобы выучиться и потом конкурировать с теми, кто пришел из вуза?».
В каких вузах и колледжах учиться на программиста
Для поступления в вуз необходимо успешно сдать ЕГЭ по математике, русскому языку, информатике и ИКТ, физике, английскому языку (4 из 5 экзаменов в зависимости от специализации). В Москве получить образование программиста можно во многих учебных организациях.
Полный список вузов, колледжей и техникумов смотрите здесь >>
• Компании-разработчики (сервисы Booking.com, Mail.ru, Yandex, Unisender)
• IT-отделы и отделы digital-маркетинга организаций (Сбербанк России, Газпром, Тинькофф банк)
• Системные интеграторы (Крок, Softline, Техносерв, Ланит, Ай-Теко)
Из-за бурного роста сферы IT и дефицита разработчиков ПО, работать программистом можно начать еще в институте. Со 2-3 курса можно устроиться junior-разработчиком и начинать движение по карьерной лестнице. И при этом получать достойную для студента зарплату в 30-50 тысяч рублей.
Сами программисты оценивают длительность каждой ступени следующим образом:
• Первые полгода-полтора года реального опыта вы junior
• При активном обучении следующие 1-3 года работы вы middle
• А программист с опытом работы 4-6 лет – это senior
Но, конечно, стоит помнить, что границы условны, и более активный и любознательный разработчик сможет освоить все навыки senior-developer за 3 года.
Кроме глубокой специализации в программировании, программисту доступно движение в смежные области внутри IT-компании – дизайн, маркетинг, аналитику, менеджмент. Программист может стать архитектором программного обеспечения, девопс-инженером, менеджером IT-проектов, если ему это интересно и у него есть нужные компетенции. Например, чтобы работать менеджером, ему потребуется коммуникабельность, инициативность, умение формировать команду и контролировать бизнес-процессы.
Оплата труда (диапазон зарплат)
Зарплата программиста напрямую зависит от специализации и квалификации. Наименее оплачиваемые должности – это junior-разработчики, которые только учатся. А наиболее оплачиваемые на рынке труда – архитекторы ПО и системные инженеры, на которых лежит ответственность за продукт или проект в целом. Поэтому диапазон зарплат программистов может быть очень широким:
- ✔ 30 000 – 260 000 рублей
Перспективы профессии (востребованность)
Сейчас отрасль IT в целом и программирование в частности находятся на пике востребованности. Компании конкурируют за квалифицированных специалистов. В перспективе ближайших 5 лет программистов ждет благополучная жизнь и высокие зарплаты, потому что молодых кадров станет немного меньше. Придет период демографической ямы из-за низкой рождаемости в начале 90-х гг.
Но рынок IT ждет несколько опасностей. Во-первых, обучение программированию сейчас начинается уже практически с детского сада. Самые известные обучающие языки — это Scratch от MIT и Blockly от Google. Вероятно, навык программирования будет настолько же распространен, как знание английского языка, то есть будет входить в «джентльменский набор» при приеме на работу. А если им владеет почти каждый, то и ценность работы снижается.
Во-вторых, IT-образование сейчас дает почти каждый колледж и вуз. После дефицита рынок может «насытиться» профессиональными программистами, и их зарплаты упадут.
В-третьих, есть страны, в частности Индия, где IT-образование развивается еще быстрее. И в определенный момент услуги программирования насытят мировой рынок, как сейчас произошло с товарами, произведенными в Китае. С индийскими программистами трудно будет конкурировать в цене.
Будущему программисту стоит помнить об этих рисках. Но, как и в любой профессии, настоящий специалист, который любит свое дело и профессионально развивается, в любые времена будет востребован.
Какие компетенции и личные качества необходимы программисту
Наверняка, вы сходу назовете 3 качества, которые отличают программиста:
✎ логическое мышление
✎ математические способности
✎ усидчивость
Есть несколько компетенций, которые делают из хорошего программиста лучшего:
✎ гибкость мышления
✎ хорошая память
✎ многозадачность
✎ развитое воображение
✎ умение ясно выражать свои мысли
✎ коммуникабельность
✎ работа в команде
Человек, который умеет придумывать новые идеи и хорошо взаимодействовать в коллективе таких же разработчиков, сможет попасть в самые интересные и передовые IT-проекты или открыть свой.
Что делать уже сейчас
Вы думаете о программировании или хотите в будущем работать в IT? Начать развиваться можно уже в сейчас:
- ✔ Углубленно изучать математику, информатику, русский и английский язык в школе.
✔ Программировать и создавать веб-сайты, небольшие редакторы и полезные утилиты.
✔ Читать новости из сферы IT: на порталах cnews.ru, habrahabr.ru, computerworld.ru, hightech.fm и github.com.
✔ Заниматься в кружках по программированию и школах юного программиста.
✔ Посетить iСмену лагеря «Профессионалы будущего», чтобы пообщаться с настоящими IT-специалистами и узнать больше о современных технологиях.
Если вы хотите разобраться, подойдет ли вам специальность программиста, то пройдите наш бесплатный тест: информационно-технологический профиль
Автор: Ольга Биккулова, ЦТР «Гуманитарные технологии»
Если вы хотите получать свежие статьи о профессиях, подпишитесь на нашу рассылку.
Конспект по информатике на тему «Системы программирования»
Как организовать дистанционное обучение во время карантина?
Помогает проект «Инфоурок»
Системы программирования — это комплекс инструментальных программных средств, предназначенный для работы с программами на одном из языков программирования. Системы программирования предоставляют сервисные возможности программистам для разработки их собственных компьютерных программ.
В настоящее время разработка любого системного и прикладного программного обеспечения осуществляется с помощью систем программирования, в состав которых входят
• трансляторы с языков высокого уровня;
• средства редактирования, компоновки и загрузки программ;
• макроассемблеры (машинно-ориентированные языки);
• отладчики машинных программ.
Системы программирования, как правило, включают в себя
• текстовый редактор ( Edit ), осуществляющий функции записи и редактирования исходного текста программы;
•загрузчик программ ( Load ), позволяющий выбрать из директория нужный текстовый файл программы;
• запускатель программ ( Run ), осуществляющий процесс выполнения программы;
• компилятор ( Compile ), предназначенный для компиляции или интерпретации исходного текста программы в машинный код с диагностикой синтаксических и семантических (логических) ошибок;
• отладчик ( Debug ), выполняющий сервисные функции по отладке и тестированию программы;
• диспетчер файлов ( File ), предоставляющий возможность выполнять операции с файлами:сохранение, поиск, уничтожение и т.п.
Ядро системы программирования составляет язык. Существующие языки программирования можно разделить на две группы: процедурные и непроцедурные, рис. 2.9.
Процедурные (или алгоритмические) программы представляют из себя систему предписаний для решения конкретной задачи. Роль компьютера сводится к механическому выполнению этих предписаний.
Процедурные языки разделяют на языки низкого и высокого уровня.
Языки низкого уровня (машинно-ориентированные) позволяют создавать программы из машинных кодов, обычно в шестнадцатиричной форме. С ними трудно работать, но созданные с их помощью высококвалифицированным программистом программы занимают меньше места в памяти и работают быстрее. С помощью этих языков удобнее разрабатывать системные программы, драйверы (программы для управления устройствами компьютера), некоторые другие виды программ.
Рис. 2.9. Общая классификация языков программирования
Программы на языках высокого уровня близки к естественному (английскому)
языку и представляют набор заданных команд.
Перечислим наиболее известные системы программирования.
1. Фортран ( FORmula TRANslating system — система трансляции формул); старейший и по сей день активно используемый в решении задач математической ориентации язык.
2. Бейсик ( Beginner ‘ s All — purpose Symbolic Instruction Code — универсальный символический код инструкций для начинающих); несмотря на многие недостатки и изобилие плохо совместимых версий — самый популярный по числу пользователей.
3. Алгол ( ALGOrithmic Language — алгоритмический язык); сыграл большую роль в теории, но для практического программирования сейчас почти не используется.
4. ПЛ/1 ( PL / I Programming Language — язык программирования первый). Многоцелевой язык; сейчас почти не используется.
5. Си (С — «си»); широко используется при создании системного программного обеспечения.
6. Паскаль ( Pascal — назван в честь ученого Блеза Паскаля); чрезвычайно популярен как при изучении программирования, так и среди профессионалов. На его базе созданы несколько более мощных языков (Модула, Ада, Дельфи).
7. Кобол ( COmmon Business Oriented Language — язык, ориентированный на общий бизнес); в значительной мере вышел из употребления.
8. Дельфи ( Delphi ) — язык объектно-ориентированного «визуального» программирования; в данный момент чрезвычайно популярен.
9. Джава ( Java ) — платформенно-независимый язык объектно-ориентированного программирования, чрезвычайно эффективен для создания интерактивных веб-страниц.
Среди непроцедурных языков наиболее известны
2. Пролог ( PROgramming in LOGic );
3. Оккам (назван в честь философа У. Оккама).
Широкое распространение среди разработчиков программ, а также при обучении программированию, получили системы программирования «Турбо» ( Turbo ) фирмы Borland , ядром которых являются трансляторы с языков программирования Бейсик, Паскаль, Си, Пролог и др. Интерфейс Турбо-оболочки для любых систем программирования внешне совершенно одинаков и предоставляет пользователю стандартный набор функций и команд, описанных выше и отображаемых в главном меню системы.
Программисту нет нужды самому программировать такие непростые, но часто встречающиеся операции, как вычисление значений математических функций, построение изображений простых геометрических объектов (отрезков прямых, окружностей и т.д.), очистка экрана и множество других. Высокоэффективные, тщательно отлаженные программы таких действий сведены в стандартные модули и надо лишь уметь к ним обратиться. В состав пакета библиотек стандартных модулей входят: Crt — работы с экраном, Graph -работы с графикой и другие, такие как Overlay , String , System , Turbo 3, WinAPI , WinCrt , WinDos , WinPrn , WinTypes , WinProcs .
2.2. ТРАНСЛЯЦИЯ ПРОГРАММ И СОПУТСТВУЮЩИЕ ПРОЦЕССЫ
С появления первых компьютеров программисты серьезно задумывались над проблемой кодирования компьютерных программ. Уже с конца 40-х годов стали появляться первые примитивные языки программирования высокого уровня. В них программист записывал решаемую задачу в виде математических формул, а затем, используя специальную таблицу, переводил символ за символом, преобразовывал эти формулы в двухлитерные коды. В дальнейшем специальная программа (впоследствии названная интерпретатором) превращала эти коды в двоичный машинный код. Первый компилятор был разработан Г. Хоппер в начале 50-х годов; он осуществлял функцию объединения команд и в ходе трансляции производил организацию подпрограмм, выделение памяти компьютера, преобразование команд высокого уровня (в то время псевдокодов) в машинные команды. В дальнейшем компиляторы и интерпретаторы для языков Ассемблера стали развиваться и прочно вошли в практику компьютерного дела.
Идеи трансляции (перекодирования) одних символов в другие легли в основу создания различных языков программирования с соответствующими трансляторами — компиляторами и/или интерпретаторами. Отличие компиляторов от интерпретаторов заключается в процедуре трансляции текста в машинный код. Компилятор преобразует весь текст программы в последовательный набор машинных команд, который в дальнейшем отправляется на выполнение (пример компилятора с языка Паскаль). Интерпретатор же осуществляет трансляцию по принципу синхронного перевода. Каждая отдельная строка программного текста транслируется, а затем, после ее интерпретации, команды этой строки выполняются (пример языка Бейсик). Современные трансляторы с языков программирования высокого уровня, систем управления базами данных интегрируют в себе возможности и достоинства компиляторов и интерпретаторов, а в системы программирования добавляют различные сервисные утилиты по трансляции и отладке создаваемых программ.
Важнейшим элементом в развитии систем программирования выступили подпрограммы. Появление аппарата подпрограмм существенно облегчило процесс разработки системных и прикладных программ. Подпрограммы позволили формировать библиотеки из наиболее часто употребляемых в программах алгоритмов -процедур и функций. В системах программирования обязательно присутствуют стандартные (встроенные в систему) библиотеки подпрограмм. Например, в их число входят подпрограммы вычисления математических функций sin (х), cos ( x ), abs (х) и др.
В настоящее время распространены пользовательские и прикладные библиотеки подпрограмм. Их число увеличивается. Меняется структура библиотечных подпрограмм. В современных языках получили распространение модули ( Unit ), представляющие специализированные пакеты взаимосвязанных подпрограмм определенного предназначения, например по работе с клавиатурой, с графикой и пр. Развитие объектно-ориентированного программирования позволило создавать библиотеки объектов и подпрограмм с объектными типами данных ( Object ). Примером могут служить оболочки типа TurboVision .
Современная программа представляет набор команд, операторов и выражений, в которых имеются ссылки (прямые или косвенные) на различные подпрограммы из существующих в системе программирования библиотек, модулей, объектов. В этой связи исходный текст программы, как правило, занимает по объему места в памяти в несколько раз меньше, чем его оттранслированный вариант в машинных кодах.
Многие системы программирования дополнительно содержат промежуточные этапы трансляции. В этих системах на первом шаге предусмотрена трансляция исходного текста в макроассемблерный код, а затем в объектный модуль. Это связано с историей развития языков программирования, а также с тем, что многие подпрограммы удобнее писать на языке Ассемблера, и подключать их легче на этапе линко-вания ассемблерного модуля с ассемблерными библиотеками подпрограмм.
В современных системах программирования, например, Турбо-Паскаль, Турбо-Си весь этот сложный процесс трансляции с компоновкой подпрограмм скрыт от пользователя и осуществляется специальными компиляторами.
Коротко об отладчиках. Эти программы входят в современные системы программирования и предоставляют средства для просмотра и изменения значений переменных в ходе отладки программы, поиска ошибок и т.д. Использование отладчиков значительно облегчает процесс доводки больших программ.
Заметим, что описанный процесс трансляции характерен для компиляции. Последовательно реализованный интерпретатор объектного модуля фактически не создает. В этом его и недостаток, и достоинство (экономия машинной памяти). Впрочем, у современных ЭВМ, в том числе и персональных, проблема малого ОЗУ отходит на второй план, и интерпретация встречается все реже, так как эффективность этого процесса в целом значительно ниже.
Остается непонятным, как детально происходит трансляция. Пользователь может не уметь сам вручную оттранслировать программу (даже столь короткую, как вышеприведенная), но элементарное понимание этого сложного процесса необходимо.
На первом этапе транслятор производит синтаксический анализ исходной программы — проверяет, не нарушены ли формальные правила, содержащиеся в данном языке программирования. Например, в Паскале текст может встретиться либо внутри текстовой константы (т.е. в апострофах), либо внутри комментария. Если такой текст встретился в другом месте, то это явная ошибка. В системе программирования встроены описания всех синтаксически разрешенных конструкций, и транслятор их применяет к исходной программе. Для задания синтаксиса применяются формы Бэкуса-Наура и синтаксические диаграммы, о которых будет рассказано в следующей главе.
Первой фазой синтаксического анализа является лексический анализ. Он заключается в просмотре литер исходной программы и построении из них лексически допустимых единиц — идентификаторов, ключевых слов языка, чисел и т.д. Во второй фазе эти единицы уже рассматриваются как неделимые и проверяется допустимость их сочетания.
Даже если в синтаксическом смысле исходная программа верна, это не означает, что она имеет смысл в рамках данного языка программирования. На следующем этапе семантического анализа транслятор ищет ошибки такого рода: числа употребления слов BEGIN и END не совпадают; переменные не описаны (в языке, требующем обязательного явного описания переменных), т.е. текст программы непонятен (семантика — смысловая сторона языка).
Лишь после того, как в программе все синтаксически правильно и семантически понятно, транслятор переводит операторы программы в машинный код. Это отнюдь не означает, что в программе все благополучно — не исключены ошибки этапа исполнения (деление на ноль, выход за границу массива, переполнение разрядов и т.д.).
Различные фазы компиляции могут быть как последовательными, так и частично перекрывающимися во времени. В зависимости от способа реализации компилятор читает и обрабатывает исходный текст один или несколько раз, называясь соответственно однопроходным, двухпроходным и т.д.
Система программирования предоставляет программисту возможность
Современные системы программирования обычно предоставляют пользователям мощные и удобные средства разработки программ. В них входят:
- компилятор или интерпретатор;
- интегрированная среда разработки;
- средства создания и редактирования текстов программ;
- обширные библиотеки стандартных программ и функций;
- отладочные программы, т.е. программы, помогающие находить и устранять ошибки в программе;
- «дружественная» к пользователю диалоговая среда;
- многооконный режим работы;
- мощные графические библиотеки; утилиты для работы с библиотеками
- встроенный ассемблер;
- встроенная справочная служба;
- другие специфические особенности.
Популярные системы программирования Turbo Basic, Quick Basic, Turbo Pascal, Turbo C.
В последнее время получили распространение системы программирования, ориентированные на создание Windows-приложений:
Borland Delphi 3.0
- пакет Borland Delphi (Дельфи) блестящий наследник семейства компиляторов Borland Pascal, предоставляющий качественные и очень удобные средства визуальной разработки. Его исключительно быстрый компилятор позволяет эффективно и быстро решать практически любые задачи прикладного программирования.
- пакет Microsoft Visual Basic удобный и популярный инструмент для создания Windows-программ с использованием визуальных средств. Содержит инструментарий для создания диаграмм и презентаций.
- пакет Borland C++ одно из самых распространённых средств для разработки DOS и Windows приложений.
Ниже для иллюстрации приведены на языках Бейсик, Паскаль и Си программы решения одной и той же простой задачи вычисления суммы S элементов одномерного массива A=(a1, a2, . an).
Окно среды программирования Quick Basic
Программа на Паскале
Program Summa;
Type Mas = Array [1 .. 100] of Real;
Var A : Mas;
i, n: Integer;
S : Real;
BEGIN
Write(‘n = ‘); ReadLn(n);
For i : = 1 to n do
begin
Write(‘A[‘, i, ‘] = ‘);
ReadLn(A[i]);
end;
S : = 0;
For i : = 1 to n do
S : = S + A[i];
WriteLn(‘S = ‘, S:8:2);
END.
Операционные системы ради повышения скорости работы традиционно писались на языке низкого уровня ассемблере, но язык Си настолько хорошо зарекомендовал себя, что на нем было написано более 90% всего кода ОС UNIX. Язык СИ обрел популярность как так называемый язык среднего уровня, в котором удобство, краткость и мобильность языков высокого уровня сочетаются с возможностью непосредственного доступа к аппаратуре компьютера, что обычно достигаются только при программировании на языке Ассемблера.
Си не очень прост в изучении и требует тщательности в программировании, но позволяет создавать сложные и весьма эффективные программы.