Как компьютер понимает программу написанную на языке высокого

В первых вычислительных машинах программы записывались в виде последовательности из 0 и 1 и вводились в машину с помощью специального щита, связанного с процессором, и штырьков, кодировавших эти 0 и 1. По мере развития вычислительной техники изменялись и способы записи и ввода программы в оперативную память. Скоро стало ясно, что человека можно освободить от записи программы в виде двоичных последовательностей. Вместо двоичных кодов можно использовать другую, символическую систему обозначений команд и данных, а перевод в машинные коды осуществить с помощью специальной программы, выполняемой компьютером. Так появились языки ассемблерного типа или ассемблеры (от англ. toassemble – собирать). Однако и на ассемблерном языке даже простейшая программа – это длинная последовательность команд, по структуре совпадающих с машинными. Написать такую программу тоже нелегко, к тому же нужно знать множество подробностей устройства компьютера (например, для чего предназначены те или иные регистры, какие адреса памяти можно использовать, а какие нельзя, и т. п.). Поэтому программирование на ассемблерном языке – удел немногих. В 1950-х годах начался поиск языков, призванных ускорить и облегчить процесс программирования. Были нужны языки, более близкие по форме как к математическому, так и к человеческому языку, свободные от подробностей машинного выполнения, но при этом позволяющие переводить программы в соответствующие машинные с помощью самой машины. И такие языки вскоре были разработаны. Их стали называть языками программирования высокого уровня, поскольку действия компьютера в них представлены с высоким уровнем абстракции. В машинных же языках действия компьютера описаны подробно, т. е. с низким уровнем абстракции. Первый язык высокого уровня появился в конце 1950-х годов и назывался Фортран (Fortran – это сокращение от англ. formula translation, т. е. перевод формул). Вместе с языками разрабатывались программы перевода «высокоуровневых» программ в машинные – трансляторы или компиляторы. Транслятор читает программу, записанную на языке высокого уровня, распознает действия компьютера, которые она задает, и выражает их в виде соответствующей машинной программы. Как создается программа? Сначала заказчик рассказывает программисту, что он хочет получить (часто не понимая, что именно). Программист (возможно не один) пытается уяснить, что хочет заказчик. Для этого ему приходится анализировать и уточнять постановку задачи. В результате создается спецификация задач, т.е. точное и однозначное ее описание. Иногда она соответствует тому, что хотел заказчик. Чем выше квалификация программистов, том больше шансов, что они правильно поймут заказчика и напишут правильную спецификацию задачи. Из спецификации задачи становится ясно, какие действия нужно выполнить для ее решения. Их нужно описать, чтобы компьютер мог решать задачу. Начинается проектирование программы. На основе спецификации задачи пишется спецификация программы, т. е. действия описываются в самом общем виде, далеком от того, что может выполнять компьютер. Этот алгоритм уточняется несколько раз до вида, по которому легко написать программу. Обычно в задаче можно выделить несколько подзадач и уточнить их решение по отдельности. Соответственно и алгоритм строится из связанных между собой частей, описывающих решение подзадач (структурное программирование). Написание программы (или ее частей) принято называть кодированием или разработкой. Чаще всего программа пишется на каком-либо языке высокого уровня (иногда отдельные ее части на разных языках) и транслируется на машинный язык. В процессе кодирования программисты могут наделать ошибок, которые обнаруживаются либо при переводе программы на машинный язык, либо при пробном выполнении программы или ее частей. Начинается процесс обнаружения и исправления ошибок – отладка программы. Отладка включает в себя многократное выполнение программы с различными вариантами входных данных. Данные подбираются специально для того, чтобы выявить как можно больше ошибок, если они есть. Такая целенаправленная проверка работоспособности программы называется тестированием. Оно не гарантирует, что в программе нет ошибок, но позволяет выявить некоторые из них. Чем тщательнее проводится тестирование, тем больше ошибок обнаруживается и меньше остается. Еще нужны сопровождающие документы, в которых описана структура программы и приводятся инструкции по ее применению. Назначение инструкций очевидно, а спецификация нужна для исправления программы уже во время ее использования и дальнейшего развития. В идеале, документы готовятся еще в процессе проектирования и разработки. Однако может оказаться, что при проектировании программы был выбран не самый удачный алгоритм, из-за которого программа выполняется слишком медленно или расходует много памяти. Начинаются изменения программы, требующие нового кодирования и отладки. Потом заказчика осеняют новые идеи, и приходится вообще заново ставить задачу и проектировать программу. И, кажется, что конца этому нет. Тем не менее, в мире создаются программы, которые работают правильно и эффективно. И продуктивность работы программистов в целом возрастает. Причин несколько. Одна из них – для каждого этапа создания программы, от анализа задачи до отладки, существуют и развиваются технологии, т. е. определенные системы методов, применение которых позволяет «не делать лишних движений». Кроме того, постоянно совершенствуются инструменты, ускоряющие и облегчающие процесс разработки, — системы программирования. Кроме всего прочего, они реализуют очень важный принцип повторного использования кода. Дело в том, что во многих задачах возникают одни и те же подзадачи, для которых можно использовать одни и те же программы (они называется подпрограммами), не создавая их заново. Такие подпрограммы собираются в специальные библиотеки подпрограмм. Чем богаче библиотека, тем меньше работы остается при разработке программы. Рассмотрим, как программа на языке высокого уровня преобразуется в машинную. Программа (исходный текст) с помощью специальной программы (текстовый редактор) обычно записывается на диск в виде исходного файла (рис. 3.1.) Возможно, программа состоит из нескольких исходных файлов – в больших программах их может быть десятки и сотни. Рис. 3.1. Создание исходного файла Затем запускается транслятор, который читает с диска исходный файл и строит его машинный эквивалент – объектный код. Процесс выполнения программы-транслятора называется трансляцией исходного текста. Как правило, объектный код программы содержит далеко не все необходимые команды (программа может состоять из частей или включать в себя программы из библиотек), поэтому он обрабатывается еще одной программой – редактором связей или компоновщиком. Компоновщик «собирает» (компонует) полный код программы и записывает его или в оперативную память (загружает), или на диск в виде выполнимого файла (рис. 3.2.), который можно загрузить в дальнейшем. Рис. 3.2. Создание выполнимой машинной программыИнтерпретатор, в отличие от транслятора, не создает машинную программу. Входные данные для него – это программа на языке высокого уровня и данные, которые должны читаться при ее выполнении (рис. 3.3.). Интерпретация программы состоит в том, что действия, ею заданные, сразу выполняются. Как правило, интерпретация исходной программы происходит медленнее, чем выполнение соответствующей машинной программой.

Рис. 3.3. Интерпретация высокоуровневой программы Еще один способ обработки исходной программы сочетает трансляцию и интерпретацию. Программа транслируется не в машинные команды, а в некоторое промежуточное представление, которое в дальнейшем интерпретируется. Такая реализация облегчает переносимость программ, т.е. возможность их выполнения на разных типах компьютеров и на основе разных операционных систем. Так реализован, например, язык Java, быстро ставший популярным. Интерпретация программы используется также и в отладчике. Он позволяет интерпретировать исходную программу небольшими порциями и видеть результаты выполнения каждой, облегчая поиск ошибок. Описанные средства (текстовый редактор, транслятор и/или интерпретатор, компоновщик, загрузчик и отладчик) обычно собираются вместе и образуют систему программирования или интегрированную среду разработки (Integrated Design Environment — IDE). Кроме них, в ее состав входит библиотека стандартных подпрограмм. Лекция № 2. Введение в язык С++

  1. История языка С++
Читайте также:
Как сделать совместимость программ

Язык С++ развился из С, который в свою очередь был создан на основе двух предшествующих языков — BCPL и В. Язык BCPL был создан в 1967 году Мартином Ричардом как язык для написания компиляторов и программного обеспечения операционных систем. Кен Томпсон предусмотрел много возможностей в своем языке В – дубликате BCPL и использовал В для создания ранних версий операционной системы UNIX в Bell Laboratories в 1970 году на компьютере DEC PDP-7. И BCPL, и В были «нетипичными» языками — каждый элемент данных занимал одно «слово» в памяти и бремя обработки элемента данных, например, как целого или действительного числа падало на плечи программиста. Язык C был развит из В Деннисом Ритчи в Bell Laboratories и первоначально реализован на компьютере DEC PDP-11 в 1972 году. С использует многие важные концепции BCPL и В, а также добавляет типы данных и другие свойства. Первоначально С приобрел широкую известность как язык разработки операционной системы UNIX. Сегодня фактически все новые операционные системы написаны на С или на С++. В течение двух последних десятилетий С стал доступным для большинства компьютеров. С независим от аппаратных средств. При тщательной разработке на С можно написать мобильные программы, переносимые на большинство компьютеров. В конце 70-х годов С развился в то, что теперь относят к «традиционному С», «классическому С» или «С Кернигана и Ритчи». Публикация издательством Prentice-Hall книги Кернигана и Ритчи «Язык программирования С» привлекла широкое внимание к этому языку. Эта публикация стала одной из наиболее удачных книг по вычислительной технике за все время. Широкое распространение С на различных типах компьютеров (иногда называемых аппаратными платформами) привело, к сожалению, ко многим вариациям языка. Они были похожи, но несовместимы друг с другом. Это было серьезной проблемой для разработчиков программ, нуждавшихся в написании совместимых программ, которые можно было бы выполнять на нескольких платформах. Стало ясно, что необходима стандартная версия С. В 1983 году при Американском Национальном Комитете Стандартов в области вычислительной техники и обработки информации был создан технический комитет Х3J11, чтобы «обеспечить недвусмысленное и машинно-независимое определение языка». В 1989 году стандарт был утвержден. ANSI скооперировался с Международной Организацией Стандартов (International Standards Organizations — ISO), чтобы стандартизировать С в мировом масштабе; совместный стандарт был опубликован в 1990 году и назван ANSI/ISO 9899: 1990. Копии этого документа можно заказать в ANSI. Второе издание книги Кернигана и Ритчи, вышедшее в 1988 году, отражает эту версию, называемую ANSI С; эта версия языка используется теперь повсеместно. Поскольку С — стандартизированный, аппаратно-независимый, широко доступный язык, приложения, написанные на С, часто могут выполняться с минимальными модификациями или даже без них на самых различных компьютерных системах. С++ — расширение С был разработан Бьерном Строустропом в начале 80-х годов в Bell Laboratories. С++ обеспечивает ряд свойств, которые «приводят в порядок» язык С, но, что более важно, он обеспечивает возможность объектно-ориентированного программирования. Это явилось революционной идеей в мире программного обеспечения. Быстрое, корректное и экономное создание программного обеспечения остается иллюзорной мечтой и это в то время, когда требуется проектирование нового и все более мощного программного обеспечения. Объекты – это эффективные повторно используемые компоненты программного обеспечения, моделирующие элементы реального мира. Разработчики программного обеспечения обнаруживают, что использование достижений модульного, объектно-ориентированного проектирования может значительно повысить продуктивность групп разработки по сравнению с предшествующей популярной технологией программирования, такой, как структурное программирование. Объектно-ориентированные программы легче понимать, корректировать и модифицировать. Было разработано много других объектно-ориентированных языков, включая наиболее заметный из них Smalltalk, разработанный в Центре Исследований Palo Alto компании Xerox (Palo Alto Research Centre – PARC). Smalltalk – чистый объектно-ориентированный язык – в нем буквально все является объектом. С++ — это гибридный язык, он предоставляет возможность программировать и в стиле С, и в объектно-ориентированном стиле, и в обоих стилях сразу. Существует глубокая уверенность в том, что с середины 90-х годов С++ станет доминирующим системно-образующим языком.

