Класификация на езиците за програмиране. Указания при програмиране Видове и видове езици за програмиране

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

Съществуващите програмни езици могат да бъдат разделени на две групи: процедурни и непроцедурни (вж. Фигура 4.1).

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

Процедурните езици се делят на езици на ниско и високо ниво.

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

Фигура: 4.1. Обща класификация на езиците за програмиране

Езиците с ниско ниво (машинно ориентирани) ви позволяват да създавате програми от машинни кодове, обикновено в шестнадесетична форма. С тях е трудно да се работи, но програмите, създадени с тяхна помощ от висококвалифициран програмист, заемат по-малко място в паметта и работят по-бързо. Използвайки тези езици, е по-удобно да се разработват системни програми, драйвери (програми за управление на компютърни устройства) и някои други видове програми.

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

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

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

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

Всички преводачи работят в съответствие с един от двата принципа: тълкуване или компилация.

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

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

Кога компилация процесите на превод и изпълнение се разделят във времето: първо, оригиналната програма се превежда изцяло на машинен език (след което присъствието на преводач в RAM става ненужно), а след това преведената програма може да бъде изпълнена много пъти. Следователно, за същата програма, преводът чрез метод на компилация осигурява по-висока производителност на изчислителната система, като същевременно намалява необходимата RAM.

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

Получената компилирана програма се извиква обект модул, което е еквивалентна програма в машинните кодове, но не е „обвързано“ с конкретни адреси на RAM. Следователно, преди изпълнението, обектният модул трябва да бъде обработен от специална програма на операционната система (редактор на връзки) и преобразуван в модул за зареждане.

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

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

Принципно различна посока в програмирането е свързана с методологии (понякога наричани „парадигми“) на непроцедурно програмиране. Те включват обектно-ориентирано и декларативно програмиране. Обектно-ориентираният език създава среда под формата на множество независими обекти. Всеки обект се държи като отделен компютър, те могат да се използват за решаване на проблеми като „черни кутии“, без да се задълбочават във вътрешните механизми на тяхното функциониране. От езиците за обектно програмиране, популярни сред професионалистите, на първо място трябва да се спомене C ++; за по-широк кръг програмисти се предпочитат среди като Delphi и Visual Basic.

Когато използва декларативен език, програмистът посочва първоначалните информационни структури, връзките между тях и какви свойства трябва да има резултатът. В същото време програмистът не изгражда процедура за получаването му ("алгоритъм") (поне в идеалния случай). На тези езици липсва понятието „оператор“ („команда“). Декларативните езици могат да бъдат разделени на две семейства - логически (типичен представител е Prolog) и функционален (Lisp).

Нека характеризираме най-известните езици за програмиране.

1.Фортран (FORmula TRANSlating system - система за превод на формули); най-старият език, използван активно и до днес при решаване на проблеми с математическа ориентация. Е класически език за компютърно програмиране на математически и инженерни задачи

2.ОСНОВЕН (Код за универсални символни инструкции за начинаещи - универсален символичен код за инструкции за начинаещи); въпреки многото недостатъци и изобилието от лошо съвместими версии - най-популярният по отношение на броя потребители. Широко използван при писане на прости програми.

3.АЛГОЛ (ALGOrithmic Language - алгоритмичен език); изигра голяма роля на теория, но сега почти никога не се използва за практическо програмиране.

4.PL / 1 (PL / 1 Programming Language е първият език за програмиране); многофункционален език; почти никога не се използва сега.

5.Паскал (Паскал - кръстен на учения Блез Паскал); изключително популярен както при изучаване на програмиране, така и сред професионалисти. Създаден в началото на 70-те години от швейцарския учен Никлаус Вирт. Паскал първоначално е разработен като образователен език и всъщност сега е един от основните езици за преподаване на програми в училища и университети. Качествата му в съвкупността обаче се оказаха толкова високи, че професионалните програмисти също го използват с желание. Филип Кан, французите, които разработиха системата Турбо-Паскал, постигна не по-малко впечатляващ, включително и финансов успех. Същността на идеята му беше да комбинира последователните етапи на обработка на програмата - компилация, редактиране на връзки, отстраняване на грешки и диагностика на грешки - в един интерфейс. Версии на Turbo-Pascal заляха почти всички образователни институции, програмни центрове и частни фирми. На основата на езика Паскал са създадени няколко по-мощни езика (Modula, Ada, Delphi).

