Јазик со историја на создавање и карактеристики. Историја на јазикот Ц

Зошто C++

C++ моментално се смета за доминантен јазик што се користи за развој на комерцијални софтверски производи. Во последниве години, оваа доминација малку се поколеба поради слични тврдења од програмски јазик како Java, но нишалото на јавното мислење се заниша на другата страна, а многу програмери кои го напуштија C++ за Java неодамна се вратија на неговата поранешна наклонетост. Во секој случај, двата јазика се толку слични што откако ќе го научите едниот, автоматски совладувате 90% од другиот.

C# е нов јазик развиен од Microsoft за мрежна платформа. Во суштина, C# е варијација на C++, и покрај голем број фундаментални разлики, јазиците C# и C++ се приближно 90% исти. Веројатно ќе помине долго време пред C# сериозно да се натпреварува со C++; но дури и ако тоа се случи, познавањето на јазикот C++ ќе биде значајна предност.

C++ е програмски јазик за општа намена. Неговата природна област на примена е системско програмирање, сфатено во широка смисла на зборот. Дополнително, C++ успешно се користи во многу области на апликации кои го надминуваат овој опсег. Имплементациите на C++ сега се достапни на сите машини, од најскромните микрокомпјутери до најголемите суперкомпјутери и практично на сите оперативни системи.

Појавата и еволуцијата на јазикот C++

Bjarne Stroustrup е развивач на јазикот C++ и креатор на првиот преведувач. Тој е вработен во AT&T Bell Laboratories Research Computing Center во Мареј Хил (Њу Џерси, САД). Магистрирал математика и компјутерски науки на Универзитетот во Аарус (Данска), а докторирал по компјутерски науки на Универзитетот во Кембриџ (Англија). Тој е специјализиран за дистрибуирани системи, оперативни системи, моделирање и програмирање. Заедно со М. А. Елис, тој е автор на дефинитивниот водич за јазикот C++, Прирачникот забележан C++.

Се разбира, C++ му должи многу на јазикот C, кој останува како негова подмножество. Зачувани се и сите алатки на ниско ниво C дизајнирани да ги решат најгорливите проблеми на системското програмирање. C, пак, му должи многу на својот претходник, јазикот BCPL. Коментарот на јазикот BCPL е обновен во C++. Друг извор на инспирација беше јазикот SIMULA-67; токму од него беше позајмен концептот на класи (заедно со изведените класи и виртуелните функции). Способноста на C++ да ги преоптоварува операторите и слободата за поставување декларации каде и да се појави оператор, потсетуваат на јазикот ALGOL-68.

Претходните верзии на јазикот, наречени „C со класи“, беа користени почнувајќи од 1980 година. Јазикот SIMULA-67 е идеален за ова, настрана ефикасноста. Јазикот C со класи се користеше за големи проблеми со моделирање. Во тоа време, можностите за пишување програми на него за кои ресурсите на времето и меморијата беа критични беа подложени на строго тестирање. На овој јазик му недостасуваше преоптоварување на операторот, референци, виртуелни функции и многу други функции. C++ првпат беше објавен надвор од истражувачката група на авторот во јули 1983 година, но многу од карактеристиките на C++ сè уште не беа развиени.

Името C++ (C плус плус) беше измислено од Rick Mascitti во летото 1983 година. Името ја одразува еволутивната природа на промените во јазикот C. Ознаката ++ се однесува на операцијата на растење C. Малку пократкото име C+ е синтаксна грешка. Покрај тоа, тој веќе се користи како име на сосема поинаков јазик. Експертите за C семантика сметаат дека C++ е полош од ++C. Јазикот не е именуван како D бидејќи е продолжение на C и не се обидува да реши никакви проблеми со елиминирање на карактеристиките на C. Друга интересна интерпретација на името C++ може да се најде во додатокот на .

C++ првично беше замислен така што авторот и неговите пријатели нема да мора да програмираат на асемблерски јазик, C или други современи јазици на високо ниво. Неговата главна цел е да го поедностави и направи процесот на програмирање попријатен за индивидуалниот програмер. До неодамна, на хартија немаше план за развој на C++. Дизајнот, имплементацијата и документацијата се одвиваа паралелно. Никогаш немало „Проект C++“ или „Комитет за развој на C++“. Затоа, јазикот еволуираше и продолжува да се развива на таков начин што ќе ги надмине сите проблеми со кои се соочуваат корисниците. Дискусиите на авторот за сите проблеми со неговите пријатели и колеги, исто така, служат како поттик за развој.

Од објавувањето на првото издание на оваа книга, јазикот C++ претрпе значителни промени и доусовршувања. Ова главно се однесува на резолуцијата на нејаснотии при преоптоварување, врзување и управување со меморијата. Сепак, направени се мали промени за да се зголеми компатибилноста со јазикот C. Воведени се и некои генерализации и значајни екстензии, како што се повеќекратно наследување, функции на членови со статички и констатирани спецификации, заштитени членови, шаблони за типови и справување со посебни ситуации. Сите овие екстензии и подобрувања беа насочени кон тоа C++ да стане јазик на кој може да се креираат и користат библиотеки. Сите промени се опишани во.

Други екстензии воведени помеѓу 1985 и 1991 година (како што се повеќекратно наследување, статични функции на членови и чисти виртуелни функции) произлегоа од генерализацијата на програмското искуство во C++ наместо од други јазици.

Јазичните екстензии направени во текот на овие шест години првенствено беа насочени кон зголемување на експресивноста на C++ како јазик за апстракција на податоци и објектно-ориентирано програмирање воопшто, и како средство за создавање висококвалитетни библиотеки со типови на податоци дефинирани од корисникот особено.

Околу 1987 година, стана очигледно дека работата за стандардизација на C++ е неизбежна и дека работата на неа треба да започне веднаш.

AT&T Bell Laboratories беше голем придонес во оваа работа. Околу сто претставници од околу 20 организации разгледаа и коментираа што стана модерна верзија на референтниот прирачник и изворниот материјал за стандардизација на ANSI. C++. Конечно, на иницијатива на Hewlett-Packard, комитетот X3J16 беше формиран во рамките на ANSI во декември 1989 година. Се очекува дека работата за стандардизација ANSI (Американски стандард) за C++ ќе стане дел од работата за стандардизација ISO (Меѓународна организација за стандардизација).

C++ се развиваше истовремено со развојот на некои основни класи.

Развиен е во 1972 година од Денис Ричи врз основа на јазикот Би. Создаден е за употреба на оперативниот систем Unix.Јазикот го добил името C бидејќи многу од неговите карактеристики потекнуваат од стариот јазик Би. C е најпопуларниот јазик да креирате системски софтвер. Исто така често се користи за креирање на апликативни програми. Последователно, синтаксата C стана основа за многу други јазици. Јазикот C е создаден по воведувањето на стандардот ASCII и затоа ги користи речиси сите негови графички симболи. Постарите јазици (Фортран, Кобол) користеле само загради и во C има тркалезни, квадратни и кадрави.Освен тоа, C прави разлика помеѓу големи и мали букви, а постарите јазици користеле само големи букви.

Во 1978 година, Ричи и Керниган го објавија првото издание на книгата Програмскиот јазик C.Во доцните 1970-ти, C почна да го заменува BASIC како водечки јазик за програмирање на микрокомпјутери. Во 1980-тите беше прилагоден за употреба на IBM PC, предизвикувајќи неговата популарност вртоглаво да се зголеми. Во исто време, вработените во Bell Labs почнаа да работат на додавање објектно-ориентирано програмирање способности на C. Јазикот што на крајот го направија , C++,моментално е најкористениот програмски јазик. C останува попопуларен на системи слични на UNIX.

2. Главни карактеристики на алгоритамскиот јазик В.

Јазикот C често се нарекува програмски јазик на средно ниво. Но, тоа не значи дека C е помалку моќен, помалку развиен или потежок за употреба од јазиците на високо ниво како што се Basic или Pascal. Ова, исто така, не значи дека C е толку тежок и незгоден како асемблерскиот јазик (јазик на ниско ниво). Тој се нарекува јазик на средно ниво затоа што ги комбинира најдобрите карактеристики на јазиците на високо ниво со можностите на асемблер.

Како јазик од средно ниво Ц овозможува манипулација со битови, бајти и адреси, односно оние основни елементи на податоци со кои работи компјутерот. И покрај ова, Програма напишана во C е многу пренослива.Преносливоста е својство на софтверот создаден за еден тип на компјутер или оперативен систем што овозможува лесно да се преправи за друг тип, т.е. трансфер во друга компјутерска средина.

