Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Функциональныеязыкипрограммирования




Особенностьюязыковфункциональногопрограммированияявляетсято,чтотекстыпрограммнафункциональныхязыкахпрограммированияописывают«какрешитьзадачу»,нонепредписываютпоследовательностьдействийдлярешения.Основныесвойствафункциональныхязыковпрограммирования:краткость,простота,строгаятипизация,модульность,наличиеотложенных(ленивых)вычислений.Например,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 не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...