6.Кобол (COmmon Business Oriented Language - език, фокусиран върху общия бизнес); до голяма степен излезе от употреба. Замислен е като основен език за масова обработка на данни в области на управление
и бизнес.

7.ADA; е език-победител (май 1979 г.) в Универсалния езиков конкурс на Пентагона от 1975 г. Разработчиците са група учени, ръководени от Жан Ихбия. Печелившият език беше наречен ADA, по името на Августа Ада Лавлейс. Езикът ADA е прекият наследник на езика
Паскал. Този език е предназначен за създаване и дългосрочна (дългосрочна) поддръжка на големи софтуерни системи, дава възможност за паралелна обработка, управление на процеси в реално време и много други, което е трудно или невъзможно да се постигне с помощта на по-прости езици.

8.Si (С - "si"); се използва широко при разработването на системен софтуер. Той остави голям отпечатък върху съвременното програмиране (първа версия - 1972 г.), е много популярен сред разработчиците на софтуерни системи (включително операционни системи). C съчетава функциите както на език на високо ниво, така и на машинно ориентиран език, позволявайки на програмиста да има достъп до всички машинни ресурси, които езици като BASIC и Pascal не предоставят.

9.C ++ (C ++); обектно-ориентирано разширение на езика C, създадено от Bjarne Stroustrup през 1980 г. Много мощни нови функции, които значително подобриха производителността на програмистите, бяха насложени върху определено ниско ниво, наследено от езика C.

10.Делфи (Делфи); език на обектно-ориентирано "визуално" програмиране; изключително популярен в момента. Създаден на базата на Pascal от специалисти на Borland, езикът Delphi, притежаващ силата и гъвкавостта на езиците C и C ++, ги превъзхожда по отношение на удобството и простотата на интерфейса при разработване на приложения, които осигуряват взаимодействие с бази данни и поддържат различни видове работа в корпоративните мрежи и Интернет ...

11.Java (Java); Независим от платформа обектно-ориентиран програмен език, който е изключително ефективен за създаване на интерактивни уеб страници. Този език е създаден от Sun в началото на 90-те години на базата на C ++. Той е предназначен да опрости разработването на приложения, базирани на C ++, като изключи от него всички функции на ниско ниво.

12.Лисп (Lisp) е функционален език за програмиране. Той е фокусиран върху структурата на данните под формата на списък и ви позволява да организирате ефективна обработка на големи количества текстова информация.

13.Пролог (Програмиране в LOGic - логическо програмиране). Основната цел на езика е разработването на интелигентни програми и системи. Prolog е език за програмиране, създаден специално за работа с бази от знания, базирани на факти и правила (един от елементите на системите за изкуствен интелект). Езикът прилага механизъм за обратно проследяване за извършване на обратна верига на разсъждения, при който се приема, че някои заключения или заключения са верни, а след това тези предположения се проверяват в база от знания, съдържаща факти и правила за извод.
Ако предположението не е потвърдено, се извършва връщане и ново предположение се усъвършенства. Езикът се основава на математически модел на теорията на предикатното смятане.

Езици за програмиране за Интернет:

1. HTML.Добре известен език за документи. Той е много прост и съдържа основни команди за форматиране на текст, добавяне на снимки, задаване на шрифтове и цветове, организиране на връзки и таблици.

2. ПЕРЛ.Той е замислен като инструмент за ефективна обработка на големи текстови файлове, генериране на текстови отчети и управление на задачи.
Perl е много по-мощен от езици като C. Той съдържа много често използвани функции за работа със низове, масиви, управление на процесора и работа със системна информация.

3. Tcl / Tk.Този език е фокусиран върху автоматизацията на рутинните процеси и се състои от мощни команди. Той е независим от системата и в същото време ви позволява да създавате програми с графичен интерфейс.

4. VRML.Създаден за организиране на виртуални 3D интерфейси в Интернет. Тя ви позволява да описвате в текст под формата на различни триизмерни сцени, осветление и сенки, текстури.

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

Контролни въпроси

1. Какво представляват системите за програмиране и към какъв клас програми принадлежат?

