Главная страница

 

ДОМ
ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

Информатика и программирование
Информационные технологии
Компьютерные сети
Информационная безопасность
Как заработать в сети Интернет
Информационные технологии
CASE-технологии
Программные средства
Низкоуровневое программирование
Модели данных
Структуры данных
Низкоуровневое программирование

МОВИ ПРОГРАМУВАННЯ

 

Машинний код процесора

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

Процесор комп'ютера - це складна електронна схема. Усі команди і дані він отримує у вигляді електричних сигналів. Фактично процесор можна розглядати як сукупність досить простих електронних елементів - транзисторів. У процесорі комп'ютера транзистори згруповані у мікроелементи, які називають тригерами і вентилями. Тригери мають два стійких стани (відкритий - закритий) і переходить він з одного стану в інший електричними сигналами. Команди, які поступають у процесор по його шинам, насправді є електричними сигналами, але їх можна представити як сукупність нулів і одиниць, тобто кодами. Різним командам відповідають різні коди. Тому реально програма, з якою працює процесор, представляє собою послідовність двійкових кодів, яку називають машинним кодом програми.

Алгоритм і програма

Управляти комп'ютером можна за певним алгоритмом.

Алгоритм - це опис способу розв'язування задачі у вигляді скінченої (за часом) послідовності дій (формальний опис).

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

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

Що таке мова програмування?

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

Мови програмування - штучні мови. Від природних вони відрізняються обмеженим числом "слів", значення яких зрозумілі транслятору, і дуже строгими правилами записування команд (операторів).

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

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

Компілятори і інтерпретатори

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

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

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

В реальних системах програмування змішані технології, що використовують як компіляцію, так і інтерпретацію програм.

Рівні мов програмування

Різні типи процесорів мають різні набори команд. Якщо мова програмування орієнтована на конкретний тип процесора і враховує його особливості, то вона називається мовою програмування низького рівня. У даному випадку "низький рівень" не значить "поганий". Мається на увазі, що оператори мови близькі до машинного коду й орієнтовані на конкретні команди процесора.

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

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

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

Покоління мов програмування

Мови програмування прийнято ділити на п'ять поколінь. В перше покоління входять мови, які були створенні на початку 50-х років, коли з'явилися перші комп'ютери. Це була перша мова Асемблера, створена по принципу "одна інструкція - один рядок".

Розквіт другого покоління мов програмування припав на кінець 50-х - початок 60-х років. Тоді був розроблений Асемблер, у якому появилося поняття змінної. Він став першою повноцінною мовою програмування. Завдяки його появі відчутно зросли швидкість розробки і надійність програм.

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

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

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

Огляд мов програмування високого рівня

Фортран (50-і роки) - перша мова високого рівня, створена Джимом Бекусом. Фортран продовжує активно використовуватися в багатьох організаціях. Зараз завершується робота по створенню чергового стандарту Фортрану F2K.

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

Алгол (60-і роки) - не використовується. Версія Алгол-68 по своїм можливостям і сьогодні випереджає багато мов програмування, але із-за більш складної структури ніж Фортран не отримав широкого розповсюдження.

Паскаль (70-і роки) - створений основоположником багатьох ідей сучасного програмування Ніклаусом Віртом, багато в чому нагадує Алгол, дозволяє з успіхом використовувати його для створення великих проектів.

Бейсік (60-і роки) - для мови є компілятори і інтерпретатори. По популярності займає перше місце у світі.

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

Сі++ - об'єктно-орієнтоване розширення мови Сі (1980 рік). Нові можливості мови дозволили підвищити продуктивність програмістів.

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

Із універсальних мов програмування найбільш популярними є:

*      Бейсік -для засвоєння потрібна початкова підготовка (загальноосвітня школа);

*      Паскаль - потребує спеціальної підготовки;

*      Сі++, Java - потребують професійної підготовки.

Мови програмування баз даних, мови програмування для Інтернету являються інтерпретаторами, які розповсюджуються безкоштовно, а самі програми - у вихідних текстах. Такі мови називають скрипт-мовами (HTML, Perl, і т.п.).

Інтегровані системи програмування

Для створення програми на вибраній мові програмування потрібно мати такі компоненти:

*      текстовий редактор;

*      компілятор;

*      редактор зв'язків;

*      бібліотеку функцій.

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

Вихідний текст програми переводиться у машинний код за допомогою програми-компілятора. Якщо знайдено синтаксичні помилки, то результуючий код створено не буде.

На цьому етапі можна отримати готову програму, але дуже часто в ній не вистачає деяких компонентів і тому компілятор видає проміжний об'єктний код (із розширенням .obj).

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

Виконавчий код - це готовий програмний продукт, який можна запустити. Як правило цей файл має розширення .exe, .com.

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

Середовища швидкого проектування

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

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

Copyright © Eugene, 2007
e-mail: webmaster@ITDom.info
Rambler's Top100 Рейтинг@Mail.ru