Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Функциональныеязыкипрограммирования
Особенностьюязыковфункциональногопрограммированияявляетсято,чтотекстыпрограммнафункциональныхязыкахпрограммированияописывают«какрешитьзадачу»,нонепредписываютпоследовательностьдействийдлярешения.Основныесвойствафункциональныхязыковпрограммирования:краткость,простота,строгаятипизация,модульность,наличиеотложенных(ленивых)вычислений.Например,Lisp,Miranda,Gofel,ML,StandardML,ObjectiveCAML,F#,Scala,Пифагоридр. Процедурныеязыкипрограммирования Процедурныйязыкпрограммированияпредоставляетвозможностьпрограммистуопределятькаждыйшагвпроцессерешениязадачи.Особенностьтакихязыковпрограммированиясостоитвтом,чтозадачиразбиваютсянашагиирешаютсяшагзашагом.Используяпроцедурныйязык,программистопределяетязыковыеконструкциидлявыполненияпоследовательностиалгоритмическихшагов.Например,Ada,Basic,Си,КОБОЛ,Pascal,ПЛ/1,Рапираидр. Стековыеязыкипрограммирования Стековыйязыкпрограммирования−этоязыкпрограммирования,вкоторомдляпередачипараметровиспользуетсямашиннаямодельстека.Стековыеязыкипрограммирования:Forth,PostScript,Java,C#идр.Прииспользованиистека,вкачествеосновногоканалапередачипараметровмеждусловами,элементыязыка,естественнымобразом,образуютфразы(последовательноесцепление).Этосвойствосближаетданныеязыкисестественнымиязыками. Аспектно-ориентированныеязыкипрограммирования Аспектно-ориентированноепрограммирование(АОП)−парадигмапрограммирования,основаннаянаидееразделенияфункциональностидляулучшенияразбиенияпрограммынамодули.Например,AspectJ,Encase,Infra,JAC,Reflex,Dojo,AspectC++идр. Декларативныеязыкипрограммирования Декларативныеязыкипрограммирования−этоязыкипрограммированиявысокогоуровня,вкоторыхпрограммистомнезадаетсяпошаговыйалгоритмрешениязадачи("как"решитьзадачу),анекоторымобразомописывается,чтотребуетсяполучитьвкачестверезультата.НаиболеераспространённымязыкомдекларативногопрограммированияявляетсяязыкПролог. Динамическиеязыкипрограммирования Динамическийязык−языкпрограммирования,которыйпозволяетопределятьтипыданныхиосуществлятьсинтаксическийанализикомпиляциюнаэтапевыполненияпрограммы.Динамическиеязыкиудобныдлябыстройразработкиприложений.Например,Perl,Python,PHP,Smalltalk,JavaScriptидр.НекоторымидинамическимичертамиобладаеттакжеVisualBasic. Учебныеязыкипрограммирования Учебныйязыкпрограммирования−языкпрограммирования,предназначенныйдляобучения.ВкачестветаковыхразрабатывалисьтакиеязыкикакBASICиПаскаль.Популярнымязыком,разработаннымспециальнодляобразования,являетсяLOGO. Учебныйязыкдолженобеспечиватьпростоту,ясностьиудобочитаемостьконструкций.Учебныйязыкпрограммированиядолженобеспечиватьплавныйпереходотпсевдокодаксобственнопрограммированию.Например,Робик,Рапира,Е-практикум,КуМиридр. Языкиописанияинтерфейсов IDL,илиязыкописанияинтерфейсов(англ.InterfaceDescriptionLanguageилиInterfaceDefinitionLanguage)−языкспецификацийдляописанияинтерфейсов,синтаксическипохожийнаописаниеклассоввязыкеC++. РазновидностиязыкаIDL:CORBAIDL,IDLDCE,MIDL,COMIDL. Языкипрототипногопрограммирования Прототипноепрограммирование−стильобъектно-ориентированногопрограммирования,прикоторомотсутствуетпонятиекласса,аповторноеиспользование(наследование)производитсяпутёмклонированиясуществующегоэкземпляраобъекта−прототипа.Например,JavaScript,Lua,Io,REBOLидр.;Agora,Cel,Factor,TADSидр. Объектно-ориентированныеязыкипрограммирования Объектно-ориентированныйязыкпрограммирования(ОО-язык)−язык,построенныйнапринципахобъектно-ориентированногопрограммирования. Восновеконцепцииобъектно-ориентированногопрограммированиялежитпонятиеобъекта−некойсубстанции,котораяобъединяетвсебеполя(данные)иметоды(выполняемыеобъектомдействия).Например,C#,C++,Java,VB.NET,PowerBuilder,Ada,Xbase++,Ceylonидр. Логическиеязыкипрограммирования Логическоепрограммирование−парадигмапрограммирования,основаннаянаавтоматическомдоказательстветеорем,атакжеразделдискретнойматематики,изучающийпринципылогическоговыводаинформациинаосновезаданныхфактовиправилвывода.Логическоепрограммированиеоснованонатеориииаппаратематематическойлогикисиспользованиемматематическихпринциповрезолюций.Например,Prolog,QA-4,Mercury,VisualProlog,Oz,Fril… Сценарныеязыкипрограммирования Сценарныйязык,илискриптовыйязык−высокоуровневыйязыкпрограммированиядлянаписаниясценариев−краткихописанийвыполняемыхсистемойдействий.Например,JCL,bash,AppleScript,VisualBasicScript,AutoLISP,VBA,JavaScriptидр. Эзотерическиеязыкипрограммирования Эзотерическиеязыкипрограммирования−видязыковпрограммирования,непредназначенныхдляпрактическогоприменения.Некоторыеизнихотносяткобразцамкомпьютерногоюмора.Например,COW(языкпарнокопытных),Piet(сцветовымкодированием),Chef(рецепты),Shakespeare(Шекспировскиепьесы),Haifu(стихотворенияхокку)идр. Стандартизацияязыковпрограммирования.Парадигмапрограммирования Концепцияязыкапрограммированиянеотрывносвязанасегореализацией.Длятогочтобыкомпиляцияоднойитойжепрограммыразличнымикомпиляторамивсегдадавалаодинаковыйрезультат,разрабатываютсястандартыязыковпрограммирования.Организации,занимающиесявопросамистандартизации:АмериканскийнациональныйинститутстандартовANSI,ИнститутинженеровпоэлектротехникеиэлектроникеIEEE,ОрганизациямеждународныхстандартовISO. Присозданииязыкавыпускаетсячастныйстандарт,определяемыйразработчикамиязыка.Еслиязыкполучаетширокоераспространение,тосовременемпоявляютсяразличныеверсиикомпиляторов,которыенеточноследуютчастномустандарту.Вбольшинствеслучаевидетрасширениезафиксированныхпервоначальновозможностейязыка.Дляприведениянаиболеепопулярныхреализацийязыкавсоответствиедругсдругомразрабатываетсясогласительныйстандарт.Оченьважнымфакторомстандартизацииязыкапрограммированияявляетсясвоевременностьпоявлениястандарта–доширокогораспростр-яязыкаисозданиямнож-ванесовместимыхреализаций.Впроцессеразвитияязыкамогутпоявлятьсяновыестандарты,отражающиесоврем-енововведения. Парадигмыпрограммирования Парадигма–набортеорий,стандартовиметодов,которыесовместнопредставляютсобойспособорганизациинаучногознания,–инымисловами,способвидениямира.Поаналогиисэтимпринятосчитать,чтопарадигмавпрограммировании–способконцептуализации,которыйопределяет,какследуетпроводитьвычисления,икакработа,выполняемаякомпьютером,должнабытьструктурированаиорганизована. Известнонесколькоосновныхпарадигмпрограммирования,важнейшимиизкоторыхнаданныймоментвремениявляютсяпарадигмыдирективного,объектно-ориентированногоифункционально-логическогопрограммирования.Дляподдержкипрограммированиявсоответствиистойилиинойпарадигмойразработаныспециальныеалгоритмическиеязыки. CиPascalявляютсяпримерамиязыков,предназначенныхдлядирективногопрограммирования,когдаразработчикпрограммыиспользуетпроцессно-ориентированнаямодель,тоестьпытаетсясоздатькод,должнымобразомвоздействующийнаданные.Активнымначаломприэтомподходесчитаетсяпрограмма(код),котораядолжнавыполнитьвсенеобходимыедлядостижениянужногорезультатадействиянадпассивнымиданными. Сейчасвесьмараспространеннымсталобъектно-ориентированный(objectoriented)подход,реализуемый,например,языкамиC++иJava.Приэтом,наоборот,первичнымисчитаютсяобъекты(данные),которыемогутактивновзаимодействоватьдругсдругомспомощьюмеханизмапередачисообщений(называемоготакжеимеханизмомвызоваметодов).ФункцияпрограммиставэтомслучаеподобнаролибогаприсотворенииВселенной–ондолженпридуматьиреализоватьтакиеобъекты,взаимодействиекоторыхпослестартапрограммыприведеткдостижениюнеобходимогоконечногорезультата. ФункциональноеилогическоепрограммированиеиспользуетязыкитипаLisp,HaskellиProlog.Этапарадигмабазируетсянапринципиальноинойтрактовкепонятияпрограммы.Здесьглавнымявляетсяточнаяформулировказадачи,авыбориприменениенеобходимогодляееалгоритмарешения–проблемаисполняющейсистемы,нонепрограммиста.
Технологияпрограммированиякакпроцессразработкипрограммныхпродуктов,создающихсякакнеразрывноецелоеввидехорошооттестированныхпрограммиметодическихматериалов,описывающихихназначениеииспользование. Программирование–процесссозданиякомпьютерныхпрограмм.Вболееширокомсмысле:спектрдеят-сти,связ-ыйссозданиемиподдержаниемвраб.состояниипрограмм-ПОЭВМ. Технологияпрограммирования-совокупностьметодовисредств,используемыхвпроцессеразработкипрограммногообеспечения. Технологияпрограммир-япредставляетсобойнабортехнологическихинструкций,включающих: · указаниепоследоват-стивыполнениятехнологич-хопераций; · перечислениеусловий,прикот-хвыполняетсятаилиинаяоперация; · описаниясамихопераций,гдедлякаждойоперацииопределеныисходныеданные,результаты,атакжеинструкции,нормативы,стандарты,критерииит.п. Современнаятехнологияпрограммирования—компонентныйподход,которыйпредполагаетпостроениепрограммногообеспеченияизотдельныхкомпонентов-физическиотдельносуществующихчастейпрограммногообеспечения,которыевзаимодействуютмеждусобойчерезстандартизованныедвоичныеинтерфейсы.Вотличиеотобычныхобъектовобъекты-компонентыможнособратьвдинамическивызываемыебиблиотекиилиисполняемыефайлы,распространятьвдвоичномвиде(безисходныхтекстов)ииспользоватьвлюбомязыкепрограммирования,поддерживающемсоответствующуютехнологию. Каждыйпрограммныйпродуктдолженвыполнятьопределенныефункции,т.е.делатьто,чтозадумано.Качествопрограммногопродукта−этосовокупностьегочертихарактеристик,которыевлияютнаегоспособностьудовлетворятьзаданныепотребностипользователей. Внастоящеевремякритериямикачествапрограммногопродуктапринятосчитать:−функциональность;−надежность;−легкостьприменения;−эффективность(отношениеуровняуслуг,предоставл-хпрограммнымпродуктомпользов-люпризаданныхусловиях,кобъемуиспользуемыхресурсов);−сопровождаемость(характер-кипрограмм-гопродукта,которыепозволяютминимизир-тьусилияповнесениюизмененийдляустранениявнемошибокипоегомодификациивсоотв-виисизменяющ-сяпотребностямипользов-лей);−мобильность(способностьПСбытьперенесеннымизоднойсредывдругую,вчастности,соднойЭВМнадр.). Важнымэтапомсозданияпрогр-гопродуктаявл.тестированиеиотладка. Отладка−этодеятельность,направленнаянаобнаружениеиисправлениеошибоквпрограммномпродуктесиспользованиемпроцессоввыполненияегопрограмм. Тестирование−этопроцессвыполненияегопрограммнанекоторомнабореданных,длякоторогозаранееизвестенрезультатпримененияилиизвестныправилаповеденияэтихпрограмм. СуществуютследующиеметодытестированияПС: 1)Статическоетестирование–ручнаяпроверкапрограммызастолом. 2)Детерминированноетестир-е–приразл-хкомбинацияхисх-хданных. 3)Стохастическое–исх.данныевыбир-сяпроизвольно,навыходеопределяетсякачеств-есовпадениерезультатовилипримернаяоценка. Представлениеопрограммированиикакопроцессеформализациитребованийзаказчика(пользователя)ввидевнешнегопроекта,созданиянеобходимыхструктурданных,кодированияпрограмм,ихтестированияиотладке,атакжеформализованногодокументированиярезультатовпроектирования. Цельюлюбогопроектапоразработкепрограммногопродуктаявляетсяпоставказаказчикупрограммногообеспечения,соответств-готребованиям,которыекнемупредъявляются.КачествоПОзависитотвкладавсехчленовпроектнойкоманды:программистов,специалистовпотестированию,бизнес-аналитиков,QA-инженеровидр.Менеджерпроектанесетперсональнуюответственностьзауспехпроектаи,следовательно,закачествосозданноговрамкахпроектаПО. Работапообеспечениюкачествастроитсяпоследующейсхеме: 1.Передначаломпроектавсегдапроводитсяанализ.Наэтойстадииспециалистпообеспечениюкачествадолженизучитьтребованиякпродукту,создаваемомувпроектеи,основываясьназадокументированномопытекомпании,предложитьменеджерупроектавозможныевариантыпостроенияпроцессаразработкивпроектесвключениемнеобходимыхактивностейдляобеспечениякачества,такихкак:СборианализтребованийкПО;Прототипирование;Разработкадизайна;Кодирование-процесснаписанияпрограммногокода;Разл.видыанализараб-хпродуктов,включаяанализплановпроекта;Разл.видытестир-я(функцион-е,нагрузочное,юнит-тестирование);ПриемкаготовогоПОзаказчикомипоставкаПО. 2.Контрольпроектногопроцесса.Проектныйпроцессстроитсянабазестандартныхпроцессовкомпании:Менеджментпроекта,Разработка,Управлениеконфигурациейит.д. 3.Внутреннийаудитпроекта(независимаяпроверкатого,насколькоточновпроектевыполняютсятетребования,которыепредъявляютсявкомпаниикфункционированиюпроцессов). 4.ПроведениисертификациинасоответствиетребованиямИСО9001. Важнымэтапомсозданияпрогр-гопродуктаявл.тестированиеиотладка. Отладка−этодеят-сть,направл-янаобнаруж-еиисправлениеошибоквпрогр-номпродуктесиспольз-емпроцессоввып-нияегопрограмм. Тестирование−этопроцессвыполненияегопрограммнанекоторомнабореданных,длякоторогозаранееизвестенрезультатпримененияилиизвестныправилаповеденияэтихпрограмм. Последнейсост-щейпроцессапрограммир-яявл-сядокументирование.Оновключаетширокийспектрописаний,облегчающихпроцесспрограммир-нияиобогащающихрезультирующуюпрограмму.Постоянноедокументир-ниедолжносоставлятьнеотъемлемуючастькаждогошагапрограммир-ния.Постановказадачи,проектныедокументы,алгоритмыипрограммы–всеэтодокументы.Внутренняядокументация,включеннаянепосредственновпрограмму,облегчаетчтениекода. Пользовательскаядокументацияпрограммыобъясняетпользователям,каконидолжныдействовать,чтобыиспользоватьданнуюпрограмму. Документацияпосопровождениюпрограммыописываетпрограммусточкизренияеёразработки.Этадокументациянеобходима,еслипрограммапредполагаетизучениетого,каконасконструирована. |
||
Последнее изменение этой страницы: 2018-04-12; просмотров: 187. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |