Файл: История возникновения и развития языка программирования Си (С++) и Java (Понятие языка программирования).pdf
Добавлен: 29.04.2023
Просмотров: 96
Скачиваний: 3
Среди процедурных языков выделяют в свою очередь структурные и операционные языки. В структурных языках одним оператором записываются целые алгоритмические структуры: ветвления, циклы и т.д. В операционных языках для этого используются несколько операций. Широко распространены следующие структурные языки: Паскаль, Си, Ада, ПЛ/1. Среди операционных известны Фортран, Бейсик, Фокал [8].
Непроцедрное (декларативное) программирование появилось в начале 70–х годов 20 века, но стремительное его развитие началось в 80–е годы, когда был разработан японский проект создания ЭВМ пятого поколения, целью которого явилась подготовка почвы для создания интеллектуальных машин. К непроцедурному программированию относятся функциональные и логические языки.
В функциональных языках программа описывает вычисление некоторой функции. Обычно эта функция задается как композиция других, более простых, те в свою очередь разлагаются на еще более простые и т.д. Один из основных элементов в функциональных языках – рекурсия, то есть вычисление значения функции через значение этой же функции от других элементов. Присваивания и циклов в классических функциональных языках нет.
В логических языках программа вообще не описывает действий. Она задает данные и соотношения между ними. После этого системе можно задавать вопросы. Машина перебирает известные и заданные в программе данные и находит ответ на вопрос. Порядок перебора не описывается в программе, а неявно задается самим языком. Классическим языком логического программирования считается Пролог. Построение логической программы вообще не требует алгоритмического мышления, программа описывает статические отношения объектов, а динамика находится в механизме перебора и скрыта от программиста [18].
Можно выделить еще один класс языков программирования – объектно–ориентированные языки высокого уровня. На таких языках не описывают подробной последовательности действий для решения задачи, хотя они содержат элементы процедурного программирования. Объектно–ориентированные языки, благодаря богатому пользовательскому интерфейсу, предлагают человеку решить задачу в удобной для него форме. Примером такого языка может служить язык программирования визуального общения Object Pascal.
Языки описания сценариев, такие как Perl, Python, Rexx, Tcl и языки оболочек UNIX, предполагают стиль программирования, весьма отличный от характерного для языков системного уровня. Они предназначаются не для написания приложения с нуля, а для комбинирования компонентов, набор которых создается заранее при помощи других языков. Развитие и рост популярности Internet также способствовали распространению языков описания сценариев. Так, для написания сценариев широко употребляется язык Perl, а среди разработчиков Web–страниц популярен JavaScript.
В первой главе работы рассмотрены основные понятия языка программирования, который представляет собой определенную знаковую систему, призванную облегчить общение человека и вычислительной машины. Посредством языков программирования компьютеру передаются команды для выполнения, и сейчас мы обладаем таким разнообразием языков программирования, что каждый может найти подходящий – язык, с которого будет удобнее всего начать, а также использовать наиболее целесообразно для реализации тех или иных целей. Также была рассмотрена общая история возникновения и развития языков программирования, благодаря чему можно более полно рассмотреть историю конкретных языков – C и Java [2].
2. История языков программирования
2.1. История возникновения и развития языка Си (C++)
Язык C# появился на свет в июне 2000 г. в результате кропотливой работы большой группы разработчиков компании Microsoft, возглавляемой Андерсом Хейлсбергом. Этот человек известен как автор одного из первых компилируемых языков программирования для персональных компьютеров IBM – Turbo Pascal. Наверное, на территории бывшего Советского Союза многие разработчики со стажем, да и просто люди, обучавшиеся в той или иной форме программированию в вузах, испытали на себе очарование и удобство использования этого продукта. Кроме того, во время работы в корпорации Borland Андерс Хейлсберг прославился созданием интегрированной среды Delphi (он руководил этим проектом вплоть до выхода версии 4.0).
Появление языка C# и инициативы .NET отнюдь не случайно пришлось на начало лета 2000 г. Именно к этому моменту компания Microsoft подготовила промышленные версии новых компонентных технологий и решений в области обмена сообщениями и данными, а также создания Internet–приложений. Несомненно, лучшим способом продвижения этих новинок является создание инструментария для разработчиков с их полноценной поддержкой. В этом и заключается одна из главных задач нового языка C#. Кроме того Microsoft не могла больше расширять все те же инструменты и языки разработки, делая их все более и более сложными для удовлетворения конфликтующих между собой требований поддержки современного оборудования и обеспечения обратной совместимости с теми продуктами, которые были созданы в начале 1990–х гг. во время первого появления Windows. Наступает момент, когда необходимо начать с чистого листа для того, чтобы создать простой, но имеющий сложную структуру набор языков, сред и средств разработки, которые позволят разработчику легко создавать современные программные продукты [7].
С# и .NET являются той самой отправной точкой. Если говорить упрощенно, то .NET представляет собой новую платформу, новый API для программирования в Windows, а С# новый язык, созданный с нуля, для работы с этой платформой, а также для извлечения всех выгод из прогресса сред разработки и нашего понимания принципов объектно–ориентированного программирования в течение последних 20 лет.
Необходимо отметить, что обратная совместимость не потеряна. Существующие программы будут выполняться, а платформа .NET была спроектирована таким образом, чтобы она могла работать с имеющимся программным обеспечением. Связь между компонентами в Windows сейчас почти целиком осуществляется при помощи СОМ. С учетом этого .NET обладает способностью создавать оболочки вокруг существующих компонентов СОМ, так что компоненты .NET могут общаться с ними, и создавать оболочки вокруг компонентов .NET, что позволяет им выглядеть как обычные СОМ–компоненты [3].
Авторы C# стремились создать язык, сочетающий простоту и выразительность современных объектно–ориентированных языков (вроде Java) c богатством возможностей и мощью C++. По словам Андерса Хейлсберга, C# позаимствовал большинство своих синтаксических конструкций из C++. В частности, в нем присутствуют такие удобные типы данных, как структуры и перечисления (другой потомок C++ – Java – лишен этих элементов, что создает определенные неудобства при программировании). Синтаксические конструкции С# унаследованы не только от C++, но и от Visual Basic. Например, в С#, как и в Visual Basic, используются свойства классов. Как C++, С# позволяет производить перегрузку операторов для созданных вами типов Java не поддерживает ни ту, ни другую возможность). С# – это фактически гибрид разных языков. При этом С# синтаксически не менее (если не более) чист, чем Java, так же прост, как Visual Basic, и обладает практически той же мощью и гибкостью, что и C++.
Си – компилируемый статически типизированный язык программирования общего назначения, разработанный в 1969–1973 годах Деннисом Ритчи. Первоначально он был разработан для реализации операционной системы UNIX, но, впоследствии, был перенесён на множество других платформ.
Язык программирования Си оказал существенное влияние на развитие индустрии программного обеспечения, а его синтаксис стал основой для таких языков программирования, как C++, C#, Java и Objective–C [16].
Язык программирования Си отличается минимализмом. Авторы языка хотели, чтобы программы на нём быстро компилировались с помощью однопроходного компилятора. Поэтому сделали так чтобы после компиляции каждой элементарной составляющей программы соответствовало небольшое число машинных команд, а использование базовых элементов языка не задействовало библиотеку времени выполнения.
Однопроходный компилятор компилирует программу только в одном направлении, то есть компилятор не возвращается назад к уже откомпилированному коду. Поэтому прежде чем использовать функцию, её необходимо объявить.
Код на Си можно легко писать на низком уровне абстракции, поэтому иногда Си называют «универсальным ассемблером» или «ассемблером высокого уровня», что отражает различие языков ассемблера для разных платформ и единство стандарта Си.
Код Си может быть скомпилирован без каких–либо изменений почти на любой модели компьютера. Зачастую язык программирования Си называют языком среднего уровня или даже низкого уровня, учитывая то, как близко он работает к реальным устройствам.
История языка Си неразрывно связана с историей операционной системы UNIX. Эта система, как и большинство входящих в нее утилит, написана на Си. С тех пор Си остается широко распространенным языком – по тем же причинам, что и Фортран: с расширением круга пользователей язык развивает сокрушительную инерцию [16].
Достоинства языка:
1. Си современный язык. Он включает в себя те управляющие конструкции, которые рекомендуются теоретическим и практическим программированием. Результатом такого подхода является надежная и читаемая программа.
2. Си – эффективный язык. Его структура позволяет использовать возможности современных ЭВМ. На языке Си программы обычно отличаются компактностью и быстротой исполнения.
3. Си – переносимый, или мобильный, язык. Если модификации все–таки необходимы, то часто они могут быть сделаны путем простого изменения нескольких элементов в «головном» файле, который сопутствует главной программе. Он предоставляет исключительные возможности для переноса программ.
Компиляторы с данного языка реализованы почти на 40 типах вычислительных систем, начиная от– 8–разрядных микропроцессоров и кончая CRAY–1 одним из самых мощных в настоящее время суперкомпьютеров.
4. Си – мощный и гибкий язык. Программы, написанные на Си, используются для решения физических и технических проблем и даже для производства мультипликационных фильмов.
5. Си обладает рядом замечательных конструкций управления, обычно ассоциируемых с ассемблером.
6. Си – удобный язык. Он достаточно структурирован, чтобы поддерживать хороший стиль программирования, и вместе с тем не связывать вас с ограничениями [8].
Одной из областей, для которых не предназначен этот язык, являются критичные по времени и высокопроизводительные программы, когда имеет значение, занимать исполнение цикла 1000 или 1050 машинных циклов, и освобождать ресурсы требуется немедленно. C++ остается в этой области наилучшим из языков низкого уровня. В С# отсутствуют некоторые ключевые моменты, необходимые для создания высокопроизводительных приложений, в частности подставляемые функции и деструкторы, выполнение которых гарантируется в определенных точках кода. Также этот язык активно используется для создания современных видеоигр, например игра Battlefield 3 частично написана на C#, и полностью на технологии .NET
2.2. История возникновения и развития языка Java
Сегодня технология Java предоставляет средства для превращения статических Web–страниц в интерактивные динамические документы и для создания распределенных не зависящих от платформы приложений. Первоначально же язык Java корпорации Sun предназначался для устройств бытовой электроники, и в некоторых из них еще может использоваться его ранний вариант, известный под названием Oak. Однако настоящей стартовой площадкой для стремительного взлета Java стала сеть Internet.
Некоторые полагают, что для успеха любого дела прежде всего необходимо продумать и четко поставить задачу. Однако, совершенно очевидно, что в случае с языком программирования Java компании Sun Microsystems задача оказалась решенной до того, как ее сформулировали.
Создатель Java Джеймс Гослинг считает, что генезис этой технологии можно проследить с начала 1991 года, когда для изучения перспектив на рынке бытовой электроники в компании Sun была создана небольшая группа инженеров. В то время сеть World Wide Web существовала только в проектах.
«Группе была поставлена задача создать распределенную систему, которую можно было бы в качестве современной программной технологии продавать производителям бытовой электроники,» – вспоминает Гослинг [3].
Гослинг, которому сейчас 40 с небольшим лет, перешел в Sun в 1984 г. из исследовательского отдела IBM. Его первая работа – интересный технически, но не имевший коммерческого успеха оконный интерфейс NeWS. Он также написал GOSMACS – первую реализацию текстового редактора EMACS на языке С.
Эта деятельность в области бытовой электроники (которая потом стала называться проектом «Green») показала Гослингу и его коллегам, как важны для потребителя такие показатели, как надежность, стоимость, соответствие стандартам и простота. Если пользователи рабочих станций заинтересованы в большой мощности и терпимы к высоким ценам, необходимости длительного обучения и наличию различных ошибок, то рядовым потребителям нужны дешевые, относительно простые и надежные устройства.
Чтобы успешно конкурировать на рынке бытовой электроники, компании должны рассматривать процессоры как обычный товар, который в любой момент можно заменить более дешевым, а также обеспечивать обратную совместимость и соблюдать стандарты, установившиеся на устройства длительного пользования типа тостеров и телевизоров.