Р.У. Себеста - Основные копцепции языков программирования (2001) (1160794), страница 5
Текст из файла (страница 5)
Профессор (тпс и п1 пчил степень оакаланра по прикладной чагемапгье в «ниверсите)с игга)я Колора- :и н Ьоллере (Сп!тсгм(«о( Со)огаг)о )п ВоцЫеп. а степени чшистра коки)ью)сриых наук и з глиэра философии — в Гос«тарьтвенноч «нивсрситеге шга|а !1снсипьвания (Рсппьу!ча)п)а Ьь (с 1 ппепш к !сори)о вычи штсльных сисгсч оп ирепозает «эье свыше '5 лег. К ~1бласги ш профсссионшьных интересов о)нося)ся проекэирование и оценка языков програмчиронания. рагр )б ) кл кочни эх)оров, а также моголь) и иистр«менты тестирования про рамчного бсш)ечения.
Ангар является членом дссошкшии по вычислительной теишке (АСМ— дыксьпи п !Ьг Соп)рццпй А)асйн)еп) и Кочпьнцсрного обшес)ва Института ин кенсров по ээск) ротсхннке и электроникс ()ЕЕŠ— й)в(ц(е оГ 1.(ес(пса) апг) Г)ес(гоп)ся Ел11(!пеегя (.ошрцюг Ьошеп ь Првдисповив жги ь ГГГГН. ПЫфжыктгззатк: и" УЭ '.:Г' Конрад Цузе (Копгаб 7озе1 С 1939 по 1944 год Конрад Цузе спроектировал в Германии сеРию электромеханических ком ь отеров 9 1945 году он разработал алгоритмический язык программирования Р!апйадо! который никогда не был реализовач.
причем полное описание этого языка до 19?2 года даже не луб ликовалось Вводные замечания режле чем начать описание концепций языков программирования, сделаем ие- П которые вводные замечания. Во-первых, обсудим причины, по которым и студенты. и профессиональные разработчики программного обеспечения должны изучать общие концепции, связанные с разработкой и оценкой языков программирования. Эта информация приводится специально лля тех, кто полагает, что программисту достаточно знать один-два рабочих языка программирования. Во-вторых. рассмотрим области применения программирования. Затем, поскольку в книге оцениваются различные языковые свойства, представим перечень критериев. по которым принимаются решения.
Далее обсуждаются два основных фактора. влияющих на структуру языка; архитектура машины и методологии разработки программ. Затем рассмотрим некоторые альтернативы. изучение которых необходимо при разработке языка. Кроме того. в главе солержится обзор наиболее общих подходов к реализации языков программирования. В заключение приводится несколько примеров сред программирования и обсуждается их влияние на производство программного обеспечения. 3.1.
Для чего нужно изучать концепции языков программирования Стуленты часто интересуются, какие выгоды они получат от изучения концепций языков программирования. Помимо всего прочего, в компьютерных науках существует множество других тем. заслуживающих серьезного изучения. Ниже приводится полный, как мы надеемся. перечень потенциальных выгод изучения языковых концепций. ° Больше возиожностей для выражения идей.
Широко распространенным является мнение. что на глубину наших мыслей влияет выразительная сила языка, на котором мы зги мысли выражаем. Люди, плохо понимающие естественный язык, не могут выражать сложные мысли, особенно на уровне абстракций. Другими словами, люлям сложно осмыслить струкзуры, которые они не могут описать устно или письменно. С подобными проблемами сталкиваются и программисты при разработке программного обеспечения. Язык, на котором они программируют, налагает ограничения на виды управляющих структур. структур данных и абстракций. которые они могут использовать; следовательно, число форм алгоритмов, которые могут созлать программисты, также ограничено.
Осознанав разнообразие свойств языков программирования, можно решить подобные проблемы. Изучение новых языковых конструкций помогает программистам повысить свое к!астерство. Можно возразить. что изучение возможностей других языков не поможет программисту. вынужденному использовать язык, в котором подобные возможности отсутствуют. Этот аргумент, однако.
нас не останавливает, поскольку довольно часто языковые средства олного языка могут быть воспроизведены в других языках. непосредственно их не поллерживаюших, Например. после изучения таких функций обработки строк, предусмотренных в языке РОйТКА!ч 90 (АХ51.
! 992), как функция поиска подстрок ПЧ1)ЕХ, программист. использующий язык Рааса! (1 ебйагд, 1984), естественным образом перейдет к созданию подпрограмм. выполняющих те же операции. Сказанное справедливо и гьчя многих лругих более сложных конструкций, обсуждаемых в данной книге. 24 Глава!. Вводные замечания Изучение концепций языков программирования позволяет разобраться в полезных языковых свойствах и поошряет программистов к их использованию. Тот факт, что многие свойства могут быть воспроизведены в разных языках. не уменьшает значения разработки языков.
обладаюших наилучшим набором свойств. Всегда лэтше использовать свойство. уже встроенное в язык. чем его менее элегантный н более громоздкий аналог в языке. изначатьно это свойство не поддерживающем. ° Более обоснованный выгюр нодхадншего языка. Многие профессиональные программисты имеют лишь формальное образование в области компьютерных наук.
а дальнейший опыт они получали самостоятельно или с помошью заочного обучения. Людей часто обучают олному-лвум языкам. непосредственно имеюшнм отношение к текущей работе организации. Некоторые программисты прошли форььатьное обучение в датеком прошлом. Изучавшиеся ими языки уже давно не использ)ются. а многие свойства. лоступные в современных языках программирования. известны не очень широко.
В результате. многие программисты продолжают использовать привычный язык, даже если он совсем не подходит лля работы нал новым проектом. Если бы они знали другие языки программирования. в частности их особые свойства, то выбор рабочего языка был бы более осознанным. ° Повышаются способнопни к изучению новых языков. Программирование — мололая дисциплина,Метолологии, средства разработки програмк1ного обеспечения и языки программирования все еше нахолятся в состоянии развития. Это делает разработку программного обеспечения захватываюшим занятием.
подразумевающим необходимость непрерывного обучения. Процесс изучения новых языков программирования может быть длительным и трулным, особенно для программиста. уверенно себя чувствуюшего только с одним-двумя языками и никогда не изучавшего концепций языков программирования в целом. Один раз досконально разобравшись в основных концепциях языков программирования, вы поймете, как эти концепции реализованы в структуре изучаемого вами языка программирования.
Например, программистам, понимаюшим концепцию абстракции данных. намного легче разобраться в структуре абстрактных типов ланных языка Зана (Ооз!~пя е~ а!., 1996), чем людям. не знакомым с этим понятием. Это относится и к естественным языкам. Чем лучше вы знаете грамматику вашего родного языка, тем легче вам дастся изучение второго языка. Более того, положительным побочным эффектом изучения второго языка станет лучшее понимание первого.
И последнее, знание лексики и основных концепций языков программирования для практикуюших программистов необходимо, поскольку только так они смогут читать и понимать справочники по языкам программирования и литературу. посвяшенную языкам и компиляторам. ° Угтубзлетсл понимание важности реализации. Прн изучении концепций языков программирования необходимо затронуть вопросы, связанные с реализацией языков. Разобравшись в этих вопросах, вы поймете, почему язык разработан именно таким образом. В свою очередь, это позволит более рационально использовать язык. Программист может значительно повысить свое мастерство.
если научится правильно выбирать конструкции языков программирования и оценивать последствия своего выбора. 1.1. Дпя чего нужно изучать концепции языков программирования 1!сьо«орые вилы ошибок могут иай«и и «с«ран««зь голько программисты, знающие очи не« . ~в!«о«и««е лша ш !«сал«««ац««««языка, Кроче того. понимание проблем. свяиш.г . с ргали«чи««ей ягк«ка. по«воляст озчсгливо ирслшавля«ь. каким обраюм ьочиь«о~ср к ~погшяе~ ры:шчиыс я«ыковые ьоисзруьиии. В свою очерель, это поъьляк««очнсс оиешиь сгною.гсльею «ффслзивиость альтернативных конструкции. ко«нрые чш!з быть выораиы ири ра«рабо~ьс ирограччы.
На««рил«ер, про.р: «чистьь ис разо,«рш шик ч в рсали«аиии рекуршик нс знают чго рекурсивные Ги чы. ал правил чс. лс«шсс ««,в««н«лс«и«ых «икра«««в««ых. °,,' .н.н«нося .: .з чн шин к рп«1ан«н«ь ч ныа ласков Возможная необходи««ш. н .о«а«н««я н ного яшина с«!лен~! ««ожс~ иола«шься лазеког«. Однако эксперты ь! чн о«ьрскюни р««!1аб«пы«анч различны: язы и иро.раммирования. Напричс!«. бо.!! н! ню«во с1«с«кч и!нч!«ин!но«о Обсспечгн!«я 3!юоук)т ои1«сведенного вэанчоде!«с~си«я к пол«,««на~с«еч, хо«я оы ивом данных и команд.
В простых сит!вонях вводится несколько шачении .ыииыч а выходные данные выдаются в тривиальном форчате. С рэгой с'.ороиы. пользовше ~ь может быть вынужден ирохолить по несколькич зровьнч чеию и ьвошпь большое лоличсство разнообразных ломанл. лак при раооте с телстсвыч ироиессороч. Создание интерфейса пользователя а полооных сишечах -- с.к«ж««ая проб.юча Форма «того интерфейса создается разраоозчилоч сисзечы.
а ь!1«~ ~е!««ш его опоили очень похожи на критерии. исиольйечые при опенке стр! кг.ры языка п1юграмч««рова««ия. Следовательно. критический разоор языков про«раччирования поможет при конструировании так««х сложны систеч. более того. он иозво шт пользователям изучить н опенить подобные програччные прод! гпы. м Гдн«с,лг ш«шое !«пспрос««1«и«««с«««ге нл«нпс.п«ниашн«э н«мзннкн Ответить на вопрос. зачем изжно из! чать конпеппии языков ирограччирования, поможет обшнй обзор вычислительной техники Ооычно чожчо опрелел««ть, почем> конкретный язык программирования стал поп!лярньш.