.

Сучасні методи і засоби інформаційних технологій (реферат)

Язык: украинский
Формат: реферат
Тип документа: Word Doc
0 7124
Скачать документ

Реферат

Тема.

Сучасні методи і засоби інформаційних технологій

Зміст

1. Сучасні методи і засоби розробки прикладних програмних засобів………3

2. Системи і мови програмування ……………………………………………..11

3. Використана література

1.СУЧАСНІ МЕТОДИ І ЗАСОБИ РОЗРОБКИ ПРИКЛАДНИХ ПРОГРАМНИХ ЗАСОБІВ

Впродовж всієї історії програмування домінуюча роль відводилася проблемі
визначення методів і способів, що полегшують розробку і подальший
супровід програм, що скорочують кількість помилок при створенні і
модифікації програм, зниження трудомісткості програмування.

Досвід розробки великих і складних програмних комплексів показав, що
раціональний підхід до вирішення цієї проблеми спирається на метод, що
отримав різну назву (метод низхідного проектування, метод покрокової
деталізації, метод ієрархічного проектування, top-down-noJi,xoJ\), але
що полягає у визначенні специфікацій компонентів системи шляхом
послідовного виділення в її складі окремих доданків і їх поступової
деталізації до рівня, що забезпечує однозначне розуміння того, що і як
необхідно розробляти і реалізовувати.

Цей метод є незамінним при розробці складних по характеру і великих за
об’ємом програм, коли до їх розробки необхідно залучати велику кількість
програмістів, що працюють паралельно. Він дозволяє концентрувати увагу
розробників на найбільш відповідальних частинах програми, а також
полегшує можливість постійного контролю за її працездатністю у міру
розробки, від ладки і об’єднання окремих складових програм за рахунок
організації безперервності цього процесу протягом всієї розробки.

Для прискорення розробки програмного комплексу часто замість деяких
програм нижнього рівня, що знаходяться в процесі розробки, можуть
застосовуватися спеціальні “програми-заглушки”. Програми-заглушки
потрібні лише на ранніх стадіях розробки для того, щоб не стримувати
загальний хід створення програмного комплексу. Суть програми-заглушки
полягає в тому, що при зверненні до неї відповідно до заданого набору
вихідних тестових даних вона не формує, а вибирає результат “рішення” із
заздалегідь підготовленого набору. Завдяки цьому забезпечується
можливість імітувати роботу на ЕОМ реально створюваної програми, а отже,
здійснювати перевірку працездатності програм верхнього рівня ще до того,
як будуть розроблені і від лагоджені всі складові її програми нижнього
рівня.

Реалізація методу низхідного проектування тісно пов’язана з іншим
поняттям програмування – модульним проектуванням, оскільки на практиці
при декомпозиції складної програми виникає питання про розумну межу її
дроблення на складові частини. В той же час поняття модульності не можна
зводити лише до представлення складних програмних комплексів у вигляді
набору окремих функціональних блоків. Модуль – це послідовність логічно
взаємозв’язаних фрагментів, оформлених як окрема частина програми. При
цьому програмні модулі повинні володіти наступними властивостями:

• на модуль можна посилатися (тобто звертатися до нього) по імені, у
тому числі і з інших модулів;

• після закінчення роботи модуль повинен повертати управління тому
модулю, який його викликав;

• модуль повинен мати один вхід і вихід;

• модуль повинен мати невеликий розмір, що забезпечує його осяжність.

При розробці складних програм, як правило, в них виділяють головний
модуль, що управляє, і підлеглі йому модулі, що забезпечують реалізацію
окремих функцій управління, функціональну обробку (тобто безпосередню
реалізацію основного призначення програмного комплексу), і допоміжні
модулі, що забезпечують сервісне обслуговування пакету (наприклад, збір
і аналіз статистики роботи програми, обробку різного роду помилкових
ситуацій, навчання і видачу підказок і тому подібне).

Модульний принцип розробки програм володіє наступними перевагами:

• велику програму можуть розробляти одночасно декілька виконавців, а це
дозволяє скоротити терміни її розробки;

• з’являється можливість створювати (і багато разів використовувати
надалі) бібліотеки програм, що найбільш вживаються;

• спрощується процедура завантаження великих програм в оперативну
пам’ять, коли потрібна її сегментація;

• виникає багато природних контрольних крапок для спостереження за
здійсненням ходу розробки програм, а в подальшому для контролю за ходом
виконання програм;

• забезпечуються ефективніше тестування програм, простіше здійснюються
проектування і подальша від ладка.

Переваги модульного принципу побудови програм особливо наочно
виявляються на етапі супроводу і модифікації програмних продуктів,
дозволяючи значно скоротити витрати сил і засобів на реалізацію цього
етапу.

Актуальна для початкового періоду розвитку і використання ЕОМ проблема
розробки програм, що займають мінімум

основній пам’яті і що виконуються за найкоротший час, в подальшому у
зв’язку з різким падінням вартість апаратної частини ЕОМ, значним
зростанням їх швидкодії і об’ємів пам’яті змінилася необхідністю
розробки і вживання принципово нових “індустріальних” методів складання
програм. В середині 70-х років нова сукупність інженерних методів і
засобів створення програмних продуктів отримала назву програмної
інженерії (software engineering). Засадничим її принципом стали
систематизація і стандартизація процесів створення програм на основі
структурного підходу. З’явилося структурне програмування, метою якого
стало прагнення полегшити процес розробки і від ладки програмних
модулів, а головне – процес їх подальшого супроводу і модифікації.