Сите јазици на високо ниво го следат концептот на типови на податоци. Тип на податоци е збир на вредности зачувани во променлива, како и збир на операции што може да се извршат на тие вредности. Вообичаени типови на податоци се цели броеви, знаци и броеви со подвижна запирка . Јазикот C има неколку вградени типови на податоци,сепак, тоа не е силно типизиран јазик како Паскал или Ада. Речиси сите конверзии на типови се дозволени во C.. На пример, можете слободно да мешате знаци и целобројни променливи во изрази.

За разлика од повеќето јазици на високо ниво, во C речиси и да нема контрола на грешки при извршување на програмата. На пример, прекршувањата на границите на низата не се проверуваат. Одговорноста за таквите грешки е целосно на програмерот.

C не бара строга компатибилност на функционалните параметри и аргументи. Во програмските јазици на високо ниво, обично е неопходно типот на аргументот повеќе или помалку да одговара на типот на параметарот. Ова не е типично за C; овде аргументот може да биде од речиси секаков тип сè додека може разумно да се претвори во тип на параметар. Покрај тоа, компајлерот C автоматски ги извршува сите видови потребни трансформации.

Важна карактеристика на C е мал број клучни зборови што ги сочинуваат јазичните команди. C89 дефинира 32 клучни зборови, при што C99 додава само 5 зборови. Јазиците на високо ниво обично имаат многу повеќе клучни зборови; на пример, повеќето верзии на Basic имаат над сто клучни зборови!

Јазикот C е добро структуриран. Програмските книги го користат концептот на блок-структуриран јазик. Иако овој термин не се однесува точно на јазикот C, тој обично едноставно се нарекува структуриран јазик.

Посебна карактеристика на структурираниот јазик е посебното поставување на различни делови од програмскиот код и податоци. На овој начин, програмерот може да „сокрие“ дел од информациите што се користат за извршување на одредена задача од оние делови на програмата каде што оваа информација не е потребна.

Структурниот јазик му обезбедува на програмерот многу различни опции. На пример, структурираните јазици обично содржат неколку изјави за циклус, како што се while, do-while, for.

Причините за создавање на нов програмски јазик. Главните разлики помеѓу C++ и другите познати јазици, неговите позитивни и негативни карактеристики.

C++ е еден од најпопуларните програмски јазици што се користат за развој на софтвер, поддржува процедурално (во која последователно извршените команди може да се состават во потпрограми), објектно-ориентиран (стил на кодирање кој дозволува задачите да се групираат во класи), генеричко програмирање (пишување код што може повторно да се користи со објекти од различни типови), комбинирајќи ги својствата на јазиците на високо и ниско ниво. C++ се користи за креирање програми дизајнирани да извршуваат специфични задачи во различни области од човечкиот живот, игри, драјвери, оперативни системи и многу повеќе. Се заснова на јазикот C. Многу програми C работат правилно со компајлерот C++ поради блиската врска.

Името C++ доаѓа од програмскиот јазик C, во кој унарниот оператор ++ означува зголемување на вредноста на променливата за 1. Отпрвин, овој јазик беше наречен C со класи, а потоа стана познат како C++. По буквата C се додадени точно два плуса, бидејќи едниот формира синтаксна грешка во јазикот C, а исто така ова име е веќе земено.

C++ настана во раните 1980-ти. Бјорн Струструп, вработен во Bell Laboratories, го подобри јазикот C за да одговара на неговите потреби. Односно, тој првично не планирал да создаде нов јазик. Но, во доцните 70-ти, програмерот почна да работи на проблеми во теоријата на редици (во моделирање телефонски повици), тој откри дека обидите да се користат тогаш постоечките јазици за моделирање, како што се Simula и BCPL, биле неефикасни, а употребата на високо ефикасна машина јазиците беа премногу тешки. Така, јазикот Simula има корисни способности за развој на голем софтвер, но сè работи премногу бавно, а јазикот BCPL е доста брз, но е многу блиску до јазиците на ниско ниво, не е погоден за развој на големи програми.