Как на самом деле работает двоичный код?

С чего началось программирование? Первые программы до появления кода

Ограничение

Для продолжения скачивания необходимо пройти капчу:

Источник: studfile.net

Трансляция и интерпретация программ.

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

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

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

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

Для организации выполнения таких программ на конкретном

Читайте также:
Программа для настройки скорости мыши

компьютере существует два основных решения: трансляция и интерпретация.

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

Транслятор — это языковой процессор, который воспринимает программы на некотором исходном языке в качестве входных данных, а на выходе выдает эквивалентные по своей

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

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

Компилятор — транслятор, для которого исходным является язык высокого уровня, а его объектный язык близок к машинному языку реального компьютера. Это либо язык ассемблера, либо какой-нибудь вариант машинного языка. Например, программы на языке С компилируются, как правило, в программы на языке ассемблера, которые затем транслируются ассемблером в машинный язык.

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

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

Препроцессор (макропроцессор) — это транслятор, исходный язык которого является расширенной формой какого-либо языка высокого уровня (например, Java или C++), а объектный язык — стандартной версией этого языка. Объектная программа, созданная препроцессором, готова к трансляции и выполнению обычными процессорами исходного стандартного языка.

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

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

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

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

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

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

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

посредством их интерпретации.

Операторы

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

Типы операторов

Существует следующие виды операторов: арифметические, текстовые, операторы сравнения и операторы ссылок.

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:

Источник: studopedia.ru

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

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

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

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

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

Как правило, язык программирования существует в виде:

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

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

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

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

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

Читайте также:
Использование антивирусных программ для защиты компьютера

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

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

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

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

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

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

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

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

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

  • Адресный язык программирования
  • Фортран
  • Кобол
  • Алгол
  • Pascal
  • Pascal ABC
  • Python
  • Java
  • C
  • Basic
  • C++
  • Objective-C
  • Smalltalk
  • C#
  • Delphi

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

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

Современные языки программирования рассчитаны на использование 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 или символов Юникода) зависит от реализации: иногда они разрешаются только в комментариях и символьных/строковых константах, а иногда и в идентификаторах. В СССР существовали языки, где все ключевые слова писались русскими буквами, но большую популярность подобные языки не завоевали.
Расширение набора используемых символов сдерживается тем, что многие проекты по разработке программного обеспечения являются международными. Очень сложно было бы работать с кодом, где имена одних переменных записаны русскими буквами, других — арабскими, а третьих — китайскими иероглифами. Вместе с тем, для работы с текстовыми данными языки программирования нового поколения (Delphi 2006, C#, Java) поддерживают Unicode.

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

  • Функциональные
  • Процедурные (императивные)
  • Стековые
  • Аспектно-ориентированные
  • Декларативные
  • Динамические
  • Учебные
  • Описания интерфейсов
  • Прототипные
  • Объектно-ориентированные
  • Рефлексивные (то есть поддерживающие отражение)
  • Логические
  • Скриптовые (сценарные)
  • Эзотерические

Источник: unetway.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru