1 / 33

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

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

Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

  3. Історія Конрад Цузе Першу мовупрограмуваннявисокогорівня — Планкалькюль (нім. Plankalkül) спроектувавнімець Конрад Цузе у 1945 році, але вона не мала комп'ютерноїреалізаціїі не одержала уваги, хоча мала дужепотужні на той час можливості.

  4. Історія UNIVAC I IBM 701 Джон Бекус У кінці 40-их — початку 50-их застосовувалисяінтерпретованісистемикодування, коли певнікомандимовипрограмуваннякодувалися числами, які уже інтерпретувалисямашинним кодом. Цісистеминазивалися «автоматичнимпрограмуванням», булипростішими для програмування, ніжмашиннікоди, але могли матизначноменшу (до 50 разів) швидкодію, через що часто надавали перевагумашинним кодам. До таких систем належали — ShortCode для BINAC (1949) і UNIVAC I (1952), Speedcoding для IBM 701, розроблена Джоном Бекусом у 1954.

  5. IBM 704 Першоюшироковживаноюкомпільованоюмовою став розробленийгрупою Джона Бекуса Фортран, анонсований у 1954 роціівипущений у 1957 для IBM 704. Основнимпризначенням Фортрану булишвидкінауковіобчислення, оголошувалосящошвидкодіязгенерованогокомпілятором коду майже не відрізянтиметьсявід машинного коду написаноговручну. Уже у квітні 1958 близькополовинипрограм для IBM 704 булинаписані на Фортрані. Випущений у 1958 році Фортран II дозволяв незалежнукомпіляціюпідпрограм, що дозволило створюватибільшіпрограми, оскількінизьканадійність IBM 704 не дозволяла скомпілювати без збоїввеликупрограму (понад 300—400 рядків) одразу.

  6. Фортран IV Фортрану 77 LISP Розроблений у 1960—1962 роках Фортран IV буводнієюзнайпоширенішихмов того часу ілишався стандартною версією Фортрану до появи у 1978 році Фортрану 77. У 1958 році у MIT розробили LISP — першу функційнумову, яка понадчвертьстоліттядомінувала у програмуванні задач штучного інтелекту.

  7. У кінці 1950-их почали розроблятисярізнімовипрограмування. У 1958 роцідекільказначнихгрупкомп'ютернихкористувачів у США, включаючи SHARE — групунауковців-користувачів IBM і USE (UNIVAC ScientificExchange, групанауковців-користувачів UNIVAC) запропонували ACM заснуватиробочугрупузістворенняуніверсальноїмовипрограмування. Такожще у 1955 роцінімецькеТовариствоприкладної математики імеханіки (GAMM) заснувалокомітетзістворенняуніверсальноїмовипрограмування. У кінцітравня 1958 року було проведено зустріч у Цюриху між ACM і GAMM, на матеріалахякої у грудніопубліковано ALGOL 58 Report. На йогоосновібуло створено 3 значніреалізації — MAD (1961), NELIAC (1963), JOVIAL (1963). З них лише JOVIAL отримавпоширення, ставши на чвертьстоліттяофіційноюмовоюпрограмування у Військово-морських силах США. SHARE і IBM почали створеннявласноїреалізації ALGOL, алеприпинили, врахувавшивитрати на створенняіпросування Фортрану.

  8. Впродовж 1959 року ALGOL 58 широко обговорювався, булазапропоновананотація для опису синтаксису мовпрограмування — форма Бекуса-Наура. У 1960 проведено черговузустрічіопубліковано ALGOL 60 Report. ALGOL вплинув на багатомовпрограмуванняі став стандарноюмовою для публікаціїалгоритмів, але через ряд причин не одержав широкого поширення — вінбувзаскладним, і не булореалізацій, якіпідтримувалийогоповністю, відсутність стандартного введення-виведення привела до появирізнихнесуміснихреалізацій, деякінеоднозначностіописумови так і не булирозв'язані. Також широкого вжитку уже набув Фортран, і IBM не підтримала ALGOL. У 1959 роцібула проведена зустріч у Пентагоні для створеннямови CBL (CommonBusinessLanguage), заснованокомітетзйогостворення, і у 1960 опублікованопочатковуспецифікацію COBOL 60, якийневдовзі став першоюмовоюприйнятою у Міністерстві оборони США. У 1968 році COBOL було стандартизовано ANSI.

  9. BASIC PL/I SIMULA 67 У 1964 роцібуло створено спрощенумову BASIC (BeginnersAll-purposeSymbolicInstructionCode) для навчанняпрограмуваннюстудентів, якіпереважноспеціалізувалися у вільнихмистецтвах, а не технічних науках. Тоді як науковціпереважновикористовували Фортран, а бізнес — COBOL, у 1963 році в IBM вирішилистворитиуніверсальні платформу IBM/360 імовупрограмування. У стислітерміни до 1965 року булорозробленомову PL/I, яка поєднуваламожливості Фортран, ALGOL і COBOL, івиявиласьзаскладною, хочаібула у широкому вжитку у 1970-их у науковихібізнес задачах, такожїїпідмножини (PL/C, PL/CS) використовувалися для навчанняпрограмуванню. На початку 1960-их було створено першімовиіздинамічноютипізацією — APL і SNOBOL. SIMULA 67 булапершоюоб'єктно-орієнтованоюмовоюпрограмування.

  10. У 1965 роціНіклаусВіртіТоні Хоар запронуваликомітетузрозвиткумови ALGOL свою версію, яку згодом назвали ALGOL-W ізастосовували для навчання в деякихуніверситетах. Пропозиціябулавідхилена через незначнукількістьзмін, на користьзначноскладнішого ALGOL 68. У ALGOL 68 з'явилисявизначення структур даннихідинамічнімасиви. ALGOL 68 став першоюмовоюіз формальною специфікацією, яка однакбула складною для розуміння. У 1971 роціВіртопублікувавописмовиPascal, яка у 70-их стала загальновживаною для навчаннястудентів. Тоні Хоар НіклаусВірт

  11. У 1972 роціДенісРічірозробив у BellLabsмову C. Тоді ж у Марселі створено інтерпретатормови Пролог - першоїінайвідомішоїмовилогічногопрограмування. ДенісРічі

  12. Алан Кей у Xerox PARC розробив першу широко вживануоб'єктно-орієнтованумову — Smalltalk. Алан Кей

  13. У 1973 РобінМілнер в Единбурзькомууніверситеті створив ML. У 1975 році в Массачусетськомутехнологічномуінституті описано спрощенийдіалектмовиЛісп — Scheme. У 1976 випущеномову для статистичногопрограмування S, на базіякої в 1993 році створено R. У 1977 роцівипущеноBourne shell. ПрофесорРобінМілнер

  14. У 1975 Міністерство оборони США утвориломіжнароднугрупу для створенняновоїмовипрограмуваннядлявласних потреб, конкурс у 1979 виграламова Ада. У 1981 випущеноdBASE II. Ада dBASE II

  15. У 1984 роціз метою об'єднаннярізнихдіалектівЛіспу створено CommonLisp. Випущено MATLAB MATLAB

  16. Б'ярн Страуструп Середовищемови C++. У 1985 роціБ'ярн Страуструп опублікувавреалізаціюмови C++. Тоді ж випущено AWK.

  17. ObjectPascal VisualBasic У 1986 роціопублікованамоваObjective-Cі створено Erlang. Тоді ж BorlandіAppleнезалежно створили об'єктно-орієнтованерозширеннямовиPascal - ObjectPascal. У 1987 році створено Perl. У 1990 роціопублікованоStandard ML іHaskell. У 1991 році створено VisualBasicіопублікованоPython.

  18. JavaScript Java У 1992 випущеноOracle 7 зпідтримкою PL/SQL У 1993 році створено Lua. У 1995 роціSunMicrosystemsвипустилаJava, Netscape — JavaScript, тоді ж створено PHP іRuby.

  19. Java C# OCaml F# У 1996 році створено OCaml. У 2001 році створено C#. У 2002 році створено F#. У 2003 році створено Scala.

  20. Фрагмент програмина Асемблері Середовище програмуванняDelphi

  21. Borland Turbo Pascal 7.0 SmallBasic — програмування для початківців

  22. Елементи Синтаксис Синтаксис мовипрограмуваннявизначає те, як буде виглядатипрограма на ціймові, зокрема, як пишутьсяоператори, оголошенняііншімовніконструкції. Наприклад, оголошеннямасиву V з десяти цілочисловихелементів в на мові С буде виглядати так: int V[10]; На мовіPascal:V: array [0…9] of integer

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

  24. Класифікаціямовпрограмування Мовикласифікують за такими критеріями: Рівеньабстракції Мовипрограмуваннявисокогорівняоперуютьсутностямиближчимилюдині, такими як об'єкти, змінні, функції. Мовипрограмуваннянижчогорівняоперуютьсутностямиближчимимашині: байти, адреси, інструкції. Текст програми на мовівисокогорівнязазвичайнабагатокоротшийніж текст такоїсамоїпрограми на мовінизькогорівня, протепрограмамаєбільшийрозмір. Область застосування Універсальні та спеціалізовані. СпеціалізованімовитежбуваютьТьюрінг-повні, та все ж їх область застосуванняобмежена, як наприклад у мовиshell. Підтримуваніпарадигмипрограмування Об'єктно-орієнтовані, логічні, функційні, структурні… Імперативнімовибазуються на ідеїзмінної, значенняякоїзмінюєтьсяприсвоєнням. Вони називаютьсяімперативними (лат. imperative - наказовий), оскількискладаютьсяізпослідовностей команд, якізвичайномістятьприсвоєннязмінних <назва_змінної> = <вираз>, де виразможепосилатися на значеннязміннихприсвоєнихпопередніми командами.

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

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

  27. Мованизькогорівня Прикладом мовинизькогорівняєасемблер. Мовинизькогорівняорієнтовані на конкретний тип процесораівраховуютьйогоособливості, тому для перенесенняпрограми на асемблерінаіншуапаратну платформу їїпотрібномайжецілкомпереписати. Певнівідмінностієі в синтаксисіпрогрампідрізнікомпілятори. Щоправда, центральніпроцесори для комп'ютерівфірм AMD та Intel практично сумісніівідрізняютьсялишедеякимиспецифічними командами. А ось спеціалізованіпроцесори для іншихпристроїв, наприклад, відеокарт, телефонівмістятьсуттєвівідмінності. Переваги За допомогоюмовнизькогорівнястворюютьсяефективніікомпактніпрограми, оскількирозробникотримує доступ до всіхможливостейпроцесора.

  28. Недоліки 1). Програміст, щопрацюєзмоваминизькогорівня, має бути високоїкваліфікації, добре розумітибудовумікропроцесорноїсистеми, для якоїстворюєтьсяпрограма. Так, якщопрограмастворюється для комп'ютера, потрібно знати будовукомп'ютераі, особливо, влаштуванняіособливостіроботийогопроцесора. 2). Результуючапрограма не може бути перенесена на комп’ютерабопристрійзіншим типом процесора. 3). Значний час розробки великих іскладнихпрограм. Мовинизькогорівня, як правило, використовують для написання невеликих системнихпрограм, драйверівпристроїв, модулівстиківзнестандартнимобладнанням, програмуванняспеціалізованихмікропроцесорів, коли найважливішимивимогамиєкомпактність, швидкодіяіможливість прямого доступу до апаратнихресурсів. Асемблер — мованизькогорівня, що широко застосовуєтьсяідосі.

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

  30. Мовипрограмуваннявисокогорівня

  31. П'ятьпоколіньмовпрограмування Перше покоління Початок 1950-х років — мови перших комп'ютерів. Перша моваасемблера, створена за принципом «одна інструкція — один рядок». Основнавідмінна риса: орієнтування на конкретнийкомп’ютер. Друге покоління Кінець 1950-х — початок 1960-х р.р. Розробленосимвольнийасемблер, в якомуз'явилосяпоняттязмінної. Це перша повноціннамовапрограмування. Основнавідмінна риса: орієнтування на абстрактнийкомп'ютерз такою ж системою команд.

  32. П'ятьпоколіньмовпрограмування Третєпокоління 1960-ті р.р. — мовипрограмуваннявисокогорівня. Їхні характеристики: відносна простота; незалежністьвід конкретного комп'ютера; можливістьвикористанняпотужнихсинтаксичнихконструкцій. Простота мовдаєзмогуписатиневеликіпрограмиі людям, які не єпрофесійнимипрограмістами. Основнавідмінна риса мовитретьогопокоління: орієнтування на алгоритм (алгоритмічнімови). Приклади: Сі, Паскаль, Джава, Бейсік, та багатоінших. Всього у світііснуєблизько 200 популярнихмовпрограмуваннятретьогорівня. Четвертепокоління Початок 1970-х р.р. до сьогоднішнього часу. Створюютьсямови, призначені для реалізації великих проектів. Проблемно-орієнтованімови, щооперуютьконкретнимипоняттямивузькоїгалузі. Як правило, в такімовивбудовуютьпотужніоператори, щодозволяють одним рядком описуватифункції, для описуякихмовамимолодшихпоколіньпотрібнобуло б сотнічинавітьтисячірядківпочаткового коду. Часто відносять: SQL, SGML (HTML, XML), Prolog, та багатоіншихвузькоспеціалізованихмов. Щоправда ряд мов, яківідносять до четвертого покоління, не ємовамипрограмування як такими. Наприклад SQL ємовоюзапитів до баз даних, HTML ємовоюрозміткигіпертексту, а не повноціннимимовамипрограмування, скоріше вони виступаютьсвоєріднимиспеціалізованимидоповненнями до мовпрограмування. Тежсаместосується XML. Основнавідмінна риса мови четвертого покоління: наближення до людськоїмови (декларативнімови). Деякімовимаютьрисиодночасноітретьогоі четвертого поколінь.

  33. П'ятьпоколіньмовпрограмування П'ятепокоління П'ятогопоколіннямовпрограмуванняпокищоне існує. Виробникипропроієтарнихпрограмнихпродуктів часто намагаютьсяприписатисвоїм продуктам якісьмаркетинговіособливості, ідеколивказуютьщоїхній продукт — це «мовап'ятогопокоління». Насправді, всіціпродукти — це просто середовища для прискореногостворенняпродуктів (RapidApplicationDevelopment — RAD), івикористовуютьмовитретього та четвертого поколінь. Мовап'ятогопоколіннявитіснитьчисуттєвопотіснитьмовитретього (напр. Java) і четвертого покоління (напр. SQL) за рахунокзначнозбільшеноїпродуктивностіпраціпрограміста — в 10-1000 раз. За прогнозами, 5GL буде оперуватимета-мета-даними. Наразііснуєєдинамова, яка працюєзмета-мета-даними, — цемова команд менеджерівпакетівчименеджерівзалежностей, таких як apt, yum, smart, maven, cpanта інші. Вони оперують над метаданими про метаданіпродані у пакетах. Використанняapt-get, yum та smartдійснонадзвичайнопідвищилопродуктивністьсистемнихадміністраторів — приблизно в 1000-у раз. Використанняменеджерівзалежностей, таких як maven, cpan, rakudo, pim, easy_install, дійснозначнопідвищилопродуктивністьпрограмістів, приблизно в 10-ть раз. Нажаль, цімовиємовами командного рядка і не ємовамипрограмування.

More Related