Според Stroustrup, најдобра основа за создавање на нов програмски јазик бил јазикот C, бидејќи е универзален, едноставен, пренослив, брз и функционален во извршувањето на многу задачи и е компатибилен со програмската средина UNIX. Stroustrup додаде на C способноста за работа со типови на податоци (класи) и објекти. Благодарение на брзината на C, практичните проблеми со моделирање беа лесно решени во дел од времето на развој и пресметување. Пред сè, типовите на податоци, нивното наследство, проверката на типот и стандардните аргументи беа додадени на C. Првите верзии на јазикот, првично наречени C со класи, станаа достапни во 1980 година. Stroustrup потоа го создаде cfront компајлерот, кој го конвертира C++ кодот во обичен C код, што го прави веднаш употреблив во пракса.

Јазикот стана неверојатно популарен. До 1983 година, додаде различни константи, виртуелни функции, референци, преоптоварување на функции и оператори, корисничка контрола над управувањето со бесплатна меморија, подобрена проверка на типот и нов // стил на коментари. Во 1985 година беше објавен програмскиот јазик C++; ова беше првиот опис на јазикот, кој беше многу важен поради недостатокот на официјален стандард. Во 1989 година, втората верзија на C беше објавена со нови способности за наследување, функции и класи. Во 1998 година беше одобрен меѓународниот стандард за јазикот C++. Бесплатно е, никој нема право да го поседува.

Стандардот C++ се состои од два главни дела: опис на стандардната колекција на рутини, или објекти, кои се користат за развивање програми и опис на јадрото на јазикот. Покрај тоа, има огромен број на нестандардни библиотеки во C++. Многу C библиотеки може да се користат во програмите C++.

Иновациите на C++ во споредба со C се:

Поддршка за објектно-ориентирано програмирање;

Генеричка поддршка за програмирање;

Нови типови на податоци;

Исклучоци се реакциите на програмата на грешки;

Простори со имиња (складишта за групирање единствени идентификатори);

Вградени функции;

Преоптоварување на операторот (постоење на неколку различни опции за користење на оператор во еден опсег);

Дополнувања на стандардната библиотека.

Java и C++, исто така, често се споредуваат како јазици што ја наследуваат синтаксата C, и покрај големите разлики на сите нивоа. Јава се користи во специфичен индустриски сектор: безбеден јазик со ниска бариера за влез за развој на широки пазарни апликации со висока приспособливост кон други средини. C++ тврди дека е универзално применлив во сите задачи за сите категории на програмери, но не ги задоволува целосно барањата на која било од декларираните области на применливост. Основната библиотека C++ има помалку ресурси во споредба со Java, но обезбедува слобода за избор на библиотеки од трети страни.

Понатамошниот развој на јазикот ќе продолжи преку дополнување на постоечките стандардни библиотеки. Идниот план за C++ е да се прошири генеричкото програмирање.

ЛИТЕРАТУРА

1. https://ru.wikipedia.org/wiki/C%2B%2Bhttp://articles.org.ru/web/specperl.php

2. Бјорн Струструп. C++ програмски јазик. Специјално издание = Програмскиот јазик C++. Специјално издание. М.: Бином-Прес, 2007. 1104 стр. ISBN 5-7989-0223-4

Неколку врски и цитати за првите компајлери C, B, BCPL, AED-0, Bootstrap Compiler; и како е составен првиот компајлер на нови јазици



Историја на компајлерот BCPL и AED-0

BCPL беше дизајниран од Мартин Ричардс во средината на 1960-тите додека беше во посета на МИТ, и беше користен во текот на раните 1970-ти за неколку интересни проекти, меѓу кои и оперативниот систем OS6 во Оксфорд, и делови од семиналната работа Алто во Xerox PARC. Се запознавме со него бидејќи системот MIT CTSS на кој работеше Ричардс се користеше за развој на Multics. Оригиналниот компајлер BCPL беше транспортиран и во Multics и во системот GE-635 GECOS од страна на Rudd Canaday и други во Bell Labs; за време на последните маки од животот на Мултикс во Bell Labs и веднаш потоа, тој беше јазикот на избор меѓу групата луѓе кои подоцна ќе се вклучат во Unix.

