Инструкция

Для написания текста любой компьютерной программы используют один из многочисленных языков программирования. Все они представляют собой наборы определенных команд – операторов, а также описаний. Как правило, основой этих команд являются , поэтому, если вы знаете английский язык, читая текст программы вы даже сможете понять, что будет делать компьютер по той или иной команде. Впрочем, компьютер английского языка, в отличие от вас, не знает – чтобы он понял их, на машинный язык эти команды «переводит» компилятор. Для каждого из языков программирования существует свой компилятор.

Первые , в том числе: ADA, Basic, Algol, Fortran и прочие, бывшие популярными в 60-70 г.г., уже давно не используются, а вот С++, например, созданный в 1983 году, остается и сегодня востребованным, многие специальные программные продукты написаны на нем. По-прежнему востребован Basic, появившийся в 1991 году; а также Pascal (среда разработки Delphi), Java, JavaScript и Ruby, созданные в 1995 году. Из новых можно назвать ActionScript и Nemerle, которые появились в 1998 и 2006 году, соответственно.

Перечисленные языки программирования по-прежнему актуальны, поскольку они постоянно модифицируются, и новые их версии адаптируются к тем потребностям, которые существуют на сегодняшний день. Это в первую очередь относится к языку С++. Несмотря на то что в некоторых случаях программный код, скомпилированный на этом языке, получается довольно громоздким, использование готовых шаблонов помогает решить эту проблему, значительно улучшая быстродействие программных продуктов.

Среда разработки Visual Basic, разработанная знаменитой Microsoft, также используется большинством программистов, позволяя не только создавать компактный программный код на языке Basic, но и использовать удобный встроенный конструктор для пользовательского интерфейса. А вот для создания веб-сайтов программисты используют язык РНР, считающийся универсальным и работающий с любыми операционными системами. Его применяют и как конструктор пользовательского интерфейса. Однако к существенным недостаткам этого языка можно отнести то, что код, написанный в более ранних версиях, поддерживаться новыми не будет.

Java также способен работать на любой платформе, но для написания программ на этом языке необходимо пользоваться тем его диалектом, который предназначен для данного типа программных продуктов. Многофункциональностью, универсальностью и простотой отличаются языки программирования Pascal и JavaScript. Первый чаще используется для создания программных продуктов под ОС, например Total Commander и QIP, а на втором написана большая часть современных браузеров.

Прежде чем вы захотите изучать какой-нибудь язык программирования надо знать немного об их истории и где они применяются.

Я представляю вам краткий обзор 25 известных языков программирования. Начиная с самого известного до менее популярного. Статья сделана для новичков в сфере программирования. Вы можете почитать о каждом языке и выбрать тот который вам больше понравиться для изучения.

Прежде чем приступить к изучению языков программирования рекомендую вам изучить курс по .

1. JavaScript

Прототипно-ориентированный сценарный язык программирования. JavaScript изначально создавался для того, чтобы сделать web-странички «живыми». В браузере они подключаются напрямую к HTML и, как только загружается страничка – тут же выполняются.

Когда создавался язык JavaScript, у него изначально было другое название: «LiveScript». Но тогда был очень популярен язык Java, и маркетологи решили, что схожее название сделает новый язык более популярным.

Планировалось, что JavaScript будет эдаким «младшим братом» Java. Однако, история распорядилась по-своему, JavaScript сильно вырос, и сейчас это совершенно независимый язык, со своей спецификацией и к Java не имеет никакого отношения.

2. Java


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

Достоинством подобного способа выполнения программ является полная независимость байт-кода от операционной системы и оборудования, что позволяет выполнять Java-приложения на любом устройстве, для которого существует соответствующая виртуальная машина. Другой важной особенностью технологии Java является гибкая система безопасности, в рамках которой исполнение программы полностью контролируется виртуальной машиной.

Изначально язык назывался Oak («Дуб») разрабатывался Джеймсом Гослингом для программирования бытовых электронных устройств. Впоследствии он был переименован в Java и стал использоваться для написания клиентских приложений и серверного программного обеспечения.

3. PHP


Является распространенным интерпретируемым языком общего назначения с открытым исходным кодом (скриптовый язык). PHP создавался специально для ведения web-разработок и код на нем может внедряться непосредственно в HTML-код. Синтаксис языка берет начало из C, Java и Perl, и является легким для изучения.

Основной целью PHP является предоставление web-разработчикам возможности быстрого создания динамически генерируемых web-страниц, однако область применения PHP не ограничивается только этим.

4. Python

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

5. C#


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

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

6. С++


Компилируемый, статически типизированный язык программирования общего назначения. Является одним из самых распространенных языков в мире. Google Chrome, Mozilla Firefox, Winamp и линейка продуктов Adobe были разработаны с помощью С++. Кроме того, некоторые современные игры и операционные системы были разработаны на С++ из-за быстрого процессинга и компиляции.

7. Ruby


Простой и читаемый язык программирования, ориентированный на разработку веб приложений. Разработанный Юкихиро Мацумто в 1995 году. Язык обладает независимой от операционной системы реализацией многопоточности, строгой динамической типизацией, сборщиком мусора.

Основное назначение Ruby - создание простых и в то же время понятных программ, где важна не скорость работы программы, а малое время разработки, понятность и простота синтаксиса. Язык следует принципу «наименьшей неожиданности»: программа должна вести себя так, как ожидает программист.

8. CSS


Cascading Style Sheets (каскадные таблицы стилей) формальный язык описания внешнего вида документа, написанного с использованием языка разметки.
Преимущественно используется как средство описания, оформления внешнего вида веб-страниц, написанных с помощью языков разметки HTML и XHTML, но может также применяться к любым XML-документам.

9. C


Компилируемый статически типизированный язык программирования общего назначения. Язык Си был разработан Деннисом Ритчи в 1972 году в Bell Labs. Он является предшественником таких языков программирования как С++, Java, C#, JavaScript и Perl. По этой причине изучение этого языка ведет к понимаю и других языков. Язык С используется для разработки низкоуровневых приложений, так как считается ближе всего к аппаратному.

10. Objective-C


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

11. Shell

Он не столько язык, сколько интерпретатор команд (командный язык). Его скрипты используются для автоматизации обновления программного обеспечения. Содержит стандартные конструкции для циклов, ветвления, объявления функций. В семействе операционных систем, совместимых с ОС UNIX, язык SHELL используется в качестве стандартного языка управления заданиями.

12. R


Язык программирования для статистической обработки данных и работы с графикой, а также свободная программная среда вычислений с открытым исходным кодом в рамках проекта GNU. R широко используется как статистическое программное обеспечение для анализа данных и фактически стал стандартом для статистических программ. В R используется интерфейс командной строки.

13. Perl


Высокоуровневый интерпретируемый динамический язык программирования общего назначения. Название языка представляет собой аббревиатуру, которая расшифровывается как Practical Extraction and Report Language - «практический язык для извлечения данных и составления отчётов». Основной особенностью языка считаются его богатые возможности для работы с текстом, в том числе работа с регулярными выражениями, встроенная в синтаксис. На данный момент он используется для выполнения широкого спектра задач, включая системное администрирование, веб-разработку, сетевое программирование, игры, биоинформатику, разработку графических пользовательских интерфейсов.

14. Scala


Мультипарадигмальный язык программирования, спроектированный кратким и типобезопасным для простого и быстрого создания компонентного программного обеспечения, сочетающий возможности функционального и объектно-ориентированного программирования. Scala – программы во многом похожи на Java-программы, и могут свободно взаимодействовать с Java-кодом.

15. Go


Компилируемый многопоточный язык программирования, разработанный компанией Google. Язык Go разрабатывался как язык системного программирования для создания высокоэффективных программ, работающих на современных распределённых системах и многоядерных процессорах. Он может рассматриваться как попытка создать замену языку Си. При разработке уделялось особое внимание обеспечению высокоэффективной компиляции. Программы на Go компилируются в объектный код и не требуют для исполнения виртуальной машины.

16. SQL

Язык структурированных запросов. формальный непроцедурный язык программирования, применяемый для создания, модификации и управления данными в произвольной реляционной базе данных, управляемой соответствующей системой управления базами данных. SQL является прежде всего информационно-логическим языком, предназначенным для описания, изменения и извлечения данных, хранимых в реляционных базах данных. Каждое предложение SQL - это либо запрос данных из базы, либо обращение к базе данных, которое приводит к изменению данных в базе.

17. Haskell


Cтандартизированный чистый функциональный язык программирования общего назначения. Является одним из самых распространённых языков программирования с поддержкой отложенных вычислений. Отличительная черта языка - серьёзное отношение к типизации. Haskell превосходный язык для обучения и для экспериментов с сложными функциональными типами данных.

18. Swift


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

19. Matlab


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

20. Visual Basic


Язык программирования, а также интегрированная среда разработки программного обеспечения, разрабатываемое корпорацией Microsoft. Язык Visual Basic унаследовал дух, стиль и синтаксис своего предка - языка BASIC, у которого есть немало диалектов. В то же время Visual Basic сочетает в себе процедуры и элементы объектно-ориентированных и компонентно-ориентированных языков программирования.

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

21. Delphi


