Кратка история на езиците за програмиране. Езици за програмиране: защо се появиха, видни представители, как да изберем език

Забележка 1

За да работят първите програми, беше необходимо да се настроят ключове на предния панел на изчислителното устройство. Естествено, само малки програми могат да бъдат написани по този метод. Един от първите опити за създаване на пълноценен език за програмиране е направен от немския учен Конрад Цузе, който през периода 1943-1945г. развива езика планкалкул. Планкалкул беше много обещаващ език, който всъщност беше език на високо ниво, но по време на войната не получи правилно практическо приложение и описанието му беше публикувано едва през 1972 г.

машинен код. асемблер

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

За да се улесни работата на програмистите в края на 40-те години. е разработен език асемблер. Вместо двоични числа, които означават всяка команда, бяха написани кратки думи или съкращения. Асемблерът се счита от програмистите за език за програмиране от ниско ниво, тъй като е близък до езика от най-ниско ниво, машинния език. Програмите, написани на асемблер, пряко зависят от характеристиките на конкретен процесор, поради което се нарича машинно-ориентиран език.

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

Алгоритмични езици

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

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

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

Забележка 2

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

Структурирано програмиране

През 1954 г. започва разработването на първия езиков компилатор на високо ниво. Две години по-късно се появява езикът Fortran (FORmula TRANslator – „преводач на формули“). Езикът съдържаше функции, които значително опростяваха разработката, но програмирането във Fortran не беше лесна задача: ако в кратките програми се разбираше лесно, то когато ставаше дума за големи програми, езикът ставаше нечетлив. Въпреки това езикът беше доста успешен и бяха пуснати много версии.

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

В продължение на десет години са създадени доста голям брой нови езици:

  1. Algol (1958) е предназначен да пише алгоритми, които са съставени от отделни блокове;
  2. Cobol (1959) е използван за обработка на масивни данни в администрацията и бизнеса;
  3. Basic (1965) ви позволява да пишете прости програми, използван е за преподаване на основите на програмирането.

Много малко от създадените езици са структурирани. Създадени са и специализирани езици: Lisp, Prolog, Forth и др. Особено внимание заслужава Pascal (1970), кръстен на учения Блез Паскал, който е бил използван както за учене, така и за решаване на проблеми с различна сложност. Програмите на Pascal са лесни за четене, което ви позволява бързо да намирате и коригирате грешки и е добре структурирано. Всичко по-горе доведе до широкото му използване и дори днес се използва активно в образователните институции.

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

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

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

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

OOP включва следните основни понятия:

  • клас- модел на обект, който все още не съществува. Всъщност това е диаграма на обект, описваща неговата структура.
  • Предмет– екземпляр на клас, обект в адресното пространство на изчислителна система, който се появява при създаване на екземпляр на клас.
  • Абстракция- присвояване на даден обект характеристики, които ясно определят неговите граници, които го отличават от всички други обекти. Основната идея е да се раздели начина, по който се използват композитни обекти от данни от детайлите на тяхното изпълнение като по-прости обекти.
  • Капсулиране- комбиниране на свойства (данни) и методи (подпрограми) в клас, за да се скрият данните на обект от останалата част от програмата и да се осигури целостта и независимостта на обекта (промяната на свойствата на обект е възможна само чрез специални клас методи).
  • Наследство- езиков механизъм, който ви позволява да опишете нов клас на базата на съществуващ клас (или класове) с добавяне на нови свойства и методи.
  • Полиморфизъм– свойство на системата да използва обекти с един и същ интерфейс, без да получава информация за нейния тип и вътрешна структура.

Забележка 3

През 1967 г. се появява езикът Simula – първият език за програмиране, в който са предложени принципите на обектната ориентация. Той подкрепяше работата с обекти, класове, виртуални методи и т.н., но всички тези характеристики не получиха достойна оценка от съвременниците. Повечето от тези концепции обаче бяха включени от Алън Кей и Дан Ингалс в езика Smalltalk, който стана първият широко разпространен обектно-ориентиран език за програмиране.

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

Интернет развитие

С развитието на технологията WWW (World Wide Web) Интернет стана много популярен. Създаден е голям брой помощни езици за осигуряване на достъп до Интернет, дизайн на уебсайтове, достъп до ресурси и др.

