Добавлен: 17.06.2023
Просмотров: 543
Скачиваний: 3
СОДЕРЖАНИЕ
1.2 Краткая история языков программирования
1.3 Языки программирования высокого уровня
2 Спецификация программ и стандартизация ЯП
2.1.1 Императивное программирование
2.1.2 Объектно-ориентированное программирование
2.1.3 Функциональное программирование
2.1.4 Логическое программирование
2.2.1 Язык функционального программирования РЕФАЛ
2.2.2 Язык программирования C (Си)
2 .2 .3 Язык программирования Prolog
2.2.4 Язык программирования Lisp (Лисп)
2.2.5 Язык программирования FORTRAN (ФОРТРАН)
2.2.6 Язык программирования ALGOL (АЛГОЛ)
2.2.7 Язык программирования COBOL (КОБОЛ)
2.2.8 Язык программирования Ada (Ада)
2.2.9 Паскаль (язык программирования)
2.2.10 История, назначение, характеристика Java
2.2.12 Язык программирования Smalltalk
3.1 Роль языков программирования
3.3. Какой язык следует считать хорошим?
С этого момента ситуация изменяется. В 60-е гг. была разработана концепция пользовательских типов данных, которая не была реализована ни в языке FORTRAN, ни в языке ALGOL. Язык Simula-67, разработанный норвежцами Найгардом (Nygaard) и Далом (Dahl), ввел концепцию классов в ALGOL. В 80-е гг. это натолкнуло Страуструпа (Stroustrup) на идею создать C++ как расширение С с добавлением понятия классов. В середине 60-х Вирт (Wirth) разработал расширение языка ALGOL — ALGOL-W, пользовавшийся меньшим успехом. Тем не менее в 70-х гг. он же разработал Pascal, который стал языком научного программирования тех лет. Другой комитет, ориентируясь на успех ALGOL 60, разработал язык ALGOL 68, который, однако, оказался слишком сложным для понимания и эффективной реализации.
С началом серийного выпуска в 1963 г. новых компьютеров модели 360 фирма IBM в своей лаборатории Hursley, находящейся в Англии, разработала новый язык — NPL (New Programming Language). В связи с некоторым недовольством сотрудников Национальной физической лаборатории (English National Physical Laboratory) язык был переименован в MPPL (Multy-Purpose Programming Language). В дальнейшем это название было сокращено до PL/I. Язык PL/I объединил в себе вычислительные возможности языка FORTRAN и возможности бизнес-программирования (обработки деловой информации), имевшиеся в языке COBOL. В 70-е гг. PL/I пользовался некоторой популярностью (так, среди языков, он обладал наибольшим количеством возможностей), в настоящее же время он практически забыт, поскольку вытеснен такими языками, как С, C++ и Ada. Версия PL/С этого языка в 70-е гг. получила распространение как компилятор PL/I для студентов. BASIC был разработан, чтобы удовлетворить потребность в численных расчетах людей, не имеющих отношения к науке, однако в дальнейшем его возможности были расширены и вышли далеко за рамки первоначальных целей.
Языки обработки деловой информации. Сфера обработки деловой информации стала следующей после численных расчетов областью, которая привлекла внимание разработчиков языков. В 1955 г. группа сотрудников Univac под руководством Грейса Хупера (Grace Hooper) разработала язык FLOWM ATIC. Целью было создание приложений для обработки деловой информации с использованием некоторого англоподобного текста. В 1959 г. Министерство обороны США профинансировало совещание по разработке языка CBL (Common Business Language), который должен был стать бизнес-ориентированным языком, максимально использующим английский язык в качестве системы обозначений для своих программ. В связи с несогласованной деятельностью различных компаний для быстрой разработки этого языка был сформирован специальный комитет Short Range Committee. Хотя члены этого комитета думали, что они будут разрабатывать некий промежуточный вариант языка, оказалось, что разработанная ими спецификация, опубликованная в 1960 г., определила новый язык — COBOL (COmmon Business Oriented Language). COBOL пересматривался в 1961 и 1962 гг. и был стандартизован в 1968 г. В 1974 и 1984 гг. он снова подвергся пересмотру.
Языки искусственного интеллекта. Интерес к языкам искусственного интеллекта возник в 50-е гг., когда компанией Rand Corporation был разработан язык IPL (Information Processing Language). Версия IPL-V стала довольно широко известна, но ее использование ограничивалось тем, что IPL-V не был языком высокого уровня. Огромным шагом вперед стала разработка Джоном Мак-Карти (John McCarthy), сотрудником Массачусетсского технологического института (MIT), языка LISP (LISt Processing) для компьютеров IBM 704. Версия LISP 1.5 стала стандартом для его реализации на многие годы. Развитие LISP продолжается до настоящего времени. LISP разрабатывался как функциональный язык обработки списков. Естественной областью приложения LISP явилась разработка стратегии ведения игры, поскольку обычная программа, написанная на языке LISP, могла создавать дерево возможных направлений движения (как связанный список) и, продвигаясь по этому дереву, искать оптимальную стратегию. Другой естественной областью применения этого языка стал автоматический машинный перевод текста, где одна цепочка символов может заменяться на другую. В этой области первой разработкой был язык СОМГГ, созданный Ингве (Yngve), сотрудником MIT. Каждый оператор программы, написанной на этом языке, был очень похож на контекстно-независимое правило (context-free production), и представлял собой набор замен, которые можно было осуществить, если в исходных данных обнаруживалась конкретная цепочка символов. Поскольку Ингве запатентовал свой код, группа разработчиков из AT&Т Bell Telephone Laboratories решила создать свой собственный язык — так появился SNOBOL.
Если LISP создавался как язык обработки списков для универсальных приложений, Prolog стал специализированным языком с основанными па понятиях математической логики структурами управления и стратегией реализации.
Системные языки. В целях повышения эффективности выполняемых программ использование языка ассемблера в системной области продолжалось достаточно долго даже после того, как для приложений в других областях стали использоваться языки высокого уровня. Многие языки системного программирования, такие как CPL и BCPL, так и не нашли широкого применения. Все изменилось с появлением языка С. C развитием в 70-е гг. конкурентоспособной среды UNIX, написанной в основном на языке С, была доказана эффективность использования языков высокого уровня и в системной области.
1.3 Языки программирования высокого уровня
Поскольку программы, написанные на языке ассемблера и на машинном языке, были достаточно сложными и плохо работали, программисты создавали языки программирования, все более приближающиеся к человеческому языку — FORTRAN, COBOL, Pascal и Ada. Создавая языки программирования, похожие на обычный человеческий язык, программисты надеялись, что появятся программы, которые будет легко писать и изменять. Одним из первых появился язык программирования FORTRAN (название которого образовано от слов FORmula TRANslator). FORTRAN специально создан для выполнения математических расчетов. Другим языком программирования высокого уровня является COBOL (название образовано от слов COmmon Вusiness-Oriented Language), созданный для обработки коммерческих данных. Так как каждый язык программирования предназначался для определенных целей, программисты не могли использовать языки FORTRAN и COBOL для написания видеоигр, операционных систем или программ для работы с текстом. Программирование до сих пор остается сложным для большинства людей, поэтому компьютерные гении создали языки программирования Pascal и BASIC, которые использовались для обучения людей программированию. Язык программирования BASIC (название образовано от слов Beginner's All-purpose Symbolic Instruction Code) создан для того, чтобы показать новичкам, как именно надо программировать. Начинающие программисты приступали к изучению программ, написанных на языке программирования С. Однако из-за сложности этого языка многие люди теряли уверенность в своих силах. Основное преимущество языка BASIC очевидно. Для того чтобы отобразить на экране сообщение «Take а nар!» (Отдохни немного!), необходимо ввести только одну следующую команду: ;PRINT "Take а nар!" По сравнению с аналогичным исходным кодом программ, написанных на языке ассемблера или на машинном языке, исходный код программ, написанных на языке BASIC, позволяет вам сконцентрировать свое внимание именно на том, что необходимо сделать, а не на написании команд. Язык программирования Pascal (язык назван в честь французского философа Блеза Паскаля, Blaise Pascal) также предназначен для того, чтобы помочь начинающим программистам понять, как надо программировать. Основное отличие между языками BASIC и Pascal состоит в том, что язык программирования Pascal позволяет создавать хорошо структурированные программы, легкие для понимания. Вы легко сможете прочитать их, а также изменить в будущем. Программа для отображения на экране фразы Take а nар! (Отдохни немного!), написанная на языке Pascal, выглядит следующим образом:
.........
: Program Message (Input, Output);
Begin
Write ln ('Take a nap!');
End.
В отличие от программы, написанной на языке программирования Pascal, программы, написанные на языке программирования BASIC, намного проще. Это позволяет быстрее писать программы, однако прочитать и понять большую программу будет достаточно сложно. Язык Pascal более структурированный, что позволяет составить схему программы еще до того, как вы начнете ее писать. Так вы поступаете, планируя свой летний отпуск. Это может занять некоторое время, но после такого планирования ваша программа и ваш отпуск будут лучше организованы. При этом вы не запутаетесь в программе, а приехав в Париж, вы не будете в полночь бродить по улицам из-за того, что забыли забронировать номер в гостинице. С другой стороны, язык программирования BASIC позволяет вам незамедлительно приступить к написанию программы. Язык программирования BASIC настолько популярен, что программисты попытались объединить структурированность языка Pascal и простоту языка BASIC для создания различных диалектов языка BASIC. Liberty BASIC служит примером структурированной версии языка BASIC. Как обычно, языки программирования высокого уровня, такие как Pascal, BASIC, FORTRAN, Ada и COBOL, обладают рядом недостатков, о которых я расскажу ниже. Программы, написанные на языках программирования высокого уровня, большие и медленно работают по сравнению с аналогичными программами, написанными на языке программирования С, языке ассемблера или на машинном языке. Языки программирования высокого уровня не обеспечивают доступ ко всем элементам компьютера, как это делает язык программирования С, язык ассемблера или машинный язык. Написание на этих языках таких программ, как операционные системы или утилиты для работы с дисками (например, набор утилит Norton Utilities), намного сложнее (но не невозможно). Языки программирования высокого уровня больше похожи на человеческий язык. Таким образом, написание компилирующих программ для таких языков — достаточно сложная задача. Если на вашем компьютере не установлена компилирующая программа для используемого вами языка программирования высокого уровня (например, для языка программирования Ada), вы не сможете написать работающую на вашем компьютере программу. Язык программирования Ada — это сложный язык программирования высокого уровня. Компилирующие программы для языка программирования Ada для различных компьютеров занимают достаточно много времени. Можно найти очень немного компилирующих программ для языка программирования Ada, поэтому программисты редко пишут программы на этом языке. Язык программирования Ada никогда не станет таким популярным, как языки С, COBOL, FORTRAN, BASIC или Pascal. Конечно, любой программист, использующий языки программирования высокого уровня Pascal, BASIC, FORTRAN, Ada и COBOL, приведет кучу преимуществ данных языков над языком программирования С, языком ассемблера или машинным языком. Ниже перечислены некоторые преимущества языков программирования высокого уровня. С помощью языков программирования высокого уровня вы сможете писать программы намного быстрее, чем на языке ассемблера или на машинном языке. (Можно написать программу на языке программирования С, которая будет выполнять то же, что и программа, написанная на языке программирования высокого уровня.) Изучение языков программирования высокого уровня требует меньше времени, чем изучение машинного языка, языка ассемблера или языка С. Поскольку языки программирования высокого уровня не предоставляют доступ ко всем элементам компьютера, вы не сможете написать программу, которая приведет к поломке компьютера. Чтение программ на языках высокого уровня и их изменение намного проще, чем в аналогичных программах, написанных на языке программирования С, языке ассемблера или на машинном языке. Программы, написанные на языках программирования высокого уровня, можно запускать на различных компьютерах.
2 Спецификация программ и стандартизация ЯП
Спецификация программы — это детальное (начальное или промежуточное) описание задачи, которую должна решать проектируемая программа. Если программа — это задание для вычислительной машины, написанное программистом, то спецификация — это задание для программиста, написанное системным аналитиком. Спецификация должна быть таким описанием конкретной задачи, которое, во-первых, наиболее естественно для данной задачи, и, во-вторых, понятно как заказчику (потребителю программной продукции), так и программисту, создающему программу. Спецификация — точное, однозначное, недвусмысленное описание, составить которое означает подобрать понятия, наиболее адекватные рассматриваемой задаче. Различают функциональный и эксплуатационный аспекты спецификации. К функциональному аспекту, например, относятся:
• разбиение задачи на подзадачи;
• описание входных и выходных данных;
• описание объектов, участвующих в задаче;
• описание связей между объектами;
• описание процессов взаимодействия с внешней средой;
• описание реакций на исключительные ситуации и т. д.
Эксплуатационный аспект рассматривает такие вопросы, как:
• скорость работы программы;
• ресурсы, требуемые для решения задачи;
• характеристики аппаратных средств;
• специальные требования к надежности и безопасности и т. д.
Спецификации могут появляться на всех этапах так называемого «жизненного цикла» программного продукта. Рождается спецификация на этапе проектирования и занимает обычно промежуточное положение между начальными требованиями и готовой программой. Дополненные и уточненные требования — это уже спецификация. Однако зачастую переход от спецификации к программе сложный и длительный социальный процесс, в котором участвуют как заказчики, так и разработчики. Поэтому иногда полезно различать внешнюю и внутреннюю спецификации. Внешняя спецификация обращена к внешнему пользователю, потребителю программной продукции, а внутренняя — к внутреннему пользователю, разработчику. Исходная спецификация представляет собой документ, который служит заданием на разработку программы. Хорошая спецификация при этом сокращает вероятность возникновения ошибок недопонимания разработчиками того, что хочет заказчик.