Императивный, структурированный, объектно ориентированный язык программирования со строгой статической типизацией переменных. Основная область использования - написание прикладного программного обеспечения.

На сегодняшний день, наряду с поддержкой разработки 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++, однако, несмотря на значительное влияние С++, не является его вариантом. Также язык испытал влияние концепций из языков программирования Python, Ruby, C#, Java, Eiffel.

25. Assembler


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

Язык ассемблера - система обозначений, используемая для представления в удобочитаемой форме программ, записанных в машинном коде. Язык ассемблера позволяет программисту пользоваться алфавитными мнемоническими кодами операций, по своему усмотрению присваивать символические имена регистрам ЭВМ и памяти, а также задавать удобные для себя схемы адресации. Кроме того, он позволяет использовать различные системы счисления для представления числовых констант и даёт возможность помечать строки программы метками с символическими именами с тем, чтобы к ним можно было обращаться.

Действительно ли нам нужны новые языки программирования ? Безусловно, на данный момент их вполне достаточно. Среди разнообразия императивных, функциональных, объектно-ориентированных , динамических, компилируемых, интерпретируемых и скриптовых языков ни один разработчик не сможет познать все доступные на сегодняшний день возможности.

И всё же возникновение новых языков - явление довольно частое. Некоторые из них создаются студентами или любителями в качестве индивидуальных проектов, другие являются продуктами крупных производителей программного обеспечения . Даже небольшие и средние компании принимают участие в этом процессе, создавая языки для нужд своих отраслей. Так почему же люди продолжают изобретать велосипед снова и снова?

Дело в том, что, несмотря на мощность и многофункциональность популярных на данный момент языков, ни один синтаксис не является идеально универсальным. Более того, само программирование постоянно развивается. Распространение многоядерных процессоров , облачного программирования, мобильности, а также распределённых архитектур создали новые проблемы для разработчиков. Добавление поддержки самых последних функций, парадигм и шаблонов к уже существующим языкам, особенно наиболее популярным, может быть чрезмерно сложным. Иногда лучшим решением является начать с нуля.

Таким образом, здесь представлены 10 передовых языков программирования , каждый из которых рассматривает искусство разработки ПО с новой стороны, решая определённую проблему либо специфический недостаток языков, наиболее популярных на сегодняшний день. Некоторые из них являются уже законченными проектами, тогда как другие находятся лишь на ранних стадиях своего развития. Вполне вероятно, что некоторые из них так и не обретут популярность , но любой из них может стать революционным достижением, которое окончательно изменит программирование - по крайней мере до тех пор, пока не будут созданы новые языки.

JavaScript хорош для добавления базовых элементов интерактивности веб-страницам, но когда код ваших веб-приложений состоит из тысяч строк, слабые места этого языка становятся заметны. Вот почему Google создала Dart - язык, который, как полагает компания, станет новым "родным" языком веб-программирования .

Как и в JavaScript, в Dart используются синтаксисы и ключевые слова, похожие на те, которые используются в языке C. Однако одним существенным различием является то, что в то время как JavaScript основывается на прототипах, объекты в Dart определяются с помощью классов и интерфейсов, как в C++ или Java . Также Dart позволяет программистам дополнительно задавать переменные со статическими типами. Идея заключается в том, чтобы сделать Dart таким же привычным, динамичным и гибким языком, как и JavaScript, который в то же время позволяет разработчикам писать коды, быстрые и лёгкие в выполнении, и в которых сложно сделать труднонаходимые ошибки.

Сегодня Dart мало где можно использовать. Он разработан для запуска либо на клиенте, либо на сервере (а-ля Node.js), но единственным способом запустить клиентскую версию Dart-кода является его кросскомпиляция в JavaScript. Однако и после этого он не будет запускаться во всех браузерах. Но так как Dart выпускается по бесплатной лицензии типа BSD , то любой продавец, который согласен с условиями Google, может свободно использовать этот язык в своих продуктах. Всё, что осталось сделать Google, - это убедить всю индустрию.

Код F# чем-то похож на код OCaml, но содержит свой собственный интересный синтаксис. Например, для облегчения проведения научных расчётов числовыми типами данных в F# могут являться единицы измерения. Также в F# имеются конструкции для облегчения асинхронных вводов/выводов, параллелизации ЦПУ и вывода процессов на графический процессор.

После длительного периода созревания в Microsoft Research, на сегодняшний день F# поставляется вместе с Visual Studio 2010 . Что ещё лучше, но не характерно для корпорации, Microsoft создала F# компилятор и корневую библиотеку, доступную по открытой лицензии Apache. Вы можете начать работу с ним бесплатно и даже использовать его на системах Mac и Linux (с помощью Mono runtime).

Естественно, с такого рода интегрированной системой в конце должно получиться что-то волшебное. Среда выполнения Opa объединяет собственный веб-сервер и систему управления базой данных , которые не могут быть заменены самостоятельными альтернативами. Как бы то ни было, это может быть не так уж и важно, учитывая возможность разработки современных веб-приложений , управляемых данными, с помощью всего лишь нескольких десятков строк кода. Opa поставляется бесплатно и на данный момент доступен для 64-х битных Linux и Mac OS X платформ, другие же порты пока разрабатываются.

Fantom распространяется бесплатно в соответствии с Academic Free License 3.0 и доступен для Windows и Unix-подобных платформ (в том числе и Mac OS X).

Исследуемый язык программирования №7: Zimbu

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

Единственной проблемой является портативность. Хотя Zimbu и является компилируемым языком, его компилятор выдаёт ANSI C код, а двоичные файлы могут быть созданы лишь на платформах со встроенным C-компилятором.

К сожалению, проект Zimbu находится на стадии разработки. Компилятор и несколько программ-примеров могут быть созданы самостоятельно, но не весь действительный Zimbu-код будет компилироваться и выполняться должным образом. Не все заявленные функции ещё разработаны, а некоторые из уже представленных работают некорректно. Спецификация языка также, возможно, со временем изменится: по мере необходимости добавятся ключевые слова, типы и синтаксис. Следовательно, документация также ещё неполная. Однако если Вы хотите попробовать, предварительные утилиты уже доступны по лицензии Apache .

Исследуемый язык программирования №8: X10

Когда-то параллельная обработка данных была специализированной нишей разработки ПО, но с распространением многоядерных процессоров и распределённых вычислений, параллелизм обрёл популярность. К сожалению, нынешние языки программирования не успевают за этой тенденцией. Именно поэтому IBM Research создаёт X10 - язык, созданный специально для современных параллельных архитектур, который нацелен на увеличение производительности разработчиков "в десять раз".

Параллелизм в X10 возможен благодаря PGAS модели программирования (модели разделённого глобального адресного пространства). Код и данные выделяются в блоки и распределяются по разным "пространствам", тем самым облегчая шкалирование программы от однопотокового прототипа (одно пространство) до многопотокового, выполняемого на одном или более многоядерном процессоре (несколько пространств) в высокопроизводительном кластере .

Код X10 больше всего похож на Java. По сути, среда выполнения X10 доступна как в качестве встроенных исполнимых файлов , так и как классовые файлы для JVM. Компилятор X10 может выдавать исходные коды либо на C++, либо на Java. В будущем планируется разработать прямую совместимость с Java.

А пока язык развивается, хотя он уже довольно разработан. Компилятор и среда выполнения доступны для различных платформ, в том числе Linux, Mac OS X и Windows. В качестве дополнительных утилит выступают интерактивная среда разработки (IDE), основанная на Eclipse, и отладчик, которые распространяются по лицензии Eclipse Public License.

Исследуемый язык программирования №9: haXe

Многие языки можно использовать для написания переносимого кода. C-компиляторы доступны практически для всех ЦПУ архитектур, а Java-байткод будет выполняться везде, где есть JVM. Но haXe (произносится как "хекс") является более чем просто переносимым. Это мультиплатформенный язык, который может использоваться в различных операционных средах, начиная от встроенных

Программирование для начинающих

Для начала я хотел бы сказать, что управлять компьютером и создавать программы может любой человек. Для создания компьютерных программ не нужно обладать невероят­ным интеллектом или ученой степенью в математических дисциплинах. Вам понадобится только желание в чем-то разобраться и терпение, чтобы не бросить занятия.

Умение писать программы - это такое же умение, как и умение плавать, танце­вать или жонглировать. Некоторым людям действительно удается делать это намного лучше, чем другим, но любой человек сможет достичь определенных результатов при должной практике. Именно по этой причине дети становятся асами программирова­ния в раннем возрасте. Дети не обязательно гениальны; они просто склонны позна­вать новое и не боятся ошибаться.

Несмотря на то, что компьютеры кажутся очень сложными электронными чудови­щами, расслабьтесь. Совсем немногие знают, как именно работают поисковые машины, которые позволяют вам быстро находить необходимую информацию в Internet, a некоторые люди и не разобрались, как управлять автомобилем. Точно так же прак­тически любой может научиться создавать программы, не вдаваясь в подробности о том, как именно работает компьютер.

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

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

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

Если вы считаете, что создавать программу интереснее, чем ее использовать, у вас есть все необходимое для того, чтобы создавать компьютерные программы. Если вы хотите изучить написание компьютерных программ, вам необходимы три следующих качества.

Стремление. Если вы чего-то очень сильно хотите, вы обязательно это получите (но если вы совершите что-то противозаконное, вы рискуете провести немало времени в тюрьме). Если вы хотите научиться про­граммировать, ваше желание обязательно вам поможет, независимо от того, сколько препятствий окажется у вас на пути.

Любознательность. Здоровая доза любознательности может подогревать ваше стремление к экспериментированию и дальнейшему совершенст­вованию навыков программирования даже после прочтения настоящей книги. Благодаря любопытству изучение программирования окажется для вас менее скучным и более интересным. А если вам интересно, вы обязательно изучите и запомните больше сведений, чем любой абсо­лютно незаинтересованный в этом человек (например, ваш начальник).
Воображение. Создание компьютерных программ - это навык, но во­ображение поможет сделать этот навык более совершенным и направ­ленным. Обладающий изрядной долей воображения начинающий про­граммист всегда будет создавать намного более интересные и полезные программы, чем замечательный программист без воображения. Если вы не знаете, что же делать со своими навыками программирования, ваш талант просто погибнет без воображения.

Стремление, любознательность и воображение - вот три самых важных качества, которыми должен обладать каждый программист. Если вы обладаете ими, вам стоит беспокоиться только о мелочах: какой язык программирования изучать (например, C++), что там с математикой и т.д.

Среди многих языков программирования вы всегда сможете найти именно тот язык, который подходит для решения данной задачи. При появлении нового типа проблем люди создают новые языки.

Конечно, на самом деле компьютер понимает только один язык, состоящий из ну­лей и единиц, который называется машинным языком. Обычно программа, написанная на машинном языке, выглядит приблизительно так:

0010 1010 0001 1101

ООН 1100 1010 1111

0101 ОНО 1101 0101

1101 1111 0010 1001

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

Теперь мне бы хотелось разъяснить вам, что следует отличать язык программирования (Basic, Pascal) от его реализации, которая обычно представлена в составе среды программирования (Quick Basic, Virtual Pascal) - набора средств для редактирования исходных текстов, генерации исполняемого кода, отладки, управления проектами и т.д. Синтаксис и семантика языка программирования фиксируется в стандарте языка. Каждая среда программирования предоставляет свой интерпретатор или компилятор с этого языка, который зачастую допускает использование конструкций, не фиксированных в стандарте.

Рассмотрим основные и популярные языки программирования

Assembler Это ярчайший представитель языков низкого уровня, набор понятий которого основан на аппаратной реализации. Это средство автоматизации для программирования непосредственно в кодах процессора. Машинные команды описываются в виде мнемонических операций, что позволяет добиться достаточно высокой модифицируемости кода. Поскольку набор команд на разных процессорах различен, то и о совместимости говорить не приходится. Использование ассемблера целесообразно в случаях, когда необходимо напрямую взаимодействовать с оборудованием, либо получить большую эффективность для некоторой части программы за счет более высокого контроля над генерацией кода.

Кобол - Язык программирования высокого уровня, разработанный в конце 1950-х гг. ассоциацией КАДАСИЛ для решения коммерческих и экономических задач. Отличается развитыми средствами работы с файлами. Поскольку команды программ, написанных на этом языке, активно используют обычную английскую лексику и синтаксис, Кобол рассматривается как один из самых простых языков программирования. В настоящее время используется для решения экономических, информационных и других задач.

Фортран - Язык программирования высокого уровня, разработанный фирмой IBM в 1956 г. для описания алгоритмов решения вычислительных задач. Относится к категории процедурно-ориентированных языков. Наиболее распространенными версиями этого языка являются Фортран IV, Фортран 77 и Фортран 90. Используется на всех классах ЭВМ. Последняя его версия также применяется на ЭВМ с параллельной архитектурой.

Ада - Язык программирования высокого уровня, ориентированный на применение в системах реального времени и предназначенный для автоматизации задач управления процессами и/или устройствами, например, в бортовых (корабельных, авиационных и др.) ЭВМ. Разработан по инициативе министерства обороны США в 1980-х гг. Назван в честь английского математика Ады Августы Байрон (Лавлейс), жившей в 1815-1851 гг.

BASIC (Beginner"s All-purpose Symbolic Instruction Code) Рожденный в 60-е годы в Америке. Бейсик был задуман как простой язык для быстрого освоения. Бейсик стал фактическим стандартом для МикроЭВМ именно благодаря своей простоте как в освоении так и в реализации. Однако для достижения этого качества был принят ряд решений (отсутствие типизации, нумерация строк и неструктурное GOTO, и др.), негативно сказывающихся на стиле изучающих программирование. Кроме того, недостаток выразительных средств привел к появлению огромного количества диалектов языка, не совместимых между собой. Современные, специализированные версии Бейсика (такие как Visual Basic) несмотря на приобретенную "структурность" обладают все теми же недостатками, прежде всего - небрежностью по отношению к типам и описаниям. Пригоден для использования на начальном этапе обучения, как средство автоматизации (в случаях когда он встроен в соответствующие системы) либо как средство для быстрого создания приложений.

Pascal Разработанный известным теоретиком Н.Виртом на основе идей Алгола-68, Паскаль предназначался прежде всего для обучения программированию. Построенный по принципу "необходимо и достаточно", он располагает строгим контролем типов, конструкциями для описания произвольных структур данных, небольшим, но достаточным набором операторов структурного программирования. К сожалению, обратной стороной простоты и строгости является громоздкость описаний конструкций языка. Наиболее известная реализация - Turbo/Borland Pascal - несмотря на отличия от стандарта Паскаля, представляет из себя среду и набор библиотек, сделавшие из учебного языка промышленную систему для разработки программ в среде MS-DOS.

C и C++ В основе языка C - требования системного программиста: полный и эффективный доступ ко всем ресурсам компьютера, средства программирования высокого уровня, переносимость программ между различными платформами и операционными системами. С++, сохраняя совместимость с C, вносит возможности объектно-ориентированного программирования, выражая идею класса (объекта) как определяемого пользователем типа. Благодаря перечисленным качествам, C/C++ занял позицию универсального языка для любых задач. Но его применение может стать неэффективным там, где требуется получить готовый к употреблению результат в кратчайшие сроки, либо там, где невыгодным становится сам процедурный подход.

Delphi - это не продолжатель дела Borland Pascal / Borland C, его ниша - т.е. быстрое создание приложений (Rapid Application Developing, RAD). Подобные средства позволяют в кратчайшие сроки создать рабочую программу из готовых компонентов, не растрачивая массу усилий на мелочи. Особое место в таких системах занимают возможности работы с базами данных.

Лисп - Алгоритмический язык, разработанный в 1960 г. Дж. Маккарти и предназначенный для манипулирования перечнями элементов данных. Используется преимущественно в университетских лабораториях США для решения задач, связанных с искусственным интеллектом. В Европе для работ по искусственному интеллекту предпочитают использовать Пролог.

Пролог - Язык программирования высокого уровня декларативного, предназначенный для разработки систем и программ искусственного интеллекта. Относится к категории языков пятого поколения. Был разработан в 1971 г. в университете г. Марсель (Франция), относится к числу широко используемых и постоянно развиваемых языков. Последняя его версия Prolog 6.0

ЛОГО - Язык программирования высокого уровня, разработан в Массачусетском технологическом институте в ориентировочно 1970 г. для целей обучения математическим понятиям. Используется также в школах и пользователями ПЭВМ при написании программ для создания чертежей на экране монитора и управления перьевым графопостроителем.

Java Как яркий пример специализации, язык Java появился в ответ на потребность в идеально переносимом языке, программы на котором эффективно исполняются на стороне клиента WWW. В ввиду специфики окружения, Java может быть хорошим выбором для системы, построенной на Internet/Intranet технологии.

Алгол - Язык программирования высокого уровня, ориентированный на описание алгоритмов решения вычислительных задач. Был создан в 1958 г. специалистами западно-европейских стран для научных исследований. Версия этого языка Алгол-60 была принята Международной конференцией в Париже (1960 г.) и широко использовалась на ЭВМ 2-го поколения. Версия Алгол-68, разработанная группой специалистов Международной федерации по обработке информации (ИФИП) в 1968 г., получила статус международного универсального языка программирования, ориентированного на решение не только вычислительных, но и информационных задач. Хотя в настоящее время Алгол практически не используется, он послужил основой или оказал существенное влияние на разработку более современных языков, например, Ада, Паскаль и др.

Самого лучшего языка не существует. Если вы собираетесь стать профессионалом в написании программ, вам необходимо изучить один из языков программирования высокого уровня (наиболее популярен язык программирования C++), а также один из языков программирования баз данных (например, SQL). Изучив язык программиро­вания C++, вы не ошибетесь. Зная этот язык, вы всегда сможете найти работу в любой компании, занимающей­ся программированием.
Несмотря на большую популярность языка программирования C++, часто исполь­зуются и другие языки. На многих устаревших компьютерах до сих пор работают программы, написанные на языке программирования COBOL. Поэтому нужны про­граммисты, которые умеют усовершенствовать данные программы, а также писать но­вые. Очень часто крупные компании выплачивают таким программистам высокую за­работную плату.
Если вы собираетесь работать самостоятельно, предпочтительнее всего научиться создавать собственные программы для баз данных. Для этого вам понадобится изучить такие языки программирования, как SQL или VBA, которые используются в програм­ме Microsoft Access. Для того чтобы создавать Web-страницы, необходимо знать HTML, а также немного знать Java, JavaScript, VBScript и другие языки программиро­вания для Internet. Самым нужным будет тот язык программирования, который по­зволит решить поставленные перед вами задачи легко и быстро. Это может быть язык программирования C++, BASIC, Java, SQL или язык ассемблера.

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

Желаю удачи в освоение программирования!

Язык программирования

Язы́к программи́рования - формальная знаковая система , предназначенная для записи компьютерных программ . Язык программирования определяет набор лексических , синтаксических и семантических правил, задающих внешний вид программы и действия, которые выполнит исполнитель (компьютер) под её управлением.

  • Функция: язык программирования предназначен для написания компьютерных программ, которые применяются для передачи компьютеру инструкций по выполнению того или иного вычислительного процесса и организации управления отдельными устройствами .
  • Задача: язык программирования отличается от естественных языков тем, что предназначен для передачи команд и данных от человека к компьютеру, в то время как естественные языки используются для общения людей между собой. Можно обобщить определение «языков программирования» - это способ передачи команд, приказов, чёткого руководства к действию; тогда как человеческие языки служат также для обмена информацией.
  • Исполнение: язык программирования может использовать специальные конструкции для определения и манипулирования структурами данных и управления процессом вычислений.

Стандартизация языков программирования

Язык программирования может быть представлен в виде набора спецификаций, определяющих его синтаксис и семантику .

Для многих широко распространённых языков программирования созданы международные стандарты . Специальные организации проводят регулярное обновление и публикацию спецификаций и формальных определений соответствующего языка. В рамках таких комитетов продолжается разработка и модернизация языков программирования и решаются вопросы о расширении или поддержке уже существующих и новых языковых конструкций.

Типы данных

Современные цифровые компьютеры обычно являются двоичными и данные хранят в двоичном (бинарном) коде (хотя возможны реализации и в других системах счисления). Эти данные как правило отражают информацию из реального мира (имена, банковские счета, измерения и др.), представляющую высокоуровневые концепции.

Особая система, по которой данные организуются в программе, - это система типов языка программирования; разработка и изучение систем типов известна под названием теория типов . Языки могут быть классифицированы как системы со статической типизацией и языки с динамической типизацией .

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

Структуры данных

Системы типов в языках высокого уровня позволяют определять сложные, составные типы, так называемые структуры данных . Как правило, структурные типы данных образуются как декартово произведение базовых (атомарных) типов и ранее определённых составных типов.

Основные структуры данных (списки, очереди, хеш-таблицы, двоичные деревья и пары) часто представлены особыми синтаксическими конструкциями в языках высокого уровня. Такие данные структурируются автоматически.

Семантика языков программирования

Существует несколько подходов к определению семантики языков программирования.

Наиболее широко распространены разновидности следующих трёх: операционного, деривационного (аксиоматического) и денотационного (математического).

  • При описании семантики в рамках операционного подхода обычно исполнение конструкций языка программирования интерпретируется с помощью некоторой воображаемой (абстрактной) ЭВМ.
  • Деривационная семантика описывает последствия выполнения конструкций языка с помощью языка логики и задания пред- и постусловий.
  • Денотационная семантика оперирует понятиями, типичными для математики - множества, соответствия, а также суждения, утверждения и др.

Парадигма программирования

Язык программирования строится в соответствии с той или иной базовой моделью вычислений и парадигмой программирования.

Несмотря на то, что большинство языков ориентировано на императивную модель вычислений , задаваемую фон-неймановской архитектурой ЭВМ, существуют и другие подходы. Можно упомянуть языки со стековой вычислительной моделью (Форт , Factor , PostScript и др.), а также функциональное (Лисп , Haskell , , и др.) и логическое программирование (Пролог) и язык РЕФАЛ , основанный на модели вычислений, введённой советским математиком А. А. Марковым-младшим.

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

Способы реализации языков

Языки программирования могут быть реализованы как компилируемые и интерпретируемые .

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

Если программа написана на интерпретируемом языке, то интерпретатор непосредственно выполняет (интерпретирует) исходный текст без предварительного перевода. При этом программа остаётся на исходном языке и не может быть запущена без интерпретатора. Процессор компьютера, в этой связи, можно назвать интерпретатором для машинного кода.

Разделение на компилируемые и интерпретируемые языки является условным. Так, для любого традиционно компилируемого языка, как, например, Паскаль , можно написать интерпретатор. Кроме того, большинство современных «чистых» интерпретаторов не исполняют конструкции языка непосредственно, а компилируют их в некоторое высокоуровневое промежуточное представление (например, с разыменованием переменных и раскрытием макросов).

Для любого интерпретируемого языка можно создать компилятор - например, язык Лисп, изначально интерпретируемый, может компилироваться без каких бы то ни было ограничений. Создаваемый во время исполнения программы код может так же динамически компилироваться во время исполнения.

Как правило, скомпилированные программы выполняются быстрее и не требуют для выполнения дополнительных программ, так как уже переведены на машинный язык. Вместе с тем, при каждом изменении текста программы требуется её перекомпиляция, что замедляет процесс разработки. Кроме того, скомпилированная программа может выполняться только на том же типе компьютеров и, как правило, под той же операционной системой, на которую был рассчитан компилятор. Чтобы создать исполняемый файл для машины другого типа, требуется новая компиляция.

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

Однако интерпретируемые программы выполняются заметно медленнее, чем компилируемые, кроме того, они не могут выполняться без программы-интерпретатора.

Подобный подход в некотором смысле позволяет использовать плюсы как интерпретаторов, так и компиляторов. Следует упомянуть, что есть языки, имеющие и интерпретатор, и компилятор (Форт).

Используемые символы

Современные языки программирования рассчитаны на использование ASCII , то есть доступность всех графических символов ASCII является необходимым и достаточным условием для записи любых конструкций языка. Управляющие символы ASCII используются ограниченно: допускаются только возврат каретки CR, перевод строки LF и горизонтальная табуляция HT (иногда также вертикальная табуляция VT и переход к следующей странице FF).

Ранние языки, возникшие в эпоху 6-битных символов , использовали более ограниченный набор. Например, алфавит Фортрана включает 49 символов (включая пробел): A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 = + - * / () . , $ " :

Заметным исключением является язык APL , в котором используется очень много специальных символов.

Использование символов за пределами ASCII (например, символов KOI8-R или символов Юникода) зависит от реализации: иногда они разрешаются только в комментариях и символьных/строковых константах, а иногда и в идентификаторах. В СССР существовали языки, где все ключевые слова писались русскими буквами, но большу́ю популярность подобные языки не завоевали (исключение составляет Встроенный язык программирования 1С:Предприятие).

Расширение набора используемых символов сдерживается тем, что многие проекты по разработке программного обеспечения являются международными. Очень сложно было бы работать с кодом, где имена одних переменных записаны русскими буквами, других - арабскими, а третьих - китайскими иероглифами. Вместе с тем, для работы с текстовыми данными языки программирования нового поколения (Delphi 2006 , , Java) поддерживают Unicode .

Классы языков программирования

См. также

Примечания

Литература

  • Hal Abelson, Gerald Jay Sussman. Structure and Interpretation of Computer Programs
  • Роберт У. Себеста. Основные концепции языков программирования = Concepts of Programming Languages / Пер. с англ. - 5-е изд. - М .: Вильямс, 2001. - 672 с. - 5000 экз. - ISBN 5-8459-0192-8 (рус.), ISBN 0-201-75295-6 (англ.)
  • Вольфенгаген В. Э. Конструкции языков программирования. Приёмы описания. - М .: Центр ЮрИнфоР, 2001. - 276 с. - ISBN 5-89158-079-9
  • Паронджанов В. Д. Как улучшить работу ума. Алгоритмы без программистов - это очень просто! - М .: Дело, 2001. - 360 с. - ISBN 5-7749-0211-0
  • Ф. Бьянкуцци, Ш. Уорден. Пионеры программирования. Диалоги с создателями наиболее популярных языков программирования . - СПб. : Символ-Плюс, 2010. - 608 с. - ISBN 978-5-93286-170-7

Ссылки

  • The Language List (англ.) - более 2500 языков с кратким описанием
  • Computer Languages History (англ.) - история языков программирования (с 1954 по май 2004) (содержит регулярно обновляемую диаграмму)
  • Examples (англ.) - примеры программирования на 162 языках
  • Programming Language Popularity (англ.) - исследование популярности языков программирования за 2004 год
  • 10 языков программирования, которые стоит изучать (2006 г.)
  • Programming Community Index (англ.) - регулярно обновляемый рейтинг популярности языков программирования
  • Computer Language Shootout Benchmarks (англ.) - сравнение языков программирования по эффективности
  • Programming Languages that are Loved (англ.) - сравнение языков программирования по «любви» и «ненависти» к ним

Wikimedia Foundation . 2010 .