Perl, интерпретиран език, става широко разпространен и се отличава със своята простота и лесна преносимост към други платформи. Той е предназначен за писане на приложения и CGI скриптове с различна сложност. Езикът Java също е широко използван и играе значителна роля в развитието и функционирането на Интернет.

През 1970-те години Появи се езикът SQL - структуриран език за заявки, който е създаден за достъп и работа с бази данни.

За писане на кодове за уеб страници е разработен езикът за маркиране на хипертекст HTML, който съдържа команди за маркиране и декориране на текст и графики. За да направим сайта по-привлекателен и функционален, ние използваме:

  • JavaScript скриптове, които се изпълняват в уеб браузъра на потребителя и се използват предимно за подобряване на външния вид и усещането на сайта и за изпълнение на незначителни задачи.
  • PHP скриптове, които се изпълняват от страната на сървъра и изпращат вече обработена информация до браузъра на потребителя. Използват се за създаване на динамични HTML страници, книги за гости, форуми и анкети.
  • CGI скриптовете, които са написани предимно на Perl, C/C++, се изпълняват от страна на сървъра и зависят от конкретни действия на потребителя. Те се използват, подобно на PHP скриптове, за създаване на динамични HTML страници, книги за гости, форуми и анкети.

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

Към езика ФОРТРАНимаше изисквания за създаване на високоефективен код. Следователно, много езикови конструкции първоначално са разработени, като се вземе предвид архитектурата на IBM 407. Успехът на разработването на този език доведе до факта, че производителите на други изчислителни системи започнаха да създават свои собствени версии на преводачи. С цел някакво възможно обединение на езика по това време, езикът FORTRAN IV, разработен през 1966 г., става първият стандарт, наречен FORTRAN 66.

Като алтернатива на езика FORTRAN, първоначално фокусиран върху архитектурата на IBM, ALGOL (АЛГОритмичен език) е разработен под ръководството на Питър Наур в края на 50-те години. Основната цел, преследвана от разработчиците на този език, беше независимост от специфичната архитектура на изчислителната система. Освен това създателите на езика ALGOL се стремят да разработят език, който е удобен за описване на алгоритми и използва нотация, близка до тази, възприета в математиката.

Езиците FORTRAN и ALGOL бяха първите езици, ориентирани към програмиране.

език PL/I, чиито първи версии се появиха в началото на 60-те, първоначално беше фокусиран върху IBM 360 и разшири възможностите на езика FORTRAN с някои характеристики на езика COBOL, разработен през същите години. Въпреки известната популярност на езика PL / I сред програмистите, които са работили върху компютрите на IBM и машини от серията EC, в момента той представлява чисто теоретичен интерес.

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

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

Универсален език за програмиране Се разработена в средата на 70-те от Денис Ричи и Кен Томпсън. Този език се превърна в популярен език за системно програмиране и някога е бил използван за писане на ядрото на операционната система UNIX. Езиковият стандарт C започва да се разработва от работна група на Института по стандарти ANSI през 1982 г. Международният стандарт за езика C е приет през 1990 г. Езикът C формира основата за развитието на езиците за програмиране C++ и Java.

Наред с алгоритмичните езици, паралелно се развиват езици, предназначени за обработка на бизнес информация, както и езиците на изкуствения интелект. Първият е COBOL (общ бизнес ориентиран език), а вторият е езиците COBOL. LISP(Обработка на списък) и Пролог. Езикът LISP, разработен през 60-те години под ръководството на Дж. Маккарти, е първият функционален език за обработка на списъци, който намира широко приложение в теорията на игрите.

С появата на персоналните компютри езиците се превърнаха в неразделна част от интегрираната среда за разработка. Има езици, използвани в различни офис програми, като VBA (Visual Basic за приложения).

През 90-те години, с разпространението на Интернет, възможността за разпределена обработка на данни се разширява, което се отразява в развитието на езиците за програмиране. Има езици, фокусирани върху изграждането на сървърни приложения, като напр Java, Perlи PHP, езици за описание на документа - HTMLи XML. Традиционните езици за програмиране C++ и Pascal също претърпяват промени: езикът за програмиране започва да означава не само функционалността на самия език, но и библиотеките на класовете, предоставени от средата за програмиране. Акцентът се измества от спецификацията на самите езици за програмиране към стандартизирането на механизмите за взаимодействие на разпределените приложения. Появяват се нови технологии – COM и CORBA, които определят взаимодействието на разпределените обекти.

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

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

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

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

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

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

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

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

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

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

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

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

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

Колата на Бабидж

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

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

  • JavaScript.

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

Някои съществуващи езици с появата на интернет и мрежата са намерили нови ниши и са станали уеб ориентирани:

  • рубин,
  • пинтон,
  • Java.

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

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

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

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

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

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

Езикът е

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

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

Синтаксис на примера на Lisp

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

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

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

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

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

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

Семантика

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Програмата може да работи по различни начини:

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

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

Езикови представители

C език

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

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

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

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

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

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

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

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

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

Java

  • Създаден през 1995 г.,
  • създатели - Джеймс Гослинг (James Gosling) и Sun Microsystems (Gosling работи в тази компания).
  • Обектно-ориентиран, императивен (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

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

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

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

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

Той има множество реализации и диалекти:

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

Ориз. 13. Програма LISP: Bubble Sort

Python

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

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

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

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

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

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

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

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

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

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

Екосистема

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

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

Популярност

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

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

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

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

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

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

Нишови езици

Специфичните езици са по-подходящи за определени нишови задачи.

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

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

За такава задача най-вероятно ще се справят Python или Ruby. Не го правете в JAVA

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

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

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

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

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

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

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

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

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

Позволете ми да подчертая някои общи тенденции в развитието на езиците за програмиране. Проницателният читател вероятно отдавна е отгатнал какво ще кажа. Езиците се развиват към все повече и повече абстракция. И това е придружено от спад в ефективността. Въпрос: струва ли си абстракцията? Отговор: струва си. Струва си, защото повишаването на нивото на абстракция води до повишаване на нивото на надеждност на програмирането. Ниската ефективност може да се бори чрез изграждане на по-бързи компютри. Ако изискванията за памет са твърде високи, можете да увеличите количеството. Това, разбира се, изисква време и пари, но може да бъде решено. Но има само един начин за справяне с грешките в програмите: те трябва да бъдат коригирани. Още по-добре, не го правете. Още по-добре, направете ги възможно най-трудни. И към това са насочени всички изследвания в областта на езиците за програмиране. И трябва да се примирите със загубата на ефективност.

Целта на този преглед беше опит да се даде на читателя представа за разнообразието от съществуващи езици за програмиране. Сред програмистите често има мнение за "универсалната приложимост" на определен език (C, C ++, Pascal и др.). Това мнение възниква поради няколко причини: липса на информация, навик, инертност на мисленето. Опитах се леко да компенсирам първия фактор. За останалото мога само да кажа, че истинският професионалист трябва непрекъснато да се стреми да подобрява професионалните си умения. И за това не е нужно да се страхувате да експериментирате. И така, ако всички наоколо пишат на C/C++/VB/Pascal/Perl/Java/... (подчертайте според случая)? Защо не опитате нещо ново? Това ще бъде ли по-ефективно? Разбира се, преди да започнете да използвате нов език, трябва внимателно да проучите всички негови характеристики, включително наличието на ефективна реализация, възможността за взаимодействие със съществуващите модули и т.н., и едва след това да вземете решение. Разбира се, винаги има риск да тръгнете по грешен път, но... Само този, който не прави нищо, не греши.

И по-нататък. Чувал съм и понякога дори съм участвал в дискусии под формата „език А е по-добър от език Б“. Надявам се, че след като прочетат този преглед, мнозина ще се убедят в безполезността на подобни спорове. Максимумът, който може да се обсъди, са предимствата на един език пред друг при решаване на конкретен проблем при определени условия. Тук наистина понякога има за какво да се спори. И понякога решението в никакъв случай не е очевидно. Въпреки това, спорът „като цяло“ е очевидно глупав.

Тази статия имаше за цел да бъде отговор на онези, които крещят „Езикът X ТРЯБВА ДА УМРЕ“. Надявам се, че отговорът се е оказал доста адекватен и убедителен. Надявам се също, че статията има освен полемическа и образователна стойност.

>> статии

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Наследяване;

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

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

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



Свързани статии: