Език за програмиране: Разлика между версии

Изтрито е съдържание Добавено е съдържание
м замяна на месец от англ. на бг.
м формат дати от англ. на български
Ред 10:
Езикът за програмиране е нотация за писане на [[Компютърна програма|програми]], които са спецификации на изчисляване или алгоритъм.<ref name="Aaby 2004">{{cite book|last=Aaby|first=Anthony|title=Introduction to Programming Languages|year=2004|url=http://burks.brighton.ac.uk/burks/pcinfo/progdocs/plbook/index.htm}}</ref> Някои, но не всички автори ограничават понятието „език за програмиране“ за тези езици, които могат да изразят всички възможни алгоритми.<ref name="Aaby 2004"/><ref>In mathematical terms, this means the programming language is [[Turing completeness|Turing-complete]] {{cite book | last=MacLennan | first=Bruce J. | title=Principles of Programming Languages | page=1 | publisher=Oxford University Press | year=1987 | isbn=0-19-511306-3 }}</ref> Отличителните белези, които често се смятат за важни за това какво представлява един език за програмиране, включват:
 
* ''Функция и цел:'' ''Компютърен програмен език'' е език<ref name="Fischer">Steven R. Fischer, ''A history of language'', Reaktion Books, 2003, ISBN 186189080X, p. 205</ref>, използван за писане на [[компютърна програма|компютърни програми]], които са свързани с това [[компютър]] да извършва някакъв вид изчисление<ref name=sigplan>{{cite web|author=[[Association for Computing Machinery|ACM]] SIGPLAN|title=Bylaws of the Special Interest Group on Programming Languages of the Association for Computing Machinery|url=http://www.acm.org/sigs/sigplan/sigplan_bylaws.htm|accessdate=2006-06-19 юни 2006|year=2003}}, ''The scope of SIGPLAN is the theory, design, implementation, description, and application of computer programming languages – languages that permit the specification of a variety of different computations, thereby providing the user with significant control (immediate or delayed) over the computer's operation.''</ref> или [[алгоритъм]] и евентуално да управлява външни устройства като [[принтер]]и, [[дисково устройство|дискови устройства]], [[робот]]и,<ref name="robots">{{cite web|url=http://www.cs.brown.edu/people/tld/courses/cs148/02/programming.html |title=Programming Robots |accessdate=2006-09-23 септември 2006 |last=Dean |first=Tom |year=2002 |work=Building Intelligent Robots |publisher=Brown University Department of Computer Science}}</ref> и така нататък. Например [[PostScript]] програми са често създадени от друга програма. за управление на принтер или дисплей. По-общо казано, един език за програмиране може да опише изчисление, на някаква, вероятно абстрактна, машина. Общоприето е, че една пълна спецификация за един език за програмиране, включва описание, вероятно идеализирано, на машина или обработчик за този език.<ref name=nara2>R. Narasimahan, Programming Languages and Computers: A Unified Metatheory, pp. 189--247 in Franz Alt, Morris Rubinoff (eds.) Advances in computers, Volume 8, Academic Press, 1994, ISBN 012012108, p.193: „a complete specification of a programming language must, by definition, include a specification of a processor--idealized, if you will--for that language.“ [the source cites many references to support this statement]</ref> В контекста на практиката, един език за програмиране, засяга компютър и следователно езиците за програмиране обикновено се дефинират и изучават по този начин.<ref>{{cite book|last=Ben Ari|first=Mordechai|title=Understanding Programming Languages"|publisher=John Wiley and Sons| year=1996|quote=Programs and languages can be defined as purely formal mathematical objects. However, more people are interested in programs than in other mathematical objects such as groups, precisely because it is possible to use the program—the sequence of symbols—to control the execution of a computer. While we highly recommend the study of the theory of programming, this text will generally limit itself to the study of programs as they are executed on a computer.}}</ref> Програмните езици се различават от [[естествен език|естествените езици]] по това, че естествените езици се използват за взаимодействие между хора, докато езиците за програмиране позволяват хората да задават инструкции на машините.
 
* ''Абстракции:'' Езиците за програмиране обикновено съдържат [[абстракция (компютърни науки)|абстракции]] за дефинирането и работата със структури от данни или за управление на потока на изпълнение. Практическата необходимост, един език за програмиране да поддържа адекватни абстракции се изразява чрез принципа на абстракцията;<ref>David A. Schmidt, ''The structure of typed programming languages'', MIT Press, 1994, ISBN 0262193493, p. 32</ref> този принцип понякога е формулиран като препоръка към програмиста, да използва подобни абстракции по подходящият начин.<ref>{{cite book|last=Pierce|first=Benjamin|title=Types and Programming Languages|publisher=MIT Press|year=2002|isbn=0-262-16209-1|page=339}}</ref>
 
* ''Изразителна сила:'' Теорията на алгоритмите, класифицира езиците на база изчисленията, които са способни да изразят. Всички [[Тюрингова пълнота|Тюрингови]] езици могат да реализират един и същ набор от алгоритми. [[SQL|ANSI/ISO SQL]] и [[Charity]] са примери за езици, които не са Тюрингови езици, но често се наричат езиците за програмиране.<ref>{{cite web | author=Digital Equipment Corporation | title=Information Technology – Database Language SQL (Proposed revised text of DIS 9075) | url=http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt | work=ISO/IEC 9075:1992, Database Language SQL | dateformat=mdy | accessdate=29 юни 2006}}</ref><ref>{{cite web|author=The Charity Development Group|title=The CHARITY Home Page | url=http://pll.cpsc.ucalgary.ca/charity1/www/home.html | month=December|year=1996|accessdate=2006-06-29 юни 2006}}, ''Charity is a categorical programming language...'', ''All Charity computations terminate.''</ref>
 
[[Маркиращ език|Маркиращи езици]] като [[XML]], [[HTML]] или troff, които дефинират [[структурирани данни]], не се считат за езици за програмиране.<ref>[http://www.w3.org/XML/1999/XML-in-10-points.html XML in 10 points] [[W3C]], 1999, ''XML is not a programming language.''</ref><ref>{{cite book|last=Powell|first=Thomas|title=HTML & XHTML: the complete reference|publisher=McGraw-Hill|year=2003|isbn=0-07-222-942-X|page=25|quote=''HTML is not a programming language.''}}</ref><ref>{{cite book|last1=Dykes|first1=Lucinda|first2=Ed|last2=Tittel|title=XML For Dummies, 4th Edition|publisher=Wiley|year=2005|isbn=0-7645-8845-1|page=20|quote=''...it's a markup language, not a programming language.''}}</ref> Все пак, езиците за програмиране могат да имат подобен синтаксис с маркиращите езици, ако е дефинирана семантиката. [[XSLT]] например, е Тюрингов диалект на XML. <ref>http://www.ibm.com/developerworks/library/x-xslt/</ref><ref>http://msdn.microsoft.com/en-us/library/ms767587(VS.85).aspx</ref><ref>{{cite book|last=Scott|first=Michael|title=Programming Language Pragmatics|publisher=[[Morgan Kaufmann]]|year=2006|isbn=0-12-633951-1|page=802|quote=''XSLT, though highly specialized to the transformation of XML, is a Turing-complete programming language.''}}</ref> Освен това, [[LaTeX]], който се използва предимно за структуриране на документи, съдържа и Тюрингово подмножество.<ref>http://tobi.oetiker.ch/lshort/lshort.pdf</ref><ref>{{cite book|last=Syropoulos|first=Apostolos|coauthors=Antonis Tsolomitis, Nick Sofroniou|title=Digital typography using LaTeX|publisher=Springer-Verlag|year = 2003|isbn=0-387-95217-9|page=213|quote=''TeX is not only an excellent typesetting engine but also a real programming language.''}}</ref>