В даний час структурне програмування – це ціла дисципліна, об’єднуюча
декілька взаємозв’язаних способів створення ясних, легких для розуміння
програм. Ефективність вживання сучасних універсальних мов програмування
багато в чому визначається зручністю написання з їх допомогою
структурних програм.

Інший напрям вдосконалення процесу розробки прикладних програм –
розвиток програмно-інструментальних засобів програмування економічних
завдань. Основу таких засобів програмування складають системи
автоматизації програмування, або системи програмування, які забезпечують
можливість вирішення широкого круга завдань безпосередньо в середовищі
операційної системи ЕОМ.

В той же час слід зважати на специфіку завдань економічного управління:

• домінування завдань з відносно нескладними обчислювальними алгоритмами
і потребою формування різного роду накопичувальних підсумків, тобто
завдань “прямого рахунку”;

• роботу з великими масивами (зазвичай впорядкованою певним чином)
вихідної інформації;

• вимога надання більшості результатній інформації у вигляді документів
табличної форми.

Вирішення вказаних завдань може бути здійснене з використанням
програмно-інструментальних засобів СУБД і електронних таблиць. Основна
гідність цих інструментальних засобів полягає в тому, що вони
пред’являють менші вимоги до їх користувачів в області програмування як
науки, забезпечуючи в той же час достатній швидке і ефективне вирішення
більшості завдань економічного управління. У зв’язку з цим вони
користуються великою популярністю серед непрофесійних програмістів. До
найбільш розвинених програмно-інструментальних засобів відносяться
системи автоматизації проектування (САПР) ПО, створення яких було почате
в кінці 70-х років.

Проте подібні розробки слабо враховували вимоги системного підходу,
оскільки обмежувалися автоматизацією лише частини етапів розробки ПО,
причому, як правило, вузького класу завдань. Поява і швидке поширення ПК
відкрили нові перспективи в справі автоматизації розробки ПО. Так, за
останнє десятиліття в області засобів автоматизації програмування
сформувався новий напрям під загальною назвою кейс-технологія (Computer
Aided Software ENGINEERING-CASE).

Базуючись на класичних методах розробки ПО, CASE-технологія є сукупністю
засобів системного аналізу, проектування, розробки і супроводу складних
програмних систем, підтримуваних комплексом інструментальних засобів
автоматизації всіх етапів розробки програм, що взаємо пов’язали. Завдяки
структурним методам на стадіях аналізу і проектування CASE- технологія
забезпечує розробників широкими можливостями для різного роду
моделювання, а централізоване зберігання всієї необхідної для
проектування інформації і контроль за цілісністю даних гарантують
узгодженість взаємодії всіх фахівців, зайнятих в розробці ПО.

Високий “тягар” наслідків помилок при розробці ПО, властивих етапу
складання специфікацій для автоматизації інформаційної системи об’єкту,
викликала пошук доріг скорочення їх числа на цьому етапі до мінімуму.
Природним вирішенням проблеми була розробка формалізованого апарату для
опису і подальшого аналізу інформаційної моделі системи. Вперше такий
підхід з системних позицій був реалізований співробітниками університету
Мічигану під керівництвом проф. Д.Тайкроу в рамках проекту ISDOS
(Information System

Design and Optimization System – проектування і оптимізація
інформаційних систем).

У основу реалізації проекту ISDOS була покладена спеціально розроблена
мова PSL (Problem Statment Language – мова Постановки завдань), яка
забезпечувала опис цілей, функцій і завдань систем
організаційно-економічного управління, і програмний аналізатор описів
PSA (Problem Statment Analizator -анализатор постановок завдань),
виконаних засобами PSL.

На мові PSL користувач специфікує параметри, що визначають входи і
виходи інформаційної системи і їх тимчасові характеристики.

Проект ISDOS був першою західною системою автоматизованого
формалізованого аналізу вимог до програмного забезпечення. Він складався
з взаємозв’язаних модулів, які забезпечували:

• введення, контроль і кодування специфікацій проектованою

системи;

• аналіз правильності постановки завдань і їх узгодженості;

• виявлення помилок і видачу повідомлень користувачам, а також усунення
дублювання у вихідній інформації;

• перетворення постановок завдань після перевірки і коректування
вихідних даних в машинні програми відповідно до заданих вимог до
системи;

• виділення основних елементів інформаційної системи. Мова PSL також
дозволяє системному аналітикові описати в

формалізованому вигляді необхідні результати вирішення завдань,
необхідні вхідні дані, взаємозв’язки між окремими процедурами і даними,
надати інформацію про характеристики окремих модулів, процедур і даних і
так далі

Підсистема PSA аналізує поставлену і описану за допомогою PSL проблему і
генерує корисні для розробника інтегральні характеристики, такі, як
формальні постановки завдань, ієрархічні структури даних, рекомендації
по вибору ключових слів, узагальнені блок-схеми алгоритмів обробки даних
при рішенні завдань і ряд інших характеристик.

Пошук методів вдосконалення процесів розробки прикладних програмних
засобів зумовив появу методології, по якій розробка програми починалася
не після завершення процесу вироблення остаточних вимог до неї,

а як лише встановлювалися вимоги на перший, «стартовий» (пілотний)
варіант прикладної програми, що дозволяє почати змістовну роботу по її
реалізації на комп’ютері. Це дало користувачеві можливість, отримуючи
вже з перших кроків конкретне уявлення про характер реалізації завдання,
уточнювати її постановку. Тим самим полегшувався процес
експериментального пошуку потрібного вирішення автоматизації завдання.