BCPL беше наменет да биде пренослив. Преносливоста се постигнува со подигање на системот за траење неколку пати, така што на крајот ќе го имплементира излезниот јазик на компајлерот. Овој јазик се нарекува OCODE. OCODE е сличен на асемблерски јазик на високо ниво... да се преведе на машинскиот јазик на повеќето процесори.…
Во книгата за BCPL, Ричардс и Витби-Стревенс дефинираат втор средно јазик на ниско ниво наречен Intcode. Intcode е исклучително едноставен јазик кој може да се користи за подигнување на OCODE.… Системот BCPL беше дистрибуиран во форма OCODE.

Така, за да се изврши компајлерот BCPL, кој беше дистрибуиран во OCODE кодови и компајлирани програми со BCPL во OCODE, потребен беше преведувач OCODE. Преведувачот OCODE е напишан во Intcode, а Intcode е веќе доволно едноставен за да се имплементира без јазици на високо ниво (неколку дена за асемблерот и преведувачот Intcode на нова машина; иако имплементирањето на Intcode на самиот BCPL е исто така можно). Останува само да се состави првиот BCPL компајлер, напишан во BCPL во OCODE https://www.bell-labs.com/usr/dmr/www/bcpl.html:


Првиот BCPL компајлер на Ричардс беше напишан со користење на 6-битен BCD сет на знаци на CTSS, а набргу потоа беше адаптиран за да ги користи знаците достапни на терминалите „голф-топка“ на IBM 1050 и 2741.

BCPLCTSS ја содржи верзијата на BCPL компајлерот како што беше во јуни 1968 година што работи на CTSS на MIT's Project MAC. Исто така, содржи модификација на овој компајлер што работи под тековниот 64-битен Cintcode BCPL систем. Кликнете BCPLCTSS.html за да добиете копија .
Го впишав изворниот код од списокот за голф топчиња на IBM на компајлерот кој датира помеѓу февруари и јуни 1968 година.

BCPL првично беше сличен на оваа подмножество на CPL што се користи во кодирањето на компајлерот CPL. Преглед на главните карактеристики на BCPL првпат се појави во мојата докторска теза во 1966 година, но тој не беше целосно дизајниран и имплементиран до почетокот на следната година кога работев во Project MAC на Технолошкиот институт во Масачусетс. Неговата прва имплементација беше напишана во Росовиот Algol Extended for Design (AED-0), кој беше единствениот јазик тогаш достапен на CTSS, системот за споделување време во Project MAC, освен LISP што дозволуваше рекурзија.

Има одредена историја на AED-0 на http://groups.csail.mit.edu/mac/projects/studentaut/DR%20HK%20Bio.htm и Конструкција на компајлер. LNCS 21, isbn 3662215497 страница 470 (1974) - компајлерот AED-0 беше препишан на јазикот AED-0 само кон крајот на 1964 година, а во 1963 година оригиналниот AED-0 компајлер за IBM 7094 (слика), напишан на неодреден „bootstrap“ отиде во живо јазик на компајлерот“


Тој започна да програмира во јули 1952 година на компјутерот MIT Whirlwind и подоцна, преку соработка на неговиот проект за дизајн со помош на MIT со Проектот Mac на MIT, на пионерскиот компатибилен систем за споделување време (CTSS).… 1962 - 1969: MIT Computer-Aided Проект за дизајн (со Project MAC), прв јазик за софтверско инженерство (AED, Algol Extended for Design)

AED-0 е развиен јазик на високо ниво од M.I.T. Проект за дизајн со помош на компјутер. Тој се заснова на ALGOL60 и има за цел да обезбеди удобен и ефективен јазик за создавање специјализирани системи за дизајнирање со помош на компјутер за широк спектар на области на примена. Оригиналниот компајлер AED-0 напишан на јазик за компајлер за подигнување стана оперативен на машината IBM 709 во 1963 година. Последователно, тој беше преместен во CTSS на M.I.T. Проект MAC кој работи на IBM 7094. Понатамошни случувања беа направени во овој систем за да се произведе прилично стабилен јазик до крајот на 1964 година. самиот себе.


… Дел 1 од прирачникот го опишува вистинскиот јазик AED-0, вклучувајќи описи на неколку потпрограмски пакети кои ги прошируваат карактеристиките на јазикот надвор од формите изведени од синтаксата Algol-60.

Идеите кои доведоа до создавање на AED се опишани од Рос во Ричард Л. Векселблат. Историја на програмските јазици. Поглавје VI АПТ сесија. „Потекло на соодветниот јазик за автоматски програмирани алатки“, 1978 година


Малку за AED-0 има во извештајот за Project MAC „ВЕРБАЛЕН И ГРАФИЧКИ ЈАЗИК ЗА АЕД СИСТЕМИ А ИЗВЕШТАЈ ЗА НАПРЕДОК“ MAC-TR-4
http://publications.csail.mit.edu/lcs/pubs/pdf/MIT-LCS-TR-004.pdf#page=8


КОМПЈИЛЕРОТ AED-0
Беше откриено дека ниту еден постоечки компајлер не може да обезбеди ефикасна механизација на концептот plex, така што во пролетта 1963 година Проектот се обврза да конструира компајлер кој ги вклучува техниките предложени за самиот компјутерски потпомогнат дизајн систем како прв голем чекор кон постигнување на целите на Проектот. Пред тоа време, plex програмирањето беше спроведено со помош на експериментален компајлер наречен Bootstrap Compiler, кој исто така беше напишан од Проектот, и за едукативно искуство и како експериментална алатка. Компајлерот AED-0 првично беше напишан на јазикот на компајлерот Bootstrap, но неодамна добиениот систем беше расклопен од бинарниот машински код назад во асемблејскиот јазик FAP и беа направени многу промени и подобрувања на компајлерот AED-0, така што сега тој е достапен како јавна команда во Project MAC Time-Sharing System. Јазикот AED-0 во моментов се состои од Algol-60, при што некои карактеристики се испуштени, а други се додадени за plex програмирање. Компајлерот е многу ефикасен и флексибилен и составува многу добар машински код во повеќето случаи. Компајлерот се базира директно на plex концептите опишани 1 погоре.

Има уште помалку информации за Bootstrap Compiler јазикот отколку за AED-0. Постојат посебни споменувања во http://www.dtic.mil/dtic/tr/fulltext/u2/681342.pdf Извештај за напредокот на проектот MAC IV (јули 1966 до јули 1967 година) и интервју со Рос
http://conservancy.umn.edu/bitstream/handle/11299/107611/oh178dtr.pdf?sequence=1 Интервју со ДАГЛАС Т. РОС, 1989 година:


… Изданија на AED, а исто така од самиот почеток, AED беше машинско независна работа за софтверско инженерство. Всушност, почнавме паралелно со 709 и TX-0, пред да се помисли на MAC, гледате. Тоа беше всушност Bootstrap Compiler--во кој првпат напишавме AED. Тогаш тоа беше првиот AED компајлер што го имавме и работиме овде во рок од две недели откако Project MAC ги отвори своите врати.…
Се повлеков од теоретски убавиот и чист начин на кој првично генериравме AED код и го преправивме целиот заден дел на компајлерот. Го направивме она што го нарековме расклопување. Го зедовме машинскиот код на самиот компајлер (само бит-мапа на меморијата во суштина) и се вративме назад како да е напишан на асемблерот FAP, потоа излеговме и повторно ја составивме целата работа за да биде полесно да се прават закрпи. Потоа го сменивме целиот дел од компајлерот за генерирање на кодови за да го генерираме стандардот (она што се нарекуваше BBS формат на претставување на машински јазик, така што што и да излезе од нашиот компајлер да се вклопи во стандардите што тие ги усвоија за Project MAC .

Не сите компајлери започнаа како компајлери:
http://en.wikipedia.org/wiki/History_of_compiler_construction#First_compilers
http://en.wikipedia.org/wiki/Bootstrapping_(compilers%29


Првиот компајлер беше напишан од Грејс Хопер, во 1952 година, за јазикот на системот А-0. Терминот компајлер бил измислен од Хопер. А-0 функционираше повеќе како натоварувач или поврзувач отколку модерниот поим за компајлер. Првиот автокод и неговиот компајлер беа развиени од Алик Глени во 1952 година за компјутерот Марк 1 на Универзитетот во Манчестер и некои го сметаат за првиот компајлиран програмски јазик. Тимот на FORTRAN предводен од Џон В. Бакус во IBM е генерално заслужен како го воведе првиот комплетен компајлер, во 1957 година.
Првиот компајлер ALGOL 58 беше завршен до крајот на 1958 година од Фридрих Л. Бауер, Херман Ботенбрх, Хајнц Рутишаузер и Клаус Самелсон за компјутерот Z22. Бауер и сор. работеше на технологија на компајлер за Sequentielle Formelubersetzung (т.е. секвенцијален превод на формула) во претходните години.…
Компајлерот COBOL за UNIVAC II веројатно беше првиот што беше напишан на јазик на високо ниво, имено FLOW-MATIC, од тим предводен од Грејс Хопер.

А веднаш подолу има пример на јазичен компајлер напишан на истиот јазик и лансиран на јазичниот преведувач:


Изградбата на компајлер за само-хостинг е проблем со подигање, т.е. првиот таков компајлер за јазик мора да биде или рачно напишан машински код или компајлиран од компајлер напишан на друг јазик или компајлиран со вклучување на компајлерот во преведувач.
Друг ран само-хостинг компајлер беше напишан за Lisp од Тим Харт и Мајк Левин на MIT во 1962 година. Тие напишаа Lisp компајлер во Lisp, тестирајќи го во постоечки Lisp преведувач. Откако го подобрија компајлерот до точка каде што можеше да состави сопствен изворен код, тој беше само-хостинг.…
Четвртото е пример за само-хостинг компајлер. Карактеристиките за самокомпилација и вкрстено компилација на Форт најчесто се мешаат со метакомпилација и метакомпајлери.

Изберете ги лекциите C што ве интересираат:

C е програмски јазик кој е создаден во 1972 година од Денис М. Ричи. Стандардот на јазикот во тоа време беше демонстриран во книгата Ричи, коавтор на Брајан Керниган (Програмски јазик C). Овој стандард се нарекува K&R стандард (по Kernighan и Ritchie). Секоја програма напишана користејќи правила на K&R-C ќе биде успешно составена од кој било компајлер C.

Програмерите кои развиваа компајлери за C почнаа да го модернизираат и развиваат јазикот. За да се избегне забуна, Американскиот национален институт за стандарди го разви јазичниот стандард ANSI во 1983 година. ANSI-C до денес ги поставува правилата за промените и развојот на јазикот C.

C е компајлиран програмски јазик. Програмата се состои од инструкции и функции кои мора да се преведат во бинарни кодови за да можат да се извршат од компјутерскиот хардвер.
C е доста популарен во моментов, ова се должи на таквите квалитети на побарувачката како што се: брзина, преносливост и структурирање.

  • Брзина

Меѓу сите јазици на високо ниво, C е програмски јазик кој е поблизок до асемблерскиот јазик. Така, многу јазични инструкции се адресираат директно до компјутерскиот хардвер, поради што програмата работи многу брзо. Поради оваа причина, C може да се користи за пишување оперативни системи и компајлери.

Повеќето развиени C компајлери генерираат високо оптимизирани кодови, т.е. со други зборови, мал во големина (колку е помал кодот што го генерира компајлерот, толку е пооптимизиран).

  • Преносливост

Во принцип, би имало смисла да се пишуваат програми за брзо извршување на асемблерски јазик. Но, ние би требало да ги напишеме за секоја платформа, бидејќи кодовите за мнемоничко склопување се приспособени за семејствата на микропроцесори.

C користи стандардни групи на клучни зборови. Оние. програмата се пишува еднаш за која било платформа, секој компјутер со кој било оперативен систем. Но, постојат два вида компајлери за јазикот: еден за IBM, другиот за Apple. Но, самиот програмски текст се создава еднаш засекогаш.

  • Структурирање

Програмите напишани на јазикот C имаат своја структура и правила, што го поттикнува програмерот да размислува логично.
Потребата за структурирање на програмата е само „плус“, бидејќи благодарение на тоа програмата C е многу лесна за дизајнирање, одржување и дебагирање.

  • Функциони библиотеки

C е програмски јазик кој првично содржи мал број операции во својата синтакса. На пример, јазикот нема вградени оператори за внесување и излез на информации, како и оператори за работа со стрингови.

Сите C способности се обезбедени преку библиотеки на функции, од кои некои се испорачуваат со компајлерот. Библиотеката е посебна датотека прикачена на компајлерот и содржи функции за решавање конкретни проблеми.