телевизори. Конзоли. Проектори и аксесоари. Технологии. Цифрова телевизия

Кой беше първият език за програмиране? Първият език за програмиране на високо ниво е Plankalküll. Runtime - изпълнение на програмата

Първият внедрен език за компютърно програмиране на високо ниво беше FORTRAN (FORmula TRANslator). Създаден е от група програмисти на IBM Corporation между 1954 и 1957 г. Няколко години след създаването му започнаха търговските продажби на Fortran - преди това се извършваше или с помощта на машинни кодове, или със символни асемблери.

На първо място, Fortran стана широко разпространен в научната и инженерната общност, където бяха извършени изчисления върху него.

Едно от основните предимства на днешния Fortran е огромният брой програми и рутинни библиотеки, написани в него. В хиляди пакети на този език можете да намерите пакети за решаване на сложни интегрални уравнения, умножение на матрици и т.н. Тези пакети са създадени в продължение на много десетилетия - те не са загубили значението си и до днес. Повечето от техните библиотеки са добре документирани, с отстраняване на грешки и много ефективни, но те непрекъснато се опитват автоматично да преобразуват своя Fortran код в модерен софтуер.

История на въвеждането на Fortran

След разработването на ефективен алтернативен език, наречен Fortran, компютърната общност беше скептична към новия продукт. Малко хора вярваха, че с помощта на Fortran програмирането ще стане по-ефективно и по-бързо. С течение на времето обаче учените оцениха възможностите на езика и започнаха активно да го използват за писане на интензивни софтуерни изчисления. Fortran беше особено подходящ за технически приложения, в които беше много подпомогнат от цялостното събиране на всички видове данни.

Съвременният Fortran е допълнен с възможности, които позволяват ефективното използване на нови софтуерни технологиии програмни изчислителни архитектури.

След зашеметяващия успех на Fortran европейските компании започнаха да се страхуват, че IBM ще започне да води компютърната индустрия. Американската и немската общност създадоха свои собствени комитети за разработване на универсален език за програмиране, но по-късно се сляха в един комитет. Специалистите му се развиха нов езики го нарече Международен алгоритмичен език (IAL), но тъй като ALGOrithmic Language бързо се превърна в често използвано име за новия продукт, комисията трябваше да промени официалното име на IAL на ALGOL.

Много е важно да знаете общата история на езиците за програмиране и историята на развитието на известни и непознати езици. В тази статия ще се запознаете с това, но първо нека си припомним “Какво е език за програмиране?”

Програмен езике система от нотация и правила, която ви позволява да напишете програма за решаване на проблем под формата на последователен текст във форма, удобна за човек.

50-те години

През петдесетте години на ХХ век, с появата на компютрите с вакуумни тръби, започва бързото развитие на езиците за програмиране. Програмирането започна с писане на програми директно под формата на машинни инструкции (в кодове, както казват програмистите). Компютрите, които по това време струват значително повече от разработването на която и да е програма, изискват високоефективен код.

За да се улесни кодирането, беше разработен машинно ориентиран, което направи възможно писането на машинни инструкции в символна форма. Асемблерният език зависи от системата с инструкции на конкретен компютър. Беше достатъчно удобен за програмиране на малки задачи, изискващи максимална скорост на изпълнение.

Големите проекти обаче бяха трудни за разработване на асемблерен език. Основният проблем беше, че програма, написана на Assembly, беше свързана с архитектурата на определен компютър и не можеше да бъде прехвърлена на други машини. Когато компютърът беше подобрен, всички програми в Асемблера трябваше да бъдат пренаписани наново.

Почти веднага с появата на компютрите бяха разработени езици на високо ниво, т.е. езици, които не зависят от конкретна архитектура. За да се изпълни програма на език от високо ниво, тя първо трябва да бъде преведена на машинен команден език. Специална програма, която извършва такъв превод, се нарича транслатор или компилатор.

След това преведената програма се изпълнява директно от компютъра. Съществува и възможност за превод на програмата на междинен език, който не зависи от архитектурата на конкретен компютър, но въпреки това е възможно най-близо до машинния команден език.

След това се изпълнява програмата за междинен език специална програма, който се нарича интерпретатор. Също така е възможно да се компилира в движение, когато изпълняваният програмен фрагмент се превежда от междинен език в машинния команден език непосредствено преди изпълнението.

В средата на 50-те години, под ръководството на Джон Бекъс, за IBM е разработен алгоритмичният език за програмиране на високо ниво FORTRAN. Въпреки факта, че вече имаше разработки в езици, които преобразуваха аритметични изрази в машинен код, създаването на езика FORTRAN (FORmula TRANslator), който предостави възможността да се напише алгоритъм за изчисление с помощта на условни изрази и оператори за вход/изход, стана началната точка на ерата на езиците за програмиране от високо ниво.

Като алтернатива на езика FORTRAN, първоначално насочен към архитектурата на IBM, ALGOL (ALGOrithmic Language) е разработен под ръководството на Peter Naur в края на 50-те години. Основната цел, преследвана от разработчиците на този език, беше независимостта от специфичната архитектура на компютърната система.

В допълнение, създателите на езика ALGOL се стремят да разработят език, удобен за описване на алгоритми и използване на система за обозначения, близка до тази, приета в математиката. FORTRAN и ALGOL бяха първите езици, фокусирани върху изчислителното програмиране.

60-те години

В края на 60-те години под ръководството на Наярд и Дал е разработен езикът Simula-67, използващ концепцията за дефинирани от потребителя типове данни. Всъщност това е първият език, който използва концепцията за класове.

70-те години

В средата на 70-те Вирт предлага езика Pascal, който веднага става широко използван. В същото време по инициатива на Министерството на отбраната на САЩ започва работа по създаването на език от високо ниво, наречен Ada - в чест на Ада Лавлейс, програмист и дъщеря на лорд Байрон.

Създаването на езика започна с дефиниране на изисквания и разработване на спецификации. Четири независими групи работиха по проекта, но всички те използваха Pascal като основа. В началото на 80-те години е разработен първият индустриален компилатор за езика Ada.

C Развитие

Универсалният език за програмиране е разработен в средата на 70-те години от Денис Ричи и Кен Томпсън. Този език стана популярен език за системно програмиране и по едно време беше използван за писане на ядрото операционна система UNIX.

Стандартът на езика C започна да се разработва работна групаИнститут за стандарти ANSI през 1982 г. Международният стандарт за езика C е приет през 1990 г. Езикът C формира основата за разработването на езици за програмиране и Java.

Езикът C направи възможно действително да се отървете от Assembler при създаването на операционни системи. Например, почти целият текст на операционната система Unix е написан на C и следователно не зависи от конкретен компютър.

Основното предимство на C е неговата простота и липсата на псевдонаучни решения. Механизмът за предаване на параметри към функция (само по стойност) е описан просто и ясно. Програмистът, създаващ C програма, винаги ясно разбира как тази програма ще бъде изпълнена.

Концепцията за указател, статични и автоматични (стекови) променливи на езика C отразяват възможно най-точно структурата на всеки модерен компютър, така че C програмите са ефективни и лесни за отстраняване на грешки.

Понастоящем по-голямата част от програмите са написани на C и C++. Интерфейсът на всяка операционна система (т.нар. API - Application Program Interface), т.е. набор от системни повиквания, предназначени за разработчици на приложения, обикновено е набор от функции на езика C.

Наред с алгоритмичните езици, паралелно се развиват езици, предназначени за обработка на бизнес информация, както и езици с изкуствен интелект. Първият включва езика COBOL (COMmon Business Oriented Language), а вторият включва LISP (LIST Processing) и езиците Prolog.

Езикът LISP, разработен през 60-те години под ръководството на Дж. Маккарти, е първият функционален език за обработка на списъци, който широко приложениев теорията на игрите.

90-те

През 90-те години, с разпространението на Интернет, възможностите за разпределена обработка на данни се разшириха, което се отрази и на развитието на езиците за програмиране. Появиха се езици, фокусирани върху създаването на сървърни приложения, като Perl, езици за описание на документи и XML.

Традиционните езици за програмиране C++ и Pascal също претърпяха промени: езикът за програмиране започна да означава не само функционалността на самия език, но и библиотеките от класове, предоставени от средата за програмиране.

Акцентът беше изместен от спецификацията на самите езици за програмиране към стандартизирането на механизмите за взаимодействие на разпределените приложения. Появиха се нови технологии - COM и CORBA, които уточняват взаимодействието на разпределени обекти.

Области на приложение на езиците за програмиране

В момента езиците за програмиране се използват в голямо разнообразие от области на човешката дейност, като например:

  • научни изчисления (езици C++, FORTRAN, Java);
  • системно програмиране (езици C++, Java);
  • обработка на информация (езици C++, COBOL, Java);
  • изкуствен интелект(LISP, Пролог);
  • издателска дейност (Postscript, TeX);
  • отдалечена обработка на информация (Perl, PHP, Java, C++);
  • описание на документи (HTML, XML).

Въз основа на историята на езиците за програмиране можем да кажем, че с течение на времето някои езици са се развили, придобили са нови функции и са останали търсени, докато други са загубили своята релевантност и днес са в най-добрия случай от чисто теоретичен интерес.

Kasper Beyer „Кратка напълно точна история на езиците за програмиране“.

1800

Джоузеф Мари Жакард обучава стан да чете перфокарти и по този начин създава първото многонишково устройство за обработка на данни. Изобретението му беше посрещнато враждебно от тъкачите на коприна, които предвидиха раждането на Skynet.

1842

Ада Лавлейс се отегчи, докато преследваше благородните си занимания. Тя скицира тетрадкакоето по-късно ще стане известно като първото публикувано компютърна програма. Единственото неудобство беше, че компютърът все още не беше изобретен.

1936

Алън Тюринг измисля всичко, но това не го оправдава в очите на британския съд, който го осъжда на химическа кастрация.

По-късно кралицата го помилва, но, за съжаление, той отдавна беше мъртъв по това време.

1957

John Backus създава FORTRAN, първият език, използван от истински програмисти.

1959

Грейс Хопър изобретява първия индустриално ориентиран език за програмиране и го нарича „общ бизнес ориентиран език“ или накратко COBOL.

1964

Джон Джордж Кемени и Томас Курц решават, че програмирането е твърде трудно и трябва да се върнат към основите. Те наричат ​​своя език за програмиране BASIC.

1970

Никлаус Вирт разработва Паскал. Това е един от няколкото езика, на които той участва в създаванетод Вирт: Той обичаше да създава езици.

Той също така формулира закона на Вирт, правейки закона на Мур безсмислен, тъй като разработчиците биха го направилиИ създават толкова раздути програми, че дори мейнфреймите не могат да се справят с тях. Това по-късно ще бъде доказано чрез изобретяването на Electron.js.

1972

Денис Ричи се отегчи от работата си в Bell Labs и реши да създаде C с неговите фигурни скоби и проектът се превърна в огромен успех.Впоследствие той добави грешки в сегментирането и други удобни за разработчиците функции, за да подобри производителността.

Тъй като му оставаха още няколко часа, той и неговите приятели от Bell Labs решиха да създадат примерна програма, за да демонстрират езика C. Така те създадоха операционна система, наречена Unix.

1980

Алън Къртис Кей изобретява обектно-ориентираното програмиране и го нарича Smalltalk. В Smalltalk всичко е обект, дори обектът е обект.

1987

Лари Уол, с неговия опит в религиозната област, става проповедник и то неговд та доктрина прави Perl.

1983

Жан Дейвид Ишбиа забеляза, че програмата на Ада Лавлейс така и не стартира и реши да създаде език и да го кръсти на нейно име (Ада). Но езикът също не тръгва.

1986

Брад Кокс и Том Лав решиха да направят нечетлива версия на C, базирана на Smalltalk. Нарекоха го Objective-C, но никой не може да разбере неговия синтаксис.

1983

Björn Stroustrup се връща в бъдещето и забелязва, че езикът C изискватвърде малко време за компилация. Той добавя всяка функция, за която може да се сети, към езика и го нарича C++.

Програмистите по целия свят са съгласни, като им дават брилянтно извинение да гледат видеоклипове с котки и да четат xkcd на работа.

1991

Гуидо ван Росум не е харесван брекетитака че той измисля. При избора на синтаксиса на езика авторът се е вдъхновил от Монти Пайтън и неговия летящ цирк.

1993

Робърт Йерусалимски и приятелите му решават, че имат нужда от местен, бразилски скриптов език. IN По време на локализацията беше допусната грешка, която накара индексите да започнат да броят от 1 вместо от 0.Езикът също се наричаше Lua.

1994

Размус Лердорф създава шаблонна машина за своите собствени CGI скриптове за начална страница и пуска нейните dot файлове в Интернет.

Светът решава да използва тези dot файлове навсякъде и Rasmus, обезумял, добавя някои допълнителни обвързвания към базата данни към тях и нарича резултата RHP.

1995

Юкихиро Мацумото не беше много щастлив и забеляза, че другите програмисти също бяха недоволни. Той създава Ruby, за да ги направи щастливи. След създаването на Ruby, „Matz“ е щастлив, Ruby общността е щастлива, всички са щастливи.

1995

Брендън Айх си взема почивен ден, за да разработи езика, който ще контролира всеки уеб браузър в света и евентуално Skynet. Първо той отиде в Netscape и каза, че езикът се нарича LiveScript, но по време на прегледа на кода Java придоби популярност, така чебеше решено използвайте фигурни скоби и преименувайте езика на JavaScript.

Оказа се, че Java е търговска марка, което може да доведе до проблеми, така че JavaScript по-късно беше преименуван на , но все още се нарича със старото име.

1996

Джеймс Гослинг изобретява Java, първият наистина многословен обектно-ориентиран език за програмиране, където моделите на проектиране имат предимство пред прагматизма.

2001

Anders Hejlsberg преоткрива Java и нарича езика C#, защото програмирането на C изглежда по-готино от програмирането на Java. Нова версияВсички харесват Java, защото е напълно различна от Java.

2005

David Heinemeier Hansson създава уеб рамка, наречена по-късно Ruby on Rails. Хората забравят, че това са две различни неща.

2006

Джон Резиг пише помощна библиотека на JavaScript. Всички смятат, че това е език и правят кариера от копиране на jQuery код от Интернет.

2009

Кен Томпсън и Роб Пайк решават да създадат език, подобен на C, но по-„стоков“, с голяма сумаинструменти за осигуряване на безопасност и с Gopher (Gopher е гризач, герой в историите за Мечо Пух - прибл. прев.) като талисмани.

Те наричат ​​този език Go, решават да го отворят и започват да продават маркови наколенки и каски Gopher.

2010

Graydon Hoare също иска да създаде език, подобен на C. Той го нарича Rust. Всички изискват незабавно всяко парче от техния софтуер да бъде пренаписано на Rust. Грейдън иска нещо по-блестящо и започва да работи върху Swift за Apple.

2012

Anders Hejlsberg иска да напише C# в уеб браузъри. Той създава TypeScript, който по същество е JavaScript с повече Java.

2013

Джеръми Ашкенас иска да бъде щастлив като разработчиците на Ruby, затова създава CoffeeScript, който се превежда на JavaScript, но прилича повече на Ruby. Джеръми никога не е станал толкова истински щастлив, колкото Матц и разработчиците на Ruby.

2014

Крис Латнър ​​създава Swift, чиято основна цел не е да бъде Objective-C. В крайна сметка този език прилича на Java.

>> Статии

Как се появиха езиците за програмиране?

Езиците за програмиране бяха създадени в продължение на няколко десетилетия и тази работа беше дълга, сложна и досадна. По същество машинният език е верига от логически подредени нули и единици, нарушаването на последователността на които ще доведе до спиране на програмата и повреда на компютъра, а изискванията към програмистите, създали нови начини за писане на команди, зависят от развитието на машини.

История на езиците за програмиране: Началото

Началото на 40-те години бе белязано от появата на първия език за програми - асемблер, който включваше набор от кратки думи или техните съкращения в командата. Сглобяването се счита за език ниско нивопрограмиране, поради което се нарича машинно-ориентиран език. Въпреки това програмите, написани на този език, се отличават със своята ефективност и производителност.

Езици от високо ниво: алгоритмични езици

Развитие на технологиите и въвеждане на нови видове цифрови устройствапринуди програмистите да измислят език от по-високо ниво с фокус върху алгоритмите. Така се появиха допълнителни програми-преводачи, които стартираха алгоритъма. Има два известни метода за превод:

- Компилацияили компилация, когато инструкциите влизат в сила, след като целият програмен пакет е преведен;

- Интерпретацияили интерпретация, при която изпълнението и преводът на машинен език се извършват по синхронен начин.

Характеристиките на такива програми са: лекота на създаване (писане на код), възможност за настройка по време на използване, лекота на четене.

Година 1954: структурирано програмиране

Светът стана известен за първия компилатор на език за програмиране на много високо ниво. Говорим за Fortran, от английското съкращение FORmula TRANslator. Развитието на езика стана по-просто, но при композирането на големи програми езикът стана практически нечетим, въпреки че бяха пуснати много версии на Fortran.

Пикът на развитие на езиците за програмиране се случи точно през 50-60-те години, след което бяха създадени няколко опции:

- Алгол(1958), създаден на базата на изолирани блокове;

- Кобол(1959) - език на бизнеса и управлението, база C+;

- Основен(1965), познат на програмистите и до днес.

През 1970 г. е създаден език за програмиране, наречен на учения Б. Паскал - Pascal. Програмите, създадени на този език, бяха лесни за четене и нямаше трудности при ученето. Просто, добро структуриран езиквсе още е популярен сред начинаещите програмисти.

Малко по-късно, през 1972 г., е разработен втори език за програмиране - C, който включва постиженията на по-рано създадени езици и иновации; той става може би най-популярен сред потребителите и създателите на програми. Прост, добре структуриран, лесен за научаване, C се превръща в предпочитан сред другите езици.

Обектно-ориентирано програмиране (ООП): 1970 г

Идеологията на процедурното програмиране за функции, които не са формално свързани с обработката, принуди разработчиците да седнат, за да създадат нова концепция за композиране на език. Основата на ООП концепциите са:

Модел на обект, който все още не съществува;

Екземпляр на класа;

Абстракция, придаване на характеристики на обект;

Капсулация, когато свойства и методи се комбинират с цел скриване на данни;

Наследство;

Полиморфизъм.

Първият език беше Simula, малко по-късно беше изобретен Smalltalk. В момента този тип програмен език се поддържа от съвременните програми: Object Pascal (Delphi), C++, C#, Java.

Последователността на развитие на езиците за програмиране зависи от въвеждането на нови иновации, така че след появата на интернет езикът стана необходим за достъп до ресурси и сайтове. технология Световната мрежа (WWW)роди нови езици, които все още се използват активно днес: Java, Perl, SQL, HTML, PHP, JavaScript.

Компютрите все още не разбират добре естествените езици, които хората използват, за да комуникират, или поне още не.

На свой ред хората не разбират добре машинните езици. Затова бяха създадени езици за програмиране, които покриват тази празнина в разбирането, в модела на мислене между човека и компютъра.

Езиците за програмиране могат да бъдат:

  • просто,
  • комплекс и
  • неразбираем (например графичен).

История на езиците за програмиране

Има няколкостотин езика за програмиране, които се използват днес, но много други вече не се използват. С течение на времето бяха разработени нови езици за програмиране за нови задачи.

Нулево поколение

  • (електро)
  • програмирани от структурата на собственото си устройство
  • високо специализирани,
  • Възможностите за програмиране са ограничени.

Жакардов стан

Пример за такива машини е машина за жакардово тъкане с програмируемо устройство. Изработен е през 1804 г. от французина Жозеф Мари Жакард. Между другото, в негова чест, шарената, декоративна тъкан се нарича жакард или жакард.

С помощта на машината беше възможно лесно и масово да се произвеждат бродерии върху плат с помощта на перфокарти, както е показано на фигурата по-долу:

Ориз. 1. Перфокарти за жакардов стан

Перфокартите бяха програмирани с последователност от действия за машини, за да възпроизведат дизайн върху плат.

Машината на Бабидж

Интернет и уеб

Появиха се специализирани езици:

  • JavaScript.

Много уебсайтове са написани с помощта на PHP и JavaScript.

Някои вече съществуващи езици, с появата на Интернет и Мрежата, намериха нови ниши и станаха уеб-ориентирани:

  • Руби,
  • Пинтън,
  • Java.

До 2000-те години старите езици за програмиране постепенно умират, появяват се нови, но няма общоприета концепция какво се случва с тези неща.

Всеки език за програмиране е изкуствен език, който има свой собствен жизнен цикъл. По същия начин операционните системи Семейство Windowsсъщо имат свои жизнени цикли: .

Жизненият цикъл на езика за програмиране:

  • творение,
  • ранно приемане (първоначално използване на езика),
  • (индустриален) успех,
  • избледняване, заместване с други езици.

IN модерен святГлавна част софтуер(софтуер) е написан на 10-15 езика, въпреки че през цялото време, което познаваме, са създадени повече от стотици езици за програмиране. Има 300 или 400 официално регистрирани езика.

Какво е език за програмиране

Езикът е

  • синтаксис (правила за писане на програми),
  • семантика (поведението на елементи, които са включени в правилата за писане и са вградени в езика),
  • време за изпълнение (среда за изпълнение).

Синтаксисът определя формата на текстовото представяне на програмите, тоест как трябва да бъдат написани, какви думи са включени в езика, как да се поставят запетаи, интервали и т.н.

Синтаксис, използващ Lisp като пример

Един от най прости езиципрограмирането, което има официална граматика, се счита за списъчен език, наречен LISP.

Ориз. 10. Програма LISP

LISP е много стар език, който създава списъци. Граматиката на такъв език е граматика на списъци, прочетени отгоре надолу.

  • В Lisp има изрази: може да има един атом или списък;
  • атомът е число или символ,
  • число – число, тоест с плюс или минус цифра, поне едно,
  • символ – това са букви, колкото пъти искате, можете дори много пъти,
  • списък – списък, изрази в скоби повече от веднъж.

Програмата на Lisp е списък от списъци. В Lisp няма препинателни знаци, но има скоби. Може да има толкова дълги програми в Lisp, където в края има 2-3 листа, състоящи се само от затварящи скоби.

Най-простият интерпретатор на Lisp отнема само 19 реда! Никой друг език няма този лукс.

Семантика

Ако граматиката описва формите на представяне: букви, цифри, скоби, то семантиката описва как работи програмата, какво означават тези букви, цифри, скоби, как работят, взаимодействат помежду си и т.н.

Възможностите за представяне на семантика са доста ограничени.

Семантиката може да бъде:

  • описано на естествен, човешки език. Много езици могат да бъдат описани само по този начин. Всъщност това е основният случай, когато просто има документ, в който е описано на руски или английски, че това и това нещо работи по такъв и такъв начин, един екип прави това, друг прави това и това и т.н. ;
  • определени формално (в специализирани езици, например, за някои изчисления, поведението на елементите може да бъде описано формално);
  • дефиниран от оригиналната имплементация (рядко се използва, но това е „последната надежда“ за описание, когато семантиката е твърде сложна или не е много важна);
  • описан от набор от тестове (случаи), а именно, че трябва да работи по този начин и това трябва да работи по този начин.

Семантиката е разделена на две части:

  • статичен,
  • динамичен.

Статична семантика

  • осмисля лексикалните конструкции;
  • определя приемливи стойности на променливи и параметри;
  • описва синтактични ограничения, например с помощта на синтаксис няма да е възможно да се опише, че не можете да добавяте низове с числа.

Динамична или фронтална семантика по време на изпълнение

  • определя общия характер на изпълнение на програмата;
  • описва как работят вградените операции и вградените библиотеки. Това е основната част от семантиката, която е необходима, за да се разбере как програмата ще живее и работи след като бъде написана;
  • уточнява изискванията към преводача.

Система от типове данни в езиците за програмиране

Важна част от семантиката е системата от типове - набор от правила и изрази за методи, които са записани в идеологията на езика и как те взаимодействат помежду си.

Обикновено езикът за програмиране има система от типове данни - низове, числа, списъци и т.н. Има, например, езикът Force, където всички данни са само, с други думи, има езици, където типовете данни изобщо не са вградени.

Ако е налице система от типове, тогава езиците за програмиране могат да бъдат разделени на два независими класа, които са дадени по-долу.

Система за типове данни:

  • типизиран или нетипизиран език
  • статично или динамично писане
  • силно или слабо писане

Ако въвеждането е статично, тогава типовете на всички изрази, които са написани в програмата, са известни до момента на нейното изпълнение, тоест когато се описват функции, класове, променливи, тогава веднага се задават или изрично предоставят условия, така че видът на такава конструкция е известен от самото начало.

Ако типизирането е динамично, тогава, напротив, типът на обектите на контекстния език е неизвестен до момента на изпълнение, тоест типът на функция или нещо ще бъде неизвестен до самия край.

Силното типизиране означава, че ако даден обект има тип и той е известен, тогава този тип може да бъде заменен, но самият обект има фиксиран тип и не се променя.

При слабо въвеждане типът на обект може да бъде различен в зависимост от контекста и това, което правите с него.

Трябва да следите системата от типове на езика. Поради неправилно посочения тип само на един, не много забележим символ в началото на програмата, типът на целия израз се променя и следователно могат да се получат много странни грешки.

Следващия важна характеристикаезик -

Парадигма на езика за програмиране

  • от гръцки - шаблон, образец, образец;
  • това е система от идеи и концепции, които определят стила на писане на програми на този език - начинът, по който езикът включва писане на програми на него (wiki);
  • езикът „благоприятства“ една или повече парадигми (мултипарадигма).

Основни парадигми

  • императивен: програмата е набор от последователни инструкции, които променят вътрешното състояние на компютъра, данните и др. Тоест програмата е инструкция;
  • функционален: програмата е набор от математически функции. Работата на програмата е изчисляване на стойността на функциите;
  • обектно-ориентиран: предметната област се описва с помощта на обекти със свойства и методи. Програмата е процес на взаимодействие между обекти;
  • логично: програмата е набор от твърдения за предметната област. Работата на програмата е да установи истинността на твърденията за тази предметна област.

Често същият практически проблем може да бъде постигнат с помощта на някоя от изброените по-горе парадигми.

Друга важна част от езика, която трябва да имате предвид, когато използвате език, е Runtime - как работи езикът.

Runtime - изпълнение на програмата

Програмата може да се изпълнява по различни начини:

  1. Най-простият и наивен начин за изпълнение на програма е интерпретацията - четене на изходния код в момента на стартиране. Ето как работят леките скриптови езици. Самият програмист също работи: когато е написал програма, той гледа със собствените си очи собствената си програма и измисля как ще работи неговата програма и какво да прави;
  2. Често срещан начин за стартиране на програми е компилирането им в машинен код - отделна стъпкапреди стартиране. Има отделен инструмент - компилатор, където се четат програмните източници, прави се нещо с тях, преобразувайки ги в машинни кодове, които са разбираеми за текущата система. Тогава този код се изпълнява директно от хардуера;
  3. Хибридният метод е байтова компилация и изпълнение във виртуална машина. Компилаторът чете изходния код и след това произвежда байт код, който се изпълнява във виртуалната машина.

Изброените три метода са различни и се използват за различни цели. Тези техники могат да се комбинират - интерпретаторът може да компилира някои части от програмата в движение, за да работи по-бързо. Динамично генерираният код може да се интерпретира без компилация.

Представители на езици

C език

– един от най-популярните, един от най-важните от гледна точка на кода, физически написан върху него, на практика е „нашето всичко“.

Създаден е през 1972 г., създателите са Денис Ричи и колеги. Д. Ричи също създава Linux системаи много други полезни неща.

  • наложително,
  • компилиран,
  • ръчно управление на паметта (използвайки някои операции, вградени в езика, трябва да разпределите елементи от паметта на променливи и след това да ги освободите, когато вече не са необходими).

Между другото, C все още е актуален днес, използван за:

  • системно програмиране (например ядрото на Linux е написано на C),
  • разбиване на числа (така наречените трошачи на числа, т.е. за големи изчисления, където скоростта е важна),
  • програмиране на микроконтролери и вградени системи.

C е език на ниско ниво, можем да кажем, че това е асемблер с човешко лице, защото човек може ръчно да конвертира почти всяка C конструкция в асемблер и резултатите ще бъдат доста разбираеми операции.

C програмите са много компактни. Те не са много по-големи, отколкото ако подобни програми бяха написани на Асемблер. Освен това разработката в C е много по-бърза, отколкото в Assembly.

Следователно C сега се използва за задачи, при които се изисква производителност, управлението на паметта е много важно и голямо значениеима компактен обем на самата програма. Ако имате малък микроконтролер, който е вграден в някое устройство, тогава програмата за него най-вероятно ще бъде написана или на Assembly, или на C.

Ориз. 11. Пример за проста C програма.

Java

  • Създаден през 1995 г.,
  • създатели: Джеймс Гослинг и Sun Microsystems (Гослинг е работил за тази компания).
  • Обектно-ориентиран, императивен (C е императивен, но НЕ е обектно-ориентиран),
  • строго и статично типизирани,
  • байт-компилиран с виртуална машина,
  • няма достъп до паметта, автоматично събиране на боклука (последното работи добре, ако има една трета или една четвърт свободна памет).

През 90-те години JAVA придоби голяма популярност като мултиплатформен език. След като сте написали виртуална машина за определена платформа, да речем за Windows, Linux или Mac, можете да стартирате всякакви JAVA програми на нея без повторно компилиране. Следователно езикът беше популярен в уеб ерата, когато беше различни платформи(различен Windows версии, различни Mac-ове). JAVA програмите работеха бързо и доста добре на различни платформи.

Използва се за:

  • програмиране на приложения, включително уеб програмиране,
  • вградени системи (ако C се използва за микроконтролери, тогава JAVA се използва за мобилни телефони, терминали и др.),
  • високо натоварени системи с голям брой потребители (банкови програми, системи за контрол на въздушното движение и др.).

Спецификациите трябва да се разграничават език Javaи различни реализации на JVM:

  • Sun JDK (от Sun, сега Oracle),
  • IBM JDK (продава се за пари),
  • OpenJDK (напълно безплатно)
  • и така нататък.

Ориз. 12. Пример за проста програма в JAVA.

Както може да се види на фиг. 12, трябва да напишете много писма, за да завършите прости стъпки. Java често се нарича новият Cobol, защото съдържа същите отрицателни свойства, които някога са направили Cobol лош език.

Въпреки това JAVA е много популярна, по-специално клиентската част на операционната система е написана в нея.

Lisp

  • Той наистина свършва Лис T Ппроцесор (LisP);
  • създаден през 1958 г.;
  • създатели: Джон Маккарти;
  • чиста функционален език, въпреки доста странния синтаксис;
  • силно и динамично типизирано;
  • общо тълкуваем;
  • няма достъп до паметта, автоматично събиране на боклука, което пада върху интерпретатора, а не върху виртуалната машина.

Използва се за:

  • научно програмиране и изследвания;
  • изкуствен интелект – Lisp е създаден в самото начало чрез търсене с интелект. В края на 50-те и началото на 60-те години в научните среди имаше силно усещане, че изкуственият интелект е на път да бъде създаден. Тогава се смяташе, че Основни функцииизкуственият интелект ще може да оперира с естествен език, текст, да чете, говори и да прави някои интелигентни неща. Lisp е създаден да обработва семантични данни от текст; той ви позволява да правите такива неща добре;
  • всичко, но като правило не се използва много ефективно.

Езикът Lisp, разработен през 1958 г., е претърпял много промени.

Има много реализации и диалекти:

  • CommonLisp (създаден през 1970-те години) е класическа имплементация, която се счита за основна;
  • Схема (scheme) е опростен диалект, който изхвърля някои неща от CommonLisp и го прави по-лесен за изпълнение;
  • Clojure е диалект на Lisp по отношение на езика, но работи върху JAVA машина, тоест се компилира в байт код и се изпълнява, сякаш е JAVA програма.

Ориз. 13. Програма LISP: балонно сортиране

Python

  • Кръстен на британското шоу от 70-те години на миналия век Flying Circus на Monty Pynton (шегите са стари, но смешни)
  • създаден през 1991 г
  • създател – холандецът Гуидо ван Росум
  • многопарадигмен език, обектно-ориентиран, императивен, функционален
  • силно и динамично въведени
  • интерпретиран, байт-компилиран с виртуална машина (в зависимост от изпълнението)

Използва се за:

  • програмиране на скриптове
  • уеб програмиране
  • научно програмиране (има големи, мощни пакети за работа с моделиране, вероятност, статистика и други области, които съчетават опит, натрупан в други области)

Python е спецификация на езика. Има няколко основни реализации:

  • CPython - основен (справка)
  • Jython - върху JVM
  • PyPy – Python в Python („Python в Python“ работи по-бързо и по-добре от CPython и Jython)

Ориз. 14. Програма Python: Bubble Sort

Python има важна характеристика - вместо скоби (кръгли, къдрави), се използват вдлъбнатини, използващи интервали, за да се подчертаят кодови блокове и структурни елементи, което е доста необичайно за всички езици. Освен Python, почти никой няма тази функция.

Избор на език за задачата

Как да изберете език за задача, когато знаете какво трябва да направите, но не знаете на какво?

Важен съвет: използвайте това, което знаете как да програмирате. Това е много по-добре, отколкото да използвате нещо, което НЕ знаете как да програмирате.

Екосистема

Езикът, който искате да изучавате, не трябва да е „гол“ език, той трябва да има екосистема, която включва:

  • инструменти за разработка (удобна за потребителя IDE)
  • готови библиотеки и рамки
  • инструменти за тестване за изпълнение на тестови случаи: тестови рамки и инструменти
  • системи за опаковане и внедряване, така че написаният код да може да бъде пакетиран и публикуван някъде, така че другите да могат лесно да го използват. Езикът C няма тази функция, но езиците Ruby и Python имат.
  • общност. Няма нужда да използвате мъртви езици, колкото и готини да са те. Ако няма кого да попитате, ще останете в пълна задънена улица. Смята се, че някои общности са по-приятелски настроени, други по-малко. Например Ruby общността е страхотна, но Java общността е ужасна - дори не е нужно да питате нищо там.

Популярност

Трудно е да се намерят хора в екип, които пишат код на рядко използван език, например Eiffel. От друга страна, много хора ще се стичат към свободна позиция на мега популярния език JAVA, в който прагът за влизане е нисък, но няма да е лесно да се намерят хора, които го пишат наистина добре.

Колкото по-популярен е един език, толкова повече библиотеки, общности, рамки и други неща има, които растат сами отгоре.

Скорост на учене

Почти никой не знае напълно езика. Докато работите, ще трябва да учите езика все повече и повече. Някои езици са лесни за научаване, докато други са много трудни.

JAVA е език, който е лесен за научаване и прост в своите възможности, а след това всичко се изгражда не чрез езика, а чрез инструментите.

Невъзможно е да научите напълно C++, защото има много сложни неща с генерирането на код.

Ниша на езиците

Конкретните езици са по-подходящи за решаване на определени нишови проблеми.

Пример 1: уеб приложение, което

  • взаимодейства с базата данни
  • вътрешна служба във фирмата
  • Имаме нужда от бързо развитие, защото шефът наистина го иска.

За такава задача Python или Ruby най-вероятно ще бъдат подходящи. Няма нужда да правите това в JAVA

Пример 2: система за таксуване на мобилен оператор

  • хиляди операции в секунда, маса различни плащанияи преводи
  • висока надеждност и устойчивост на грешки
  • гъвкавост в конфигурацията, диагностика на проблеми

В този случай нашият избор е Java, C++, Erlang - богати езици с богати инструменти.

Пример 3: код на бордовия компютър за сателит

  • ограничени ресурси (само мегабайти памет и много ниска тактова честота)
  • твърд реално времетака че сателитът да не загуби ориентация, да се повреди или да експлодира
  • строго известни задачи, без гъвкавост и без настройки
  • голям брой изчисления

Нашият избор е C и C-подобни езици (и дори асемблер), защото има много малко ресурси и тези изисквания трябва да бъдат изпълнени.

Статията е базирана на видеоклипа:

Как да изберем правилния език за програмиране - Иван Калинин

Видеото е заснето през декември 2014 г., но цялата информация е актуална и няма давност. Много материали от гледна точка на днешните реалности представляват несъмнен интерес, например, че учените в края на 50-те - началото на 60-те години на миналия век са вярвали, че изкуственият интелект вече е на прага и с негова помощ скоро ще бъде възможно да се работи на компютър с естествен, обикновен, човешки език.



Свързани публикации