Завдяки тісній взаємодії розробника із замовником (користувачем) на
найвідповідальнішому етапі створення прикладних програм між ними
досягалося швидке взаєморозуміння мети поставленого завдання і
можливості її автоматизації в конкретних умовах. Це підвищувало
швидкість розробки програм і послужило підставою для назви такої
технології – RAD (Rapid Application Development), яка отримала широке,
поширення.

RAD-технология ознаменувала появу принципово нового, відмінного від
традиційного, послідовного методу розробки програмних засобів (при якому
черговий етап процесу створення ПС починається лише після завершення
попереднього етапу і не допускає якого-небудь повернення до попередніх
етапів). Це дало привід назвати таку ітераційну методологію «спіральною»
на відміну від послідовної, званої також «каскадної» або «водопаду».

По суті, спіральний метод був доповненням каскадного елементами
итеративности (зазвичай до трьох разів) і разом з ним реалізовував
варіанти структурного (або алгоритмічного) підходу до розробки ПС.

RAD-технология дозволила якоюсь мірою змістити центр тяжіння розробки ПС
на початкові етапи життєвого циклу (ЖЦ), а крім того, не дивлячись на
наявність повторень, дала можливість в цілому скоротити час і витрати на
розробку програмних застосувань.

Проте при всіх достоїнствах RAD-технологии, що підтримує традиційні
методи розробки програмних засобів, сфера її ефективного вживання
обмежена, оскільки вона не може забезпечити створення складних
програмних продуктів, а орієнтована на розробку нескладного замовленого
програмного забезпечення. Коли в центрі уваги розробників програмного
забезпечення виявилися складні інформаційні

системи, непіддатливі програмуванню «в лоб», традиційні методи, що
втілюють структурний принцип розробки систем, виявилися малоефективними.

Прагнення позбавитися від недоліків структурного підходу привело до
розвитку нових ідей, заснованих на об’єктній декомпозиції систем. Такий
підхід до розробки програмних засобів отримав назву
об’єктно-орієнтованого (ООП).

У основі цього підходу лежать поняття об’єкт, клас, інкапсуляція,
спадкоємство і поліморфізм.

Кожен об’єкт є представником деякого класу однотипних об’єктів. Клас
визначає загальні властивості для всіх його об’єктів. До таких
властивостей відносяться:

• склад і структура даних, що описують атрибути класу і відповідних
об’єктів;

• сукупність методів – процедур, що визначають взаємодію об’єктів цього
класу із зовнішнім середовищем і іншими об’єктами.

Об’єкти і класи володіють характерними властивостями, які активно
використовуються при об’єктно-орієнтованому підході і багато в чому
визначають його переваги:

•інкапсуляція – здатність змінювати реалізацію будь-якого класу об’єктів
без побоювання, що це викличе небажані побічні наслідки в програмному
середовищі;

•спадкоємство – можливість виділити властивості, методи і події одного
об’єкту і приписати їх іншому об’єкту, інколи з їх модифікацією;

•поліморфізм – здатність об’єктів вибирати метод обробки на основі типів
даних, що приймаються в повідомленні.

Об’єктно-орієнтована декомпозиція полягає в представленні системи у
вигляді сукупності класів і об’єктів наочної області. При цьому
ієрархічний характер складної системи відбивається у вигляді ієрархії
класів, а її функціонування розглядається як взаємодія об’єктів.

Об’єктно-орієнтований підхід до програмування відрізняє поєднання
чотирьох важливих аспектів:

• модульність, що дозволяє локалізувати зону дії процедур по відношенню
до внутрішніх змінних, що забезпечує можливість зміни локальних процедур
і внутрішніх структур без необхідності зміни інших програмних модулів;

• абстракція даних, при якій тип даних визначається на основі деякої
внутрішньої вистави і безлічі процедур для доступу і обробки даних
абстрактного типа;

• динамічна в’язка програм, що дозволяє відмовитися від
перекомпилирования всієї програми при внесенні змін деяких типів до
окремих модулів;

• використання механізму «спадкоємства», який дозволяє створювати класи
об’єктів і виділяти в них підкласи об’єктів, що володіють тими або
іншими конкретними властивостями.

Така якість дозволяє створювати компактні програми при специфікації
нового об’єкту, що трохи відрізняється від вже відомого, в яких немає
необхідності заново описувати загальні частини, а досить лише задати
відмінності.

Життєвий цикл об’єктно-орієнтованої розробки програмних систем містить
декілька етапів, але на відміну від структурного підходу в нім немає
строгої послідовності їх виконання. Весь процес носить принципово
ітеративний характер. Головна особливість життєвого циклу при
об’єктно-орієнтованому підході полягає в тому, що він не передбачає
жорсткої послідовності виконання окремих етапів. При розробці може
з’ясуватися необхідність проведення додаткового обстеження;
програмування і подальше тестування можуть зажадати повернення до
проектування.

Об’єктно-орієнтований підхід забезпечує швидке створення прототипів
проектованої системи, поступовий розвиток яких наводить до кінцевого
результату. Проте об’єктно-орієнтований підхід також має ряд недоліків.
Ці недоліки перш за все лежать в області програмування і полягають в
тому, що в умовах динамічного скріплення об’єктів, численності методів в
класах і їх викликів, а також інтенсивного між сегментного обміну
зниження продуктивності програм може носити критичний характер. Часткове
вирішення цієї проблеми може бути здійснено за рахунок використання
об’єктно-орієнтованих мов програмування, що включають засоби, що
забезпечують вищу продуктивність програм в порівнянні з традиційними
мовами, а також за рахунок використання спеціальних прийомів
програмістів.

Останнім часом фахівці в області інформаційних технологій покладають
великі надії на швидке здобуття якісних програмних засобів різного рівня
складності на основі відкритих компонентних технологій. Ці технології
передбачають, що додаток повинен збиратися з готових, добре від
лагоджених програмних компонентів.

Компоненти програмного забезпечення – це прості елементи, які можна
повторно (неодноразово) використовувати при побудові програмних систем.

У основі реалізації компонентної ідеології лежить той факт, що
фундаментальних операцій над інформацією порівняно небагато – збір,
передача, витягання, введення і вивід, обчислення, перетворення, вистава
(структуризація), розміщення, зберігання, налаштування, адміністрування,
захист, контроль і діагностика.

Такий обмежений набір операцій полегшує можливість уніфікації програмних
компонентів (проектних рішень і їх елементів) і перш за все тих, які є
базовими, тобто не зачіпають специфічної бізнес-логіки додатків.
Природно, що розробка таких компонентів вимагає участі програмістів
високої кваліфікації, оскільки пред’являє підвищені вимоги до рівня
абстракції при їх створенні. Найбільш дослідні фахівці конструюватимуть
компоненты, а основна маса менш кваліфікованих програмістів займеться
простими завданнями збірки додатків на їх основі.

При цьому вироблення стандартів на компоненты гарантує наступні
властивості останніх:

• компоненты з схожими специфікаціями стають взаємозамінними і
допускають незалежну модернізацію;

• розробники можуть адаптувати як зовнішній вигляд вистави, так і
поведінку (дії) компонентів в заздалегідь обумовлених межах;

• компоненты можна об’єднувати один з одним, формуючи крупніші
компоненты і закінчені застосування.

Таким чином, стандарти компонентів грають ключову роль в процесі
створення додатків, дозволяючи реалізовувати всі переваги, закладені в
технології повторно використовуваних компонентів, – підвищену
продуктивність, одноманітність, простоту вживання і прискорений цикл
розробки.

Крім того, стандартами компонентів визначається спеціальна інформація
(мета дані):

• інформація про сам компонент, яка описує його загальні характеристики,
що відносяться до етапів компіляції і виконання, у тому числі вказівки
про те, де можна знайти компонент і як його активізувати;

• зовнішні заслання, вказуючі на мета дані, що описують інші компоненты;

• описувачі типа, інтерфейси і так далі

Ці мета дані допомагають об’єднувати компоненти і встановлювати взаємини
між ними, що виражаються в тому, що за допомогою мета даних компоненти
можуть виявляти інтерфейси інших компонентів і взаємодіяти з ними на
етапі виконання.

По оцінках фахівців, компонентні технології створюють реальні передумови
для перенесення центру тяжіння з етапу програмування на етап
проектування. Це досягається завдяки тому, що компонентні технології
дозволяють в перспективі виробляти алгоритми вирішення завдань
безпосередньо користувачами-непрограмістами, що уміють сформулювати свої
інформаційні потреби у вигляді того, що їм потрібно мати на виході
системи, без специфікації того, як це необхідно зробити, тобто
застосовувати непроцедурні мови програмування .

Інший напрям розробки прикладних програмних засобів базується на
концепції створення спеціального сховища даних (Data Warehouse).
Концепція сховищ даних була висунута на початку 90-х років з метою
забезпечення ефективного аналізу і підтримки управління. Сховище даних
може бути представлене як загально корпоративна база даних,
концептуальна відмінність якої від традиційного представлення баз даних
полягає в наступній:

• структура сховища орієнтована на наочну область, а не на існуючі
прикладні програми;

• актуалізація даних в Data Warehouse означає не оновлення елементів
інформації, а додавання нових елементів до що вже є (що розширює
можливості проведення різного роду порівняльного аналізу);

• дані в сховищі накопичуються з часом і чітко хронологізировани;

• дані акумулюються і інтегруються з різних джерел;

• дані зберігаються в «атомарному», тобто найбільш елементарному
вигляді, що дозволяє витягувати інформацію для аналізу в будь-якому
необхідному вигляді;

• разом з інформацією, що безпосередньо відображає стан системи
управління, в Data Warehouse акумулюються і мета дані.

Мета дані (дані про дані) полегшують можливість візуального
представлення вмісту Data Warehouse, дозволяють, «переміщаючись» по
сховищу, швидко відбирати необхідні дані для подальшої обробки. Основні
типи мета даних Data Warehouse відображають:

• структуру і вміст сховища;

• відповідність між вихідними і вихідними даними;

• об’ємні характеристики даних;

• критерії архівації;

• стосунки між даними;

• інформацію по кодуванню;

• інтервал життя даних і тому подібне

Концепція Data Warehouse підтримується RAD-средствами розробки
прикладного ПО, завдяки яким навіть неспеціаліст може швидко створювати
програмні застосування, підбираючи необхідні прототипи програм,
розширюючи їх набір шляхом об’єднання і налаштування дрібніших.

ph

?$??$??`????$?????e?имірних баз даних і створення корпоративних мереж,
а також забезпечує підтримку Web- технологій в мережах
Internet/Intranet.

Успішне вживання інструментальних засобів OLAP-систем пояснюється
прудкістю розробки додатків, гнучкістю і широкими можливостями в області
доступу до даних і їх перетворення.

2. СИСТЕМИ І МОВИ ПРОГРАМУВАННЯ

Складовою частиною загального (системного) програмного забезпечення є
системи програмування з відповідними алгоритмічними мовами.

Системи програмування призначені для вдосконалення процесу розробки і
від ладки програм. Система програмування включає в свій склад: вхідна
мова системи програмування (званий також вихідною мовою); транслятор, що
забезпечує переклад (трансляцію) програми з вхідної мови системи на
внутрішню (машинний) мову; бібліотеку стандартних, найбільш часто
використовуваних підпрограм (наприклад, сортування інформації, різного
роду вбудованих функцій і тому подібне), що підключаються в процесі
підготовки програм до виконання, а також відповідну документацію.

Мови програмування, або алгоритмічні мови, класифікуються: по мірі їх
залежності від обчислювальної машини; по орієнтації на сферу вживання;
по специфіці організаційної структури мовних конструкцій і тому подібне

З врахуванням залежності від ЕОМ мови програмування підрозділяються на:
машинно-залежні і машинно-незалежні.

Структура і засоби машинно-залежних мов відображають (враховують)
специфіку функціонування певного класу ЕОМ. При програмуванні завдань за
допомогою таких мов потрібне знання не лише єства алгоритму рішення
задачі, що реалізовується, але і технічних особливостей конкретної ЕОМ і
специфіки способів написання для неї програм.

До машинно-залежних мов в першу чергу відносяться машинні мови. Машинна
мова є внутрішньою мовою ЕОМ і є системою інструкцій і даних, які не
вимагають трансляції і можуть безпосередньо інтерпретуватися і
виконуватися апаратними засобами ЕОМ. Програмування на цих мовах
здійснювалося на ЕОМ першого і частково другого поколінь.

До машинно-залежних мов програмування також відносяться
машинно-орієнтовані мови, основні конструктивні засоби яких також
дозволяють враховувати особливості архітектури і принципів роботи певної
ЕОМ або

ряду ЕОМ, тобто володіють тими ж можливостями і вимогами до
програмістів, що і машинні мови, але на відміну від останніх вимагають
попередньої трансляції на машинну мову програм, складених з їх
допомогою.

До даного вигляду мов програмування відносяться: автокоди, мови
символічного кодування і асемблери. На відміну від програмування на
машинних мовах програмування на машинно-орієнтованих мовах (асемблерах)
характерний і для сучасних ПК. Це пояснюється тим, що в мові асемблера
допускається використання засобів, властивих мовам високого рівня.

Використання мови асемблера, як правило, обмежується областю системного
програмування, тобто програмуванням мікропроцесорів, розробкою
операційних систем або їх компонентів, розробкою драйверів – програм
обміну інформацією між центральними і периферійними пристроями, програм
ув’язки взаємодії окремих компонентів прикладних програм і так далі

Той факт, що мови даного класу зважають на специфіку організації і
принципів роботи конкретних ЕОМ і допускають при програмуванні вказівку
конкретних режимів роботи фізичних засобів ЕОМ, розподіл пам’яті, явне
визначення зовнішніх пристроїв і тому подібне, відносить їх до мов
“низького рівня”, або мов рівня 1:1 (тобто до мов, для яких одному
операторові вхідної мови програмування відповідає один оператор машинної
мови).

Машинно-незалежні мови (або мови високого рівня) не вимагають від
користувача повного знання специфіки ЕОМ, на якій реалізується програма
рішення задачі. Інструментальні засоби цих мов програмування дозволяють
записувати програму у вигляді, що допускає її реалізацію на ЕОМ з
різними типами машинних операцій, прив’язка до яким це ліком
покладається на відповідний транслятор.

Рішення задачі на цих мовах описується в наочному, досить легкий
сприйманому вигляді. Для них характерні: можливість написання виразів,
символічна ідентифікація змінних, виклик функцій по іменах і тому
подібне Завдяки цьому продуктивність програміста при складанні вихідних
програм на мовах високого рівня приблизно в 10 -15 раз вище

чим на мові асемблера. Проте отримувані в результаті трансляції машинні
програми, як правило, в 2 – 5 разів объемнее в порівнянні з такою ж
програмою, але написаною на асемблері, і працюють в 2 – 5 разів
повільніше.

Швидке зростання продуктивності ЕОМ, з одного боку, і хронічний брак
кадрів програмістів, з іншого боку, послужили причиною бурхливого
розвитку і вживання високорівневих мов програмування.

Відособлене, проміжне положення між машинно-незалежними і
машинно-залежними мовами займає мову Сі, створення якого з’явилося
результатом спроби об’єднання достоїнств, властивих мовам обох класів:

• у плані максимального використання можливостей конкретної
обчислювальної архітектури (що властиво мовам низького рівня), завдяки
чому програми на мові Сі компактні і працюють ефективно;

• у плані максимального використання потужних виразних можливостей
сучасних мов високого рівня.

Результат такого компромісу зумовив досить складний синтаксис мови Сі.

Мова Сі і його модифікації в даний час використовуються головним чином
для створення системних і прикладних програмних продуктів, в яких
вирішальне значення відводиться чинникам швидкодії і мінімізації об’ємів
пам’яті. На мові Сі написано ядро операційної системи Unix, унаслідок
чого її легко можна було змінювати і модернізувати (а це спрощує процес
її перенесення з однієї обчислювальної системи на іншу, при цьому 95%
вихідного програмного тексту операційної системи залишається
незміненим).

Машинно-незалежні мови класифікуються на процедурно-орієнтованих і
проблемно-орієнтованих.

Процедурно-орієнтовані (універсальні) мови ефективні для опису
алгоритмів вирішення широкого класу завдань. З мов цього класу найбільш
відомі: Фортран, Кобол, ПЛ/1, Бейсик, Паськаль, Ада.

Проблемно-орієнтовані мови призначені для опису процесів обробки
інформації у вужчої, специфічної області. Найбільш відомими мовами цієї
групи є: РПГ, Лісп, АПЛ, GPSS.

Останнім часом наголошується бурхливе зростання об’єктно-орієнтованих
мов програмування, тобто мов, орієнтованих на розробку програмних
застосувань для широкого круга всіляких по сфері додатка завдань, що
мають спільність в компонентах, що реалізовуються (наприклад, при
взаємодії з базами даних, роботі в умовах функціонування корпоративних
мереж організацій або взаємодії з глобальною мережею Інтернет).
Об’єктно-орієнтований підхід в програмуванні дозволяє застосовувати одні
і ті ж (типові) архітектурні і концептуальні рішення для швидкого
створення ефективних програмних застосувань.

Основна гідність алгоритмічних мов високого рівня – можливість опису
програм вирішення завдань у формі, максимально зручній для сприйняття
людиною. Але оскільки кожне сімейство ЕОМ має свою власну, специфічну
внутрішню (машинний) мову і може виконувати лише ті команди, які
записані на цій мові, то для перекладу вихідних програм машинною мовою
використовуються спеціальні програми-транслятори.

Робота всіх трансляторів будується по одному з двох принципів:
інтерпретація або компіляція.

Інтерпретація має на увазі по операторну трансляцію і подальше виконання
оператора вихідної програми, що від транслює. У зв’язку з цим можна
відзначити два недоліки методу інтерпретації: по-перше, програма, що
інтерпретує, повинна знаходитися в пам’яті ЕОМ протягом всього процесу
виконання вихідної програми, тобто займати певний об’єм пам’яті;
по-друге, процес трансляції одного і того ж оператора повторюється
стільки раз, скільки разів повинна виконуватися ця команда в програмі,
що різко знижує продуктивність роботи програми.

Не дивлячись на вказані недоліки, транслятори-інтерпретатори набули
достатнього поширення, оскільки вони підтримують діалоговий режим, що
особливо зручно при розробці і від ладці вихідних програм. Крім того,
інтерпретатори легко розробляти, і вони обходяться дешевшим, ніж
компілятори з тієї ж мови.

В разі багатократного рішення задачі, коли швидкодія роботи
обчислювальної системи має істотне

значення, доцільно використовувати інший принцип – компіляцію.

При компіляції процеси трансляції і виконання розділені в часі: спочатку
вихідна програма повністю перекладається машинною мовою (після чого
наявність транслятора в оперативній пам’яті стає непотрібною), а потім
програма, що від транслює, може багато разів виконуватися. Отже, для
однієї і тієї ж програми трансляція методом компіляції забезпечує вищу
продуктивність обчислювальної системи при скороченні необхідної
оперативної пам’яті.

Велика складність в розробці компілятора в порівнянні з інтерпретатором
з тієї ж самої мови пояснюється тим, що компіляція програми включає дві
дії: аналіз, тобто визначення правильності запису вихідної програми
відповідно до правил побудови мовних конструкцій вхідної мови, і синтез
– генерування еквівалентної програми в машинних кодах. Трансляція
методом компіляції вимагає неодноразового “перегляду” трансльованої
програми, тобто транслятори-компілятори є багато прохідними: при першому
проході вони перевіряють коректність синтаксису мовних конструкцій
окремих операторів незалежно один від одного, при подальшому проході –
коректність синтаксичних взаємозв’язків між операторами і так далі

Отримана в результаті трансляції методом компіляції програма називається
об’єктним модулем, який є еквівалентною програмою в машинних кодах, але
не “прив’язану” до конкретних адрес оперативної пам’яті. Тому перед
виконання об’єктний модуль має бути оброблений спеціальною програмою
операційної системи (редактором зв’язків) і перетворений в
завантажувальний модуль, тобто програмний модуль з відносними адресами.

Завантажувальний модуль може мати просту, оверлейну або динамічну
структуру.

Модуль простої структури складається з єдиного завантажувального модуля,
сформованого редактором зв’язків. Цей модуль перед виконання цілком
завантажується в оперативну пам’ять і включає всі необхідні для його
роботи команди. Модулі простої структури найбільш ефективні з точки зору
продуктивності, оскільки в ході виконання вимагають мінімального
втручання програми ОС, що управляє.

Якщо програма функціонально досить складна або велика по розмірах, то
вона реалізується у вигляді модулів (сегментів) оверлейної структури
(структури “з перекриттям”). Завантажувальний модуль оверлейної
структури складається з оверлейних сегментів і містить інформацію,
використовувану оверлейним супервізором для завантаження окремих
сегментів в основну пам’ять. При цьому різні сегменти такої програми
можуть повторно використовувати одну і ту ж область оперативної пам’яті.
Оверлейна організація модулів менш ефективна з точки зору часу їх
виконання, оскільки вимагає більшого втручання програми ОС, що управляє.

При виконанні модулів простій і оверлейної структури програма ОС, що
управляє, не здійснює виклик інших завантажувальних модулів, і в цьому
вони поступаються динамічній організації модулів. При виконанні
завантажувальних модулів динамічної структури можуть з’являтися запити
на інші завантажувальні модулі, і програма ОС, що управляє, може почати
завантаження цих модулів в оперативну пам’ять ще до завершення виконання
попереднього модуля. Програмні модулі, що завдяки цьому викликаються,
можуть виконуватися як послідовно, так і паралельно, що підвищує
швидкодію програми.

Разом з розглянутими вище трансляторами-інтерпретаторами і
трансляторами-компіляторами на практиці використовуються також
транслятори інтерпретатори-компілятори, які об’єднують в собі
достоїнства обох принципів трансляції: на етапі розробки і від ладки
програм транслятор працює в режимі інтерпретатора, а після завершення
процесу від ладки вихідна програма повторно транслюється в об’єктний
модуль (тобто вже методом компіляції). Це дозволяє значно спростити і
прискорити процес складання і від ладки програм, а за рахунок подальшого
здобуття об’єктного модуля забезпечити ефективнішого виконання програми.

Враховуючи, що ефективність програм, що отримуються за допомогою
високорівневих мов програмування, може значно поступатися аналогічним
програмам, складеним на мовах низького рівня, у ряді випадків
використовуються оптимізуючи транслятори (оптимайзери), які після
завершення компіляції здійснюють оптимізацію об’єктного модуля.

Наприклад, хороший компілятор здатний розпізнати недбалість програміста
і виключити з циклу «статичні»

обчислення. Під «статичними» обчисленнями розуміється виконання в циклі
певної операції, результат якої не залежить від ітерацій циклу.
Розпізнавши таку конструкцію, компілятор виводить її за рамки циклу. Цей
тип оптимізації називається переміщенням виразів.

Іншим складнішим виглядом оптимізації є усунення невживаної коди.
Компілятор знаходить операторів, які не виконуються ні за яких умов, і
не включає їх у виконуваний код.

У загальному випадку залежно від виграшу в продуктивності і тимчасових
витрат всі види оптимізації можна розділити на декілька рівнів. Перший і
другий рівні оптимізації, як правило, підвищують швидкодію на 10 – 15%
при мінімальних витратах. Третій рівень оптимізації дозволяє збільшити
продуктивність ще на 5%, проте це обійдеться значно дорожчим.

Таким чином, вибір типа алгоритмічної мови (див. мал. 7.3) залежить від
багатьох чинників: призначення, зручності написання вихідних програм,
ефективності отримуваних об’єктних програм і тому подібне Для ПК
провідне місце в даний час займають мови високого рівня, наприклад різні
версії мов: Бейсик, Паскаль, Фортран, Кобол, АПЛ, Ада, Сі і так далі

Серед них домінуюча роль відводиться процедурно-орієнтованим мовам,
званим також універсальними (хоча деякі з них, наприклад Фортран, Кобол,
Бейсик і тому подібне, і розроблялися з орієнтацією на конкретну сферу
вживання).

Абсолютну більшість мов програмування в даний час складають процедурні
мови, за допомогою яких програміст визначає послідовність реалізації
подій в об’єктній програмі шляхом послідовного запису пропозицій у
вихідній програмі. Іншими словами, програмування на цих мовах має на
увазі необхідність опису не лише того, що необхідно отримати в
результаті рішення завдання, але і того, як це необхідно здійснити.

Одним з головних напрямів вдосконалення мов програмування для завдань
економічного управління було прагнення до розробки таких мов, в яких до
мінімуму зводилася (а в ідеалі взагалі відсутня) проблема як. Природно,
що такі мови не можуть бути процедурними.

Першу спробу створення такої мови зробив Ломбарду той, що запропонував і
реалізував в 1963 р. для приватного класу завдань, пов’язаних з обробкою
файлів у сфері управління, мова General business-oriented language
baseed on decision expression. У цій же області свої мови запропонували
фірми ICL (мова NICOL) і IBM (мова РПГ), в яких багато що пов’язане з
процедурою роботи програми носить швидше неявний, чим явний характер.
Враховуючи, що значна частина логіки програми реалізується

автоматично, час створення програм за допомогою таких мов і число
налагоджувальних перевірок значно скоротилися.

Таким чином, разом з універсальними процедурно-орієнтованими мовами
стали створюватися проблемно-орієнтовані мови програмування, призначені
для опису процесів обробки інформації в якій-небудь вузькій
(специфічною), області, в яких рішення задачі більшою мірою
зосереджувалося на проблемі, що необхідно отримати в результаті, а
проблема, як це необхідно зробити, більшою чи меншою мірою знімалася з
програміста. Серед цих мов найбільш відомими є: РПГ – мова для генерації
звітів, Лісп – мова для обробки списків, GPSS – мова для моделювання,
АПЛ – мова для статистичної обробки масивів.

В рамках реалізації цієї ідеї “програмування без програмістів” були
створені не процедурні мови, що наближаються по своєму синтаксису до
природної мови і орієнтовані на користувачів – фахівців управління, що
не є програмістами.

Найбільш відомими з мов цього типа є:

• Smalltalking – малий розмовний;

• QBE (Query By Example-программирование на прикладі);

• Форт, який знаходить вживання при рішенні складних завдань
імітаційного моделювання, в системах штучного інтелекту в графічних
системах і тому подібне

Основною особливістю мови Форт є його відвертість, яка дозволяє на
основі наявних визначень будувати нові функції. При цьому програміст
Може вводити нові операції, типів даних або визначення. Можливість
підтримки засобами Форт багатозадачного режиму роботи додають йому
властивості операційної системи.

Особливе місце серед мов програмування займають функціональні мови,
зокрема Пролог (PROLOG –

PROgramming in LOGic – логічне програмування). Головне призначення мови
– розробка інтелектуальних програм і систем. Пролог – це мова
програмування, створена спеціально для роботи з базами знань,
заснованими на фактах і правилах (одного з елементів систем штучного
інтелекту). У мові реалізований механізм повернення для виконання
зворотного ланцюжка міркувань, при якому передбачається, що деякі виводи
або висновки достеменні, а потім ці припущення перевіряються в базі
знань, що містить факти і правила логічного виводу. Якщо припущення не
підтверджується, виконується повернення і висувається нове припущення.

Мовні засоби СУБД призначені в першу чергу для розробки прикладних
програм вирішення завдань економічного управління, інформація для яких
зберігається і підтримується за допомогою баз даних. Синтаксис мови
програмування в середовищі СУБД мало чим відрізняється від синтаксису
високорівневих мов програмування, у зв’язку з чим вказані
програмно-інструментальні засоби орієнтовані в основному на професійних
програмістів, хоча наявність розвинених засобів підказки і допомоги (у
вигляді прикладів, що демонструють використання окремих мовних
конструкцій) значно полегшує роботу досить широкого круга користувачів.

Sequel (Structured English QUEry Language) і його вдосконалений варіант
SQL – мови маніпулювання даними, засновані на численні стосунків.
Використовуються в реляційних СУБД як мова запитів до баз даних і мови
програмування завдань обробки даних.

З розвитком комп’ютерних мереж, збільшенням обчислювальної потужності
комп’ютерів і їх ресурсів виникла потреба в мові, що інтерпретує,
дозволяє отримувати багатоплатформене обчислювальне середовище шляхом
перетворення з його допомогою програм, написаних на інших мовах
програмування (при, незначному зниженні їх продуктивності). Найближче до
реалізації подібної мови підійшла технологія мови Java.
Об’єктно-орієнтована мова Java (розроблений на базі мови С++) призначена
для створення надійних, переносимих, розподілених мережевих програмних
застосувань, що працюють в різних багатовіконних системах в умовах
архітектури клієнт-сервер, а також для адміністраторів мережі, що
використовують Java-приложения для поліпшення інтерактивних якостей
Web-серверов.

Іншою об’єктно-орієнтованою мовою програмування є мова Delphi. Створений
на базі мови Паськаль фахівцями фірми Borland мова Delphi, володіючи
потужністю і гнучкістю мов С і С++, перевершує їх по зручності і
простоті інтерфейсу при розробці додатків, що забезпечують взаємодію з
базами даних і підтримку різного роду робіт в рамках корпоративних мереж
і мережі Інтернет.

Останніми роками різко розширилася практика програмування в середовищі
електронних таблиць. У основі реалізації програмування завдань за
допомогою електронних таблиць (ЕТ) лежить ідея комп’ютеризації роботи
користувачів з “пустограф-кой” як специфічною формою представлення
документа, з яким зазвичай доводиться мати справу фахівцям управління.
Розробники електронних таблиць (згодом названих табличними процесорами)
втілили цю ідею шляхом надання користувачам можливості запису в будь-яку
клітку електронної таблиці цифрової, символьної (текстовою) інформації
або формули, що забезпечує здобуття шуканого результату за різними
вихідними даними.

Користувач ЕТ отримав зручний інструментальний засіб, що дозволяє:
вводити вихідні дані, необхідні для вирішення завдань; вказувати формули
здобуття результатних даних; оформляти рішення задачі у вигляді звичних
для нього табличних документів. При цьому спосіб опису розрахункових
формул майже нічим не відрізняється від прийнятих правил їх вистави в
математиці (за винятком вимоги лінійної структури запису). Порядок
реалізації арифметичних дій у формулах збігається з прийнятим
пріоритетом виконання операцій в математиці, а для зміни такого порядку
використовується система круглих дужок.

Єдиною спадщиною, користувачам ЕТ, що дісталися, від програмування на
високорівневих мовах, залишилося правило побудови логічних виразів, що
реалізовується за стандартною для мов програмування схемою побудови
умовних операторів: IF – THEN – ELSE (якщо умова дотримується, то
виконується дія-1, інакше здійснюється дія-2).

Швидкому і широкому поширенню ЕТ як інструментальному засобу вирішення
економічних завдань, окрім простоти і зручності підготовки вирішення з
їх допомогою завдань, сприяли також:

• наявність великого числа вбудованих функцій (математичних,
статистичних, фінансових і тому подібне);

• можливість “програвання” різних варіантів вирішення завдань і вибору
кращого з них (за рахунок швидкого автоматичного перерахунку кінцевих
результатів при будь-якій зміні

вихідних даних);

• підтримка ЕТ засобами графічної інтерпретації, наочне представлення
результатній інформації.

Крім того, робота з сучасними електронними таблицями може бути
автоматизована завдяки використанню макросів.

Використана література

Экономическая информатика: Учебник Под ред. В.П. Косарева. -2-е изд.,
перероб. и доп. – М.: Финансы и статистика, 2005. – 330-353 с.

PAGE

PAGE 2

Нашли опечатку? Выделите и нажмите CTRL+Enter

Похожие документы
Обсуждение

Оставить комментарий

avatar
  Подписаться  
Уведомление о
Заказать реферат!
UkrReferat.com. Всі права захищені. 2000-2020