Реферат по информатике на тему Языки программирования читать бесплатно. Кратко языки программирования
Классификация языков программирования: кратко
Классификация и виды языков программирования – это очень сложный, многообразный вопрос, который постоянно вызывает споры, требует регулярной переоценки и умения находить в различных языках объединяющие их характеристики и особенности. Сейчас существует огромное количество самых разных языков программирования. По некоторым подсчетам, всего их более чем 120. Некоторые из них очень распространены и популярны (C++, Java, Python), некоторые известны только узкому кругу специалистов и любителей экзотики (Groovy, Clojure, Boo)
Как таковой единой классификации языков программирования просто не существует. Их можно разделять между собой по целому ряду признаков и именно так обычно и происходит. Одни специалисты склоняются к тому, чтобы классифицировать языки по их техническим свойствам, другие обращают большее внимание на их типовые признаки, третьи руководствуются в определении принадлежности языка к какому-либо классу распространенными мифами и заблуждениями. Так или иначе, но есть несколько подходов к классификации языков. Рассмотрим самые известные и правдоподобные из них.
Высокоуровневые и низкоуровневые
Очень часто именно по этому признаку языки программирования и отличают между собой. Изначально первыми появились языки низкого уровня, и под таким подразумевается язык, который способен обращаться непосредственно к физическим параметрам устройства и работать с определенной архитектурой микропроцессора. Если говорить кратко, такие языки могут работать с заложенными техническими параметрами оборудования, регулировать их функционирование, задавать рабочие параметры. Именно на языках низкого уровня пишутся операционные системы, драйвера, системное ПО, утилиты для работы с периферийными устройствами, датчиками и тому подобными объектами.
Высокоуровневые языки же являются более абстрактными, обладают массой классов, очень развитым синтаксисом и более похожи на простой человеческий язык, нежели на машинные коды и команды. Программы на таких языках, в отличие от низкоуровневых, не «заточены» под определенную архитектуру процессора, а могут быть относительно легко перенесены на другие устройства, модифицированы и изменены под все новые нужды.
К низкоуровневым относятся целая серия языков ассемблера, машинные коды, язык Forth, некоторые причисляют сюда также и С, хотя это уже вызывает некоторые споры. Высокоуровневых языков несравнимо больше – это и С++, Java, Python, Ruby, Фортран, Паскаль, PHP и многие другие. Но такая классификация не слишком хорошо передает реальное многообразие в ИТ сфере, ведь эволюция языков программирования уже далеко шагнула от тех времен, когда разработчикам приходилось использовать непосредственно низкоуровневые языки. Классификация языков программирования по уровню все больше уходит в прошлое, так как основные находящиеся в использовании языки все больше стирают грани своих возможностей.
Языки безопасные и небезопасные
Еще один вариант как-то дифференцировать языки между собой, это смотреть на уровень безопасности, который они предлагают. Современный мир во многом уже электронный – банковская информация, личные данные, пароли, переписка, все это требует защиты от посторонних, иначе возможны и воровство, и другие типы серьезного вредительства. Именно поэтому некоторые специалисты предлагают смотреть на языки программирования, как на безопасные и небезопасные. Такая классификация языков программирования по-своему интересна и полезна.
Безопасным считается тот язык, созданные на котором программы при компиляции не будут нарушать заложенной в них логики поведения. Это не обязательно означает, что такая программа не может содержать ошибок, такое вообще вряд ли возможно. Но она должна быть стабильной и не нарушать целостности вложенных в нее данных. К безопасным относят такие языки, как Standard ML, Ada, BitC, Lisp и некоторые другие. Как правило, это проекты для военных, банковских операций и серьезных реальных сфер деятельности.
Небезопасными являются языки, прямо противоположные безопасным – в созданных ими программах возможны такие ошибки, которые способны привести к проблемам доступа к памяти устройства, а также вызвать вообще крах всей программы. С, С++, Java и большинство других популярных и очень распространенных языков являются небезопасными. Крах написанных на них программ – это вполне бытовое и частое явление. Конечно, постепенное развитие этих языков делает их более безопасными и надежными.
Используемая парадигма программирования
Еще один способ поделить языки на классы – обозначить, какую ПП они реализуют. Можно долго говорить на эту тему, упоминая объектно-ориентированное, функциональное, конкатенативную парадигмы, но проще сделать это по-другому. Все парадигмы делятся всего на два типа: императивная и декларативная парадигмы.
Языки императивной парадигмы отличаются тем, что задают машине команды в виде таких себе приказов, которые компьютер должен выполнять в определенном порядке. Декларативная парадигма позволяет создавать формализованное задание, которое дает машине определенную свободу в порядке выполнения поставленных задач. Эта схема довольно наглядна и понятна. К первому типу языков относятся машинные коды, ассемблер, Форт. Яркие представители второго типа - SQL и HTML.
Это далеко не единственные варианты сортировки языков, но даже их достаточно, чтобы понять, насколько это объемная и сложная тема.
bunkerbook.ru
Краткая история и классификация языков программирования
Первые языки программирования были очень примитивными и мало чем отличались от формализованных упорядоченных последовательностей единиц и нулей, понятных компьютеру. Использование таких языков было крайне неудобно с точки зрения программиста, так как он должен был знать числовые коды всех машинных команд, должен был сам распределять память под команды программы и данные.
Для того, чтобы облегчить общение человека с ЭВМ были созданы языки программирования типа Ассемблер. Переменные величины стали изображаться символическими именами. Числовые коды операций заменились на мнемонические обозначения, которые легче запомнить. Язык программирования приблизился к человеческому языку, и отдалился от языка машинных команд.
Один из первых языков программирования – Фортран(Formula Translation) был создан в середине 50-х годов. Благодаря своей простоте и тому, что на этом языке накоплены большие библиотеки программ Фортран и в наши дни остается одним из самых распространенных. Он используется для инженерных и научных расчетов, для решения задач физики и других наук с развитым математическим аппаратом.
Для решения экономических задач был создан язык программирования - Кобол.
Расширение областей применения ЭВМ влечет за собой создание языков, ориентированных на новые сферы применения: Снобол– алгоритмический язык для обработки текстовой информации, Лисп- алгоритмический язык для обработки символов. Лисп находит широкое применение в исследованиях по созданию искусственного интеллекта.
В 1968 г. был объявлен конкурс на лучший язык программирования для обучения студентов. Победителем стал язык Алгол-68, но широкого распространения не получил. Для этого конкурса Никлаус Вирт создал язык Паскаль, достаточно простой, удобный, с наличием мощных средств структурирования данных. Хотя Паскаль был разработан как язык для обучения программированию, он впоследствии получил широкое развитие и в настоящее время считается одним из самых используемых языков. Для обучения младших школьников Самуэлем Пайпертом был разработан язык Лого. Он отличается простотой и богатыми возможностями.
Широкое распространение в школах в качестве обучающего языка получил язык Бейсик, позволяющий взаимодействовать с ЭВМ в режиме непосредственного диалога. Спустя много лет после изобретения Бейсика, он и сегодня самый простой для освоения из десятков языков общецелевого программирования.
Необходимость разработки больших программ, управляющих работой ЭВМ, потребовала создания специального языка программирования СИ в начале 70-х г. Он является одним из универсальных языков программирования. В отличии от Паскаля, в нем заложены возможности непосредственного обращения к некоторым машинным командам и к определенным участкам памяти компьютера. Си широко используется как инструментальный язык для разработки операционных систем, трансляторов, баз данных и других системных и прикладных программ. Си – это язык программирования общего назначения, хорошо известный своей эффективностью, экономичностью, и переносимостью. Во многих случаях программы, написанные на Си, сравнимы по скорости с программами, написанными на языке Ассемблера. При этом они имеют лучшую наглядность и их более просто сопровождать. Си сочетает эффективность и мощность в относительно малом по размеру языке.
Появление функционального программирования привело к созданию языка Пролог. Этот язык программирования разрабатывался для задач анализа и понимания естественных языков на основе языка формальной логики и методов автоматического доказательства теорем.
В 80-х г. 20 века был создан язык Ада.Этот язык в дополнение к классическим свойствам, обеспечивает программирование задач реального времени и моделирования параллельного решения задач.
Существуют различные классификации языков программирования. По наиболее распространенной классификации все языки программирования делят на языки низкого, высокого и сверхвысокогоуровня.
В группу языков низкого уровня входят машинные языки и языки символического кодирования: (Автокод, Ассемблер). Операторы этого языка – это те же машинные команды, но записанные мнемоническими кодами, а в качестве операндов используются не конкретные адреса, а символические имена. Все языки низкого уровня ориентированы на определенный тип компьютера, т. е. являются машинно-зависимыми. Машинно-ориентированные языки – это языки, наборы операторов и изобразительные средства которых существенно зависят от особенностей ЭВМ (внутреннего языка, структуры памяти и т.д.).
Следующую, существенно более многочисленную группу составляют языки программирования высокого уровня. Это Фортран, Алгол, Кобол, Паскаль, Бейсик, Си, Пролог и т.д. Эти языки машинно-независимы, т.к. они ориентированы не на систему команд той или иной ЭВМ, а на систему операндов, характерных для записи определенного класса алгоритмов. Однако программы, написанные на языках высокого уровня, занимают больше памяти и медленнее выполняются, чем программы на машинных языках.
К языкам сверхвысокого уровня можно отнести лишь Алгол-68 и APL. Повышение уровня этих языков произошло за счет введения сверхмощных операций и операторов.
Другая классификация делит языки на вычислительные и языки символьной обработки. К первому типу относят Фортран, Паскаль, Алгол, Бейсик, Си, ко второму типу - Лисп, Пролог, Снобол и др.
В современной информатике можно выделить два основных направления развития языков программирования: процедурное и непроцедурное.
Процедурное программирование возникло на заре вычислительной техники и получило широкое распространение. В процедурных языках программа явно описывает действия, которые необходимо выполнить, а результат задается только способом получения его при помощи некоторой процедуры, которая представляет собой определенную последовательность действий.
Среди процедурных языков выделяют в свою очередь структурные и операционные языки. В структурных языках одним оператором записываются целые алгоритмические структуры: ветвления, циклы и т.д. В операционных языках для этого используются несколько операций. Широко распространены следующие структурные языки: Паскаль, Си, Ада, ПЛ/1. Среди операционных известны Фортран, Бейсик, Фокал.
Непроцедурное (декларативное) программирование появилось в начале 70-х годов 20 века, но стремительное его развитие началось в 80-е годы, когда был разработан японский проект создания ЭВМ пятого поколения, целью которого явилась подготовка почвы для создания интеллектуальных машин. К непроцедурному программированию относятся функциональные и логические языки.
В функциональных языках программа описывает вычисление некоторой функции. Обычно эта функция задается как композиция других, более простых, те в свою очередь разлагаются на еще более простые и т.д. Один из основных элементов в функциональных языках - рекурсия, то есть вычисление значения функции через значение этой же функции от других элементов. Присваивания и циклов в классических функциональных языках нет.
В логических языках программа вообще не описывает действий. Она задает данные и соотношения между ними. После этого системе можно задавать вопросы. Машина перебирает известные и заданные в программе данные и находит ответ на вопрос. Порядок перебора не описывается в программе, а неявно задается самим языком. Классическим языком логического программирования считается Пролог. Построение логической программы вообще не требует алгоритмического мышления, программа описывает статические отношения объектов, а динамика находится в механизме перебора и скрыта от программиста.
Можно выделить еще один класс языков программирования - объектно-ориентированные языки высокого уровня. На таких языках не описывают подробной последовательности действий для решения задачи, хотя они содержат элементы процедурного программирования. Объектно-ориентированные языки, благодаря богатому пользовательскому интерфейсу, предлагают человеку решить задачу в удобной для него форме. Примером такого языка может служить язык программирования визуального общения Object Pascal.
Языки описания сценариев, такие как Perl, Python, Rexx, Tcl и языки оболочек UNIX, предполагают стиль программирования, весьма отличный от характерного для языков системного уровня. Они предназначаются не для написания приложения с нуля, а для комбинирования компонентов, набор которых создается заранее при помощи других языков. Развитие и рост популярности Internet также способствовали распространению языков описания сценариев. Так, для написания сценариев широко употребляется язык Perl, а среди разработчиков Web-страниц популярен JavaScript.
Похожие статьи:
poznayka.org
Доклад - Языки программирования. Обзор, возможности, достоинства, недостатки
Оглавление
1. Понятие о языках программирования. 3
2. Компиляторы и интерпретаторы. 3
3. Уровни языков программирования. 5
4. Языки низкого уровня. 6
4.1 Ассемблер. 6
5. Обзор языков программирования высокого уровня. 7
5.1 Фортран. 7
5.2 Кобол. 7
5.3 Алгол. 8
5.4 Паскаль. 8
5.5 Бейсик. 9
5.6 Си. 9
5.7 Си++. 10
6. Список литературы: 12
Язык программирования – один из способов записи алгоритмов; совокупность набора символов системы, правил образования и истолкования конструкций из символов для задания алгоритмов с использованием символов естественного языка.
Понятие о языках программирования.
Процессор компьютера – это большая интегральная микросхема. Все команды и данные он получает в виде электрических сигналов, но их можно представить и как совокупности нулей и единиц, т. е. числами. Поэтому реально программа, с которой работает процессор, представляет собой последовательность чисел, называемых машинным кодом.
Написать программу в машинном коде достаточно сложно, причем сложность работы непропорционально возрастает с увеличением размера программы. Условно можно считать, что машинный код приемлем, если размер программы не превосходит нескольких десятков байтов и нет потребности в операциях ручного ввода и вывода данных. Такая ситуация встречается, например, при программировании простейших автоматов.
Более сложные программы создают с помощью так называемых языков программирования. Теоретически программу можно написать и средствами обычного человеческого языка – это называется программированием на метаязыке, но автоматически перевести в машинный код обычный человеческий язык пока невозможно. Перевод выполняют специальные служебные программы, называемые трансляторами, а трансляторов, способных перевести в машинный код обычный человеческий язык, пока не существует (из-за высокой неоднозначности естественного языка).
Языки программирования – искусственные языки. Они отличаются от естественных человеческих языков малым количеством слов, значение которых понятно транслятору (эти слова называются ключевыми ), и довольно жесткими требованиями по форме записи операторов (совокупность этих требований образует грамматику и синтаксис языка программирования). Нарушения формы записи приводят тому, что транслятор не может правильно выполнить перевод и выдает сообщение об ошибке.
Компиляторы и интерпретаторы.
Что же нужно, чтобы «создать язык программирования»?
На первый взгляд, для этого необходимо определить какие инструкции в нем могут использоваться (их называют операторами ), жестко утвердить список ключевых слов, которые допустимо использовать, и разработать правила записи каждого из операторов (правила синтаксиса). Однако этого не достаточно. Это лишь идея языка программирования. Для того, чтобы он имел практическое применение, следует разработать программу, способную транслировать текст, записанный по всем правилам данного языка в машинный код, то есть создать транслятор. Таким образом, именно транслятор представляет собой конкретную реализацию идеи языка программирования.
По принципу действия различают два вида трансляторов: компиляторы и интерпретаторы. Соответственно с этим можно выделить два класса языков программирования: компилируемые и интерпретируемые .
Трансляция – это перевод. Если мы посмотрим, как работают переводчики с иностранных языков, то тоже увидим, что существует два подхода: синхронный перевод и перевод текстов.
Синхронный переводчик «ловит» услышанную фразу и переводит ее как можно ближе к смыслу. В момент перевода он не знает, какая фраза последует далее, и не успевает учитывать фразы, высказанные ранее. Он как бы в любой момент времени работает с одной конкретной фразой. Для перевода каких-либо специфических понятий ему приходится выстраивать целые конструкции. Фразы синхронного перевода обычно длиннее, чем их оригинал, и не отличаются изяществом.
Литературный переводчик сначала несколько раз прочитает весь текст, подлежащий переводу. Он заранее найдет в нем все особо сложные для перевода места, построит нужные конструкции и будет ими пользоваться всякий раз, когда возникнет необходимость. При переводе одной конкретной фразы переводчик должен учитывать особенность всей книги в целом и даже особенности других произведений того же автора.
Интерпретаторы работают как синхронные переводчики. Они берут один оператор из программы, транслируют его в машинный код (или в какой-то промежуточный код, близкий к машинному коду) и исполняют его. Если какой-то оператор многократно используется в программе, интерпретатор всякий раз будет добросовестно выполнять его перевод так, как будто встретил его впервые.
Компиляторы обрабатывают программу в несколько приемов. Сначала они несколько раз просматривают исходный текст (обычно он называется исходным кодом), находят общие места, Выполняют проверку на отсутствие ошибок синтаксиса и внутренних противоречий, и лишь потом переводят текст в машинный код. В результате программа получается компактной и эффективной.
Если программа написана на интерпретируемом языке программирования, то ее можно выполнить только на том компьютере, на котором предварительно будет установлен интерпретатор, ведь он должен участвовать в исполнении программы. Программы, написанные на компилируемых языках программирования, в посредниках не нуждаются – после компиляции уже получен машинный код, в котором есть все необходимее для работы процессора. Поэтому такие программы работают на любом компьютере и делают это в сотни раз быстрее. Это достоинство компилируемых языков программирования.
Однако у программ, написанных на интерпретируемых языках программирования, есть другое преимущество. Так как мы можем исполнять их только под управлением интерпретатора, то соответственно мы можем в любой момент времени остановить работу программы, посмотреть ее операторы, внести нужные изменения, вновь запустить и т. д. Содержание программы открыто для пользователя. Для откомпилированных программ все это сделать практически невозможно. После компиляции программы ее исходный текст остается только у автора. Все остальные пользователи получают машинный код, который можно исполнять, но практически нельзя ни посмотреть, ни изменить. Хотя теоретически это сделать можно, но для этого необходимы огромные затраты времени, наличие специальных программ и высокий уровень знаний и опыта.
Уровни языков программирования.
Существует два уровня языков программирования: языки низкого уровня и языки высокого уровня.
Язык программирования низкого уровня – это язык программирования, созданный для использования со специальным типом процессора и учитывающий его особенности. В данном случае «низкий уровень» не значит «плохой». Имеется в виду, что язык близок к машинному коду (он позволяет непосредственно реализовать некоторые команды процессора).
Языки низкого уровня мало похожи на нормальный, привычный человеку язык. Большие, грамосткие программы на таких языках пишутся редко. Зато если программа будет написана на таком языке, то она будет работать быстро, занимая маленький объем и допуская минимальное количество ошибок. Чем ниже и ближе к машинному уровень языка, тем меньше и конкретнее задачи, которые ставятся перед каждой командой.
Для каждого типа процессоров самым низким уровнем является язык ассемблера, который позволяет представить машинный код не в виде чисел, а в виде условных обозначений, называемых мнемониками. У каждого типа процессора свой язык ассемблера; его можно рассматривать одновременно и как особую форму записи машинных команд, и как язык программирования самого низкого уровня.
Достоинством языков низкого уровня является то, что с их помощью создают самые эффективные программы (краткие и быстрые). Недостаток таких языков в том, что их трудно изучать из-за необходимости понимать устройство процессора и в том, что программа, созданная на таком язык, неприменима для процессоров других типов.
Языки программирования высокого уровня заметно проще в изучении и применении. Программы, написанные с их помощью, можно использовать на любой компьютерной платформе, правда при условии, что для нее существует транслятор данного языка. Эти языки вообще никак не учитывают свойства конкретного процессора и не предоставляют прямых средств для обращения к нему. В некоторых случаях это ограничивает возможности программистов, но зато и оставляет меньше возможностей для совершения ошибок.
Языки высокого уровня в большей степени ориентированы на человека; команды этих языков – понятные человеку английские слова. Чем выше уровень языка, тем больше приходится проделать операций для выполнения необходимой команды.
С появлением языков высокого уровня программисты получили возможность больше времени уделять решению конкретной проблемы, не отвлекаясь особенно на весьма тонкие вопросы организации самого процесса выполнения задания на машине. Кроме того, появление этих языков ознаменовало первый шаг на пути создания программ, которые вышли за пределы научно-исследовательских лабораторий и финансовых отделов.
Достоинства языков программирования высокого уровня :
· алфавит языка значительно шире машинного, что делает его гораздо более выразительным и существенно повышает наглядность и понятность текста;
· набор операций, допустимых для использования, не зависит от набора машинных операций, а выбирается из соображений удобства формулирования алгоритмов решения задач определенного класса;
· конструкции операторов задаются в удобном для человека виде;
· поддерживается широкий набор типов данных.
Существуют также как универсальные, так и специализированные языки программирования.
Языки низкого уровня.
Ассемблер.
К языкам низкого уровня относятся языки Ассемблера. Свое название они получили от имени системной программы Ассемблер, которая преобразует исходные программы, написанные на таких языках, непосредственно в коды машинных команд. Термин «ассемблер» произошел от английского слова assembler – сборщик частей в одно целое. Частями здесь служат операторы, а результатом сборки – последовательность машинных команд. Процесс сборки называется ассемблированием.
Ассемблер машинно-зависимый язык, т. е. он отражает особенности архитектуры конкретного типа компьютера. Исходная программа, написанная на ассемблере, состоит из одного или нескольких модулей, а каждый модуль – из операторов.
Язык Ассемблера объединяет в себе достоинства языка машинных команд и некоторые черты языков высокого уровня. Ассемблер обеспечивает возможность применения символических имен в исходной программе и избавляет программистов от утомительного труда по распределению памяти компьютера для команд, переменных и констант, что неизбежно при программировании на языке машинных команд.
Ассемблер позволяет также гибко и полно использовать технические возможности компьютера, как и язык машинных команд. Транслятор исходных программ в Ассемблере проще транслятора, требующегося для языка программирования высокого уровня. На Ассемблере можно написать столь же эффективную по размеру и времени выполнения программу, как и программу на языке машинных команд. Это достоинство отсутствует у языков высокого уровня.
Данный язык часто применяют для программирования систем реального времени, технологическими процессами и оборудованием, для обеспечения работы информационно-измерительных комплексов. К таким системам обычно предъявляются высокие требования по объему занимаемой машиной памяти.
Часто язык Ассемблера дополняется средствами формирования макрокоманд, каждая из которых эквивалентна целой группе машинных команд. Такой язык называют языком макроассемблера. Применение «макстроительных» блоков и приближает язык Ассемблера к языкам высокого уровня.
Обзор языков программирования высокого уровня.
Фортран.
Фортран – исторически первый компилируемый язык программирования, разработанный в 1954-1958 г.г. Джимом Бекусом. Базовые принципы, заложенные в основу этого языка, впоследствии легли в основу многих других языков программирования высокого уровня.
Не отягощенный формальностями, язык Фортран оказался достаточно прост в изучении и потому нашел широкое распространение в среде ученых и инженеров. С его помощью оказалось удобно выполнять сложные научно-технические вычисления, если количество операторов не превосходит нескольких сотен. Обычно в эту категорию укладываются расчеты на прочность теплофизические, термодинамические, электротехнические и т. п. расчеты.
В последующие десятилетия язык существенно модернизировался и расширился. Его и сегодня широко применяют в названных областях техники, хотя современные версии языка отличаются универсальностью и могут использоваться и в других областях науки и техники.
Большинство крупных научно-технических программ написано на Фортране потому, что он обладает переносимостью и устойчивостью, а также благодаря наличию встроенных математических и тригонометрических функций. Неотъемлемой частью любой прикладной программы на языке Фортран является расширенная графическая библиотека, позволяющая использовать различные графические данные и изображения.
Кобол.
Кобол – компилируемый язык программирования для «делового» применения. Этот язык программирования был разработан в 1959-1961 г.г. прежде всего для исследований в экономической сфере. Язык позволяет эффективно работать с большим количеством данных, он насыщен разнообразными возможностями поиска, сортировки и распределения.
О программах на Коболе, основанных на широком использовании английского языка, говорят, что они понятны даже тем, кто не владеет Коболом, поскольку тексты на этом языке программирования не нуждаются в каких-либо специальных комментариях. Такие программы принято называть самодокументирующимися.
К числу других плюсов Кобола относят его структурированность. Довольно мощные компиляторы с этого языка разработаны для персональных компьютеров. Некоторые из них столь эффективны, что программу, отлаженную на персональном компьютере, нетрудно перенести на большие ЭВМ.
Перечисляя недостатки языка, нельзя не вспомнить о том, что на Коболе можно запрограммировать лишь простейшие алгебраические вычисления. Для инженерных расчетов этот язык не годится.
Еще одной причиной, сдерживающей развитие языка, является наличие в США отраслевого комитета, вырабатывающего стандарты, за соблюдением которых следит правительственная комиссия. Как это всегда бывает в подобных случаях, фирмы, занимающиеся разработкой программного обеспечения, не торопятся подгонять свои заготовки к жестким требованиям комиссии, отсутствует конкуренция, а в итоге проигрывает распространение языка.
Алгол.
Алгол – компилируемый язык программирования, впервые опубликованный в 1960 г.
От языка Фортран Алгол отличался значительно более строгими правилами синтаксиса, что позволило создавать с его помощью программы больших размеров, но вызвало существенные сложности в практическом применении для решения повседневных задач. Поэтому Алгол нашел применение не в инженерных, а в научных кругах, в первую очередь среди специалистов по прикладной математике, теоретической и экспериментальной физике. В этих сферах он использовался, пока его не сменил более удобный и не менее строгий язык Паскаль.
Паскаль.
Паскаль – компилируемый язык программирования, созданный в 1968-1970 г.г. в Швейцарском Федеральном институте технологии в Цюрихе Никласом Виртом.
В основу языка Паскаль были положены принципы, впервые представленные Алголом, но правила синтаксиса были несколько упрощены, и язык получил большую популярность. Особенно широкое распространение языка началось после 1984 г., когда был представлен удобный и эффективный компилятор TurboPascal.
Язык Паскаль впервые ввел некоторые принципиально новые типы данных и подвел программистов к понятию о структурном программировании, что сказалось на самом стиле разработки программ. С распространением этого языка впервые появилось понятие о программировании, как о проектировании программ, которое в дальнейшем было развито другими языками и системами программирования.
Достоинства языка Паскаль:
· простота языка позволяет быстро его осваивать и создавать алгоритмически сложные программы;
· развитые средства представления структур данных обеспечивают удобство работы как с числовой, так и с символьной и битовой информацией;
· возможность структурного программирования, что делает программу наглядной и дает хорошие возможности для разработки и отладки;
· наличие специальных методик создания трансляторов с Паскаля упростило их разработку и способствовало широкому распространению языка;
· возможность создавать достаточно сложные и мобильные (т. е. легко переносимые на другие PC) программы.
Сегодня Паскаль является одним из трех основных языков программирования. Строгость и четкость делают его почти идеальным для академического изучения. Этот язык считается базовым во многих неспециализированных высших учебных заведениях и университетах мира.
Бейсик.
Бейсик – интерпретируемый язык, хотя существуют некоторые версии, для которых имеются компиляторы. Он был создан в 1963 г. при непосредственном участии в его разработке американцев Джона Кемени и Томаса Курца.
Данный язык программирования считается простейшим. В принципе, Бейсик создавался в качестве учебного языка, средствами которого легко можно представить принципы создания алгоритмов.
Однако простота языка программирования оборачивалась, особенно в ранних версиях, трудностями структурирования. Кроме того, Бейсик не допускал рекурсию – интересный прием, позволяющий составлять эффективные и в то же время короткие программы.
Одно из удобств Бейсика состоит в небольшом размере интерпретатора: существуют реализации, в которых он занимает всего несколько кБайт. В простейших 8-разрядных компьютерах это свойство используют для встраивания интерпретатора в микросхему постоянного запоминающего устройства, и тогда компьютер сразу при включении готов к исполнению команд и программ Бейсика (не надо ничего загружать).
Язык Бейсик хорошо подходит для алгоритмического программирования. С его помощью можно создавать программы длиной до 100-200 операторов, но для более крупных проектов он не подходит, поскольку становится трудно следить за непрерывно возникающими связями между отдельными частями программы.
Си.
Сотрудник фирмы BellLabsДенис Ритчи создал язык Си в 1972 г. во время совместной работы с Кеном Томпсоном, как инструментальное средство для реализации операционной системы Unix, однако популярность этого языка быстро переросла рамки конкретной операционной системы и конкретных задач системного программирования. В настоящее время любая инструментальная и операционная система не может считаться полной, если в ее состав не входит компилятор языка Си.
Ритчи не выдумывал Си просто из головы, прообразом послужил язык Би, разработанный Томпсоном. Язык Си был разработан как инструмент для программистов-практиков. В соответствии с этим главной целью его автора было создание удобного и полезного во всех отношениях языка.
Язык Си задумывался как язык промежуточный между языками высокого и низкого уровня. От компилятора пытались добиться производительности, близкой к производительности Ассемблера, но в то же время сохранить возможность переноса программ между компьютерными платформами, характерную для языков высокого уровня. Хотя язык требует от программистов высокой дисциплины, он не строг в формальных претензиях и допускает краткие формулировки.
Си – современный язык. Он включает в себя те управляющие конструкции, которые рекомендованы теорией и практикой программирования.
Си – эффективный язык. Его структура позволяет наилучшим образом использовать возможности современных персональных компьютеров. Программирование на этом языке отличается компактностью и быстротой исполнения.
Си – переносимый и мобильный язык.
Си – мощный и гибкий язык. Большая часть операционной системы Unix, компиляторы и интерпретаторы языков Фортран, Паскаль и Бейсик написаны именно с его помощью.
Си – удобный язык. Он достаточно структурирован, чтобы поддерживать хороший стиль программирования и вместе с тем не связан жесткими ограничениями.
Необычайную популярность язык Си приобрел благодаря тому, что он, как и Паскаль, является языком структурного программирования, но позволяет генерировать более производительный и компактный рабочий код.
Характерным недостатком языка стала относительно высокая сложность изучения по сравнению с языками Паскаль и Бейсик.
Си++.
Язык Си++ был разработан в 1980 г. Бьерном Страуструпом в компании BellLabs.
Си++ — компилируемый язык программирования. Он позволяет создавать программы более компактные и эффективные, чем, например Паскаль, но его изучение сложнее. Поэтому Си++ обычно изучают в специализированных учебных заведениях, в которых готовят программистов.
Сложность изучения языка Си++ во многом связана с тем, что в самом языке отсутствуют средства для управления вводом и выводом информации. И это понятно, поскольку эти средства у каждой модели компьютера свои, а Си++ является абстрактным языком, не ориентированным на конкретную модель компьютера. Поэтому часто язык изучают не на конкретных примерах, а на абстрактных теоретических конструкциях, что крайне не удобно для начинающих.
Очевидно, что очень многое Си++ позаимствовал у языка Си. Эти заимствования обеспечили Си++ мощными средствами низкого уровня, позволяющими решать сложные задачи системного программирования. Но Си++ отличается от Си в первую очередь разной степенью внимания к типам и структурам данных. Это связано с появлением понятий класса, производного класса и виртуальной функции. Это дает Си++ более эффективные возможности для контроля типов данных и обеспечивает модульность программы.
В отличие от традиционных структур Си и Паскаля, в Си++ членами класса являются не только данные, но и функции. Функции имеют привилегированный доступ к данным внутри объектов этого класса и обеспечивают интерфейс между этими объектами и остальной программой. При дальнейшей работе совершенно не обязательно помнить о внутренней структуре класса и механизме работы встроенной функции. В этом смысле класс подобен электрическому прибору: мало кто знает о его устройстве, но все знают, как им пользоваться.
Язык Си++ является средством объектного программирования, новейшей методики проектирования и реализации программ, которая в текущем десятилетии, скорее всего, заменит традиционное процедурное программирование.
В последнее время появились среды быстрого проектирования на Си++, которые предоставляют готовые компоненты для ввода и вывода информации и поддерживают концепцию виртуального проектирования приложений Windows. Это значительно упростило изучение языка.
Список литературы:
1. Под редакцией Конюховского П.В. и Колесова Д.Н., «Информатика», Санкт-Петербург: изд-во «Питер», 2000.
2. К.Г.Скрипкин, «Экономическая эффективность информационных систем», Москва: изд-во «ДМК-Пресс», 2002.
3. Сухомлин В.А., «Введение в анализ информационных технологий» Москва: изд-во «Горячая линия – Телеком», 2003.
www.ronl.ru
Реферат по информатике на тему Языки программирования читать бесплатно
Языки программирования
Язык программирования - это система знаков, которая используется для написания компьютерных программ.
Языки программирования классифицируются в зависимости от самых разных критериев. Но чаще всего они подразделяются на языки высокого и низкого уровня. Чем ближе язык к естественному языку, тем более вели его шансы попасть в категорию языков высокого уровня. И наоборот, если язык ближе к машинным командам, в этом случае его называют языком низкого уровня.
Так например языки программирования Ассемблер и Автокод являются языками низкого уровня, так как их операторы - это вышеупомянутые машинные команды. Эти языки, как и все языки низкого уровня, ориентированны по определенный вид ПК. Такие языки ещё часто именуются машинно-ориентированными.
Теперь приведем пример языков, которые относят к языкам высокого уровня: Алгол, Кобол, Фортран, Паскаль, Бейсик и другие. Эти языки в большинстве своем предназначены для решения определенных математических, экономических и других задач. Они не являются машинно-зависимыми потому, что они не ориентируются на определенную систему команд. Но при этом следует упомянуть, что такие языки занимают большее количество памяти, и по этой причине их команды выполняются медленнее.Особенность языков высокого уровня состоит в том, что вычислительная машина не распознает написанных на нем программ, ведь ей доступны лишь машинные команды. По этой причине требуются специальные программы-трансляторы, которые осуществляют перевод.
Помимо этого языки подразделяют также на поколения: первое, второе , третье, четвертое, пятое.
К первому поколению относятся языки с ручным управлением памяти, которые, естественно, являются машинноориентированными.
Ко второму поколению относятся языки, именуемые автокодами.
К третьему поколению относятся языки такие как Бейсик и Паскаль, которые используются для создания общих прикладных программ.
Четвертое поколение включает усовершенствованные языки для работы с БД.
Ну и языки пятого поколения - это наиболее усовершенствованные, визуальные, ориентированные объектно, такие как: Пролог, Visual и т д.
Ещё в начале создания первых вычислительных машин было создано свыше 2000 разнообразных языков программирования и по сей день это цифра продолжает расти. Одними языками пользуются единицы (это как правило сами разработчики), другие становятся предметом пользования для миллионов, но так или иначе они являются неотъемлемой частью информационных технологий.
см. также: Все рефераты по информатике
www.sdamna5.ru
Языки программирования
На практике в качестве исполнителей алгоритмов используются специальные автоматы - компьютеры. Для того, чтобы ЭВМ могла выполнять программу, программа должна быть записана по строгим правилам в виде, доступном для обработки на ЭВМ. Программа для такой машины записывается на так называемом машинном языке, т. е. представляет собой последовательность двоичных чисел. Придумывать и записывать программу на машинном языке неудобно. Это нудная и долгая работа не обходилась без ошибок, которые было очень непросто найти.
Поэтому возникла идея записывать программу на так называемом алгоритмическом языке или языке программирования. Языки программирования – специально разработанные искусственные языки, предназначенные исключительно для записи алгоритмов, исполнение которых поручается ЭВМ.
Обычный разговорный язык состоит из четырех основных элементов: символов, слов, словосочетаний и предложений. Алгоритмический язык содержит подобные элементы, только слова называют элементарными конструкциями, словосочетания - выражениями, предложения - операторами. Алгоритмический язык (как и любой другой язык), образуют три его составляющие: алфавит, синтаксис и семантика.
Алфавит– фиксированный для данного языка набор символов (букв, цифр, специальных знаков и т.д.), которые могут быть использованы при написании программы.
Синтаксис- правила построения из символов алфавита специальных конструкций, с помощью которых составляется алгоритм.
Семантика- система правил толкования конструкций языка. Таким образом, программа составляется с помощью соединения символов алфавита в соответствии с синтаксическими правилами и с учетом правил семантики.
Краткая история и классификация языков программирования
Первые языки программирования были очень примитивными и мало чем отличались от формализованных упорядоченных последовательностей единиц и нулей, понятных компьютеру. Использование таких языков было крайне неудобно с точки зрения программиста, так как он должен был знать числовые коды всех машинных команд, должен был сам распределять память под команды программы и данные.
Для того, чтобы облегчить общение человека с ЭВМ были созданы языки программирования типа Ассемблер. Переменные величины стали изображаться символическими именами. Числовые коды операций заменились на мнемонические обозначения, которые легче запомнить. Язык программирования приблизился к человеческому языку, и отдалился от языка машинных команд.
Один из первых языков программирования – Фортран (Formula Translation) был создан в середине 50-х годов. Благодаря своей простоте и тому, что на этом языке накоплены большие библиотеки программ Фортран и в наши дни остается одним из самых распространенных. Он используется для инженерных и научных расчетов, для решения задач физики и других наук с развитым математическим аппаратом.
Для решения экономических задач был создан язык программирования - Кобол.
Расширение областей применения ЭВМ влечет за собой создание языков, ориентированных на новые сферы применения: Снобол – алгоритмический язык для обработки текстовой информации, Лисп - алгоритмический язык для обработки символов. Лисп находит широкое применение в исследованиях по созданию искусственного интеллекта.
В 1968 г. был объявлен конкурс на лучший язык программирования для обучения студентов. Победителем стал язык Алгол-68, но широкого распространения не получил. Для этого конкурса Никлаус Вирт создал язык Паскаль, достаточно простой, удобный, с наличием мощных средств структурирования данных. Хотя Паскаль был разработан как язык для обучения программированию, он впоследствии получил широкое развитие и в настоящее время считается одним из самых используемых языков. Для обучения младших школьников Самуэлем Пайпертом был разработан язык Лого. Он отличается простотой и богатыми возможностями.
Широкое распространение в школах в качестве обучающего языка получил язык Бейсик, позволяющий взаимодействовать с ЭВМ в режиме непосредственного диалога. Спустя много лет после изобретения Бейсика, он и сегодня самый простой для освоения из десятков языков общецелевого программирования.
Необходимость разработки больших программ, управляющих работой ЭВМ, потребовала создания специального языка программирования СИ в начале 70-х г. Он является одним из универсальных языков программирования. В отличии от Паскаля, в нем заложены возможности непосредственного обращения к некоторым машинным командам и к определенным участкам памяти компьютера. Си широко используется как инструментальный язык для разработки операционных систем, трансляторов, баз данных и других системных и прикладных программ. Си – это язык программирования общего назначения, хорошо известный своей эффективностью, экономичностью, и переносимостью. Во многих случаях программы, написанные на Си, сравнимы по скорости с программами, написанными на языке Ассемблера. При этом они имеют лучшую наглядность и их более просто сопровождать. Си сочетает эффективность и мощность в относительно малом по размеру языке.
Появление функционального программированияпривело к созданию языка Пролог. Этот язык программирования разрабатывался для задач анализа и понимания естественных языков на основе языка формальной логики и методов автоматического доказательства теорем.
В 80-х г. 20 века был создан язык Ада. Этот язык в дополнение к классическим свойствам, обеспечивает программирование задач реального времени и моделирования параллельного решения задач.
Существуют различные классификации языков программирования. По наиболее распространенной классификации все языки программирования делят на языки низкого, высокого и сверхвысокого уровня.
В группу языков низкого уровня входят машинные языки и языки символического кодирования: (Автокод, Ассемблер). Операторы этого языка – это те же машинные команды, но записанные мнемоническими кодами, а в качестве операндов используются не конкретные адреса, а символические имена. Все языки низкого уровня ориентированы на определенный тип компьютера, т. е. являются машинно-зависимыми. Машинно-ориентированные языки – это языки, наборы операторов и изобразительные средства которых существенно зависят от особенностей ЭВМ (внутреннего языка, структуры памяти и т.д.).
Следующую, существенно более многочисленную группу составляют языки программирования высокого уровня. Это Фортран, Алгол, Кобол, Паскаль, Бейсик, Си, Пролог и т.д. Эти языки машинно-независимы, т.к. они ориентированы не на систему команд той или иной ЭВМ, а на систему операндов, характерных для записи определенного класса алгоритмов. Однако программы, написанные на языках высокого уровня, занимают больше памяти и медленнее выполняются, чем программы на машинных языках.
К языкам сверхвысокого уровняможно отнести лишь Алгол-68 и APL. Повышение уровня этих языков произошло за счет введения сверхмощных операций и операторов.
Другая классификация делит языки на вычислительные и языки символьной обработки. К первому типу относят Фортран, Паскаль, Алгол, Бейсик, Си, ко второму типу - Лисп, Пролог, Снобол и др.
В современной информатике можно выделить два основных направления развития языков программирования: процедурное и непроцедурное.
Процедурное программированиевозникло на заре вычислительной техники и получило широкое распространение. В процедурных языках программа явно описывает действия, которые необходимо выполнить, а результат задается только способом получения его при помощи некоторой процедуры, которая представляет собой определенную последовательность действий.
Среди процедурных языков выделяют в свою очередь структурные и операционные языки. В структурных языках одним оператором записываются целые алгоритмические структуры: ветвления, циклы и т.д. В операционных языках для этого используются несколько операций. Широко распространены следующие структурные языки: Паскаль, Си, Ада, ПЛ/1. Среди операционных известны Фортран, Бейсик, Фокал.
Непроцедурное (декларативное)программирование появилось в начале 70-х годов 20 века, но стремительное его развитие началось в 80-е годы, когда был разработан японский проект создания ЭВМ пятого поколения, целью которого явилась подготовка почвы для создания интеллектуальных машин. К непроцедурному программированию относятся функциональные и логические языки.
В функциональных языкахпрограмма описывает вычисление некоторой функции. Обычно эта функция задается как композиция других, более простых, те в свою очередь разлагаются на еще более простые и т.д. Один из основных элементов в функциональных языках - рекурсия, то есть вычисление значения функции через значение этой же функции от других элементов. Присваивания и циклов в классических функциональных языках нет.
В логических языкахпрограмма вообще не описывает действий. Она задает данные и соотношения между ними. После этого системе можно задавать вопросы. Машина перебирает известные и заданные в программе данные и находит ответ на вопрос. Порядок перебора не описывается в программе, а неявно задается самим языком. Классическим языком логического программирования считается Пролог. Построение логической программы вообще не требует алгоритмического мышления, программа описывает статические отношения объектов, а динамика находится в механизме перебора и скрыта от программиста.
Можно выделить еще один класс языков программирования - объектно-ориентированные языки высокого уровня. На таких языках не описывают подробной последовательности действий для решения задачи, хотя они содержат элементы процедурного программирования. Объектно-ориентированные языки, благодаря богатому пользовательскому интерфейсу, предлагают человеку решить задачу в удобной для него форме. Примером такого языка может служить язык программирования визуального общения Object Pascal.
Языки описания сценариев, такие как Perl, Python, Rexx, Tcl и языки оболочек UNIX, предполагают стиль программирования, весьма отличный от характерного для языков системного уровня. Они предназначаются не для написания приложения с нуля, а для комбинирования компонентов, набор которых создается заранее при помощи других языков. Развитие и рост популярности Internet также способствовали распространению языков описания сценариев. Так, для написания сценариев широко употребляется язык Perl, а среди разработчиков Web-страниц популярен JavaScript.
studfiles.net
Краткая история языков программирования
Энергичное развитие новых языков программирования началось сразу же после появления первых компьютеров на электронных лампах. В то время компьютеры стоили немало. Приобретение единственного экземпляра обходилось в десятки, а то и сотни раз дороже, чем стоимость разработки любой программы. Для такой машины требовался высокоэффективный код, который вручную составлялся на Ассемблере.
Лишь в 50-е годы, для личных нужд фирмы IBM был разработан первый алгоритмический язык. Его назвали FORTRAN. Разумеется, к тому времени уже было несколько наработок языков, преобразующих в машинных код арифметические выражения, но именно создание FORTRAN'а считается отсчетом новой эры - переходом на парадигму алгоритмических языков. Что он мог? Он позволял проводить расчеты только при помощи записи алгоритма с применением операторов ввода/вывода и условных. Первоначально язык создавался специально для вычислительной системы IBM 407. Но популярность FORTRAN'а привела к тому, что даже производители других архитектур стали выпускать собственные трансляторы. Вследствие этого, в 1966 году был выпущен общий стандарт FORTRAN 66.
Уже в конце 50-х гг. появилась хорошая альтернатива FORTRAN'у. Питер Наур разработал алгоритмический язык, независимый от архитектуры. Его назвали ALGOL. В данном случае, разработчики также постарались расширить возможности языка, максимально приблизив систему обозначений к математической.
В начале 60-х гг. производители IBM представили не особо популярный язык PL/I. Он работал с архитектурой IBM 360 и служил своеобразным расширением FORTRAN'а при помощи некоторых средств языка COBOL.Первый язык, в котором было введено понятие класса - Simula-67. Его создали Дал и Найард в конце 60-х.70-е гг. произвели на свет Pascal. Он быстро завоевал массовую популярность. Чуть позже миноборона США начала разработку языка высокого уровня. Проект разрабатывали 4 независимые группы, причем выработка требований и спецификаций проводилась на основе языка Pascal. Получившийся продукт был выпущен уже в начале 80-х, он получил название Ada.
70-е гг. также подарили нам универсальный язык C. Его авторами были Кен Томпсон и Денис Ритчи. Язык пользовался повышенной популярностью у системных программистов, перво ядро ОС UNIX было разработано именно на нем. В 1982 году стандарт C поступил в разработку в ANSI, получившийся вариант был принят в 1990 году. На основе этого языка были разработаны современные языки Java и C++.
Помимо языков, работающих с алгоритмами, свое развитие получили и языки другой направленности. Для обработки деловой информации был разработан COBOL, языками искусственного интеллекта считаются Prolog и LISP. Кроме того, последний широко применяется и в теории игр.
С переходом на персональные компьютеры, языки программирования превратились в отдельную часть сред разработки. Сейчас существуют даже языки, применяемые в офисных программах - например, VBA.
www.programm-school.ru
Краткая история языков программирования
⇐ ПредыдущаяСтр 4 из 6Следующая ⇒С появлением машин второго поколения возникла потребность создания языков, целиком ориентированных на особенности задач и не зависящих от конкретной машины. Символом второго поколения ЭВМ стали языки программирования высокого уровня. Их развитие все в большей степени определялось спецификой решаемых задач, а не особенностями машин. некоторые из этих языки назвали алгоритмическими языками (языки записи алгоритмов).
Одним из первых и наиболее удачных языков такого рода стал Фортран (Formula Translation), разработанный в фирме IBM в 1954-1957 г.г. группой разработчиков во главе с Джоном Бэкусом. Языки высокого уровня вначале были встречены с недоверием. Считалось, что они не позволят добиться той эффективности выполнения программ, которую давали машинные коды. FORTRAN показал, что это не так. Язык Фортран не только просуществовал до наших дней, но и достаточно распространен (Visual Fortran). Среди причин такого долголетия можно отметить простую структуру как самого Фортрана, так и предназначенных для него трансляторов, а также большой объем библиотек исходных текстов уже решенных задач.
Вскоре после создания Фортрана появился (в Европе) язык Алгол (Algorithmic Language), созданный на основе широкого международного сотрудничества. В 1960 г. было опубликовано официальное сообщение об алгоритмическом языке, названном Алгол-60. Алгол создавался после разработки и практического применения Фортрана, поэтому характеризуется как введением новых конструкций, так и обобщением понятий, имеющихся в Фортране. На Алголе стали публиковаться описания алгоритмов (Библиотека алгоритмов - у нас в стране).
Несмотря на то, что и Фортран, и Алгол заслуживали название универсальных языков, ни один них, конечно, не позволял описать все без исключения возникающие задачи. Поэтому примерно в то же время появились алгоритмические языки с проблемной ориентацией, такие как
Кобол - экономические расчеты, Снобол - обработка строк, Симула-67 - моделирование
отвечающие нуждам специфичных направлений науки и техники.
Десятилетняя история развития языка программирования привела к появлению т.н. универсальных языков программирования:
- ALGOL 68 (оказался излишне громоздким и не очень удобным)
- PL/1 (Programming Language/1 — язык программирования один) создан фирмой IBM в 1964 г. Он основывался (взял основные черты) на языках Фортран, Кобол, Алгола и других языков. Был очень популярен на больших ЭВМ (до появления ПЭВМ) во всем мире (и в СССР тоже).
В 1971 г. Никлаусом Виртом был предложен алгоритмический язык Паскаль (Pascal), который предназначался для обучения студентов основам науки о вычислительных машинах, системах и информационных технологиях. Язык Паскаль является преемником Алгола-60, он имеет конструкции, аналогичные существующим в PL/1 и Алголе-68, однако Паскаль более лаконичен. Язык Паскаль способствовал внедрению структурного программирования как современной технологии программирования, основанной на пошаговом построении программы, состоящей из небольших четко определенных процедур.
Язык Паскаль в оригинальной авторской версии не содержал средств раздельной компиляции — модулей, разнообразных числовых типов, строк переменной длины и многого из того, что добавлено в известные реализации. Вследствие этого Н.Вирт предложил язык Модула-2, который должен был заменить Паскаль, устранив основное его ограничение — отсутствие модульности. Известно, что Модула-2 использовалась и используется в проектах, где важнейшую роль играет надежность. Средства межмодульного контроля Модулы-2 заметно совершеннее аналогичных возможностей Паскаля и C.
Язык Оберон был разработан Н. Виртом в 1987 г. Он представляет собой существенно упрощенный синтаксически вариант Модулы-2, в который добавлены расширяемые записи — основной механизм ООП. Язык необычайно прост, но при этом сохраняет универсальность и в функциональном отношении не уступает другим языкам. В 1992 г. Н. Виртом были приняты расширения Оберона, предложенные Ханспетером Мёссенбёком. В язык введены аналоги виртуальных методов в других языках. Новая версия получила название Оберон-2. Удивительно, но Оберон-2 оказался проще Оберона, расширением которого является.
В свою очередь популярность Паскаля еще более возросла с массовым распространением персональных компьютеров и выпуском фирмой Borland среды разработки Turbo Pascal. Компилятор Турбо-Паскаль, разработанный Андерсом Хейльсбергом, был выпущен в продажу фирмой Borland в 1983 г. (версия 1.0). Эта версия уже содержала расширения языка, хотя и небольшие. В последующих выпусках расширений становилось все больше: встроенная графика, модули, средства объектно-ориентированного программирования (ООП) и т.д. Начиная с версии 7.0, язык стал называться Borland Паскаль.
Borland Delphi 1.0 (1995) - 16-разрядная
Borland Delphi 2.0 (1996) - 32-разрядная
…
Borland Delphi 7 (2001) - самая популярная
…
CodeGear Delphi 2007 DELPHI
…
Embarcadero Delphi 2009 - 2014 (XE4)
Бесплатные варианты - Lazarus (на базе Free
Pascal) и Turbo Delphi (2006 г. - появилась, 2008 г. - закрыта).
Kylix 3 (2002 г.) - последняя
«Наследником» Turbo Pascal стала среда программирования (и язык) Delphi — система быстрой разработки приложений для Microsoft Windows (RAD или Rapid Application Development) — и Kylix — система быстрой разработки приложений для X Window System в операционной системе UNIX. Развитием Паскаля стала в Borland Pascal и Delphi объектно-ориентированная версия Паскаля - Объектный Паскаль (1984 г.). Объектный Паскаль (в Delhi - Object Pascal 2.0) по сравнению со стандартным Паскалем содержит очень много синтаксических расширений. В результате из простого и изящного Паскаля получился язык, приближающийся по сложности к языку Ада.
Язык Ада ((Ada-83 и Ada-95), созданный как официальный язык программирования американских военных был также создан на основе языка Паскаль в конце 70-х годов. Язык назван так по имени первой женщины-программиста Ады Лавлейс. Это существенно структурированный язык, особенно он подходит для разработки систем реального времени. Однако язык Ада слишком громоздкий, многословный и не предоставляет программисту достаточной свободы. По синтаксической сложности он до сих пор не превзойден ни одним из языков.
Ada C
Pascal Modula (Modula-2) C++
Oberon (Oberon-2 и 3) Java C#
Turbo Pascal (Borland Pascal)
Object Pascal (Delphi)
Почти одновременно с языком Pascal появился язык С, предложенный Денисом Ритчи в начале 70-х годов. Он задумывался как язык сравнительно низкого уровня в том смысле, что язык C достаточно полно отражает возможности современных компьютеров, позволяя писать весьма эффективные программы, не прибегая к языкам ассемблера. Он использовался для написания значительной части ОС Unix. Используется как язык системного программирования и как язык программирования вычислений. Не накладывая на программиста особых ограничений (в отличие от Паскаля), он дает возможность для разнообразных трюков, чем тоже многим импонирует.
На основе языка С был создан объектно-ориентированный язык C++ (1986 г.). Объектно-ориентированный язык C++ предложил Бьярн Страуструп (жаргон - Дохлый Страус) с первоначальным названием «Си с классами». Название отражает тот факт, что C++ является надмножеством языка C. Язык C++, по ряду оценок, сложнее C вдвое. В настоящее время это, без преувеличения, язык номер один в мире для профессиональных программистов, поскольку он перенял преимущества и популярность C и добавил мощные средства написания объектно-ориентированных программ. Его реализации поддерживаются на всех аппаратно-программных платформах, в отличие от Паскаля, который широко распространен лишь на платформе IBM PC.
Язык С++ в свою очередь, дал жизнь популярному и широко используемому объектно-ориентированному языку Java (в английском произношении — Джава), предложенному Джеймсом Гослингом (фирма Sun Microsystems - ее купила Oracle) в 1995 г. Основная особенность Java — межплатформенная переносимость приложений, благодаря чему язык широко используется для написания приложений для Internet (для Web-программирования). Java — очень сложный синтаксически язык. Его официальное описание — 700-страничный документ — насыщен многословными и громоздкими определениями. Несмотря на эту сложность, в Java есть всего две существенные вещи, которых нет, например, в Обероне: встроенная многопоточность и обработка исключений.
Ответом фирмы Microsoft на рост популярности Java стал язык C# (Си Шарп) (2000 г.).
6. Подходы к разработке программ (парадигмы программирования)
Восходящий подход
Идея его состоит в следующем. Составлению программы предшествует поиск способа решения задачи, который обычно ведется (мысленно и без его фиксации) сверху вниз.
На следующем этапе (когда найден способ решения) найденный способ решения задачи используется при разработке программ. В отличие от поиска решения составление программ ведется снизу вверх. Это означает, что в первую очередь разрабатывают (или подбирают, если они уже существуют) набор базовых средств нижнего уровня (подзадач, подпрограмм или в самом простейшем случае - выражений или операций на выбранном языке программирования), необходимых с точки зрения разработчика для выполнения базовых функций. Также выбирается необходимый набор исходных и промежуточных данных. После этого разработчик, держа в уме найденный способ решения, разрабатывает (подбирает) алгоритм использования этих базовых средств для достижения решения. При этом базовые средства объединяются в конструкции более высокого уровня, которые в свою очередь тоже объединяются в конструкции выше стоящего уровня и т.д. пока не будет получена программа, реализующая поставленную задачу путем вызова необходимых базовых конструкций и разработанных средств в нужном порядке (в уме держится). При этом в процессе разработки алгоритма мы движемся снизу вверх - отсюда название подхода.
Поскольку рассуждения, выполненные в ходе поиска способа решения задачи, не фиксируются, то они теряются и не могут быть использованы при дальнейшем составлении алгоритма. В связи с этим от разработчика требуется выполнить восстановление структуры решения (которое у него сложилось на момент подбора базовых конструкций). Когда число базовых конструкций, уровней иерархии и связей между ними достаточно велико или когда опыт разработчика еще не велик, то способности разработчика часто не хватает на то, чтобы: 1) Просто не допустить логических ошибок в алгоритме; 2) Итоговая структура алгоритма соответствовала той, которую разработчик мысленно получил при подборе базовых средств.
… … … …
базовые средства
6.2 Нисходящий подход.
………
………
………
Стадия 1 Стадия 2 ….. Стадия N
Разработка программы проходит несколько этапов уточнения. На самом верхнем уровне (этапе)решение задачи описывается в терминах небольшого числа (в простейшем случае - одного) действий самого высокого уровня, выполняемые над данными, которые также рассматриваются на самом высоком уровне абстракции. Каждое действие высокого уровня затем уточняется посредствам описания его в терминах действий более низкого уровня. Одновременно уточняются и данные, над которыми выполняются эти действия. Процесс уточнения продолжается до тех пор, пока действия и данные не станут выражаться непосредственно на используемом языке программирования. Каждому этапу уточнения соответствует некоторый отличный от других экземпляр программы (со своим набором документации). При этом для каждой программы предполагается некоторый исполнитель, способный ее (программу) выполнить (ЭВМ).
Можно рассматривать процесс разработки алгоритма таким методом как процесс постепенной передачи решения задачи от исполнителя верхнего уровня (умного) исполнителям более низкого уровня (более глупым в том смысле, что требуют для работы больше пояснений, чем умные) : вначале мы описываем действия по решению задачи на языке исполнителя самого верхнего уровня, затем уточняем каждое из этих действий на языке исполнителя более низкого уровня и т.д. до тех пор, пока конечным исполнителем не станет ЭВМ.
Достоинства данного подхода:
1) не надо выдумывать базовые конструкции программы - они сами появтся на определенной стадии уточнения исходной задачи.
Недостатки этого подхода:
1) приходится при переходе от одной стадии уточнения к другой заново переписывать текст алгоритма и всю. документацию на него
2) ошибки, допущенные на начальных этапах, будут дублироваться на всех последующих этапах
Замечание по двум подходам: и восходящий и нисходящий подходы к разработки алгоритмов - оба являются разными сторонами одного и того же задачного (процедурного) подхода. При использовании данного подхода основное внимание фокусируется на разработке процедур (подпрограмм), в том смысле, что программист пытается разделить поставленную задачу на составляющие подпрограммы, т.е. проводит декомпозицию задачи на подпрограммы, при этом разработчик в алгоритме сам устанавливает порядок выполнения подпрограмм, т.е. какая подпрограмма какую будет вызывать и при каких условиях. Исходные данные и подпрограммы объявлялись отдельно. В подпрограммы данные передаются как параметры. При использовании данного подхода предполагается, что исходные объекты либо не взаимодействуют, либо взаимодействуют, но очень слабо.
Рекомендуемые страницы:
lektsia.com