Добавлен: 22.04.2023
Просмотров: 235
Скачиваний: 1
ВВЕДЕНИЕ
Языки программирования для компьютеров разрабатываются с целью прежде всего помочь большому количеству людей использовать компьютеры без необходимости детального изучения их внутренней структуры. Языки соответствуют типу приложений, которые должны быть запрограммированы с использованием языка [1.].
Идеальным языком был бы тот, который точно выражает спецификацию решаемой проблемы и преобразует ее в серию инструкций для компьютера. Невозможно достичь этого идеала, поскольку четкая спецификация проблемы часто недоступна, а разработка алгоритма исходя из спецификаций требует предметных знаний и опыта. На практике подробный алгоритм решения проблемы является отправной точкой и выражается в виде программы на языке программирования. Существует большое количество языков, более тысячи, каждый из которых обслуживает разные классы приложений.
Почти все современные языки программирования разработаны так, чтобы быть независимыми от машины. Другими словами, структура языка программирования не будет зависеть от внутренней структуры определенного компьютера; нужно уметь исполнять программу, написанную на языке программирования, на любом компьютере, независимо от того, кто его изобрел или какой моделью он является. Такие языки известны как машинно-независимые языки программирования высокого уровня [6.].
Создание программ на языках программирования высокого уровня по-прежнему является актуальным. Программисты низкоуровневых языков зачастую пишут неэффективные программы, так как упускают из виду высокоуровневые оптимизации [6.]; в то же время разработка низкоуровневых программ сопряжена со сложностью, поскольку большинство людей не могут быстро читать машинный код (и соответственно вносить изменения). Конечно, здесь имеются исключения – это небольшие, критичные ко времени исполнения фрагменты программы (например, тело цикла, или отдельная функция), которые не могут быть идеально оптимизированы компилятором. Такие составные части программы иногда пишут в виде ассемблерных вставок.
Цели данной курсовой работы – подробно изучить языки программирования высокого уровня, а также выполнить сравнение некоторых современных высокоуровневых языков и соответствующих одному из них интегрированных сред разработки для дальнейшего проектирования многофункционального программного обеспечения. Для достижения обозначенных целей были выбраны следующие методы исследования: систематизация специальной литературы и мировых информационных ресурсов по проблеме исследования.
1.Языки программирования высокого уровня
Инструкции первых языков программирования, появившихся в начале 50-х годов XX века и ориентированных на конкретный компьютер, записывались в исходном коде и выполнялись последовательно. Данные, полученные при выполнении предыдущих инструкций, могли быть считаны из памяти или записаны в нее. Таким образом, программы представляли собой последовательность команд, которые должен был выполнить компьютер. Языки программирования, использующие этот подход (прежде всего, это машинные инструкции и язык ассемблера), образовали императивную парадигму программирования. В отличие от декларативного подхода, при котором задается спецификация решения задачи, в императивном широко используются операторы присваивания. Ранние императивные языки сложны для понимания и решения прикладных задач.
Новый этап начинается с середины 50-х годов. Постепенно на смену ламповым ЭВМ стали приходить транзисторные ЭВМ. Бурное развитие технологий привело к тому, что компьютеры сменяли друг друга каждые пару лет (IBM-701, TRADIAC, Pegasus, Philco-2000, Elliot-803, Siemens-2002, H-1, IBM-7030, Atlas, CDC-6600). Программирование, в основном сводится, к переписыванию старых программ для новых ЭВМ.
В этот период компьютеры становятся доступны исследовательским институтам и университетам. Их выход за пределы закрытых лабораторий электро-инженеров означает, что программирование стало занятием большего числа людей. Использование компьютера выглядит очень необычно по современным меркам. Программист отдает программу диспетчеру, который поставит программу на исполнение и вернет результаты работы через часы или даже дни, т. е. никакой интерактивности и уж тем более собственного компьютера.
Высокоуровневых языков программирования все еще не существует, программированием занимаются математики и инженеры электротехники. До сих пор нет учебных дисциплин, нацеленных на развитие языков в целом и программирование на этих языках в частности. Не существует и понятия управления программными проектами, предсказывать сроки завершения программных проектов практически невозможно. Бессистемный подход к разработке программ этого этапа можно, условно, обозначить как «Code and Fix» – сначала пишется код, потом исправляются проблемы в этом коде, т. е. сначала идет реализация, а потом уже задумываются о требованиях, дизайне, тестировании и прочем.
Программам не уделяется особого внимания – они просто бесплатное дополнение к ЭВМ. Это довольно курьезное положение дел, по двум причинам. Во-первых, программируемые ЭВМ бесполезны без программ. Во-вторых, программирование считается сложной задачей, требующей изучения конкретной ЭВМ и недюжинного упорства. Чтобы облегчить кодирование, появляются приближенные к человеку формальные языки – то, что сейчас принято называть языками программирования высокого уровня.
Языки высокого уровня (ЯВУ) – изначально, формальные языки описания программ, обладающими большей степенью абстрактности, чем язык машинных команд. При использовании машинного языка программист привык мыслить в терминах регистров, памяти, машинных слов, бит и инструкций компьютера, в то время как при использовании языков высокого уровня программист использует числа, символы, строки, арифметические операции, типы и структуры данных. А трансляция этих понятий на низкоуровневые возможности ЭВМ выполняется механически с помощью компилятора.
В 1970-е компания Intel создала и популяризировала первые микропроцессоры. В середине этого же десятилетия была основана Microsoft, которая на заре своей деятельности продавала интерпретаторы для языка программирования BASIC. В это время большой популярностью пользуются процедурные языки. Они позволяли разбивать задачи на шаги и решать их за шагом, причем возможность определять каждый шаг в процессе решения задачи была предоставлена программисту. Эти языки использовали императивную парадигму, но последовательно выполняемые операторы могли быть собраны в подпрограммы, то есть более крупные целостные единицы кода, с помощью самого языка. Согласно некоторым классификациям, такой подход выделяется в самостоятельную парадигму, получившую название процедурной. К процедурным языкам программирования относятся также Паскаль, Си, Algol, COBOL и FORTRAN. Компиляторы к последним двум языкам программирования появились в 1977 и 1978 годах соответственно и также продавались компанией Microsoft. Кроме того, можно отметить еще несколько значимых языков программирования, разработанных на ранних этапах развития: LISP и PL/1. Все вышеперечисленные языки не были первыми ЯВУ, но их можно назвать самыми заметными в ранней истории. Сейчас, спустя много лет, на некоторые из них принято смотреть, скорее, как на отрицательные примеры, чем как на положительные, но это не отрицает их важности.
Высокоуровневые понятия, которые использовались в ЯВУ того времени, соответствовали задачам, решаемым с помощью компьютеров. То есть они, за некоторым исключением, были «заточены» под численные расчеты. Языки, не обладавшие конкретной специализацией, считались игрушками. Например, язык программирования LISP описывали как «наиболее умный способ неправильно использовать компьютер», и именно LISP сегодня можно считать примером удачного ЯВУ.
FORTRAN (FORmula TRANslator, 1957) – первый ЯВУ, получивший действительно широкое распространение. Чтобы подчеркнуть значимость этой разработки, достаточно упомянуть, что язык FORTRAN до сих пор используется, не так широко и активно как раньше, – его применение сократилось до весьма узкого использования в научных вычислениях – но это все равно совершенно удивительный срок жизни для технологии (имеется в виду именно FORTRAN, а не сама идея ЯВУ). Впрочем, несмотря на всю значительность этой разработки, можно констатировать, что язык FORTRAN безнадежно устарел, и как отметил Дейкстра: «чем раньше мы забудем, что FORTRAN когда-либо существовал, тем лучше».
LISP (LISt Processing language, 1958), в отличие от FORTRAN, даже спустя много лет рассматривается как положительный опыт в истории развития языков программирования. В начале своего появления он не пользовался большой популярностью, однако, стоит заметить, что свое применение он все же нашел – в области искусственного интеллекта он был основным языком, вероятно, за свою исключительную простоту и выразительность. LISP базировался на небольшом количестве простых идей, которые показали удивительную стойкость. LISP был совершенно отличен от FORTRAN, и многие современные технологии появились впервые именно в LISP: автоматическое управление памятью (которое активно используется очень многими современными языками программирования, например, целой группой языков для JVM, Python, JavaScript и др.), динамическая типизация (мнение об этой концепции среди современных теоретиков языков программирования неоднозначно – есть сторонники такого подхода, есть противники, как есть и те, кто признает важность и динамической, и статической типизации), функции высшего порядка (так называют функции, которые принимают на вход другие функции как аргумент или возвращают их как результат своей работы – одна из интересных реализаций идеи подпрограммы) и др. Как и FORTRAN, LISP до сих пор используется в виде множества различных более современных диалектов, сохраняющих общие концепции с оригинальной разработкой.
COBOL (COmmon Buisness Oriented Language, 1960) отличается и от FORTRAN, и от LISP, его специализация – бизнес-приложения, т. е. приложения, нацеленные не на математические расчеты, а на хранение и поиск информации, например, банковские системы. Все предложения на COBOL составлялись из слов английского языка, и даже для обозначения таких операций, как сложение приходилось писать "ADD a TO b" или "SUBTRACT a FROM b". Впоследствии COBOL был серьезно раскритикован за его многословность. COBOL проектировался так, чтобы быть простым и переносимым языком программирования. Переносимость означала, что программы на COBOL должны были работать практически на всем допустимом множестве компьютеров без изменения окружающей среды. Это обуславливалось тем, что, в конечном итоге, и компьютер, и программа – это всего лишь инструмент, и вкладывать деньги в написание новой программы для нового компьютера, как и потому что появилась новая технология, было совершенно неприемлемо. Поэтому бизнес-приложения с возрастом в 10, 20, а то и больше лет не были редкими. COBOL был призван удовлетворить эти нужды, и он до сих пор используется для тех же целей.
Появление и развитие высокоуровневых языков поспособствовало прогрессу в области интегрированных сред разработки, которые предлагают единый интерфейс, включающий в себя все инструменты, необходимые разработчику программ. В 1983 году компания Borland Ltd. приобрела компилятор языка Паскаль и выпустила его под названием TurboPascal, в котором впервые появился полноценный интегрированный редактор и компилятор. Он позволял править исходный программный код, манипулировать файлами, компилировать, отлаживать и выполнять программы таким же способом, как и многие современные интегрированные среды разработки.
В 1987 году инженер Билл Аткинсон спроектировал и реализовал технологию HyperCard («Гиперкард») – программное приложение и набор средств разработки для компьютеров Apple Macintosh и Apple IIGS. Это была первая визуальная среда программирования, которая позволяла создавать собственные приложения в системе Mac OS. В Гиперкард можно собирать воедино текстовые, графические, звуковые данные, предлагая их пользователю в удобном интерактивном виде. Кроме того, там использовался язык программирования HyperTalk («гиперток»), который упрощал создание обучающих (и других) программ. В частности, первая версия популярной игры Myst была создана с помощью системы Гиперкард. В 1987 Гиперкард продавался примерно за 50 долларов США; в 2004 году он был снят с производства.
Несмотря на то, что впервые TurboPascal выдвинул идею интегрированной среды разработки, многие специалисты и исследователи в области компьютерных наук считают, что система Microsoft Visual Basic (VB), выпущенная в 1991 году, была первой настоящей интегрированной средой разработки. Visual Basic был построен на более старом языке BASIC, который был популярным языком программирования в течение 1980-х годов. VB был объектным языком программирования – он поддерживал определение объекта как структуры данных, но не обладал полиморфизмом и наследованием (что отличало его от объектно-ориентированных языков). Впервые с появлением Visual Basic программирование можно было представить в графическом виде, и это дало значительные преимущества в производительности.
Дальнейшее развитие интегрированных сред разработки связано с появлением и последующим ростом популярности объектно-ориентированных языков программирования, таких как C++, C#, Java и других.