Мови програмування

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

ГОУ ВПО «Державний Медичний Університет»
Кафедра Інформатики та обчислювальної техніки
Реферат з інформатики на тему
«Мови програмування»
Виконав: Ларін С.Л.
Перевірив: Артеменко
Андрій Едуардович
Курськ, 2006

План
Введення
Стандартизація мов програмування
Типи даних
Структури даних
Семантика мов програмування
Процедурні мови програмування
Basic
Pascal
Сі
Об'єктно-орієнтовані мови програмування
Сі + +
JAVA
Висновок
Література

Введення
Думки про те, яка мова краща викладати, різняться: від того, що програмування вивчати не потрібно, а слід просто піднімати комп'ютерну грамотність та освоювати офісні програми (як на Заході), до того, що потрібно вивчати операційні системи і кілька мов програмування різних рівнів абстракції і з різними парадигмами. Це крайні випадки, але золоту середину знайти непросто. У першу чергу, нам потрібно визначити мету. Навчити логічно і алгоритмічно мислити? Ознайомити з комп'ютерами на побутовому рівні, щоб Ви вміли користуватися інтернетом, електропоштою і текстовими редакторами? Закласти базові знання, необхідні для майбутніх інженерів, математиків, фізиків і фахівців з інформаційних технологій? А може, нам потрібно кожного познайомити з програмуванням як явищем, щоб він представляв потенціал комп'ютерних систем? Чи багато з нас стане програмістами? Небагато. Але синусами і рівняннями Кірхгофа в житті теж користується не кожен. Безумовно, в науці про програмування є фундаментальна складова, але визначити її не просто. Деякі вважають, що не так важливо, яка мова програмування взяти: на уроках інформатики потрібно вчити не мови програмування, а методам програмування і системного підходу вирішення завдань. Потрібно розвивати алгоритмічне мислення і на прикладах знайомитися з принципами побудови сучасних комп'ютерних систем. Невже дійсно не так важливо, яка середовище і який конкретний мова програмування буде використаний для практичних занять? Виявляється, що у кожного викладача є свій список вимог до навчального мови програмування. Наприклад: простий, інтуїтивний синтаксис, наявність високорівневих інструментів для виявлення та недопущення помилок і для налагодження програм, наявність якісної документації з прикладами, наявність дружелюбною середовища розробки, Міжплатформеність (наявність версій під різні платформи). У деяких викладачів цей список дуже короткий, наприклад: «Тільки Паскаль» або «Будь-який, крім Бейсіка!»

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

Структури даних
Системи типів в мовах високого рівня дозволяють визначати складні, складові типи, так звані структури даних. Як правило, структурні типи даних утворюються як декартово твір базових (атомарних) типів і раніше визначених складових типів.
Основні структури даних (списки, черги, хеш-таблиці, двійкові дерева і пари) часто представлені особливими синтаксичними конструкціями в мовах високого рівня. Такі дані структуруються автоматично.
Семантика мов програмування
Існує кілька підходів до визначення семантики мов програмування.
Найбільш широко поширені різновиди наступних трьох: операційного, денотаціонного (математичного) і дериваційного (аксіоматичного).
При описі семантики в рамках операційного підходи звичайно виконання конструкцій мови програмування інтерпретується за допомогою деякої уявної (абстрактної) ЕОМ.
Дериваційна семантика описує наслідки виконання конструкцій мови за допомогою мови логіки і завдання перед-і Післяумови. Денотаціонная семантика оперує поняттями, типовими для математики - безлічі, відповідності, а також судження, затвердження та ін
Мова програмування будується відповідно до тієї чи іншої базової моделлю обчислень і парадигмою програмування.
Незважаючи на те, що більшість мов орієнтоване на імперативну модель обчислень, що задається фоннеймановской архітектурою ЕОМ, існують і інші підходи. Можна згадати мови зі стекової обчислювальної моделлю (Forth, Factor, Postscript та ін), а також функціональне (Лісп, Haskell, ML та ін) і логічне програмування (Пролог) і мова Рефаїл, заснований на моделі обчислень, введеної радянським математиком А . А. Марковим-молодшим.
В даний час також активно розвиваються проблемно-орієнтовані, декларативні та візуальні мови програмування.
Компільовані й інтерпретовані мови
Мови програмування можуть бути розділені на компільовані й інтерпретовані.
Програма на компільованих мовою за допомогою спеціальної програми компілятора перетвориться (компілюється) в набір інструкцій для даного типу процесора (машинний код) і далі записується в здійснимих модуль, який може бути запущений на виконання як окрема програма. Іншими словами, компілятор переводить вихідний текст програми з мови програмування високого рівня в двійкові коди інструкцій процесора.
Якщо програма написана на мові, що інтерпретується, то інтерпретатор безпосередньо виконує (інтерпретує) вихідний текст без попереднього перекладу. При цьому програма залишається мовою оригіналу і не може бути запущена без інтерпретатора. Можна сказати, що процесор комп'ютера - це інтерпретатор машинного коду.
Коротко кажучи, компілятор переводить вихідний текст програми на машинну мову відразу й цілком, створюючи при цьому окрему виконувану програму, а інтерпретатор виконує початковий текст прямо під час виконання програми.
Поділ на компільовані й інтерпретовані мови є дещо умовним. Так, для будь-якого традиційно компилируемого мови, як, наприклад, Паскаль, можна написати інтерпретатор. Крім того, більшість сучасних «чистих» інтерпретаторів не виконують конструкції мови безпосередньо, а компілюють їх у якийсь високорівневе проміжне представлення (наприклад, з разименованія змінних і розкриттям макросів).
Для будь-якого інтерпретується мови можна створити компілятор - наприклад, мова Лісп, спочатку інтерпретується, може компілюватися без яких би то не було обмежень. Створюваний під час виконання програми код може так само динамічно компілюватися під час виконання.
Як правило, скомпільовані програми виконуються швидше і не вимагають для виконання додаткових програм, так як вже переведені на машинну мову. Разом з тим, при кожній зміні тексту програми потрібно її перекомпіляція, що створює труднощі при розробці. Крім того, скомпільована програма може виконуватися тільки на тому ж типі комп'ютерів, і, як правило, під тією ж операційною системою, на яку був розрахований компілятор. Щоб створити виконуваний файл для машини іншого типу, потрібна нова компіляція.
Інтерпретуються володіють деякими специфічними додатковими можливостями (див. вище), крім того, програми на них можна запускати відразу ж після зміни, що полегшує розробку. Програма на мові, що інтерпретується може бути часто запущена на різних типах машин і операційних систем без додаткових зусиль.
Однак інтерпретовані програми виконуються помітно повільніше, ніж компільовані, крім того, вони не можуть виконуватися без додаткової програми-інтерпретатора.
Деякі мови, наприклад, Java і C #, знаходяться між компільованих і інтерпретуються. А саме, програма компілюється не в машинну мову, а в машинно-незалежний код низького рівня, байт-код. Далі байт-код виконується віртуальною машиною. Для виконання байт-кода зазвичай використовується інтерпретація, хоча окремі його частини для прискорення роботи програми можуть бути трансльовані в машинний код безпосередньо під час виконання програми за технологією компіляції «на льоту» (Just-in-time compilation, JIT). Для Java байт-код виповнюється віртуальною машиною Java (Java Virtual Machine, JVM), для C # - Common Language Runtime.
Подібний підхід у деякому сенсі дозволяє використовувати плюси як інтерпретаторів, так і компіляторів. Слід згадати також оригінальна мова Форт (Forth) має і інтерпретатор та компілятор.
Сучасні мови програмування розраховані на використання ASCII, тобто доступність всіх графічних символів ASCII є необхідною і достатньою умовою для запису будь-яких конструкцій мови. Керуючі символи ASCII використовуються обмежено: допускаються тільки повернення каретки CR, переклад рядка LF і горизонтальна табуляція HT (іноді також вертикальна табуляція VT і перехід до наступної сторінки FF).
Детальніше на цю тему див: Стерпний набір символів.
Ранні мови, що виникли в епоху 6-бітових символів, використовували більш обмежений набір. Наприклад, алфавіт Фортрану включає 49 символів (включаючи пробіл): ABCDEFGHIJKLMNOPQRSTU VWXYZ 0 1 2 3 4 5 6 7 8 9 = + - * / (). , $ ':
Помітним виключенням є мова APL, в якому використовується дуже багато спеціальних символів.
Використання символів за межами ASCII (наприклад, символів KOI8-R або символів Юнікоду) залежить від реалізації: іноді вони вирішуються тільки в коментарях і символьних / строкових константах, а іноді і в ідентифікаторах. У СРСР існували мови, де всі ключові слова писалися російськими літерами, але більшу популярність подібні мови не завоювали (виняток становить. Вбудована мова програмування 1С: Підприємство).
Детальніше на цю тему див: Російські мови програмування.
Розширення набору використовуваних символів стримується тим, що багато проектів з розробки програмного забезпечення є міжнародними. Дуже складно було б працювати з кодом, де імена одних змінних записані російськими літерами, інших - арабськими, а третє - китайськими ієрогліфами. Разом з тим, для роботи з текстовими даними мови програмування нового покоління (Delphi 2006, C #, Java) підтримують Unicode.
Процедурні мови програмування
Процедурне (імперативне) програмування є відображенням архітектури традиційних ЕОМ, яка була предложенафон Нейманом в 1940-х роках. Теоретичною моделлю процедурного програмування служить алгоритмічна система під назвою Машина Тьюрінга.
Програма на процедурному мовою програмування складається з послідовності операторів (інструкцій), які задають процедуру вирішення завдання. Основним є оператор присвоювання, службовець для зміни вмісту областей пам'яті. Концепція пам'яті як сховища значень, вміст якого може оновлюватися операторами програми, є фундаментальною в імперативному програмуванні.
Виконання програми зводиться до послідовного виконання операторів з метою перетворення початкового стану пам'яті, тобто значень вихідних даних, в заключне, тобто в результати. Таким чином, з точки зору програміста є програма і пам'ять, причому перша послідовно оновлює вміст останньої.
Процедурна мова програмування надає можливість програмісту визначати кожен крок у процесі виконання завдання. Особливість таких мов програмування полягає в тому, що завдання розбиваються на кроки і вирішуються крок за кроком. Використовуючи процедурна мова, програміст визначає мовні конструкції для виконання послідовності алгоритмічних кроків.
Basic
Бейсік (від BASIC, скорочення від англ. Beginner 's All - purpose Symbolic Instruction Code - Універсальний код символічних інструкцій для початківців, англ. Basic - основний, базовий) - родина високорівневих мов програмування.
Був розроблений в 1963 році професорами Дартмутського коледжу Томасом Куртом (Thomas E. Kurtz) і Джоном Кемені (John G. Kemeny).
Мова призначався для навчання програмуванню й набув широкого поширення у вигляді різних діалектів, передусім, як мова для домашніх мікрокомп'ютерів.
Передумови
До середини 1960-х комп'ютери (ЕОМ) були занадто дорогими машинами, що використалися в основному для науково-технічних завдань, і виконували завдання не в інтерактивному режимі (т.зв. пакетна обробка), коли спілкування з машиною здійснювалося через її оператора.
Мови програмування цієї пори, як і комп'ютери, на яких вони використовувались, були розроблені для роботи з ними навчених технічних фахівців і програмістів. Оскільки машини були дорогими, то і машинний час було дорогим - тому на першому місці стояла швидкість виконання програми (швидкість рахунку).
Однак, протягом 1960-х ціни на комп'ютери стали падати так, що навіть невеликі компанії могли їх собі дозволити; їх швидкодію все збільшувалася і настав час, коли стало можливо організувати більш ефективну безпосередню роботу користувачів з комп'ютерами в так званому режимі поділу часу (time -sharing).

Народження
Бейсік був придуманий у 1963 році викладачами Дартмутського Коледжу Джоном Кемені і Томасом Куртц, і під їх керівництвом було реалізовано командою студентів коледжу. З часом, коли з'явились інші діалекти, цей «початковий» діалект стали називати Dartmouth BASIC.
Бейсік було спроектовано так, щоб студенти могли без труднощів писати програми, використовуючи термінали із розділенням часу. Він призначався для більш «простих» користувачів, не стільки зацікавлених у швидкості виконання програм, скільки в можливості використовувати комп'ютер для вирішення своїх завдань не маючи спеціальної підготовки.
При проектуванні мови використовувались такі вісім принципів: нова мова має
· Бути простим у використанні для початківців
· Бути мовою програмування загального призначення
· Надавати можливість розширення функціональності, доступу досвідченим програмістам
· Бути інтерактивним
· Надавати ясні повідомлення про помилки
· Швидко працювати на невеликих програмах
· Не вимагати розуміння роботи апаратного забезпечення
· Захищати користувача від операційної системи
Мова часткого на Фортран II і частково на Алгол-60, з додатками, що роблять його більш зручним для роботи в режимі розділення часу, і, пізніше, обробки тексту та матричної арифметики. Спочатку Бейсік було реалізовано на мейнфреймі GE-265 з підтримкою безлічі терміналів. Всупереч поширеному переконанню, у момент своєї появи це був компільований мову.
Вибухове зростання
Незважаючи на те, що мова вже використовувався на кількох мінікомп'ютерах, його справжнє розповсюдження розпочалось з появи на мікрокомп'ютері Altair 8800. Більшість мов програмування були надто великими, щоб вміститись в невелику пам'ять, яку користувачі цих машин могли собі дозволити. Для машин з таким повільним носієм, як паперова стрічка (пізніше - аудіокасета) і відсутністю належного текстового редактора, така невелика мова, як Бейсік, була чудовою знахідкою. У 1975 році Майкрософт (тоді це були лише двоє - Білл Гейтс і Пол Аллен, за участі Монте Давидового) випустила Altair BASIC. Потім його версії з'явились на іншій платформі під ліцензією і незабаром використовувались вже мільйони копій та варіантів; один з варіантів, Applesoft BASIC, став стандартною мовою на Apple II. Для операційної системи CP / M був створений діалект BASIC-80, надовго визначив розвиток мови.
У 1979 році Microsoft обговорювала з кількома постачальниками комп'ютерів (включаючи IBM) ліцензування інтерпретатора Бейсік на їх машинах. Одна з версій (ROM BASIC) була включена в ПЗУ IBM PC - комп'ютер міг автоматично завантажуватись в Бейсик. Так як IBM не надавала тоді великого значення персональним комп'ютерам (основним полем її діяльності були мейнфрейми), то, всупереч своїм принципам, вона дозволила Microsoft продавати інтерпретатор окремо. Це зробило останню піонером у випуску ПЗ нового покоління - не прив'язаного до конкретної апаратурі і поставленого окремо від комп'ютера.
Синтаксис мови нагадує Fortran, і багато елементів - явні запозичення з нього. Мова замислювався для навчання, тому його конструкції максимально прості. Як і в інших мовах програмування, ключові слова взяті з англійської мови. Основних типів даних два: рядки і числа. З появою версії Visual Basic, а також різних його модифікацій (таких як VBA), в мові з'явилися багато інших типів даних та доповнення, типові для сучасних мов програмування (наприклад, такі як об'єктна модель). Оголошення змінних не вимагає спеціальної секції (на відміну, наприклад, від Паскаля). Оголошення змінної - це перше її використання.
Ранні версії Бейсіка (такі як GWBASIC, QBasic) істотно відрізняються від сучасних діалектів і на сьогодні практично не використовуються.
Pascal
Паскаль (англ. Pascal) - високорівнева мова програмування загального призначення. Один з найбільш відомих мов програмування, широко застосовується в промисловому програмуванні, навчанні програмуванню у вищій школі, є базою для великої кількості інших мов. Був створений Никлаусом Віртом в 1968 / 9 роках (опублікований в 1970-м) після його участі в роботі комітету розробки стандарту мови Алгол-68.
Паскаль був створений як мова для навчання процедурного програмування (хоча, за словами Вірта, мову не можна вважати тільки навчальним, оскільки мова, непридатний для написання реальних програм, для навчання використовуватися не повинен). Назва мови дано на честь видатного французького математика, фізика, літератора і філософа Блеза Паскаля.
Паскаль був створений Никлаусом Віртом в 1968 / 9 роках після його участі в роботі комітету розробки стандарту мови Алгол-68. Він був опублікований в 1970 році Віртом як невеликий і ефективний мову, щоб сприяти гарному стилю програмування, використовувати структурне програмування і структуровані дані.
Компілятор Паскаля був написаний на самому Паскалі, використовуючи «метод розкрутки», коли створюється ядро ​​мови, з поступовим нарощуванням нових можливостей.
Особливостями мови є строга типізація і наявність коштів структурного (процедурного) програмування. Паскаль був одним з перших таких мов. На думку Н. Вірта, мова повинна сприяти дисциплінування програмування, тому, поряд з суворою типізацією, у Паскалі зведені до мінімуму можливі синтаксичні неоднозначності, а сам синтаксис автор постарався зробити інтуїтивно зрозумілим навіть при першому знайомстві з мовою.
Тим не менше, спочатку мова мала ряд обмежень: неможливість передачі функцій масивів змінної довжини, відсутність нормальних засобів роботи з динамічною пам'яттю, обмежена бібліотека введення-виведення, відсутність засобів для підключення функцій написаних на інших мовах, відсутність коштів роздільної компіляції і т.п. Докладний розбір недоліків мови Паскаль того часу був виконаний Брайаном Керніганом у статті «Чому Паскаль не є моїм улюбленим мовою програмування» (цікаво, що ця стаття вийшла на початку 1980-х, коли вже існував мова Модула-2, нащадок Паскаля, позбавлений від більшості його вад, а також більш розвинені діалекти Паскаля). Деякі недоліки Паскаля були виправлені в ISO-стандарті 1982 року, зокрема, в мові з'явилися відкриті масиви, що дали можливість використовувати одні й ті ж процедури для обробки одновимірних масивів різних розмірів.
Необхідно зауважити, що багато вад мови не виявляються або навіть стають достоїнствами при навчанні програмуванню. Крім того, в порівнянні з основною мовою програмування в академічному середовищі 70-х (яким билФортран, володів набагато більш істотними недоліками), Паскаль представляв собою значний крок вперед. На початку 1980-х років в СРСР для навчання школярів основам інформатики та обчислювальної техніки академік А.П. Єршов розробив алголо-паскалеподобний «алгоритмічна мова».
Найбільш відомою реалізацією Паскаля, забезпечила широке поширення і розвиток мови є Turbo Pascal фірми Borland, що виросла потім в об'єктний Паскаль для DOS (починаючи з версії 5.5) і Windows і далі в Delphi, в якій використовувалися значні розширення мови.
Діалекти Паскаля, застосовувані в Turbo Pascal для DOS і Delphi для Windows, через відсутність інших успішних комерційних реалізацій стали популярні.
Об'єктний Паскаль від Borland і під час відсутності галузевої стандартизації став сильно відрізнятися від класичного Паскаля.
Мова програмування - формальна знакова система, призначена для запису програм, які задають алгоритм у формі, зрозумілій для виконавця (наприклад, комп'ютера). Мова програмування визначає набір лексичних, синтаксичних і семантичних правил, використовуваних при складанні комп'ютерної програми. Він дозволяє програмісту точно визначити те, на які події буде реагувати комп'ютер, як будуть зберігатися і передаватися дані, а також які саме дії слід виконувати над цими даними за різних обставин. З часу створення перших програмованих машин людство придумало вже більше восьми з половиною тисяч мов програмування. Кожен рік їх число поповнюється новими. Деякими мовами вміє користуватися тільки невелике число їх власних розробників, інші стають відомі мільйонам людей. Професійні програмісти іноді застосовують у своїй роботі більше десятка різноманітних мов програмування.
C і
Сі (англ. C) - стандартизований процедурна мова програмування, розроблений на початку 1970-х років співробітниками Bell Labs Кеном Томпсоном і Денисом Рітчі як розвиток мови Бі. Сі був створений для використання в операційній системі UNIX. З тих пір він був імпортований на багато інші операційні системи і став одним з найбільш використовуваних мов програмування. Сі цінують за його ефективність; він є найпопулярнішим мовою для створення системного програмного забезпечення. Його також часто використовують для створення прикладних програм. Незважаючи на те, що Сі не розроблявся для новачків, він активно використовується для навчання програмуванню. Надалі синтаксис мови Сі став основою для багатьох інших мов (див.: Сі-подібний синтаксис).
Для мови Сі характерні лаконічність, сучасний набір конструкцій управління потоком виконання, структур даних і великий набір операцій.
Мова програмування Сі відрізняється мінімалізмом. Автори мови хотіли, щоб програми на ньому легко компілювалися за допомогою однопрохідного компілятора, після компіляції кожної елементарної складовою програми відповідало досить невелике число машинних команд, а використання базових елементів мови не задіяло бібліотеку часу виконання. Однопрохідний компілятор компілює програму, не повертаючись назад, до вже відкомпілювався тексту. Тому використання функції повинно передувати її оголошення. Код на Сі можна легко писати на низькому рівні абстракції, майже як на асемблері. Іноді Сі називають «універсальним асемблером» або «асемблером високого рівня», що відображає відмінність мов асемблера для різних платформ і єдність стандарту Сі, код якого може бути скомпільований без змін практично на будь-якої моделі комп'ютера. Сі часто називають мовою середнього рівня або навіть низького рівня, враховуючи те, як близько він працює до реальних пристроїв.
Компілятори Сі розробляються порівняно легко завдяки відносно низькому рівню мови і скромному набору елементів. Тому даний мова доступна на самих різних платформах (можливо, коло цих платформ ширше, ніж у будь-якого іншого існуючого мови). До того ж, незважаючи на свою низкоуровневую природу, мова дозволяє створювати стерпні програми і підтримує програміста в цьому. Програми, що відповідають стандарту мови, можуть компілюватися на самих різних комп'ютерах.
Сі (як і ОС UNIX, з якої він довгий час був пов'язаний) створювався програмістами і для програмістів, коло яких був би набагато ширше кола розробників мови. Незважаючи на це, область використання мови значно ширше завдань системного програмування.
Сі створювався з однією важливою метою: зробити більш простим написання великих програм з мінімумом помилок за правилами процедурного програмування, не додаючи зайвих накладних витрат на підсумковий код програми компілятором, як це завжди роблять мови дуже високого рівня, такі як Бейсік. З цього боку Сі має наступні важливі особливості:
· Просту мовну базу, з якої винесені в бібліотеки багато істотних можливості, начебто математичних функцій або функцій управління файлами;
· Орієнтацію на процедурне програмування, що забезпечує зручність застосування структурного стилю програмування;
· Систему типів, забезпечує від безглуздих операцій;
· Використання препроцесора для, наприклад, визначення макросів та включення файлів з вихідним кодом;
· Безпосередній доступ до пам'яті комп'ютера через використання покажчиків;
· Мінімальне число ключових слів;
· Передачу параметрів у функцію за значенням, а не по посиланню (при цьому передача за посиланням виконується за допомогою покажчиків);
· Покажчики на функції та статичні змінні
· Області дії імен;
· Запису - визначені користувачем збірні типи даних (структури), якими можна маніпулювати як одним цілим;
Ось деякі особливості інших мов програмування, яких не має Сі:
· Автоматичне керування пам'яттю;
· Підтримка об'єктно-орієнтованого програмування (при цьому перші версії C + + генерували код програми на мові Сі);
· Вкладені функції (існують компілятори мови Сі реалізують цю функцію, наприклад компілятор GNU);
· Поліморфізм функцій і операторів;
· Вбудована підтримка багатозадачності і мережі
· Функції вищого порядку
· Каррінг.
Незважаючи на те, що в Сі немає настільки багато чого, а це було важливо на початку, мова була добре прийнятий, тому що він дозволяв швидко створювати компілятори для нових платформ, а також дозволяв програмістам досить точно представляти, як виконуються їхні програми. Завдяки цьому програми, написані на Сі, ефективніше написаних на багатьох інших мовах. Як правило, лише оптимізований вручну код на асемблері може працювати ще швидше, тому що він дає повний контроль над машиною, однак розвиток сучасних компіляторів разом з ускладненням сучасних процесорів швидко скоротило цей розрив.
Одним із наслідків високої ефективності та переносимості Сі стало те, що багато компілятори, інтерпретатори і бібліотеки інших мов високого рівня часто виконані на мові Сі.

Об'єктно-орієнтовані мови програмування
Об'єктно-орієнтована мова програмування (ГО-мова) - мова, побудований на принципах об'єктно-орієнтованого програмування.
В основі концепції об'єктно-орієнтованого програмування лежить поняття об'єкта - якоїсь субстанції, яка об'єднує в собі поля (дані) і методи (виконувані об'єктом дії).
Наприклад, об'єкт "людина" може мати поля "ім'я", "прізвище" і мати методи "є" і "спати". Відповідно, ми можемо використовувати в програмі оператори Людина. Ім'я: = "Іван" і Людина. Є (їжа).
Сі + +
Компільований статично типізований мова програмування загального призначення. Підтримує різні парадигми програмування, але, у порівнянні з його попередником - мовою Сі, - найбільшу увагу приділено поддержкеоб'ектно-орієнтованого та узагальненого програмування. [1]
Назва «Сі + +» походить від Сі, в якому унарний оператор ++ позначає інкрементпеременной.
У 1990-х роках мова стала одним з найбільш широко вживаних мов програмування загального призначення.
При створенні С + + прагнули зберегти сумісність з мовою Сі. Більшість програм на С справно працюватимуть і з компілятором С + +. Сі + + має синтаксис, заснований на синтаксисі Сі.
Мова виникла на початку 1980-х років, коли співробітник фірми Bell Laboratories Бьерн Страуструп придумав ряд удосконалень до мови Сі під власні потреби. До початку офіційної стандартизації мова розвивалася в основному силами Страуструпа у відповідь на запити співтовариства. У 1998 році був ратифікований міжнародний стандарт мови Сі + +: ISO / IEC 14882:1998 «Standard for the C + + Programming Language»; після прийняття технічних виправлень до стандарту в 2003 році - нинішня версія цього стандарту - ISO / IEC 14882:2003. Ранні версії мови, відомі під ім'ям «C з класами», почали з'являтися з 1980 року. Ідея створення нової мови бере початок від досвіду програмування Страуструпа для дисертації. Він виявив, що мова моделювання Симула (Simula) має такі можливості, які були б дуже корисними для розробки великого програмного забезпечення, але працює дуже повільно. У той же час мова BCPL досить швидкий, але дуже близький до мов низького рівня і не підходить для розробки великого програмного забезпечення. Страуструп почав працювати в Bell Labs над завданнями теорії черг (у додатку до моделювання телефонних дзвінків). Спроби застосування існуючих у той час мов моделювання виявилися неефективними. Згадуючи досвід своєї дисертації, Страуструп вирішив доповнити мова Сі (наступник BCPL) можливостями, наявними в мові Симула. Мова Сі, будучи базовою мовою системи UNIX, на якій працювали комп'ютери Bell, є швидким, багатофункціональним і стерпним. Страуструп додав до нього можливість роботи з класами та об'єктами. У результаті, практичні завдання моделювання виявилися доступними для вирішення як з точки зору часу розробки (завдяки використанню Симула-подібних класів) так і з точки зору часу обчислень (завдяки швидкодією Сі). На початку в Сі були додані класи (з інкапсуляцією), похідні класи, сувора перевірка типів, inline-функції і аргументи за умовчанням. Розробляючи Сі з класами (пізніше Сі + +), Страуструп також написав програму cfront - транслятор, що переробляє вихідний код Сі з класами у вихідний код простого Сі. Нова мова, несподівано для автора, придбав велику популярність серед колег і незабаром Страуструп вже не міг особисто підтримувати його, відповідаючи на тисячі питань. У 1983 році відбулося перейменування мови з Сі з класами в Сі + +. Крім того, в нього були додані нові можливості, такі як віртуальні функції, перевантаження функцій і операторів, посилання, константи, користувальницький контроль над управлінням вільною пам'яттю, поліпшена перевірка типів і новий стиль коментарів (/ /). Його перший комерційний випуск відбувся в жовтні 1985 року. У 1985 році вийшло також перше видання «Мови програмування Сі + +», що забезпечує перший опис цієї мови, що було надзвичайно важливо через відсутність офіційного стандарту. У 1989 році відбувся вихід Сі + + версії 2.0. Його нові можливості включали множинне спадкування, абстрактні класи, статичні функції-члени, функції-константи і захищені члени.
У 1990 році вийшло «Коментувати довідкове керівництво по C + +», покладене згодом в основу стандарту. Останні оновлення включали шаблони, виключення, простору імен, нові способи приведення типів і булевський тип.
Стандартна бібліотека Сі + + також розвивалася разом з ним. Першим додаванням до стандартної бібліотеці Сі + + стали потоки введення / виводу, що забезпечують кошти для заміни традиційних функцій Сі printf і scanf. Пізніше самим значним розвитком стандартної бібліотеки стало включення до неї Стандартної бібліотеки шаблонів.
Після багатьох років роботи спільний комітет ANSI-ISO стандартизував Сі + + у 1998 році (ISO / IEC 14882:1998 - Мова програмування Сі + +). Протягом декількох років після офіційного виходу стандарту комітет обробляв повідомлення про помилки і в результаті випустив виправлену версію стандарту Сі + + у 2003 році. В даний час робоча група МОС (ISO) працює над новою версією стандарту під кодовою назвою C + +09 (раніше відомий як C + +0 X), який повинен вийти в 2009 році.
Ніхто не володіє правами на мову Сі + +, він є вільним. Проте сам документ стандарту мови (за винятком чернеток) не доступний безкоштовно. Назва «Сі + +» була вигадана Ріком Массітті (Rick Mascitti) і вперше було використано в грудні 1983 року. Раніше, на етапі розробки, нова мова називався «Сі з класами».
Ім'я, що вийшло в результаті, походить від оператора Сі «+ +» (збільшення значення змінної на одиницю). Ім'я «C +» не було використано тому, що є синтаксичної помилкою в Сі і, крім того, це ім'я було зайнято іншою мовою. Мова також не названий «D», оскільки «є розширенням Сі і не намагається усувати проблеми шляхом видалення елементів Сі». Стандарт Сі + + на 1998 рік складається з двох основних частин: ядра мови і стандартної бібліотеки. Стандартна бібліотека Сі + + увібрала в себе розроблялася одночасно із стандартом бібліотеку шаблонів STL. Зараз назва STL офіційно не вживається, проте в кругах програмістів на Сі + + ця назва використовується для позначення частини стандартної бібліотеки, що містить визначення шаблонів контейнерів, ітераторів, алгоритмів і функторів. Стандарт Сі + + містить нормативне посилання на стандарт Сі від 1990 року і не визначає самостійно ті функції стандартної бібліотеки, які запозичуються із стандартної бібліотеки Сі.
Крім того, існує величезна кількість бібліотек Сі + +, що не входять в стандарт. У програмах на Сі + + можна використовувати багато бібліотек Сі.
Стандартизація визначила мову програмування Сі + +, проте за цією назвою можуть ховатися також неповні, обмежені, достандартні варіанти мови. Спочатку мова розвивалася поза формальними рамками, спонтанно, у міру що ставилися перед ним завдань. Розвитку мови супроводив розвиток кросс-компілятора cfront. Нововведення в мові відбивалися в зміні номера версії кросс-компілятора. Ці номери версій кросс-компілятора розповсюджувалися і на саму мову, але стосовно теперішнього часу мову про версії мови Сі + + не ведуть.
JAVA
Java - об'єктно-орієнтована мова програмування, що розробляється компаніейSun Microsystems. Програми Java зазвичай компілюються в спеціальний байт-код, тому вони можуть працювати на будь-який віртуальної Java-машині (JVM) незалежно откомпьютерной архітектури. Дата офіційного випуску - 23 травня 1995 року.
У відношенні вимови в російській мові, як і в ряді інших, утворилися дві різні норми - запозичена англомовна / dʒɑ ː və / («джава») і традиційно-національна «ява», відповідна традиційному вимову назви острова Ява. Компанія Sun дотримується англомовного прозношенія у всіх країнах світу. Іноді в побуті використовують також жаргонне слово «Жаба» (наприклад, зображення жаби є на календариках групи російський користувачів Java (Java Users Group).
Java - так називають не тільки сама мова, але і платформу для створення і виконання програм на основі цієї мови.
Спочатку мова називалася Oak («дуб») і розроблявся Джеймс Гослінг для програмування побутових електронних пристроїв. Згодом він був перейменований в Java і став використовуватися для написання клієнтських додатків і серверного програмного забезпечення. Названий на честь марки кави Java, улюбленого деякими програмістами, тому на офіційній емблемі мови зображена чашка з ширяючим кави.
Програми на Java транслюються в байт-код, що виконується віртуальною машиною Java (JVM) - програмою, що обробляє байтовий код і передавальної інструкції устаткуванню як інтерпретатор, але з тією відмінністю, що байтовий код, на відміну від тексту, обробляється значно швидше.
Гідність подібного способу виконання програм - в повній незалежності байт-коду від операційної системи та обладнання, що дозволяє виконувати Java-додатки на будь-якому пристрої, для якого існує відповідна віртуальна машина. Іншою важливою особливістю технології Java є гнучка система безпеки завдяки тому, що виконання програми повністю контролюється віртуальною машиною. Будь-які операції, які перевищують встановлені повноваження програми (наприклад, спроба несанкціонованого доступу до даних або з'єднання з іншим комп'ютером) викликають негайне переривання.
Часто до недоліків концепції віртуальної машини відносять те, що виконання байт-коду віртуальною машиною може знижувати продуктивність програм і алгоритмів, реалізованих на мові Java. Дане твердження було справедливо для перших версій віртуальної машини Java, проте останнім часом воно практично втратило актуальність. Цьому сприяла низка удосконалень:
· Застосування технології трансляції байт-коду в машинний код безпосередньо під час роботи програми (JIT-технологія) з можливістю збереження версій класу в машинному коді,
· Широке використання переносних орієнтованого коду (native-код) в стандартних бібліотеках,
· Апаратні засоби, що забезпечують прискорену обробку байт-коду (наприклад, технологія Jazelle, підтримувана деякими процесорами фірми ARM).
Ідеї, закладені в концепцію і різні реалізації середовища віртуальної машини Java, надихнули безліч ентузіастів на розширення переліку мов, які могли б бути використані для створення програм, виконуваних на віртуальній машині. [13] Ці ідеї знайшли також вираз в специфікація загальномовних інфраструктури CLI, закладеної в основу платформи. NETкомпаніей Microsoft.

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

Література
1. Б. Страуструп. Мова програмування C + + = The C + + Programming Language / Пер. з англ. - 3-е вид. - СПб.; М.: Невський діалект - Біном, 1999. - 991 с. - 3000 екз. - ISBN 5-7940-0031-7 (Невський діалект), ISBN 5-7989-0127-0 (Біном), ISBN 0-201-88954-4 (англ.)
2. Страуструп Б. Мова програмування C + +. Спеціальне видання = The C + + programming language. Special edition. - М.: Біном-Пресс, 2007. - 1104 с. - ISBN 5-7989-0223-4
3. Кей С. Хорстманн, Гарі Корнелл. Java 2. Бібліотека професіонала, том 1. Основи = Core Java 2, Volume I - Fundamentals. - 8-е изд. - М.: Вільямс, 2008. - 816 с. - ISBN 978-5-8459-1378-4, ISBN 978-0-1323-5476-9
4. Кей С. Хорстманн, Гарі Корнелл. Java 2. Бібліотека професіонала, тому 2. Тонкощі програмування = Core Java 2, Volume II - Advanced Features. - 8-е изд. - М.: Вільямс, 2008, 4 кв. - 992 с. - ISBN 978-5-8459-1482-8, ISBN 978-01-3235479-0
5. Монахов Вадим. Мова програмування Java і середовище NetBeans. - 2-е вид. - СПб.: БХВ-Петербург, 2009. - 720 с. - ISBN 978-5-9775-0424-9
6. Роберт У. собівартість. Основні концепції мов програмування = Concepts of Programming Languages ​​/ Пер. з англ. - 5-е вид. - М.: Вільямс, 2001. - 672 с. - 5000 екз. - ISBN 5-8459-0192-8 (рос.), ISBN 0-201-75295-6 (англ.)
7. Вольфенгаген В. Е. Конструкції мов програмування. Прийоми опису. - М.: Центр ЮрІнфо Р, 2001. - 276 с. - ISBN 5-89158-079-9
Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Реферат
78.7кб. | скачати


Схожі роботи:
Мови програмування 2
Операції мови програмування С
Мови та технологія програмування 2
Алгоритмічні мови програмування
Мови та системи програмування
Мови та технологія програмування
Основи мови програмування Лісп
Проблемно-орієнтовані мови програмування
Основи програмування та алгоритмічні мови
© Усі права захищені
написати до нас