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




Скачать 233.3 Kb.
НазваниеЧто такое язык программирования
Дата публикации04.03.2013
Размер233.3 Kb.
ТипДокументы
uchebilka.ru > Информатика > Документы

ЧТО ТАКОЕ ЯЗЫК ПРОГРАММИРОВАНИЯ


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

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

По мере развития вычислительной техники возникали разные методики программирования. На каждом этапе создавался новый подход, который помогал программистам с растущим усложнением программ.

Первые программы заключались в установке ключевых переключателей на передней панели вычислительного устройства. Очевидно, таким способом можно было составить только небольшие программы. В частности, подобного рода методы применялись в разностной машине Бэббиджа (Чарльз Бэббидж и Ада Лавлэйс), и в ENIAC (Джон фон Нейман, Джон Мочли, Преспер Эккерт, Герман Гольдстайн по трудам Алана Тьюринга).

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

Например, для организации чтения блока данных с гибкого диска программист может использовать 16 различных команд, каждая из которых требует 13 параметров, таких как номер блока на диске, номер сектора на дорожке и т. п. Когда выполнение операции с диском завершается, контроллер возвращает 23 значения, отражающие наличие и типы ошибок, которые надо анализировать.

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

Каждая модель процессора имеет свой собственный набор машинных команд, хотя большинство из них совпадает. Если Процессор А полностью понимает язык Процессора Б, то говорится, что Процессор А совместим с Процессором Б. Процессор Б будет называться не совместимым с Процессором А если А имеет команды, не распознаваемые Процессором Б.

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

Но даже работа с ассемблером достаточно сложна и требует специальной подготовки.

Например, для процессора Zilog Z80 машинная команда 00000101 предписывает процессору уменьшить на единицу свой регистр B. На языке ассемблера это же будет записано как DEC B.

Следующий шаг был сделан в 1954 году, когда в IBM, под руководством Джона Бэкуса, был создан первый (хотя, уже существовал язык программирования Планкалкюль, но он не приобрел большой популярности, так как первая реализация создана уже в 2000 году) язык высокого уровня — Фортран (англ. FORTRAN - FORmula TRANslator). Языки высокого уровня имитируют естественные языки, используя некоторые слова разговорного языка и общепринятые математические символы. Эти языки более удобны для человека, с помощью них, можно писать программы до нескольких тысяч строк длиной. Однако легко понимаемый в коротких программах, этот язык становился нечитаемым и трудно управляемым, когда дело касалось больших программ. Решение этой проблемы пришло после изобретения языков структурного программирования (англ. structured programming language), таких как Алгол(1958), Паскаль(1970), Си(1972).

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

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

Также создавались функциональные (аппликативные) языки (Пример: Lisp — англ. LISt Processing, 1958) и логические языки (пример: Prolog — англ. PROgramming in LOGic, 1972).

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

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

Примером объектно-ориентированных языков являются: Object Pascal, C++, Java и др.

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

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

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

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

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

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

Кратко говоря, компилятор переводит исходный текст программы на машинный язык сразу и целиком, создавая при этом отдельную исполняемую программу, а интерпретатор выполняет исходный текст прямо во время исполнения программы.

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

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

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

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

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

Некоторые языки, например, Java и C#, находятся между компилируемыми и интерпретируемыми. А именно, программа компилируется не в машинный язык, а в машинно-независимый код низкого уровня, байт-код. Далее байт-код выполняется виртуальной машиной. Для выполнения байт-кода обычно используется интерпретация, хотя отдельные его части для ускорения работы программы могут быть транслированы в машинный код непосредственно во время выполнения программы по технологии компиляции «на лету» (Just-in-time compilation, JIT). Для Java байт-код исполняется виртуальной машиной Java (Java Virtual Machine, JVM), для C# — Common Language Runtime.

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

Современные языки программирования рассчитаны на использование 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 или символов Юникода) зависит от реализации: иногда они разрешаются только в комментариях и символьных/строковых константах, а иногда и в идентификаторах. В СССР существовали языки, где все ключевые слова писались русскими буквами, но большу́ю популярность подобные языки не завоевали.

^

КЛАССЫ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ


Классов языков программирования существует очень много. Наиболее популярные из них рассмотрены ниже.
Функциональные

Функциональное программирование объединяет разные подходы к определению процессов вычисления на основе достаточно строгих абстрактных понятий и методов символьной обработки данных. Сформулированная Джоном Мак-Карти (1958) концепция символьной обработки информации компьютером восходит к идеям Черча и других математиков, известным как лямбда-исчисление с конца 20-х годов прошлого века. Выбирая лямбда-исчисление как теоретическую модель, Мак-Карти предложил рассматривать функции как общее базовое понятие, к которому достаточно естественно могут быть сведены все другие понятия, возникающие при программировании. Существует различия в понимании функции в математике и функции в программировании, вследствие чего нельзя отнести Си-подобные языки к функциональным, использующим менее строгое понятие. Функция в математике не может изменить вызывающее её окружение и запомнить результаты своей работы, а только предоставляет результат вычисления функции.

Программирование с использованием математического понятия функции вызывает некоторые трудности, поэтому функциональные языки, в той или иной степени предоставляют и императивные возможности, что ухудшает дизайн программы (например возможность безболезненных дальнейших изменений). Дополнительное отличие от императивных языков программирования заключается в декларативности описаний функций. Тексты программ на функциональных языках программирования описывают «как решить задачу», но не предписывают последовательность действий для решения. Первым, спроектированным функциональным языком стал Лисп. Он был предложен Джоном Мак-Карти в качестве средства исследования границ применимости компьютеров, в частности, методом решения задач искусственного интеллекта. Лисп послужил эффективным инструментом экспериментальной поддержки теории программирования и развития сферы его применения. Вариант данного языка широко используется в системе автоматизированного проектирования AutoCAD и называется AutoLISP

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

Некоторые языки функционального программирования: Лисп (Common Lisp, Scheme, FP, FL), Hope, Miranda, Haskell(Curry, Clean, Gofel), ML (Standard ML, Objective CAML, Harlequin's MLWorks, F#, Nemerle), Erlang.
^ Процедурные (императивные)

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

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

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

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

Типичные примеры: Аda (язык общего назначения), Basic (версии начиная с Quick Basic до появления Visual Basic), Си, КОБОЛ, Фортран, Модула-2, Pascal, ПЛ/1, Рапира, REXX.
Аспектно-ориентированные

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

Методология аспектно-ориентированного программирования была предложена группой инженеров исследовательского центра Xerox PARC под руководством Грегора Кичалеса (Gregor Kiczales). Ими же был разработан аспектно-ориентированное расширение для языка Java, получившее название AspectJ — (2001 год).

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

Ведение лога и обработка ошибок — типичные примеры сквозной функциональности. Другие примеры: трассировка; авторизация и проверка прав доступа; контрактное программирование (в частности, проверка пред- и постусловий). Для программы, написанной в парадигме ООП, любая функциональность, по которой не была проведена декомпозиция, является сквозной.

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

Реализовано для большинства современных языков программирования.
Динамические

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

К динамическим языкам относятся: Python, PHP, Ruby, Smalltalk, JavaScript.

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

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

В основе концепции объектно-ориентированного программирования лежит понятие объекта — некоей субстанции, которая объединяет в себе поля (данные) и методы (выполняемые объектом действия).

Например, объект «человек» может иметь поля «имя», «фамилия» и иметь методы «есть» и «спать». Соответственно, мы можем использовать в программе операторы Человек. Имя:="Иван" и Человек. Есть (пища).

Примеров можно привести очень много. Наиболее популярные: C#, C++, Java, Delphi, Eiffel, Simula, D, Io, Objective-C, Object Pascal, VB.NET, Visual DataFlex, Perl, Php, PowerBuilder, Python, Scala, ActionScript (3.0 и более поздние), JavaScript, JScript.NET, Ruby, Smalltalk, Ada, Xbase++,X++, Vala.
Скриптовые

Скри́птовый язы́к (англ. scripting language, в русскоязычной литературе принято название язык сценариев) — язык программирования, разработанный для записи «сценариев», последовательностей операций, которые пользователь может выполнять на компьютере. Простые скриптовые языки раньше часто называли языками пакетной обработки (batch languages или job control languages). Сценарии обычно интерпретируются, а не компилируются (хотя часто сценарии компилируются каждый раз перед запуском).

В прикладной программе, сценарий (скрипт) — это программа, которая автоматизирует некоторую задачу, которую без сценария пользователь делал бы вручную, используя интерфейс программы.

Примеры: AngelScript, Forth, gs9, Perl, Python, PHP, Squirrel, Tcl (Tool command language), REBOL, Ruby, ERM, Lua.
Эзотерические

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

Эзотерические языки придумываются для развлечения, часто они пародируют «настоящие» или являются абсурдным воплощением «серьёзных» концепций программирования. Некоторые эзотерические языки нарочно ограничены, (как, например, язык HQ9+), другие — универсальны и обладают тьюринговской полнотой. Общее свойство, присущее любому эзотерическому языку — текст программы на нём понятен лишь «посвящённому», либо непонятен вообще, потому что для составления программы нужно написать программу на обычном языке. В то время, как разработчики «реальных» языков программирования стараются сделать синтаксис максимально понятным, а программирование — удобным, создатели эзотерических языков обычно ставят перед собой иные задачи.

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

Наиболее известные: INTERCAL, FALSE, HQ9+, Brainfuck (ориентирован на сокращение синтаксиса (оригинальный Brainfuck имеет 8 команд) при сохранении Тьюринг-полноты), фунгеоидные языки (используют многомерные представления программ), языки, основанные на копировании собственного кода, языки-«чёрные ящики» и др.
^

ПРИМЕРЫ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ


Си (англ. C) — стандартизированный процедурный язык программирования, разработанный в начале 1970-х годов сотрудниками Bell Labs Кеном Томпсоном и Денисом Ритчи как развитие языка Би. Си был создан для использования в операционной системе UNIX. С тех пор он был портирован на многие другие операционные системы и стал одним из самых используемых языков программирования. Си ценят за его эффективность; он является самым популярным языком для создания системного программного обеспечения. Его также часто используют для создания прикладных программ. Несмотря на то, что Си не разрабатывался для новичков, он активно используется для обучения программированию. В дальнейшем синтаксис языка Си стал основой для многих других языков.

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

Название «Си++» происходит от Си, в котором унарный оператор ++ обозначает инкремент переменной.

В 1990-х годах язык стал одним из наиболее широко применяемых языков программирования общего назначения.

При создании Си++ стремились сохранить совместимость с языком Си. Большинство программ на Си будут исправно работать и с компилятором Си++. Си++ имеет синтаксис, основанный на синтаксисе Си.

Как и С, критикуется за множество опасных элементов, неумелое использование которых может грозить катастрофой: указатели, переполнение буфера, утечка памяти и др. Однако, является наиболее популярным в данный момент ввиду оптимального соотношения скорости разработки программ к скорости их работы и высокой эффективности языка.
^ C# (произносится си-шарп) — объектно-ориентированный язык программирования. Разработан в 1998—2001 годах группой инженеров под руководством Андерса Хейлсберга в компании Microsoft как основной язык разработки приложений для платформы Microsoft .NET. Компилятор с C# входит в стандартную установку самой .NET, поэтому программы на нём можно создавать и компилировать даже без инструментальных средств, вроде Visual Studio.

C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к C++ и Java. Язык имеет статическую типизацию, поддерживает полиморфизм, перегрузку операторов (в том числе операторов явного и неявного приведения типа), делегаты, атрибуты, события, свойства, обобщённые типы и методы, итераторы, анонимные функции с поддержкой замыканий, LINQ, исключения, комментарии в формате XML.

Переняв многое от своих предшественников — языков C++, Java, Delphi, Модула и Smalltalk — С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем: так, C# не поддерживает множественное наследование классов (в отличие от C++).
Java — объектно-ориентированный язык программирования, разрабатываемый компанией Sun Microsystems. Приложения Java обычно компилируются в специальный байт-код, поэтому они могут работать на любой виртуальной Java-машине (JVM, программой, обрабатывающей байтовый код и передающей инструкции оборудованию как интерпретатор, но с тем отличием, что байтовый код, в отличие от текста, обрабатывается значительно быстрее) независимо от компьютерной архитектуры. Основной девиз: написано однажды - работает везде.

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

Обе критикуются за низкую скорость работы (следствие из высокой скорости разработки) и за закрытость (до недавнего времени открытых клонов существовало мало, и те далеко были позади основных реализаций). Используются, в основном, при написании прикладных программ, а также клиент-серверного ПО и веб-приложений (Java Сервлеты, язык ASP.NET).
Python — высокоуровневый язык программирования общего назначения с акцентом на производительность разработчика и читаемость кода. Синтаксис ядра Python минималистичен. В то же время стандартная библиотека включает большой объём полезных функций.

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

Python — активно развивающийся язык программирования, новые версии (с добавлением/изменением языковых свойств) выходят примерно раз в два с половиной года. Вследствие этого и некоторых других причин на Python отсутствуют ANSI, ISO или другие официальные стандарты, их роль выполняет CPython.

Активно используется в роли скриптового языка и в административных целях, набирает популярность в прикладном сегменте и сегменте веб-приложений.
Perl — высокоуровневый интерпретируемый динамический язык программирования общего назначения, созданный Ларри Уоллом, лингвистом по образованию. Название языка представляет собой аббревиатуру, которая расшифровывается как Practical Extraction and Report Language «практический язык для извлечения данных и составления отчётов». Первоначально аббревиатура состояла из пяти символов и в таком виде в точности совпадала с английским словом pearl, жемчужина. Но затем стало известно, что такой язык существует и букву «а» убрали. Талисманом языка Perl является верблюд — не слишком красивое, но очень выносливое животное, способное выполнять тяжёлую работу.

Согласно Ларри Уоллу, Perl имеет два девиза. Первый — «There’s more than one way to do it» («Есть больше одного способа сделать это», также известный как TMTOWTDI); второй — «Easy things should be easy and hard things should be possible» («Простые вещи должны быть простыми, а сложные вещи — возможными»).

Основной особенностью языка считаются его богатые возможности для работы с текстом, в том числе реализованные при помощи регулярных выражений. Перл унаследовал много свойств от языков Си, shell script, awk.

Популярен в административных целях и для создания веб-приложений.
^ PHP (англ. PHP: Hypertext Preprocessor) — скриптовый язык программирования общего назначения, интенсивно применяющийся для разработки веб-приложений. В настоящее время поддерживается подавляющим большинством хостинг-провайдеров и является одним из лидеров среди языков программирования, применяющихся для создания динамических веб-сайтов.
Ruby — динамический, рефлективный, интерпретируемый язык высокого уровня для быстрого и удобного объектно-ориентированного программирования. Язык обладает независимой от операционной системы реализацией многопоточности, строгой динамической типизацией, сборщиком мусора и многими другими возможностями. Ruby близок по особенностям синтаксиса к языкам Perl и Эйфель, по объектно-ориентированному подходу — к Smalltalk. Также некоторые черты языка взяты из Python, Лисп, Dylan и CLU.

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

^

СРЕДЫ РАЗРАБОТКИ


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

Первые программы писались еще на терминалах в примитивных текстовых редакторах, либо в специальных компиляторах/интерпретаторах в диалоговом режиме. Да и писались программы, в основном, для научных целей. Позже появились более продвинутые средства. Так, текстовые редакторы стали улучшаться, появились текстовые среды, такие как Vi, Vim, Emacs. Одной из наиболее значимых программ стал пакет Turbo Pascal компании Borland. Данный пакет распространялся не только с компилятором, но и еще с удобным текстовым редактором, который со временем обзавелся еще такими функциями, как подсветка синтаксиса и режим отладчика. С тех пор стает все более популярный термин IDE.

IDE – сокращение от Integrated Development Environment (Интегрированная Среда Разработки). Это особый класс программ, позволяющий максимально упростить программисту процесс разработки ПО. Так, современная IDE часто идет в комплекте с компилятором, отладчиком, набором дополнительных библиотек, набором документации. С развитием графического интерфейса (GUI) в конце 80-х, IDE становятся более интерактивными и визуальными. С этих пор IDE включают в себя кроме редактора кода еще и редактор графического интерфейса, а с середины 90-х в средах появляются такие функции, как браузер классов, браузер функций, автодополнение, анализ кода и т.д.

Некоторые среды программирования поддерживают большое количество языков программирования. Другие же – класс языков. Третьи – один-два языка программирования. Далее будут рассмотрены наиболее популярные среды первого типа.
^ Текстовые редакторы и текстовые среды

Несмотря на успешное развитие IDE, многие программисты используют текстовые редакторы и текстовые среды для написания программ. Большинство из них не пестрят удобными меню и диалоговыми окнами, и являются по большей части консольными приложениями, однако являются быстрыми, легковесными и удобными для редактирования кода. Особенно можно выделить два редактора: Vi (Vim) и Emacs (их существует много, также популярными являются nano и JEdit). Оба из них – свободные проекты, то есть распространяются с открытыми исходными кодами, и к каждому из них существует огромнейшее количество дополнений. Помимо большого количества расширений, ориентированных на написание текста или разработку программ, существуют пакеты для, выполняющие функции полноценных приложений для чтения почты и новостей, организации личного времени и учёта информации, создания и прослушивания музыки, общения через Jabber или IRC. Количество созданных приложений таково, что можно с успехом выполнять множество задач не выходя из редактора.

С очень давних времен между пользователями Vi и Emacs идут споры по поводу того, какой же редактор лучше, однако, оба из них достаточно сложны и не интуитивны, и поэтому требуют предварительного обучения перед началом работы.
^ Microsoft Visual Studio

Microsoft Visual Studio — линейка продуктов компании Майкрософт, включающих интегрированную среду разработки программного обеспечения и ряд других инструментальных средств.

В Visual Studio 97 компания Microsoft решила собрать и выпустить вместе большую часть своих продуктов для разработки ПО под ОС Windows. Это была первая версия Visual Studio, которая включала в себя Visual Basic 5.0, Visual C++ 5.0, Visual J++ 1.1, Visual FoxPro 5.0, впервые появилась среда разработки ASP — Visual InterDev. Visual Studio 97 — была первой попыткой Microsoft создать единую среду для разработки на разных языках программирования: Visual C++, Visual J++, Visual InterDev, и MSDN использовали одну среду, называемую Developer Studio. Visual Basic и Visual FoxPro использовали отдельные среды для разработки.

Visual Studio – единственная официальная среда разработки для Microsoft Windows. В ней содержится абсолюно все, что необходимо разработчику для написания ПО для этой ОС. Последние версии включают в себя полную поддержку платформы .NET, разработку для Web, различные sdk, API, Windows-библиотеки и прочее. Помимо текстового редактора, поддерживающего множество функций таких как автодополнение, анализатора кода, браузер классов, toolchain, профилирование и т.п., также неотъемлемой частью среды является редактор родного (нативного) графического интерфейса (GUI) Windows.
Eclipse

Eclipse — свободный фреймворк для разработки модульных кроссплатформенных приложений.

Первоначально Eclipse разрабатывалась фирмой IBM как преемник среды разработки IBM VisualAge, в качестве корпоративного стандарта IDE для разработки на разных языках под платформы IBM. По сведениям IBM, проектирование и разработка стоили 40 миллионов долларов. Исходный код был полностью открыт и сделан доступным после того, как Eclipse был передан для дальнейшего развития независимому от IBM сообществу.

Наиболее известные приложения на основе Eclipse Platform — различные «Eclipse IDE» для разработки ПО на множестве языков (например, наиболее популярный «Java IDE», поддерживавшийся изначально, не полагается на какие-либо закрытые расширения, использует стандартный открытый API для доступа к Eclipse Platform).

Eclipse — в первую очередь полноценная Java IDE, нацеленная на групповую разработку: поддержка CVS входит в поставку Eclipse, активно развиваются несколько вариантов SVN-модулей, существует поддержка VSS и других. В силу бесплатности и высокого качества, Eclipse во многих организациях является корпоративным стандартом для разработки приложений.

Второе назначение Eclipse — служить платформой для разработки новых расширений, чем он и завоевал популярность: любой разработчик может расширить Eclipse своими модулями. Уже существуют C/C++ Development Tools (CDT), разрабатываемые инженерами QNX совместно с IBM, и средства для языков COBOL, FORTRAN, PHP и пр. от различных разработчиков. Множество расширений дополняет среду Eclipse менеджерами для работы с базами данных, серверами приложений и др.

Eclipse написана на Java, потому является платформо-независимым продуктом, за исключением библиотеки SWT, которая разрабатывается для всех распространённых платформ. Библиотека SWT используется вместо стандартной для Java библиотеки Swing. Она полностью опирается на нижележащую платформу (операционную систему), что обеспечивает быстроту и натуральный внешний вид пользовательского интерфейса, но иногда вызывает на разных платформах проблемы совместимости и устойчивости приложений.
Code::Blocks

Code::Blocks — свободная кроссплатформенная среда разработки. Code::Blocks написана на С++ и использует библиотеку wxWidgets (для прорисовки GUI). Имея открытую архитектуру, может масштабироваться за счёт подключаемых модулей. Поддерживает языки программирования С, С++, D (с ограничениями).

Code::Blocks разрабатывается для Windows, Linux и Mac OS X. Среду можно собрать из исходников практически под любую Unix-подобную систему, например FreeBSD.

Имеет поддержку некоторых существующих компиляторов, таких как Microsoft Visual C++, Borland C++ 5.5, Watcom, Intel C++ Compiler, а особенно GCC (Mingw).
^ NetBeans IDE

NetBeans - свободная интегрированная среда разработки приложений (IDE) на языках программирования Java, JavaFX, Ruby, Python, PHP, JavaScript, C++ и ряде других. IDE написана на Java, поэтому способна работать под большинством современных платформ.

Разрабатуемая компанией Sun Microsystems, IDE изначально была закрыта, и приспособлена только под язык Java. После открытия исходного кода, сообщество способствовало включению поддержки многих современных языков программирования, а также различных VCS (системы контроля версий). Несмотря на богатые возможности, нет функций создания графических интерфейсов. Фактически, NetBeans – главный конкурент Eclipse.
MonoDevelop

MonoDevelop — свободная среда разработки, предназначенная для создания приложений C#, Java, Boo, Nemerle, Visual Basic .NET, CIL, C и C++.

Изначально это был порт SharpDevelop на Mono/GTK+, но с того времени проект далеко ушел от своего начального состояния.

Не имеет встроенного отладчика, однако имеет поддержку создания графических интерфейсов (в частности, для платформы Mono).

MonoDevelop является частью проекта Mono (свободная реализация платформы .NET).
^ QT Creator

Qt Creator (ранее известная под кодовым названием Greenhouse) — кроссплатформенная IDE для работы с фреймворком Qt, разработанная Qt Software.

IDE сделана специально для разработчиков на Qt и имеет богатейшие возможности для облегчения разработки ПО для этого фреймворка. Имеет встроенный Qt Designer и Qt Assistant, позволяющие составлять графические интерфейсы и справочные системы соответственно.

Для не Qt-разработчиков полезным может оказаться хороший текстовый редактор с автодополнением и отладчиком.
Delphi

Embarcadero Delphi, ранее Borland Delphi и CodeGear Delphi, — интегрированная среда разработки ПО для Microsoft Windows на языке Delphi, созданная первоначально фирмой Borland и на данный момент принадлежащая и разрабатываемая Embarcadero Technologies. Embarcadero Delphi является частью пакета Embarcadero RAD Studio.

Фактически, единственная полноценная IDE и компилятор для разработки на языке программирования Delphi. Закрыта и доступна только для Windows (Kylix – реализация для Linux, однако же, давно заброшена по причине убыточности).
Lazarus

Lazarus — свободная среда разработки программного обеспечения для компилятора Free Pascal Compiler. Интегрированная среда разработки предоставляет возможность кроссплатформенной разработки приложений в Delphi-подобном окружении.

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

Добавить документ в свой блог или на сайт

Похожие:

Что такое язык программирования icon1 Языки и системы программирования
Язык программирования (programming language) формальный язык, на котором создаются компьютерные программы. Язык программирования...

Что такое язык программирования iconПрограмма на С++ состоит из одного или нескольких файлов ($$R 3)
Это справочное руководство описывает язык программирования С++ по состоянии на май 1991. С++ язык программирования общего назначения,...

Что такое язык программирования iconКнига Б. Страуструпа "Язык программирования С++"
Книга Б. Страуструпа "Язык программирования С++" дает описание языка, его ключевых понятий и основных приемов программирования на...

Что такое язык программирования iconА вы знаете, что языки веб-программирования бывают клиентскими и серверными?
А вы знаете, что языки веб-программирования бывают клиентскими и серверными? А вы знаете, чем они отличаются, как работают? А вы...

Что такое язык программирования iconУроки по информатике в школе: какой язык программирования выбрать?
Мне кажется, что в школе правильнее познакомиться (без детального изучения) с несколькими языками программирования. Достаточно вместе...

Что такое язык программирования iconКогда появился язык программирования С?
Стандарт языка с начал разрабатываться рабочей группой института стандартов ansi в 1982 году. Международный стандарт языка с принят...

Что такое язык программирования iconБ. Керниган, Д. Ритчи Язык программирования Си Издание 3-е, исправленное...
К36 Язык программирования Си.\Пер с англ., 3-е изд., испр. Спб.: "Невский Диалект", 2001. 352 с.: ил

Что такое язык программирования iconМ. Бен-Ари Языки программирования. Практический сравнительный анализ
«родной» язык программирования и не способны ни проанализировать и сравнить конструкции языка, ни оценить преимущества и недостатки...

Что такое язык программирования iconМ. Бен-Ари Языки программирования. Практический сравнительный анализ. Предисловие
«родной» язык программирования и не способны ни проанализировать и сравнить конструкции языка, ни оценить преимущества и недостатки...

Что такое язык программирования iconЯзык программирования C++ это C
Коротко различия между С++ и "старым С" приведены в #15. В этом руководстве описывается язык по состоянию на Июнь 1985

Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
uchebilka.ru
Главная страница


<