Студопедия

Главная страница Случайная страница

Разделы сайта

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






Алгоритмічні мови






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

Майже відразу з виникненням комп'ютерів були розроблені мови високого рівня, тобто мови, що не залежать від конкретної архітектури. Для виконання програми мовою високого рівня її потрібно спочатку перевести на мову машинних команд. Спеціальна програма, що виконує такий переклад, називається транслятором або компілятором. Після трансляції програма виконується безпосередньо комп'ютером. Існує також можливість перекладу програми на проміжну мову, що не залежить від архітектури конкретного комп'ютера, але проте максимально наближений до мови машинних команд. Потім програма проміжною мовою виконується спеціальною програмою, що називається інтерпретатором. Можливий також варіант компіляції (Just In Time Compilation), коли виконуваний фрагмент програми переводиться із проміжної мови на мову машинних команд безпосередньо перед виконанням.

Найбільше розповсюджені компілюючі мови - це Сі, C++, Фортран, Паскаль. Інтерпретуємі і Just In Time Compilation - це в основному об’єктно-оріентовані мови, такі як Java, Visual Basic й C#. Всі вони спочатку переводяться на проміжну мову: для Java це так званий байткод мови Java, для Visual Basic й C# - так звана проміжна мова (Intermediate Language або просто IL), що є одним з основних компонентів платформи ".Net" фірми Microsoft. Проміжна мова може інтерпретуватися спеціальним виконавцем (наприклад, віртуальною Java-машиною), але, як правило, у сучасних системах застосовується компіляція Just In Time Compilation, що дозволяє досягти більшої швидкодії.

Історично одним з перших мов високого рівня був Фортран. Він виявився винятково вдалим - простим й у той же час дуже ефективним. До тепер більша частина наукових й інженерних програм написана на Фортрані. Проте, в останні 20 років програмісти віддають перевагу мові С й пов'язаної з ним лінії об’єктно-оріентованих мов - C++, Java й C#.

Іншою значною віхою в історії алгоритмічних мов є розробка мови Алгол-60 (розшифровується як aлгоритмічна мова - ALGOrithmic Language). Виникнення мови Алгол-60 пов'язане з розвитком структурного підходу до програмування, у якому використається вкладення конструкцій мови один в одного. Так, основна одиниця мови - оператор - може бути простим або складовим, тобто складається у свою чергу з декількох операторів, укладених у блок за допомогою ключових слів begin й end. Усередині блоку можна описувати локальні змінні, недоступні ззовні блоку, і навіть підпрограми або функції.

Мова Алгол-60 сприяв розвитку алгоритмічних мов, його спадкоємцем є, наприклад, Паскаль і вся лінія пов'язаних з ним мов: Modula-2, Oberon й Delphi. Проте, Алгол-60 виявився далеко не таким вдалим, як Фортран. У ньому були присутні непродумані рішення, зокрема, можливість вкладення підпрограм усередину інших підпрограм, а також невдалий механізм передачі параметрів підпрограм. Через цього Алгол-60 не був реалізований на практиці в повній відповідності зі стандартом. Мова Паскаль з'явилася теж як корекція Алгола-60, але, на жаль, успадкував його головне невдале рішення - вкладеність підпрограм один в одного. Також у первісному варіанті мови Паскаль була відсутня можливість розбивки програми на файли. Ці недоліки були потім виправлені автором Паскаля, чудовим швейцарським ученим і педагогом Ніклаусом Віртом, у мовах Modula-2 й Oberon. Але, на жаль, програмістське співтовариство проігнорувало мову Oberon, зупинившись на небагато поліпшеному варіанті мови Паскаль. У цей час Паскаль, як правило, використається для навчання програмуванню, але не в практичній роботі.

Нарешті, сама успішна мова програмування - мова С й пов'язана з ним лінія об’єктно-оріентованих мов: C++, Java, C#. На відміну від Алгола-60, мова С була створена не теоретиками, а практичними програмістами, що володіють при цьому високою математичною культурою. Мова була розроблена наприкінці 60-х років XX століття. Він уперше дозволив реально позбутися від Асемблера при створенні операційних систем. Наприклад, практично весь текст операційної системи Unix написаний мовою С й, таким чином, не залежить від конкретного комп'ютера. Головними перевагами С є його простота й відсутність псевдонаукових рішень (таких, як вкладеність блоків програм один в одного: у С функція не може містити усередині себе іншу функцію, а змінні чітко розділяються на глобальні й локальні - не так, як в Алголі, де локальні змінні підпрограми є глобальними для всіх вкладених у неї підпрограм). Просто і ясно описаний механізм передачі параметрів у функцію (тільки за значенням). Програміст, що створює програму на С, завжди чітко розуміє, як ця програма буде виконуватися. Поняття покажчика, статичні й автоматичні (стекові) змінної мови С максимально близько відбивають пристрій будь-якого сучасного комп'ютера, тому програми на С ефективні й зручні для налагодження.

У наш час більшість програм пишеться на мовах С, C++, С#. Інтерфейс будь-якої операційної системи (так званий API - Application Program Interface), тобто набір системних викликів, призначених для розроблювачів прикладних програм, як правило, являє собою набір функцій мовою С. Нарешті, сучасні об’єктно-орієнтовані мови також засновані мовою С. Це мова C++, що займає проміжне положення між традиційними й об’єктно-орієнтованими мовами, а також об’єктно-орієнтовані мови Java й C#.

У курсі будемо використовувати псевдокод для неформального запису алгоритмів, а також мови C# для практичного програмування.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.