2. Какво е включено в системите за програмиране?

3. На кой език за програмиране са създадени първите програми?

4. На какви езици се делят процедурните езици?

5. Опишете езици на ниско ниво.

6. Кой език е език на ниско ниво?

7. Предимства на езиците на ниско ниво.

8. Опишете езици на високо ниво.

9. Предимства на езиците на високо ниво.

10. Дайте примери за езици на високо ниво.

11. За какво са преводачите?

12. Каква е разликата между компилатор и интерпретатор?

13. Недостатъци в тълкуването (като вид преводач).

14. Какъв е процесът на съставяне на програма?

15. Какви действия се извършват по време на компилацията?

16. Каква е разликата между товарен модул и обектен модул?

17. Каква е разликата между процедурно програмиране и непроцедурно програмиране?

18. Какви видове програмиране са непроцедурни
програмиране?

19. Характеристика на декларативните езици.

20. Опишете накратко езиците за програмиране: Fortran, BASIC, Pascal, Cobol.

21. Опишете накратко езиците за програмиране: Ada, C, C ++, Delphi, Java.

22. Дайте примери за обектно-ориентирани езици.

23. Към кой клас езици принадлежи Lisp?

24. Към кой клас езици принадлежи езикът Prolog?


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

Процедурните езици за програмиране включват: Ada, Basic (версии от Quick Basic до Visual Basic), C, COBOL, Fortran, Modula-2, Паскал, PL / 1, Рапира, REXX.

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

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

Обектите означават обединение на данните и процедурите, които ги обработват в едно цяло. Обектите могат да обменят съобщения помежду си. Когато обектът получи съобщение, съответният манипулатор се стартира, иначе извикан метод... Обектът има асоциативен контейнер, който ви позволява да получавате чрез съобщение метода му за обработка. Освен това обектът има предшественик. Ако не бъде намерен метод за обработка на съобщението, съобщението ще бъде препратено към родителския обект. Тази структура като цяло (таблица с манипулатори + предци) от съображения за ефективност е разпределена в отделен обект, наречен клас на този обект. Самият обект ще има препратка към обекта, представляващ неговия клас. Обектите си взаимодействат изключително чрез изпращане на съобщения един към друг.

Важно е да се подчертаят следните три основни свойства на обектите.

Капсулиране (защита на данните) - механизъм, който комбинира данни и методи, които манипулират тези данни, и предпазва и двете от външна намеса.


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

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

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

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

Логическо програмиране въз основа на математическа логика. Но най-известният език за програмиране на логиката е Prolog. Програмата PROLOGUE съдържа два компонента: факти и правила. Фактите представляват данните, с които програмата работи, а съвкупността от факти съставлява базата данни PROLOGUE, която всъщност е релационна база данни. Основната операция, извършена върху данни, е операция за съвпадение, наричана още операция за обединяване или съгласуване.

Що се отнася до други декларативни езици, при работа с него програмистът описва ситуацията (правила и факти) и формулира целта (заявката), позволявайки на интерпретатора PROLOGUE да намери решение на проблема за него. Интерпретаторът PROLOG се разбира като механизъм за решаване на проблем с помощта на езика PROLOGUE. Програма ПРОЛОГ е набор от факти и (евентуално) правила. Ако една програма съдържа само факти, тогава тя се нарича база данни. Ако той също съдържа правила, тогава терминът база знания често се използва.

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

Въпроси за самопроверка

1. Какво е програма? Какво се разбира под изпълнител?

2. Какво е машинен код?

3. Какво е преводач? Избройте видовете преводачи.

4. Как работи преводачът? Какви са неговите предимства?

5. Какво е предимството на компилаторите?

6. Какви компоненти са включени в интегрираната система за програмиране?

7. Какво се разбира под структура на данните, каква е класификацията на структурата на данните?

8. Какво се разбира под масиви от данни и какви операции могат да се извършват с тях?

9. Какви са алгоритмите за сортиране на масиви?

10. Каква е целта на подпрограмите?

11. За какво служи библиотеката с рутинни процедури?

12. Какви видове програмиране има?

Литература

1. Ставровски А.Б., Карнаух Т.А. Първи стъпки към програмирането. Ръководство за самообучение. - М.: Уилямс, 2006. - 400 с.

2. Окулов С. Основи на програмирането Издател: Бином. Лаборатория на знанието, 2008. - 383 с.

3. Канцедал С.А. Основи на алгоритмизацията и програмирането. - М.: Форум, 2008. - 351 с.

4.httn // www myfreesoft ru / default-windows-nroprams html - стандартни програми за Windows

5.httn // khni-iin mink kharkiv edu / lihrary / datastr / hook / nrt01 html # lb11 - модели и структури от данни

6.httn: //www.intuit.ru/denartment/se/nhmsu/11/3.html#sect5 - модели и структури от данни

7. http: //inf.1sentemher.ru/2007/15/00.htm - енциклопедия на учител по информатика

8. http: //www.delnhi.int.ru/articles/119/ - подпрограми.

9.httn // inroc ru / narallel-nroPramminP / lection-5 / - сортиране на купчина.

1. Въведение

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

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

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

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

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

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

· Функция: език за програмиране е предназначен за писане на компютърни програми, които се използват за предаване на инструкции на компютър за извършване на определен изчислителен процес и организиране на управлението на отделни устройства.

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

· Екзекуция: език за програмиране може да използва специални конструкции за дефиниране и манипулиране на структури от данни и контрол на процеса на изчисление.

3. Етапи на решаване на проблема на компютър.

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

Формулиране на проблема. Този етап се състои в основната (физическа) формулировка на проблема и определянето на крайните решения.

Изграждане на математически модел. Моделът трябва правилно (адекватно) да описва основните закони на физическия процес. Изграждането или изборът на математически модел от съществуващите изисква задълбочено разбиране на проблема и познаване на съответните раздели на математиката.

Развитие на Световната купа. Тъй като компютърът може да извършва само най-простите операции, той „не разбира“ постановката на проблема, дори в математическа формулировка. За да се разреши, трябва да се намери числов метод, който позволява проблемът да бъде сведен до някакъв изчислителен алгоритъм. Във всеки случай е необходимо да се избере подходящо решение от вече разработените стандартни.

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

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

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

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

Анализ на резултатите.Резултатите от изчисленията се анализират внимателно, изготвя се научно-техническа документация.

4. За какво са езиците за програмиране?

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

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

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

Езиците на ниско ниво включват асемблерни езици (от английски toassemble - за събиране, сглобяване). Асемблерният език използва символни обозначения за команди, които са лесни за разбиране и бързо запомняне. Вместо последователност от двоични кодове на команди се изписват техните символни обозначения, а вместо адресите на двоични данни, използвани при изпълнение на командата, символните имена на тези данни, избрани от програмиста. Езикът за асемблиране понякога се нарича mnemocode или autocode.

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

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

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

Какви енкодери са най-търсени у нас?

Ако кажете на обикновен човек, че работите като програмист, в отговор можете да чуете една от следните забележки:

  • „Трябва да преинсталирам Windows. Цял живот чакам някой, който ще направи това вместо мен. И тогава да отидем да оправим тостера. ”;
  • "ОТНОСНО! Можете да ми помогнете с лабораторията на VBA! “;
  • „Колко можете да направите уебсайт за магазина на майка ми?“;
  • "Ааа! Скучна и глупава професия. Опитах се по някакъв начин да се справя с 1С ... ".

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

В крайна сметка много хора не знаят какво всъщност правят програмистите и преценяват това по уменията на своите роднини / познати. Но различни представители на специалността правят съвсем различни неща и не можете да говорите за всеки.

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

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

1. Преден уеб разработчик

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

Къде работи?

Какво прави той?

Проектира динамиката на потребителския интерфейс. Ако компанията няма дизайнер на оформление, тя също така превежда PSD шаблоните в HTML код.

Технология

  • HTML и UI рамки (Bootstrap, Foundation, Pure);
  • CSS и препроцесори (SASS / LESS);
  • JavaScript + рамки / библиотеки на този език (Jquery, ReactJS, AngularJS, BackboneJS);
  • Помощни програми за строителни проекти (Grunt, Gulp, Bower).

2. Back-end разработчик

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

Къде работи?

В сериозни компании, занимаващи се със създаване на уеб сайтове и уеб приложения. Разделянето на front-end и back-end е един от признаците, че една компания има определено ниво на култура на развитие.

Какво прави той?

Разработва "ядрото" на сайта или уеб приложението: кода, изпълнен на сървъра и архитектурата на базата данни.

Технология

Един от следните езици и рамки / библиотеки за него:

  • Рубин;
  • Python;
  • Java;
  • JavaScript.
  • Бази данни MySQl / PostgreSQL / NoSQL.

3. Уеб разработчик с пълен стек

Човек, който може да направи уебсайт с всякаква сложност „отвътре и отвън“.

Къде работи?

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

Какво прави той?

Уеб сайтове и уеб приложения. Изпълнява едновременно разработчици отпред и отзад.

Вижте списъци с предишните два типа.

4. Разработчик на игри

Много широко понятие, което включва поне три големи категории: разработчик на настолни игри, разработчик на мобилни игри и разработчик на MMORG.

Къде работи?

В игрални студия.

Какво прави той?

Разработва игри.

Какви технологии иска да знае?

  • C # / C ++ / Java;
  • Open GL или DirectX;
  • Един от двигателите на играта (Unity, Unreal Engine, Torque и други).

5. Разработчик на приложения за Android

Къде работи?

Какво прави той?

Разработва приложения за операционната система Android.

Какви технологии иска да знае?

  • Java;
  • Android SDK;
  • OpenGL;
  • Android Studio.

6. Разработчик на iOS приложения

Къде работи?

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

Какво прави той?

Разработва приложения за операционната система iOS.

Технология

  • Цел-C;
  • Xcode;
  • OpenGL;
  • Какао Touch;
  • CoreData;
  • CoreGraphics.

7. Програмист 1С

Много разработчици не считат езика, вграден в 1С, за език за програмиране, а хората, които пишат на него, са програмисти. Те имат свои причини за това. Независимо от това, има много хора, които се наричат \u200b\u200bпрограмисти 1С и има много свободни места за тях.

Къде работи?

Във всяка компания, която активно извършва икономическа дейност. Често не е включен в основния персонал, но идва няколко пъти в месеца или по-малко.

Какво прави той?

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

Технология

  • „1С: Управление на търговията“;
  • "1в счетоводство";
  • „1С: Заплата и персонал“;
  • T-SQL.

8. Софтуерен инженер

Ако можете да станете един от 7-те предишни типа, като посещавате курсове или чрез самообразование, тогава само технически университети завършват софтуерни инженери. Често тези длъжности заемат хора на възраст над четиридесет години, които са получили образование по времето на СССР.

Къде работи?

В производство или в научна институция.

Какво прави той?

Разработва програми за управление на голямо разнообразие от устройства: от фурни в пекарна до робот прахосмукачка.

Технология

Един от следните езици:

  • Java;
  • Делфи (живял, жив и ще живее!);
  • Асемблер.

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

Ако разгледате рекламите за наемане на програмисти на руски сайтове, тогава 90% от тях ще отговарят на тези седем типа. На Запад пазарът на труда е малко по-разнообразен. Всеки желаещ може да отиде в Одеск и да види каква работа се предлага там.

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

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

P.S. И накрая, житейски анекдот по темата.

Ако шофьорите са наети по същия начин като програмистите:
Вакантно място: шофьор.
Изисквания: професионални умения за управление на леки и товарни автомобили, тролейбуси, трамваи, метро и фуникулярни влакове, багери и булдозери, специални превозни средства на верижни шасита, бойни машини на пехотата и модерни леки / средни танкове в експлоатация на страните от ОНД и НАТО. Изискват се умения за рали и екстремно шофиране. Опитът в управлението на автомобили от Формула 1 е плюс. Знания и опит в ремонта на бутални и ротационни двигатели, автоматични и ръчни трансмисии, системи за запалване, бордови компютри, антиблокиращи спирачни системи, навигационни системи и автомобилни аудио системи от водещи производители. Опитът в каросерията и бояджийските работи е добре дошъл. Кандидатите трябва да имат сертификати от Mercedes, BMW, General Motors, както и сертификати за участие в големи международни състезания преди не повече от две години.
Заплата: определя се въз основа на резултатите от интервюто.

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

Представям ви преглед на 25 известни езика за програмиране. От най-известните до най-малко популярните. Статията е направена за начинаещи в областта на програмирането. Можете да прочетете за всеки език и да изберете този, който ви харесва най-много за учене.

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

1. JavaScript

Ориентиран към прототип скриптов език. JavaScript първоначално е създаден, за да направи уеб страниците „на живо“. В браузъра те се свързват директно с HTML и веднага след като страницата се зареди, те незабавно се изпълняват.

Когато JavaScript беше създаден, той първоначално имаше друго име: "LiveScript". Но тогава езикът Java беше много популярен и търговците решиха, че подобно име ще направи новия език по-популярен.

Предвиждаше се JavaScript да бъде един вид „по-малък брат“ на Java. Историята обаче е решила по свой начин, JavaScript е нараснал много и сега е напълно независим език, със собствена спецификация и няма нищо общо с Java.

2. Java


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

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

Първоначално наречен Oak, езикът е разработен от James Gosling за програмиране на потребителски електронни устройства. По-късно е преименуван на Java и е използван за писане на клиентски приложения и сървърния софтуер.

3. PHP


Това е общ интерпретиран език с отворен код за общо предназначение (скриптов език). PHP е създаден специално за уеб разработка и кодът върху него може да бъде вграден директно в HTML код. Синтаксисът на езика произхожда от C, Java и Perl и е лесен за научаване.

Основната цел на PHP е да предостави на уеб разработчиците възможността бързо да създават динамично генерирани уеб страници, но PHP не се ограничава само до това.

4. Python

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

5. C #


Обектно-ориентиран език за програмиране. Разработен през 1998-2001 г. от група инженери, водени от Андерс Хейлсбърг в Microsoft като език за разработка на приложения за платформата Microsoft .NET Framework. C # принадлежи към семейство езици с C-подобен синтаксис, от които синтаксисът му е най-близък до C ++ и Java.

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

6. C ++


Компилиран, статично въведен език за програмиране с общо предназначение. Това е един от най-говоримите езици в света. Google Chrome, Mozilla Firefox, Winamp и продуктовата линия на Adobe са разработени с C ++. В допълнение, някои съвременни игри и операционни системи са разработени в C ++ поради бързата им скорост на обработка и компилация.

7. Рубин


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

Основната цел на Ruby е да създава прости и в същото време разбираеми програми, при които не е важна скоростта на програмата, а краткото време за разработка, яснотата и простотата на синтаксиса. Езикът следва принципа на „най-малката изненада“: програмата трябва да се държи така, както програмистът очаква.

8. CSS


Каскадни таблици със стилове Официален език за описване на външния вид на документ, написан с помощта на език за маркиране.
Използва се главно като средство за описване, декориране на външния вид на уеб страници, написани с помощта на HTML и XHTML езици за маркиране, но може да се приложи и към всякакви XML документи.

9. C.


Компилиран, статично въведен език за програмиране с общо предназначение. Езикът C е разработен от Денис Ричи през 1972 г. в Bell Labs. Той е предшественик на езици за програмиране като C ++, Java, C #, JavaScript и Perl. По тази причина изучаването на този език води до разбиране и на други езици. Езикът C се използва за разработване на приложения на ниско ниво, тъй като се счита за най-близък до хардуерния език.

10. Цел-C


Компилиран обектно-ориентиран език за програмиране, използван от Apple Corporation, изграден около езика C и парадигмите Smalltalk. Езикът Objective-C е надмножество на езика C, така че кодът C е напълно разбираем от компилатора Objective-C. Езикът се използва предимно за Mac OS X (Cocoa) и GNUstep - реализации на обектно-ориентирания интерфейс OpenStep. Също така езикът се използва за iOS (Cocoa Touch).

11. Черупка


Това не е толкова език, колкото интерпретатор на команди (команден език). Неговите скриптове се използват за автоматизиране на актуализации на софтуера. Съдържа стандартни конструкции за цикли, разклонения, декларации за функции. Семейството на UNIX-съвместими операционни системи използва SHELL като стандартен език за контрол на заданията.

12.R


Език за програмиране за статистическа обработка на данни и графики и безплатна изчислителна среда с отворен код в рамките на проекта GNU. R се използва широко като статистически софтуер за анализ на данни и се превръща в де факто стандарт за статистически програми. R използва интерфейс на командния ред.

