ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 31.03.2021
Просмотров: 6799
Скачиваний: 51
206
2.
Ахметов К. С.
Курс молодого бойца. - М.: Компьютер-пресс.1995.
3. Бабий А. А..Коновалова Н.И.,Пак Н.И.Пара.ией М.Г.
Методическое пособие по работе с
IBM PC- Красноярск: КГПИ. «Демос», i991.
4.
Безрукое Н. Н.
Компьютерные вирусы. - М.: Наука, 1991.
5.
Брукс Ф П.
Как проектируются и создаются программные комплексы. /Очерки по сис-
темному программированию. - М.: Наука. 1979.
6.
Брябрин В. М.
Программное обеспечение персональных ЭВМ. - М.: Наука, 1990.
7.
Богумирский Б. С.
Руководство пользователя ПЭВМ. Части 1,2. - С.-Пб.: Печатный Двор,
1994.
8. К.Герман О. В.
Введение в теорию экспертных систем и обработку знаний. -Минск: «Ди-
зайн-ПРО», 1995.
9. Глазко Т.П., Киреева Т. В., Киреев Н.В.
Работа с инструментальными средствами на IBM.
- Красноярск, КГПУ, 1995.
10.
Илюшечкин В.М., Костин А.Е.
Системное программное обеспечение. - М.:
Высшая школа, 1991.
11. Как работать с Microsoft Office для Windows 95. Техническое описание Microsoft Corpo-
ration. 1995.
12.
Каратыгин С., Тихонов А., Долголаптев В.
Базы данных: простейшие средства обработ-
ки информации. Т. 1,2. Серия «Компьютер для носорога». - М.: ФИА, 1995.
13.
Келжек А. М.
и др. Работа на IBM. - М.:АО «Книга и бизнес». 1992.
14.
Кирмайер М.
Мультимедиа. - С.-Пб.: BHV-Санкт-Петербург, 1994.
15.
Климов Д. М., Руденко В.М.
Методы компьютерной алгебры в задачах механики. - М.:
Наука, 1989.
16. Компьютерная вирусология. - Киев: Укр. сов. энцикл., 1991.
17.
Косневски Ч.
Занимательная математика и персональный компьютер. - М.:
Просвещение, 1989.
18.
Липаев В. В.
Проектирование программных средств. - М.: Высшая школа, 1990.
19.
Маейрс Г.
Надежность программного обеспечения. - М.: Мир, 1980.
20.
НаймертаимД.
Word 6.0 для Windows. - М.: Международные отношения, 1995.
21. Операционная система MS DOS. - М.: Радио и связь, 1992.
22.
Одинцова О. П.
Введение в Автокад. Методические указания. - Красноярск, КГПУ,
1996.
23.
Пак Н. И. Рогов В В
Компьютерная графика. - Омск, ОмГПУ, 1995.
24. Проектирование пользовательского интерфейса на персональных компьютерах. Стан-
дарт фирмы IBM. - Вильнюс: DBS Ltd., 1992.
25.
Ратбон Э.
Windows 3.1 для «чайников». - Киев: Диалектика, 1994.
26.
Роджерс Д. Ф., Адамс Дж.А.
«Математические основы машинной графики». -М: Ма-
шиностроение, 1980.
27.
Скляров В. А.
Программное и лингвистическое обеспечение персональных ЭВМ. Систе-
мы общего назначения. - Минск: Высшая школа, 1992.
28.
Смирнов Н.Н.
Программные средства персональных ЭВМ. - Л.: Машиностроение, 1990.
29.
Смолянинова О. Г.
Основы компьютерной грамотности. - Красноярск, КГПУ, 1996.
30.
Смолянинова О. Г., Яшин А. В.
СУБД MS Access. Метод, указания. - Красноярск, КГПУ,
1997.
31.
Соловьев Г.Н., Никитин В. Д.
Операционные системы ЭВМ. - М.: Высшая школа,1989.
32.
Туранова Л. М.
Элементы компьютерной графики. Уч. пособие. - Красноярск, КГПУ,
1996.
33.
Фигурнов В.Э.
IBM PC для пользователя. Изд.б-е. - М.: ИНФРА, 1995.
34.
ФоксДж.
Программное обеспечение и его разработка. - М.: Мир, 1985.
35.
Фош Д., Ван Дем А.
Основы интерактивной машинной графики. - М.: Мир, 1989.
36.
Хаслер Р., Фаненштих К.
Word 6.0 для Windows. - М.: Экон, 1994.
37.
Шафрин Ю.
Основы компьютерной технологии. - М.: ABF, 1996.
38.
Шенен П., Каспар М.
и др. Математика и САПР, книга 1. - М.: Мир, 1988.
39.
Шикин Е. В.
Начала компьютерной графики. - М.: Диалог-МИФИ, 1994.
40.
Шкаев А. В.
Настольные издательские системы: Справочник. - М.: Радио и связь, 1994.
207
41. AutoCAD Release 10. Reference manual. 1989, Autodesk, Inc
ГЛАВА 3
ЯЗЫКИ И МЕТОДЫ ПРОГРАММИРОВАНИЯ
Прохожий спросил у фермера, сооружающего
небольшую деревянную постройку, что тот
строит. - Пока не знаю, -ответил фермер. Если
мне удастся сдать это сооружение, тогда оно -
очаровательный сельский домик, а если не
удастся, то это будет курятник.
Из журнала Reader's Digest
ВВЕДЕНИЕ
Данная глава посвящена важнейшему разделу информатики - программированию ЭВМ. В
ней рассматриваются конкретные языки програмирования, являющиеся наиболее употребимыми в
настоящее время и отражающие различные тенденции в современном программировании. По каж-
дому из языков приводятся необходимые сведения и примеры, чтобы сложилась общая картина и
стало возможным самостоятельное решение относительно несложных задач по программирова-
нию. При необходимости изучить тот или иной язык «полностью» (задача эта весьма неопреде-
ленная хотя бы из-за наличия у каждого языка многих версий, особенностей трансляторов, интер-
фейсных оболочек и т.д.) необходимо обратиться к специальной литературе.
Наибольшее внимание уделено языку Паскаль. Он заслуженно является наиболее популяр-
ным при традиционном - процедурном - подходе к программированию, пригоден для разработки
прикладных программ для самых различных предметных областей. Именно на базе Паскаля соз-
дана одна из наиболее мощных сред объектно-ориентированного программирования, что является
дополнительным стимулом к его более детальному изучению.
§ 1. ИСТОРИЯ РАЗВИТИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ
Одной из самых революционных идей, приведших к созданию автоматических цифровых
вычислительных машин, была высказанная в 20-х годах XIX века Ч.Бэббиджем мысль о предвари-
тельной записи порядка действий машины для последующей автоматической реализации вычис-
лений - программе. И, хотя использованная Бэббиджем запись программы на перфокартах, приду-
манная для управления ткацкими станками французским изобретателем Жозефом Мари-
Жаккаром, технически не имеет ничего общего с современными приемами хранения программ в
ЭВМ, принцип здесь по-существу один. С этого момента начинается история программирования.
Аду Лавлейс, одну из немногих современников Чарльза Бэббиджа, кто сумел по достоинст-
ву оценить аналитическую машину, называют первым в мире программистом. Она теоретически
разработала некоторые приемы управления последовательностью вычислении, которые использу-
ются в программировании и по сей день, описала одну из важнейших конструкций практически
любого современного языка программирования - цикл.
Революционным моментом в истории языков программирования стало появление системы
кодирования машинных команд с помощью специальных символов, предложенной Джоном Мо-
учли, сотрудником Пенсильванского университета. Система кодирования, предложенная Моучли,
увлекла одну из сотрудниц его компании - Грейс Мюррей Хоппер, которая посвятила всю свою
жизнь компьютерам и программированию. Она вспоминает, что стала «третьим в мире програм-
мистом первого в мире большого цифрового компьютера». Г.Хоппер доказала, чего она стоит как
программист. Впоследствии она писала: «Я имела то преимущество, что изучала как технику, так
и математику и знала, как работает машина от начала и до конца».
При работе на компьютере «Марк-1» Г.Хоппер и ее группе пришлось столкнуться со мно-
гими проблемами и все, что ими придумано, было впервые. В частности, они придумали подпро-
граммы. Сейчас любой программист не задумываясь использует аппарат подпрограмм в любом
208
языке программирования. И еще одно фундаментальное понятие техники программирования
впервые ввели Г.Хоппер и ее группа - «отладка». Однажды жарким летним днем 1945 г. неожи-
данно произошла остановка компьютера «Марк-1». Обнаружилась неисправность одного реле,
контакты которого были заблокированы мотыльком, залетевшим неизвестно каким образом в по-
мещение вычислительного центра. Вспоминает Г.Хоппер: «Когда к нам зашел офицер, чтобы уз-
нать, чем мы занимаемся, мы ответили, что очищаем компьютер от насекомых (debuging)». С тех
пор термин «debuging» (отладка) используется в технических процессах тестирования неисправ-
ностей в компьютере, а также в системах программирования.
На заре компьютерной эры машинный код был единственным средством общения человека
с компьютером. Огромным достижением создателей языков программирования было то, что они
сумели заставить сам компьютер работать переводчиком с этих языков на машинный код.
В конце 40-х годов, до прихода Г.Хоппер в фирму Джона Моучли, последний создал сис-
тему под названием «Short Code», которая являлась примитивным языком программирования вы-
сокого уровня. В ней программист записывал решаемую задачу в виде математических формул, а
затем, используя специальную таблицу, переводил символ за символом, преобразовывал эти фор-
мулы в двухлитерные коды. В дальнейшем специальная программа компьютера превращала эти
коды в двоичный машинный код. Система, разработанная Дж. Моучли, была по существу одним
из первых примитивных интерпретаторов.
Уже в 1951 г. Хоппер создала первый в мире компилятор и ею же был введен сам этот тер-
мин. Компилятор Хоппер осуществлял функцию объединения команд и в ходе трансляции произ-
водил организацию подпрограмм, выделение памяти компьютера, преобразование команд высоко-
го уровня (в то время псевдокодов) в машинные команды. «Подпрограммы находятся в библиоте-
ке (компьютера), а когда вы подбираете материал из библиотеки - это называется компиляцией» -
так она объясняла происхождение введенного ею термина.
В 1954 г. группа под руководством Г.Хоппер разработала систему, включающую язык про-
граммирования и компилятор, которая в дальнейшем получила название MATH-MATIC. После
удачного завершения работ по созданию MATH-MATIC Г.Хоппер и ее группа принялись за разра-
ботку нового языка и компилятора, который позволил бы пользователям программировать на язы-
ке, близком к обычному английскому. Необходимость появления подобной системы Хоппер объ-
ясняла следующим образом: «Существует много различных людей, которым нужно решать разные
задачи. Некоторые из них связаны с обработкой символов, другие - с обработкой слов, и им нужны
языки другого типа, а не наши попытки превратить их всех в математиков». В 1958 г. появился
компилятор FLOW-MATIC. В отличие от ФОР-ТРАНа - языка для научных приложений - FLOW-
MATIC был первым языком для задач обработки коммерческих данных. Работы в этом направле-
нии привели к созданию языка КОБОЛ (COBOL - Common Business Oriented Language). Одним из
основных консультантов при создании этого языка была Грейс Мюррей Хоппер.
Середина 50-х годов характеризуется стремительным прогрессом в области программиро-
вания. Роль программирования в машинных командах стала уменьшаться. Начали появляться язы-
ки программирования нового типа, выступающие в роли посредника между машинами и програм-
мистами. Первым и одним из наиболее распространенных был Фортран (FORTRAN, от FORmula
TRANslator - переводчик формул), разработанный группой программистов фирмы IBM в 1954 г.
(первая версия).
В середине 60-х годов сотрудники математического факультета Дартмутского колледжа
Томас Курц и Джон Кемени создали специализированный язык программирования, который со-
стоял из простых слов английского языка. Новый язык назвали «универсальным символическим
кодом для начинающих» (Beginners All-Purpose Symbolic Instruction Code, или, сокращенно,
BASIC). Годом рождения нового языка можно считать 1964 г. Сегодня универсальный язык Бей-
сик (имеющий множество версий) приобрел большую популярность и получил широкое распро-
странение среди пользователей ЭВМ различных категорий во всем мире. В значительной мере
этому способствовало то, что Бейсик начали использовать как встроенный язык персональных
компьютеров, широкое распространение которых началось в конце 70-х годов.
В начале 60-х годов все существующие языки программирования высокого уровня можно
было пересчитать по пальцам, однако впоследствии их число достигло трех тысяч. Разумеется,
подавляющая часть языков не получила сколько-нибудь широкого распространения; в практиче-
ской деятельности используется не более двух десятков. Разработчики ориентировали языки на
209
разные классы задач, в той или иной мере привязывали их к конкретным архитектурам ЭВМ, реа-
лизовывали личные вкусы и идеи. В 60-е годы были предприняты попытки преодолеть эту «разно-
голосицу» путем создания универсального языка программирования. Первым детищем этого на-
правления стал PL/I (Programm Language One), 1967 г. Затем на эту роль претендовал АЛГОЛ-68
(1968 г.). Предполагалось, что подобные языки будут развиваться и усовершенствоваться и вытес-
нят все остальные. Однако ни одна из этих попыток на сегодняшний день не увенчалась успехом
(хотя PL/I в усеченных версиях использовали многие программисты). Всеохватность языка приво-
дила к неоправданной, с точки зрения программиста, сложности конструкций, неэффективности
компиляторов.
Языки программирования служат разным целям и
их выбор определяется удобностью
пользователя, пригодностью для данного компьютера и данной задачи. А задачи для компьютера
бывают самые разнообразные: вычислительные, экономические, графические, экспертные и т.д.
Такая разнотипность решаемых компьютером задач и определяет многообразие языков програм-
мирования. По всей видимости, в программировании наилучший результат достигается при инди-
видуальном подходе, исходящем из. класса задачи, уровня и интересов программиста. Например,
Бейсик широко употребляется при написании простых программ; Фортран является классическим
языком программирования при решении на ЭВМ математических и инженерных задач; язык Ко-
бол (COBOL, от Common Business Oriented Language -общий язык, ориентированный на деловые
задачи; создан в 1960 г.) был задуман как основной язык для массовой обработки данных в сферах
управления и бизнеса. Еще более специализированным является язык ЛОГО (от греческого logos -
слово), созданный для обучения программированию школьников профессором математики и педа-
гогики Сеймуром Пейпертом из Массачусетского технологического института. Обучаясь про-
граммированию на ЛОГО, дети задают простые команды, которые управляют игрушечной чере-
пашкой, снабженной карандашиком. Отметим и еще один достаточно популярный специализиро-
ванный язык - Пролог (Prolog -PROgramming in LOGic), разработанный как язык программирова-
ния для создания систем искусственного интеллекта.
В конце 50-х годов плодом международного сотрудничества в области программирования
явился Алгол (ALGOL, от ALGOrithmic Language - алгоритмический язык). Алгол предназначен
для записи алгоритмов, которые строятся в виде последовательности процедур, применяемых для
решения поставленных задач. Специалисты-практики восприняли этот язык далеко неоднозначно,
но, тем не менее, его влияние на развитие других языков и теорию программирования оказалось
весьма значительным.
В нашей стране
в те годы был создан под руководством Сергея Петровича Ершова трансля-
тор Альфа, который представлял довольно удачную русифицированную версию Алгола. Впослед-
ствии академик Ершов сыграл важнейшую роль в становлении в СССР школьной информатики.
Развитие идеи Алгола о структуризации разработки алгоритмов нашло наивысшее отраже-
ние при создании в начале 70-х годов языка Паскаль швейцарским ученым Никлаусом Виртом.
Язык Паскаль первоначально разрабатывался как учебный, и, действительно, сейчас он является
одним из основных языков обучения программированию в школах и вузах. Однако, качества его в
совокупности оказались столь высоки, что им охотно пользуются и профессиональные програм-
мисты.
Не менее впечатляющей, в том числе и финансовой, удачи добился джазист Филип Кан,
француз, разработавший систему Турбо-Паскаль. Суть его идеи состояла в объединении последо-
вательных этапов обработки программы - компиляции, редактирования связей, отладки и диагно-
стики ошибок - в едином интерфейсе. Версии Турбо-Паскаля заполонили практически все образо-
вательные учреждения, программистские центры и частные фирмы.
Период с конца 60-х и до начала 80-х годов характеризуется бурным ростом числа различ-
ных языков программирования, сопровождавшим, как это ни парадоксально, крмзис программно-
го обеспечения. Этот кризис особо остро переживало военное ведомство США. В январе 1975 г.
Пентагон решил навести порядок в хаосе трансляторов и учредит комитет, которому было пред-
писано разработать один универсальный язык. На конкурсной основе комитет проработал сотни
проектов и, когда стало ясно, что ни один из существующих языков не может их удовлетворить,
принял два проекта для окончательного рассмотрения. В мае 1979 г. был объявлен победитeль -
группа ученых во главе с Жаном Ихбиа. Победивший язык окрестили АДА, в честь Огасты Ады
Лавлейс. Язык АДА - прямой наследник языка Паскаль.
-
этот язык предназначен для создания и
210
длительного (многолетнего) сопровождения больших программных систем, допускает возмож-
ность параллельной обработки, правления процессами в реальном времени и многое другое, чего
трудно
или
невозможно достичь средствами более простых языков.
Большой отпечаток на современное программирование наложил язык Си (первая версия -
1972 г.), являющийся очень популярным в среде разработчиков систем программного обеспечения
(включая операционные системы). Си сочетает в себе черты как языка высокого уровня, так и ма-
шинно-ориентированного языка, допуская программиста ко всем машинным ресурсам, чего не
обеспечивают такие языки, как Бейсик и Паскаль.
Следует отметить, что многие языки, первоначально разработанные для больших и малых
ЭВМ, в дальнейшем были приспособлены к персональным компьютерам. Хорошо вписались в
«персоналки» не только Паскаль, Бейсик, Си, Лого, но и ЛИСП, ПРОЛОГ - языки искусственного
интеллекта.
В течение многих лет программное обеспечение строилось на основе операциональных и
процедурных языков, таких как Фортран, Бейсик, Паскаль, Ада, Си. И сегодня современные вер-
сии этих и им подобных языков (Модула, Форт и др.) доминируют при разработке прикладных
программных средств. Однако по мере эволюции языков программирования получили широкое
распространение и другие, принципиально иные, подходы к созданию программ.
Классическое операциональное и/или процедурное программирование требует от програм-
миста детального описания того, как решать задачу, т.е. формулировки алгоритма и его специаль-
ной записи. При этом ожидаемые свойства результата обычно не указываются. Основные понятия
языков этих групп - оператор и данные. При процедурном подходе операторы объединяются в
группы - процедуры. Структурное программирование в целом не выходит за рамки этого направ-
ления, оно лишь дополнительно фиксирует некоторые полезные приемы технологии программи-
рования.
Принципиально иное направление в программировании связано с методологиями (иногда
говорят «парадигмами») непроцедурного программирования. К ним можно отнести объектно-
ориентированное и декларативное программирование. Объектно-ориентированный язык создает
окружение в виде множества независимых объектов. Каждый объект ведет себя подобно отдель-
ному компьютеру,
их можно использовать для решения задач как «черные ящики», не вникая во
внутренние механизмы их функционирования. Из языков объектного программирования, попу-
лярных среди профессионалов, следует назвать прежде всего Си++, для более широкого круга
программистов предпочтительны среды типа Delphi и Visual Basic.
Рис. 3.1.
Классификация языков программирования
При использовании декларативного языка программист указывает исходные информацион-
ные структуры, взаимосвязи между ними и то, какими свойствами должен обладать результат.
При этом процедуру его получения («алгоритм») программист не строит (по крайней мере, в идеа-
ле). В этих языках отсутствует понятие «оператор» («команда»). Декларативные языки можно
подразделить на два семейства - логические (типичный представитель - Пролог) и функциональ-
ные (Лисп). По всей видимости, непроцедурные языки имеют большое будущее. Все сказанное
выше можно отобразить схемой - крупноструктурной классификацией языков программирования.
В ней указаны основные методологии программирования; в нижнем ряду, в скобках - типичные
языки соответствующих групп.