13. Perl


Интерпретиран език за динамично програмиране с общо предназначение с общо предназначение. Името на езика е съкращение, което означава „Практическо извличане и отчет на езика“ - „практически език за извличане и докладване на данни“. Основната характеристика на езика се счита за богатите му възможности за работа с текст, включително работа с регулярни изрази, вградени в синтаксиса. В момента се използва за изпълнение на широк спектър от задачи, включително системно администриране, уеб разработка, мрежово програмиране, игри, биоинформатика и разработване на графичен потребителски интерфейс.

14. Скала


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

15. Върви


Компилиран многонишко програмен език, разработен от Google. Go е проектиран като системен език за програмиране за създаване на високоефективни програми, които работят на съвременни разпределени системи и многоядрени процесори. Може да се разглежда като опит за създаване на заместител на езика C. По време на разработката беше обърнато специално внимание, за да се осигури високо ефективна компилация. Програмите Go са компилирани в обектен код и не изискват виртуална машина за стартиране.

16. SQL

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

17. Хаскел


Стандартизиран чисто функционален език за програмиране с общо предназначение. Това е един от най-често срещаните програмни езици с поддръжка за отложено оценяване. Отличителна черта на езика е сериозното му отношение към писането. Haskell е отличен език за учене и експериментиране със сложни функционални типове данни.

18. Бързо


Отворена многокомпонентна компилирана програма за общо предназначение. Проектиран от Apple предимно за разработчици на iOS и OS X. Swift работи с рамките на Cocoa и Cocoa Touch и е съвместим с основната кодова база на Objective-C на Apple. Swift е замислен да бъде по-лесен за четене и по-надежден за програмист грешки от своя предшественик Objective-C. Суифт заема доста от Objective-C, но не се определя от указатели, а от типове променливи, които компилаторът обработва. Много скриптови езици работят по подобен начин.

19. Matlab


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

20. Visual Basic


Език за програмиране и интегрирана среда за разработка на софтуер, разработена от Microsoft Corporation. Visual Basic наследява духа, стила и синтаксиса на своя предшественик BASIC, който има много диалекти. В същото време Visual Basic комбинира процедури и елементи на обектно-ориентирани и компонентно-ориентирани програмни езици.

Visual Basic също е добър инструмент за бързото разработване на приложения за бази данни RAD за операционните системи Microsoft Windows. Много готови компоненти, доставени с околната среда, са предназначени да помогнат на програмиста незабавно да започне да разработва бизнес логиката на приложението, без да разсейва вниманието му към писането на кода за стартиране на програмата.

21. Делфи


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

Днес, заедно с поддръжката за разработването на 32 и 64-битови програми за Windows, е внедрена възможността за създаване на приложения за Apple Mac OS X, както и за Google Android (директно изпълним на ARM процесор).

22. Groovy


Обектно-ориентиран език за програмиране, разработен за платформата Java като допълнение към езика Java с възможности на Python, Ruby и Smalltalk. Groovy използва синтаксис, подобен на Java, с динамична компилация към байт кода на JVM и работи директно с други Java кодове и библиотеки. Езикът може да се използва във всеки проект на Java или като скриптов език.

23. Visual Basic .NET


Обектно-ориентиран език за програмиране, който може да се разглежда като следващия еволюционен етап на Visual Basic, внедрен на платформата Microsoft .NET. VB.NET не е обратно съвместим с по-ранна версия (Visual Basic 6.0). Разработването на проекти от стари версии (* .vbp) е възможно само след предварителното им преобразуване във формат VB.NET от специален съветник (Migration Wizard); след преобразуването обаче се изисква значителна ръчна ревизия на текстовете.

24. D.

Многокомпонентен компилиран език за програмиране, създаден от Уолтър Брайт от Digital Mars. D първоначално е замислен като реинженеринг на езика C ++, но въпреки значителното влияние на C ++, той не е негов вариант. Също така езикът е повлиян от концепции от програмните езици Python, Ruby, C #, Java, Eiffel.

25. Асемблер


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

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

Не взех всички езици. те не са толкова търсени сред професионалните програмисти. Моята задача е изпълнена, сега просто трябва да изберете подходящия език и да го завладеете. Успех във вашите начинания.



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