Языки программирования введение для реферата

У вас нет времени на реферат или вам не удаётся написать реферат? Напишите мне в whatsapp — согласуем сроки и я вам помогу!

В статье «Как научиться правильно писать реферат», я написала о правилах и советах написания лучших рефератов, прочитайте пожалуйста.

Собрала для вас похожие темы рефератов, посмотрите, почитайте:

  1. Реферат на тему: Растения занесенные в красную книгу
  2. Реферат на тему: Россия в первой мировой войне
  3. Реферат на тему: Речевой этикет
  4. Реферат на тему: Бег и здоровье

Реферат на тему: Языки программирования

Введение

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

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

В
своей работе я хочу проанализировать несколько современных основных языков,
таких как Pascal, Assembler, C++, Basics, Refal и Java, а также системы
программирования и их компоненты.

Если
проследить историю используемых сегодня языков программирования, таких как C и
Pascal (а также менее популярных языков Basic, Fortran или Hell), то окажется,
что все они зародились на рубеже 1960-х и 1970-х годов. Другими словами, век
современных языков программирования (за исключением Java, о котором мы
конкретно говорим) прошел уже третье десятилетие, которое является
экстремальным периодом для компьютерной индустрии. Современные языки
программирования по меньшей мере на десятилетие старше, чем Интернет, Windows и
персональные компьютеры. В то же время новые языки не перестали регулярно
появляться, но ни один из них не задержался в практике программирования, хотя
новые идеи, внедряемые ими, дополняли уже известные (как это произошло с
объектно-ориентированным программированием).

Другой
важной особенностью развития языка в последние десятилетия является прекращение
попыток создания «универсального» языка программирования, который бы
объединил в себе все последние достижения в области развития языка (из
экспериментов 1960-х _70-х годов можно вспомнить Algol, PL/1 или Hell). Большие
«языковые» проекты, как и языки, создавшие их, безвозвратно уходят в
прошлое.

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

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

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

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

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

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

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

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

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

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

Паскаль

В
1968 году Никлаус Вирт написал первый компилятор языка, Паскаль. Этот язык был
назван в честь выдающегося французского математика Блеза Паскаля. Паскаль —
успешный, общеприменимый язык, который подходит для программирования как
научных, так и коммерческих задач. Входные/выходные возможности этого языка
несколько слабее, чем у коммерческих языков, таких как COBOL, поэтому он никогда
не претендовал на замену. Тем не менее, с момента своего первого релиза Pascal
является довольно солидным языком, который успешно выполняет свою работу.

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

В
1970-х годах Паскаль был «единственным языком программирования, подходящим
для всех». Компания IBM попыталась создать нечто подобное с помощью языка
PL/I. Как и ПЛ/И, Паскаль не достиг высшей цели. Популярность языка Паскаль
снижалась так же быстро, как и росла. В 1970-х годах наблюдался огромный рост
использования Паскаля, а в 1980-х годах интерес к Паскалю резко упал.

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

Ассемблер

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

Несмотря
на то, что ассемблер является машинно-ориентированным языком, т.е. языком
низкого уровня, программист может использовать его как для работы на высоком, так
и на среднем уровне. Низкий уровень программирования на ассемблере
подразумевает прямой доступ к каналам ввода/вывода устройств, называемым
идеальными портами, и прямой доступ к оперативной памяти. Использование этого
режима позволяет неопытному программисту использовать более четкий и легкий
стиль разработки программы. Более опытные программисты ассемблерного языка
могут использовать такие идеальные возможности режима, как вложенные структуры
и объединения.

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

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

C++

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

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

Так
как C++ в основном основан на C. Поэтому акцент в C на низкоуровневых
инструментах достаточен для решения наиболее актуальных задач системного
программирования. В свою очередь, С в значительной степени обязан своим
предшественником ППГ. C++ — машино-ориентированный язык программирования,
предназначенный для того, чтобы сделать программирование более приятным для
серьезного программиста. Помимо мелких деталей, С++ — это высокомерие языка
программирования Си.

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

Если
пользователю нужен этот тип, его можно определить на самом языке. Фактически,
основной задачей программирования на С++ является определение универсальных и
специальных типов приложений.

Популярность
объектно-ориентированного С++ создала много новых языков для современного
Интернета. Причиной успешного развития Java (и его производных, таких как
JavaScript) является широкое использование С++, и хотя С++ не поддерживает
достаточную безопасность при программировании веб-сайтов, его
объектно-ориентированная природа делает Java хорошим кандидатом для
программирования Интернет-объектов. Компания Sun Microsystems изменила язык
С++, добавив элементы с достаточной безопасностью и удалив некоторые
сомнительные элементы из языка С++. (Одним из примеров является множественное
наследование, которое позволяет генерировать один объект программирования,
например, окно, из набора нескольких родительских окон с различными свойствами.
Такая концепция запутанна, даже если она сформулирована на высоком уровне).

BASIC
был разработан в Дартмутском колледже и предназначен для начинающих. ФОРТРАН
был сложным языком для студентов не математических факультетов. Джон Кемени и
Томас Курц, учившиеся в Дартмуте, использовали FORTRAN в качестве основы для
разработки BASIC. BASIC — это аббревиатура от Beginner’s All-purpose Symbolic
Instruction Code, название, которое говорит само за себя. Интерпретатор обычно
используется с BASIC, хотя современные версии BASIC скомпилированы. Это
позволяет начинающим программистам сконцентрироваться на языке
программирования, а не на специфике компиляции. Как и все интерпретируемые
языки, программы на BASIC работают медленнее скомпилированных программ, поэтому
программы на BASIC не используются в коммерческих приложениях.

Этот
язык стал одним из самых распространенных. Базовый был изначально задуман как
очень простой язык, который можно выучить очень быстро. Язык содержал
примитивные инструменты редактирования, освобождавшие пользователя от
необходимости понимать все сложности базовой операционной системы. Вначале
Basic использовался только для обработки числовых значений, позже он был
расширен обработкой строковых переменных и теперь обеспечивается рядом методов
простой манипуляции через символьные цепочки, которые фактически стали стандартом.
Простота Basic сделала его наиболее подходящим языком программирования для
первых микрокомпьютеров. Сегодня это основной язык программирования для
персональных компьютеров. К сожалению, почти каждая машина имеет свой
собственный диалект на Базовом, поэтому обеспечить мобильность программ на
Базовом довольно сложно. В настоящее время многие основные диалекты включают в
себя современные структуры управления, такие как: REPEAT… UNTIL, что дает
определенный оптимизм.

Направление

Конечно,
мы также должны проинформировать вас о некоторых языках программирования,
которые были разработаны в нашей родной стране. Одним из таких языков является
Refal, который был разработан в России (СССР) в 1966 году. АКАДЕМИЯ НАУК СССР.
Этот язык прост и удобен для описания манипуляций с любыми текстовыми
объектами.

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

Программирование
на Refal имеет особенность, которая в первую очередь связана с тем, что Refal
является языком функционального типа, в отличие от обычных операторских языков,
таких как Algol, Fortran и др. Если программа на операторских языках представляет
собой не более чем набор операторов команд, то программа на языке Refal по сути
является описанием отношений и отношений между определенными операторами. Для
определения структур в Refal используются круглые скобки, а особенности всех
реализаций языка таковы, что использование круглых скобок резко повышает
эффективность выполнения программы. Это достигается за счет использования
круглых скобок для связывания адресов.

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

Ява

Java
— объектно-ориентированный язык программирования, разработанный компанией Sun
Microsystems. Java-приложения обычно компилируются в специальный байтовый код,
так что они могут быть выполнены на любой Java-виртуальной машине (JVM)
независимо от архитектуры компьютера. Официальная дата выхода — 23 мая 1995 г.
Первоначально язык назывался Oak, он был разработан Джеймсом Гослингом для
программирования устройств бытовой электроники. Позже он был переименован в
Java и использовался для написания клиентских приложений и серверного
программного обеспечения. На эмблеме на официальном языке, названной в честь марки
кофе Java, изображена чашка поднимающегося кофе.

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

Одним
из недостатков концепции виртуальной машины является то, что выполнение
байтового кода виртуальной машиной может снизить производительность программ и
алгоритмов, реализованных на языке Java. Это утверждение было верно для первых
версий Java Virtual Machine, но в последнее время оно почти утратило свою
значимость. Этому способствовал ряд улучшений: использование технологии
трансляции байт-кода в машинный код во время работы программы (технология JIT)
с возможностью хранения версий класса в машинном коде, широкое использование
платформоориентированного (нативного) кода в стандартных библиотеках,
аппаратного обеспечения, позволяющего ускорить обработку байт-кода (например,
технология Jazelle, поддерживаемая некоторыми процессорами компании ARM).

Идеи,
лежащие в основе концепции и различных реализаций Java Virtual Machine
Environment, вдохновили многих энтузиастов на расширение списка языков, которые
могут быть использованы для создания программ, запускаемых на виртуальной
машине. Эти идеи также нашли выражение в общей спецификации инфраструктуры
языка CLI, лежащей в основе платформы Microsoft .NET.

Возможности реализации языков программирования

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

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

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

Компилятор
выдает полный результат — программу в машинном коде. Затем эта программа
выполняется. Вы можете сохранить скомпилированную версию исходной программы на
диск. Для повторного запуска исходной программы компилятор не нужен. Достаточно
загрузить скомпилированную ранее версию с жесткого диска в память компьютера и
выполнить ее.

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

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

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

Иногда
один и тот же язык может использовать и компилятор, и интерпретатор. Такими
языками являются, например, Basic. Как правило, компиляторы и интерпретаторы
приравниваются к языкам, с которых они должны переводиться. Слова Pascal, Ada,
C могут относиться как к названиям языков, так и к названиям соответствующих
программ.

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

Недостатком устных переводчиков является то, что они молчат. Они тратят слишком много времени, пытаясь понять, что делать, вместо того, чтобы заниматься бизнесом. При выполнении операторов программы интерпретатор должен сначала просканировать каждый оператор, чтобы прочитать его содержимое (что этот человек просит меня сделать?), а затем выполнить запрошенную операцию. Операторы в шлейфах сканируются без необходимости. Причиной возобновления интереса к компиляторам стало появление быстрых и сложных 64-битных микропроцессоров, типичным представителем которых является Intel Itanium. Компиляторы нового поколения отвечают за увеличение потенциала производительности будущих 64-битных процессоров, такие компиляторы уже создаются в исследовательских лабораториях одних компаний — Hewlett-Packard, Intel, MetaWare, Microsoft и других.

В феврале прошлого года компания Silicon Graphics объявила, что ее оптимизированные компиляторы позволят увеличить производительность программ, выполняемых на компьютерах с процессорами Itanium и операционной системой Linux, на 30-100% по сравнению с существующими продуктами. Как и их предшественники, оптимизированные компиляторы преобразуют программы языка высокого уровня в машинный код. Они также гарантируют наиболее эффективное использование памяти (и особенно процессорного кэша и механизма распараллеливания). Например, процессоры Itanium рассчитаны на одновременную обработку до шести инструкций на каждый процессорный такт. В прошлом году компания Microsoft объявила о выпуске C#, объектно-ориентированного языка программирования, ориентированного на XML. Компания внедряет новый язык как логическое расширение C и C++ для Web-приложений. Ключевыми модулями станут Common Language Runtime for C# и специальный компилятор, который конвертирует текст, написанный на традиционных языках Kobol, Perl, Fortran или других, в промежуточный язык, работающий на новой платформе Microsoft. сеть. Возможно, появится новое поколение компиляторов, которое позволит повысить производительность до уровня, который позволит убедить профессионалов в использовании 64-битных аппаратных архитектур. (См. Приложение №1).

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

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

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

Языки
декларативного программирования — это языки для объявлений и построения
структур. Сюда входят функциональные и логические языки программирования. Эти
языки явно не выполняют алгоритмических действий, то есть алгоритм не задается
программистом, а собирается программой. Декларативные языки указывают, строят
структуру или систему, то есть объявляют (декларируют) некоторые из атрибутов
создаваемого объекта. Эти языки получили широкое применение в системах
автоматизированного проектирования (САПР), в так называемых CAD-пакетах, в
моделировании, в системах искусственного интеллекта.

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

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

Машинно-ориентированные языки

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

Машинный
язык. Одиночный компьютер имеет свой специфический машинный язык (далее ML),
ему предписано выполнять заданные операции над операндами, которые он
определяет, поэтому ML является командным языком. Однако некоторые семейства
компьютеров (например, EC, IBM/370/ и т.д.) имеют один ТЕ для компьютеров
различной производительности. Инструкция каждого из них содержит информацию о
расположении операндов и типе выполняемой операции.

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

Языки
символьного кодирования. Языки символьного кодирования (далее — «языки
кодирования») являются командными языками, так же как и ME. Однако, коды
операций и адреса в машинных инструкциях, представляющие собой
последовательность двоичных (внутренний код) или восьмеричных цифр (часто
используемых при написании программ), заменяются в СНБ символами
(идентификаторами), форма написания которых помогает программисту легче
запомнить семантическое содержание операции. Это приводит к значительному
сокращению количества ошибок при написании программ.

Автокоды. Существуют также языки, которые содержат все возможности NSC за счет расширенного введения макрокоманд — они называются Autocodes. В различных программах существует несколько достаточно общих последовательностей команд, которые соответствуют определенным процедурам преобразования информации. Эффективная реализация таких процедур обеспечивается их формализацией в виде специальных макроинструкций и интеграцией в язык программирования, доступный программисту. Макроинструкции переводятся в машинные инструкции двумя способами — упорядочивая и генерируя. Система инсценировки содержит «скелеты» — серию инструкций, реализующих требуемую функцию, заданную командой макроса.

Макроинструкции обеспечивают передачу фактических параметров, которые вставляются в «скелет» программы во время перевода, что делает ее настоящей машинной программой. В системе с генерацией существуют специальные программы, которые анализируют макроинструкции, определяют, какая функция должна быть выполнена, и формируют необходимую последовательность инструкций, реализующих эту функцию. В обеих системах используются трансляторы NSC и набор макроинструкций, которые также являются операторами автокодирования. Разработанные автокоды называются ассемблерами. Утилиты и т.д. обычно компилируются на таких языках, как ассемблер. Подробнее о языке ассемблера я расскажу в главе 5.Macros. Язык, который является средством для замены строки, описывающей требуемые действия компьютера, на более сжатую форму, называется макросом (замена). В принципе, макрос предназначен для сокращения записи исходной программы. Программный компонент, обеспечивающий работу макросов, называется макропроцессором. Процессор макросов получает определение макроса и исходный код. Реакция макропроцессора на вызов вывода выходного текста. Макрос может работать как с программами, так и с данными одинаково.

Машинные независимые языки

Машинно-независимые языки — это средства описания алгоритмов решения проблем и обрабатываемой информации. Они удобны в использовании для широкого круга пользователей и не требуют от них знания специфики организации функционирования компьютеров и БК.

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

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

Например,
существует много проблемных языков: Fortran, Algol — языки, созданные для
решения математических задач; Simula, Slang — для моделирования; Lisp, Snobol —
для работы со списочными структурами. Я пойду в них дальше.

Универсальные
языки. Для широкого круга задач были созданы универсальные языки: торговля,
наука, моделирование и т.д. Первый универсальный язык был разработан компанией
IBM, которая стала Pl/1 в порядке языков. Вторым по мощности универсальным
языком является алголь-68, который позволяет работать с символами, битами,
числами с фиксированными и плавающими точками. Pl/1 имеет развитую систему
операторов для управления форматами, работы с полями переменной длины, с
данными, организованными в сложных структурах и эффективного использования
каналов связи. Язык учитывает возможности прерывания, которые есть во многих
машинах, и имеет соответствующих операторов. Предусмотрена возможность
параллельного выполнения разделов программы. Программы в Pl/1 компилируются с
использованием автоматических процедур. Язык использует многие свойства Фортрана,
Алголя, Кобола. Но это позволяет не только динамическое, но и управляемое и
статистическое выделение памяти.

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

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

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

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

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

Заключение

Изобретение
самого высокого языка программирования позволило нам общаться с машиной,
понимать ее (конечно, только если ты знаешь используемый язык), так как
американец понимает старый кириллический алфавит, немного знакомый с русским.
Проще говоря, мы так далеки от компьютеров к ВАМ в развитии науки
программирования. Поверь мне, это не сарказм. Просто посмотрите, как развивалась
наука о программировании с момента появления языков программирования, но язык
программирования высочайшего уровня, очевидно, еще ребенок. Но если посмотреть
на темпы роста и развитие новейших технологий в программировании, то можно
предположить, что в ближайшем будущем человеческие знания в этой области
помогут создать языки мира, которые смогут получать, обрабатывать и передавать
информацию в виде мыслей, слов, звуков или жестов. Это то, что я бы назвал
детищем компьютеризированного будущего: «языки программирования
«высшего» уровня». Возможно, концепция решения этой проблемы
проста, и ближайшее будущее этого проекта не за горами, и в этот момент где-то
в Сапороше, Амстердаме, Токио или Иерусалиме молодой, непризнанный специалист
подозревает старый 133МГц и разрабатывает новую систему искусственного
интеллекта, которая в конечном итоге позволяет людям общаться с машиной на ВАС
с помощью своего машинного языка.

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

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

Язык C, разработанный Bell Laboratories, является очень эффективным, но низкоуровневым языком программирования. C — это основа современных языков.

Самым большим преимуществом С++ перед его предшественником является поддержка объектно-ориентированного программирования.

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

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

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

Список литературы

  1. «Информационные технологии и ИКТ. 10-11», Н.Д. Угринович, Москва, 2006;
  2. Технологии управления информацией»: Инфоматика-М.Ф. Меняев: Омега-Л, 2003;
  3. «Информатика», базовый курс, 2-е издание / Под руководством С.В. Симоновича-СПб. Питер, 2004;
  4. Леонтьев. Последняя энциклопедия компьютерного программного обеспечения. — Пресса, 2003;
  5. Ассемблер для Windows, Пирогов В.Ю. 2005 ;
  6. Магданурова Г. I, «Визуальные основы на практике», 2004..;
  7. Васильев П. П. «Турбо Паскаль в примерах и задачах», 2003;
  8. Есипов А.С., «Информатика и информационные технологии», 2003;
  9. В. В. Васильченко «ФОРТРАН». Программирование Windows-приложений на FORTRAN. «», 2003 г;
  10. Брюс Экель «Java Philosophy», 2014.

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

Реферат
на тему:

Языки
программирования, их классификация и
развитие

СОДЕРЖАНИЕ.

1.Введение

1.1.
Интерпретаторы

1.2.
Компиляторы

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

2.1.
Машинно – ориентированные языки

2.1.1.
Машинные языки

2.1.2.
Языки символического кодирования

2.1.3.
Автокоды

2.1.4.
Макрос

2.2.
Машинно – независимые языки

2.2.1.
Машинно – независимые языки

2.2.2.
Универсальные языки

2.2.3.
Диалоговые языки

2.2.4.
Непроцедурные языки

3.
Развитие языков программирования

3.1.
Ассемблер

3.2.
Лисп

3.4.
Бейсик

3.5.
Рефал

3.6.
Пролог и Пролог++

3.7.
Лекс

3.8.
Си

3.8.1.
Особенности языка Си

3.8.2.
Недостатки языка Си

3.9.
Си++

3.9.1.
Замечание по проекту языка Си++

4.
Заключение

5.
Библиография


1.
ВВЕДЕНИЕ

Язык
формирует наш способ

мышления
и определяет то,

о
чем мы можем мыслить.

Б.Л
Ворф

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

Язык
программирования служит двум связанным
между собой целям: он дает программисту
аппарат для задания действий, которые
должны быть выполнены, и формирует
концепции, которыми пользуется
программист, размышляя о том, что делать.
Первой цели идеально отвечает язык,
который настолько “близок к машине”,
что всеми основными машинными аспектами
можно легко и просто оперировать
достаточно очевидным для программиста
образом. Второй цели идеально отвечает
язык, который настолько “близок к
решаемой задаче”, чтобы концепции ее
решения можно было выражать прямо и
коротко.

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

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

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

Можно
писать программы непосредственно на
машинном языке, хотя это и сложно. На
заре компьютеризации(в начале 1950-х
г.г.), машинный язык был единственным
языком, большего человек к тому времени
не придумал. Для спасения программистов
от сурового машинного языка программирования,
были созданы языки
высокого уровня
(т.е. немашинные языки), которые стали
своеобразным связующим мостом между
человеком и машинным языком компьютера.
Языки высокого уровня работают через
трансляционные программы, которые
вводят “исходный код” (гибрид
английских слов и математических
выражений, который считывает машина),
и в конечном итоге заставляет компьютер
выполнять соответствующие команды,
которые даются на машинном языке.
Существует два основных вида трансляторов:
интерпретаторы, которые сканируют и
проверяют исходный код в один шаг, и
компиляторы, которые сканируют исходный
код для производства текста программы
на машинном языке, которая затем
выполняется отдельно.

1.1.
Интерпретаторы

Одно,
часто упоминаемое преимущество
интерпретаторной реализации состоит
в том, что она допускает “непосредственный
режим”. Непосредственный режим
позволяет вам задавать компьютеру
задачу вроде PRINT 3.14159*3/2.1 и возвращает
вам ответ, как только вы нажмете клавишу
ENTER (это позволяет использовать компьютер
стоимостью 3000 долларов в качестве
калькулятора стоимостью 10 долларов).
Кроме того, интерпретаторы имеют
специальные атрибуты, которые упрощают
отладку. Можно, например, прервать
обработку интерпретаторной программы,
отобразить содержимое определенных
переменных, бегло просмотреть программу,
а затем продолжить исполнение.

Больше
всего программистам нравится в
интерпретаторах возможность получения
быстрого ответа. Здесь нет необходимости
в компилировании, так как интерпретатор
всегда готов для вмешательства в вашу
программу. Введите RUN и результат вашего
самого последнего изменения оказывается
на экране.

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

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

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

Рассмотрим
программу: на интерпретаторном Бэйсике
10 FOR N=1 TO 1000 20 PRINT N,SQR(N) 30

NEXT
N при первом переходе по этой программе
Бейсик-Интерпретатор должен разгадать
что означает строка 20:

1.преобразовать
числовую переменную N в строку

2.послать
строку на экран

3.переместить
в следующую зону печати

4.вычислить
квадратный корень из N

5.преобразовать
результат в строку

6.послать
строку на экран

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

1.2.
Компиляторы

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

2.
КЛАССИФИКАЦИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ

2.1.
Машинно – ориентированные языки

Машинно
– ориентированные языки
– это языки, наборы операторов и
изобразительные средства которых
существенно зависят от особенностей
ЭВМ (внутреннего языка, структуры памяти
и т.д.). Машинно –ориентированные языки
позволяют использовать все возможности
и особенности Машинно – зависимых
языков:

  • высокое
    качество создаваемых программ
    (компактность и скорость выполнения);

  • возможность
    использования конкретных аппаратных
    ресурсов;

  • предсказуемость
    объектного кода и заказов памяти;

  • для
    составления эффективных программ
    необходимо знать систему команд и
    особенности функционирования данной
    ЭВМ;

  • трудоемкость
    процесса составления программ ( особенно
    на машинных языках и ЯСК), плохо
    защищенного от появления ошибок;

  • низкая
    скорость программирования;

  • невозможность
    непосредственного использования
    программ, составленных на этих языках,
    на ЭВМ других типов.

Машинно-ориентированные
языки по степени автоматического
программирования подразделяются на
классы.

2.1.1.
Машинный язык

Как
я уже упоминал, в введении, отдельный
компьютер имеет свой определенный
Машинный
язык (далее
МЯ),
ему предписывают выполнение указываемых
операций над определяемыми ими операндами,
поэтому МЯ
является командным. Однако, некоторые
семейства ЭВМ (например, ЕС ЭВМ, IBM/370/
и др.) имеют единый МЯ
для ЭВМ разной мощности. В команде любого
из них сообщается информация о
местонахождении операндов и типе
выполняемой операции.

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

      1. Языки
        Символического Кодирования

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

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

      1. Автокоды

Есть
также языки, включающие в себя все
возможности ЯСК,
посредством расширенного введения
макрокоманд
– они
называются Автокоды.

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

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

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

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

Развитые
автокоды получили название Ассемблеры.
Сервисные программы и пр., как правило,
составлены на языках типа Ассемблер.
Более полная информация об языке
Ассемблера
см. ниже.

      1. Макрос

Язык,
являющийся средством для замены
последовательности символов описывающих
выполнение требуемых действий ЭВМ на
более сжатую форму – называется Макрос
(средство замены).

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

Макрос
одинаково может работать, как с
программами, так и с данными.

    1. Машинно
      – независимые языки

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

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

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

2.2.1.
Проблемно – ориентированные языки

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

Проблемных
языков очень много, например:

Фортран,
Алгол
– языки, созданные для решения
математических задач;

Simula,
Слэнг
– для моделирования;

Лисп,
Снобол
– для работы со списочными структурами.

Об
этих языках я расскажу дальше.

      1. Универсальные
        языки

Универсальные
языки
были созданы для широкого круга задач:
коммерческих, научных, моделирования
и т.д. Первый универсальный язык был
разработан фирмой IBM,
ставший в последовательности языков
Пл/1.
Второй по мощности универсальный язык
называется Алгол-68.
Он позволяет работать с символами,
разрядами, числами с фиксированной и
плавающей запятой. Пл/1
имеет развитую систему операторов для
управления форматами, для работы с
полями переменной длины, с данными
организованными в сложные структуры,
и для эффективного использования каналов
связи. Язык учитывает включенные во
многие машины возможности прерывания
и имеет соответствующие операторы.
Предусмотрена возможность параллельного
выполнение участков программ.

Программы
в Пл/1
компилируются с помощью автоматических
процедур. Язык использует многие свойства
Фортрана,
Алгола, Кобола.
Однако он допускает не только динамическое,
но и управляемое и статистическое
распределения памяти.

2.2.3.
Диалоговые языки

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

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

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

Одним
из примеров диалоговых языков является
Бэйсик.

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

2.2.4.
Непроцедурные языки

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

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

Табличные
методы легко осваиваются специалистами
любых профессий.

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

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

    1. Ассемблер

Язык
Ассемблера
– это символическое представление
машинного языка. Он облегчает процесс
программирования по сравнению с
программированием в машинных кодах.

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

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

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

Умея
разобраться в распечатке языка ассемблера,
дает возможность облегчить поиск ошибок
в программах, т.к. некоторые языки
являются компиляторами (см. п. 1.2.).


    1. Лисп


Один
из самых старых языков программирования
Фортран был создан в 50-х гг. нашего века.
Фортран
и подобные ему языки программирования
(Алгол,
ПЛ/1)
предназначались для решения вычислительных
задач, возникающих в математике, физике,
инженерных расчетах, экономике и т.п.
Эти языки в основном работают с числами.

Второй
старейший язык программирования Лисп
(List
Information
Symbol
Processing),
Дж. Маккарти в 1962 г. скорее для работы
со строками символов, нежели для работы
с числами. Это особое предназначение
Лиспа
открыло для программистов новую область
деятельности, известную ныне, как
«искусственный интеллект». В настоящее
время Лисп
успешно применяется в экспертных
системах, системах аналитических
вычислений и т.п.

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

Существование
множества различных диалектов Лиспа
привело к созданию в начале 80-х гг. Common
LISP
Комитета, который должен был выбрать
наиболее подходящий диалект Лиспа
и предложить его в качестве основного.
Этот диалект, выбранный Комитетом в
1985г., получил название Common
LISP
. В дальнейшем он был принят в университетах
США, а также многими разработчиками
систем искусственного интеллекта, в
качестве основного диалекта языка Лисп.

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

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

Профессор
Массачусетского технологического
института Дж. Самман заметил, что
математическая ясность и предельная
четкость Лиспа
– это еще не все. Главное – Лисп
позволяет сформулировать и запомнить
«идиомы», столь характерные для проектов
по искусственному интеллекту.

3.3.
Фортран

Одним
из первых и наиболее удачных компиляторов
стал язык Фортран,
разработанный фирмой IBM.
Профессор Дж. Букс и группа американских
специалистов в области программирования
в 1954 году опубликовало первое сообщение
о языке. Дословно, название языка FORmulae
TRANslation
–преобразование формул.

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

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

Модификация
языка Фортран,
появившиеся в 1958 году, получила название
Фортран
II
и содержала понятие подпрограммы и
общих переменных для обеспечения связи
между сегментами.

К
1962 году относится появление языка,
известного под именем Фортран
IV
и ставшего наиболее употребительным в
настоящее время. К этому же времени
относится и начало деятельности комиссии
при Американской Ассоциации Стандартов
(ASA),
которая выработала к 1966 году два стандарта
– языки Фортран
и базисный (основной) Фортран
(Basic
FORTRAN).
Эти языки приблизительно соответствуют
модификациям IV
и II,
однако базисный Фортран является
подмножеством Фортрана, в то время, как
Фортран
II
таковым для Фортрана
IV
не является. Язык Фортран
до сих пор продолжает развиваться и
совершенствоваться, оказывая влияние
на создание и развитие других языков.
Например, Фортран
заложен в основу Basic
– диалогового языка, очень популярного
для решения небольших задач, превосходного
языка для обучения навыкам использования
алгоритмических языков в практике
программирования. Разработан этот язык
– Beginner’s
All
–purpose
Symbolic
Instruction
Code
– группой сотрудников Вычислительного
центра Дармутского колледжа, штат
Нью-Хемпшир созданный в 19…. . Но это уже
следующий язык.

3.4.
Бейсик

Как
знаменитые гамбургеры, бейсбол и
баскетбол, Бейсик
– это продукт Новой Англии. Как я говорил,
созданный в 1964г., как язык обучения
программированию. Бейсик
является общепринятым акронимом
от”Beginner’s
All-purpose
Symbolic
Insruction
Code”
(BASIC)
– Многоцелевой
Символический
Обучающий
Код
для Начинающих”.

Вскоре
как обучаемые, так и авторы программ
обнаружили, что Бейсик
может делать практически все то, что
делает скучный неуклюжий Фортран.
А так как Бейсику
было легко обучиться и легко с ним
работать, программы на нем писались
обычно быстрее, чем на Фортране.
Бейсик
был также доступен на персональных
компьютерах, обычно он встроен в ПЗУ.
Так Бейсик
завоевал популярность. Интересно, что
спустя 20 лет после изобретения Бейсика,
он и сегодня самый простой для освоения
из десятков языков общецелевого
программирования, имеющихся в распоряжении
любителей программирования. Более того,
он прекрасно справляется с работой.

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

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

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

Более
того, с появлением транслятора QuickBasic
фирмы Microsoft
разработчики получили возможность
строить на Бейсике
приложения из раздельно откомпилированных
модулей, некоторые из которых могут
быть написаны на других языках. Теперь,
как и в случае других ведущих языков
программирования, разработчик имеет
выбор из нескольких промышленных
библиотек подпрограмм, которые содержат
готовые решения для распространенных
задач программирования.

    1. Рефал

Несомненно
надо рассказать и о некоторых языках
программирования созданных у нас на
родине. Один из таких языков является
Рефал,
разработанный у нас в России (СССР), в
1966г. ИПМ АН СССР. Этот язык прост и удобен
для описания манипуляций над произвольными
текстовыми объектами.

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

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

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

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

программы.

3.6. Пролог
и Пролог ++

Пролог

это язык, предназначенный для поиска
решений. Это декларативный язык, то есть
формальная постановка задачи может
быть использована для ее решения. Пролог
определяет
логические отношения в задаче, как
отличные от пошагового решения этой
задачи.

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

Все
свойства языка по-прежнему доступны
программистам. Следовательно, Пролог
++
можно отнести к группе гибридных языков,
представителями которой считаются
Object
Pascal
и C++.
Расширение Пролог
++ поддерживает все свойства, присущие
обычно объектно-ориентированным языкам:
концепции объектов и классов, единичное
и многократное наследование, разбиение
на подклассы и передачу сообщений.
Поддерживаются также некоторые
усовершенствованные свойства, существующие
в таких языках, как C++
и Smalltalk,
включая общие и частные методы.

Интересным
свойством является поддержка в языке
программирования с управлением данными.
Эта техника, которая может быть еще
названа программированием, “управляемым
событиями”, используется в большинстве
языков объектно-ориентированного
программирования, особенно в тех, которые
разработаны для машин с интерфейсом,
управляемым “мышью”.

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

Сам
язык основан на концепции передачи
сообщений. Программа на Прологе
++
строится вокруг множества объектов
Пролога
++,
которые обмениваются сообщениями. В
этом смысле Пролог
++
ближе к чистому объектно-ориентированному
языку, такому, как Smalltalk,
чем C++
или Object
Pascal.
Определения объектов строятся исходя
из вызовов

Open_Object
[имя_объекта]

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

    1. Лекс

Лекс

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

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

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

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

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

3.8.

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

Си
– это
замечательный язык, и хотя некоторым
он не нравится, но все же большинство
программистов его любят. На Си
вы можете создавать программы, которые
делают все, что вы пожелаете. Нет другого
такого языка, который бы так же стимулировал
к программированию. Создается впечатление,
что остальные языки программирования
воздвигают искусственные препятствия
для творчества, а Си
– нет. Использование этого языка
позволяет сократить затраты времени
на создание работающих программ. Си
позволяет программировать быстро,
эффективно и предсказуемо. Еще одно
преимущество Си
заключается в том, что он позволяет
использовать все возможности вашей
ЭВМ. Этот язык создан программистом для
использования другими программистами,
чего о других языках программирования
сказать нельзя.

      1. Особенности
        языка Си

Язык
Си
имеет свои существенные особенности,
давайте перечислим некоторые из них:

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

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

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

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

      1. Недостатки
        языка Си:

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

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

    1. Си++

Безусловно,
Си++
восходит,
главным образом, к Cи.

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

Название
Си++

изобретение лета 1983-его. Более ранние
версии языка использовались начиная с
1980-ого и были известны как “
с Классами
“.
Первоначально язык был придуман потому,
что автор хотел написать событийно
управляемые модели для чего был бы
идеален Simula67,
если не принимать во внимание эффективность.

с Классами

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

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

Название
Си++
выдумал
Рик Масситти. Название указывает на
эволюционную природу перехода к нему
от Cи.
“++”
– это операция приращения в Cи.
Чуть более короткое имя Cи+
является синтаксической ошибкой, кроме
того, оно уже было использовано как имя
совсем другого языка. Знатоки семантики

находят, что Си++
хуже,
чем Cи
++.
Названия D
язык не получил, поскольку он является
расширением Cи
и
в нем не делается попыток исцелиться
от проблем путем выбрасывания различных
особенностей.

Си++

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

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

В
качестве базового языка для Си++
был
выбран Cи,
потому что он:

  • многоцелевой,
    лаконичный и относительно низкого
    уровня:

  • отвечает
    большинству задач системного
    программирования:

  • идет
    везде и на всем:

  • пригоден
    в среде программирования UNIX.

В

есть свои сложности, но в наспех
спроектированном языке тоже были бы
свои, а сложности Cи
нам известны. Самое главное, работа с

позволила “
с Классами

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

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

  • есть
    миллионы строк на Cи,
    которые могли бы принести пользу в Си++
    при
    условии, что их не нужно было бы полностью
    переписывать с Cи
    на Си++;

  • есть
    сотни тысяч строк библиотечных функций
    и сервисных программ, написанных на Cи
    которые можно было бы использовать из
    или на Си++
    при
    условии, что Си++
    полностью
    совместим с Cи
    по загрузке и синтаксически очень похож
    на Cи;

  • есть
    десятки тысяч программистов, которые
    знают Cи,
    и которым, поэтому, нужно только научиться
    использовать новые особенности Си++,
    а не заново изучать его основы;

  • поскольку
    Си++
    и

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

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

Си++
был
развит из языка программирования Cи
и за очень немногими исключениями
сохраняет Cи
как подмножество. Базовый язык, Cи
подмножество Си++,
спроектирован так, что имеется очень
близкое соответствие между его типами,
операциями и операторами и компьютерными
объектами, с которыми непосредственно
приходится иметь дело: числами, символами
и адресами. За исключением операций
свободной памяти new и delete, отдельные
выражения и операторы Си++
обычно
не нуждаются в скрытой поддержке во
время выполнения или подпрограммах.

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

Особое
внимание, уделенное при разработке Си++
структуре,
отразилось на возрастании масштаба
программ, написанных со времени разработки
Cи.
Маленькую программу (меньше 1000 строк)
вы можете заставить работать с помощью
грубой силы, даже нарушая все правила
хорошего стиля. Для программ больших
размеров это не совсем так. Если программа
в 10 000 строк имеет плохую структуру, то
вы обнаружите, что новые ошибки появляются
так же быстро, как удаляются старые.
Си++
был
разработан так, чтобы дать возможность
разумным образом структурировать
большие программы таким образом, чтобы
для одного человека не было непомерным
справляться с программами в 25 000 строк.
Существуют программы гораздо больших
размеров, однако те, которые работают,
в целом, как оказывается, состоят из
большого числа почти независимых частей,
размер каждой из которых намного ниже
указанных пределов.

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

3.9.1.
Замечание по проекту языка Си++

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

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

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

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

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

4.
ЗАКЛЮЧЕНИЕ.

Изобретение
языка программирования высшего уровня
позволило нам общаться с машиной,
понимать её (если конечно Вам знаком
используемый язык), как понимает
американец немного знакомый с русским
языком древнюю азбуку Кириллицы. Проще
говоря, мы в нашем развитии науки
программирования пока что с ЭВМ на ВЫ.
Поверьте мне это не сарказм вы только
посмотрите как развилась наука
программирования с того времени, как
появились языки программирования, а
ведь язык программирования высшего
уровня, судя по всему ещё младенец. Но
если мы обратим внимание на темпы роста
и развития новейших технологий в области
программирования, то можно предположить,
что в ближайшем будущем, человеческие
познания в этой сфере, помогут произвести
на свет языки, умеющие принимать,
обрабатывать и передавать информации
в виде мысли, слова, звука или жеста. Так
и хочется назвать это детище
компьютеризированного будущего: «языки
программирования “высочайшего”
уровня». Возможно, концепция решения
этого вопроса проста, а ближайшее будущее
этого проекта уже не за горами, и в этот
момент, где нибудь в Запорожье, Амстердаме,
Токио или Иерусалиме, перед стареньким
133MHz
горбится молодой, никем не признанный
специалист и разрабатывает новейшую
систему искусственного интеллекта,
которая наконец-то позволит человеку,
с помощью своих машинных языков, вести
диалог с машиной на ТЫ.

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

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

Единственный
способ изучать новый язык программирования
– писать на нём программы.

Брайэн Керниган


5.
БИБЛИОГРАФИЯ

1)
“LEX – генератор программ лексического
анализа”

Давидов
Михаил Изгияевич; Антонов Вадим
Геннадьевич

МОСКВА
– 1985;

2)
“BASIC Face-off”, Justin J.Crom,

PC
Tech Journal, September 1987, p.136

Перевод:
Лопухов В.Н. (Интегратор Promt98);

3)
“Язык программирования Си.” Б.В.
Керниган, Д. Ритчи, А. Фьюэр.

Русский
перевод: Москва: Финансы и Статистика.
1985 г.;

4)
“Основы автоматизации” ч.1, Золотарев
В.В., 1978 г.;

5)
“Языки программирования” кн.5, Ваулин
А.С., 1993 г.;

6)
“Языки программирования: разработка
и реализация”,

П.
Терренс, 1979 г.;

7)
“Введение в программирование на языке
Ассемблер”

ч.1,
Касвандс Э.Г.;

8)
“Языки программирования высокого
уровня”,

Хротко
Г., 1982 г.;

9)
“Языки программирования”,

Малютин
Э.А., Малютина Л.В., 1982 г.;

10)
“Новые языки программирования и
тенденции их развития”, Ушкова В., 1982
г.;

11)
“Мир Лиспа” т.1, Хьювенен Э., Сеппенен
Й., 1990 г.;

12)
“Алгоритмические языки реального
времени”, Янг С., 1985 г..

Содержание:

ВВЕДЕНИЕ

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

В настоящий момент количество языков программирования с трудом поддаётся подсчёту. К примеру “The Language List” – интернет ресурс, содержащий перечень языков программирования с кратким описанием и областью применения – нассчитывает две с половиной тысячи наименований[1]. При таком многообразии сложно ожидать даже от, к примеру, Full Stack вэб-разработчика[2], что он сможет написать сервис на любом из языков, ведь владение даже одним-двумя требует времени на изучение и постоянной практики.

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

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

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

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

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

1.1. Понятие языков программирования

Язык программирования – это система обозначений, служащая для точного описания программ или алгоритмов для ЭВМ. Языки программирования являются искусственными языками. От естественных языков они отличаются ограниченным числом “слов” и очень строгими правилами записи команд (операторов). Поэтому при применении их по назначению они не допускают свободного толкования выражений, характерного для естественного языка.

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

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

Основные требования, предъявляемые к языкам программирования:

  • наглядность – использование в языке по возможности уже существующих символов, хорошо известных и понятных не только программистам, но и пользователям ЭВМ;
  • единство – использование одних и тех же символов для обозначения одних и тех же или схожих понятий в разных частях алгоритма. А также минимализация количества этих символов;
  • гибкость – возможность при помощи имеющегося в языке ограниченного набора изобразительных средств достаточно просто и удобно описать распространенные приемы математических вычислений;
  • модульность – возможность описать сложный алгоритм в виде совокупности простых модулей. А модули, в свою очередь, должны быть составлены отдельно и использованы в различных сложных алгоритмах;
  • однозначность – недвусмысленность записи любого алгоритма. Отсутствие ее могло бы привести к неправильным ответам при решении задач[3].

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

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

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

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

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

  • машинные;
  • машинно-оpиентиpованные (ассемблеры);
  • машинно-независимые (языки высокого уровня).

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

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

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

Компилятор переводит весь текст программы на машинный язык и сохраняет его в исполняемом файле (обычно такому файлу присваивается расширение .exe).

Системы объектно-ориентированного программирования содержат программу-транслятор и позволяют работать в режиме как интерпретатора, так и компилятора. На этапе разработки и отладки проекта используется режим интерпретатора, а для получения готовой программы уже режим компилятора[6].

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

Языки программирования можно классифицировать по различным критериям. Ниже представлены несколько примеров деления языков на типы, в зависимости от способа выполнения, от отношения к созданию процесса, по степени автономности и др.

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

  • компилируемые;
  • интерпретируемые;
  • компилируемые на основе псевдокода;
  • совмещенные.

Компилируемые языки. К этой группе можно отнести такие языки программирования, у которых исходный код преобразуется специальной программой-компилятором в объектные модули. Затем эти модули собираются при помощи программы сборки (линковщика) в единый загружаемый модуль. Это представляет собой выполняемую программу. К компилируемыми относятся: C, C++, Object Pascal.

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

Языки, компилируемые на основе псевдокода («шитого» кода). В них исходный код программы компилируется и выполняется как последовательность вызовов подпрограмм из существующих библиотек. К таковым относятся некоторые версии языка Basic.

Совмещенные языки. В совмещенных языках исходный код проходит две стадии обработки. На первой стадии происходит компиляция исходного кода до уровня промежуточного языка (байт-код в Java или язык MSIL в технологии .NET). На второй стадии происходит либо интерпретация промежуточного кода (в Java этим занимается виртуальная машина Java) либо докомпиляция промежуточного кода до выполняемого машинного кода (в технологии .NET такую функцию осуществляет среда выполнения CLR).

Другим критерием для деления языков можно назвать факт создания процесса. По факту создания процесса языки программирования делятся на:

  • создающие процесс;
  • сценарные.

Языки создающие процесс. После запуска программы создается отдельный процесс выполнения этой программы. Это характерно для языков: C, C++, Object Pascal.

Сценарные языки. Сценарий (скрипт) – это программа, которую выполняет другая программа. В качестве примеров можно привести скрипты оболочки в UNIX, программы на языках PHP, Python, Ruby.

По степени автономности языки программирования можно разделить на:

  • автономные;
  • встроенные.

Автономные языки программирования (например, C, C++, Java) являются автономным инструментом для создания программ, способных выполняться в различных средах.

Встроенные языки программирования являются частью какой-то системы и позволяют создавать программы, предназначенные для работы только в этой системе. Примерами встроенных языков являются:

  • VBA (Visual Basic for Application), который используется только внутри приложений Microsoft Office для автоматизации и расширения их функциональности;
  • Язык программирования системы 1С;
  • Язык Lua – мультипарадигменный динамический язык.

По уровню отдаленности языка программирования от естественных языков их делят на:

  • низкоуровневые;
  • высокоуровневые.

Языки низкого уровня ближе к логике процессора вычислительной машины, например, машинный язык, ассемблер.

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

По парадигмам языки программирования делятся на:

  • императивные (процедурные);
  • функциональные;
  • логические;
  • объектно-ориентированные.

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

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

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

Объектно-ориентированные языки способны определять абстрактные типы данных и реализовывать основные парадигмы объектно-ориентированного программирования (ООП): инкапсуляцию, наследование и полиморфизм. Сейчас объектно-ориентированные языки достаточно широко распространены. Объектно-ориентированной парадигме следуют, к примеру, программисты на C++, Java, Object Pascal и др.[7].

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

1.3. История развития языков программирования

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

Рассмаривая историю разваития языков программирования, можно выделить следующие этапы:

1. Появление машинного языка (40е-50е г.г. XX в.).

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

2. Ассемблер (начало 50-ых годов XX в.).

Вместо 1 (единиц) и 0 (нулей) программисты теперь могли пользоваться операторами (MOV, ADD, SUB и т.д.), которые походили на английские слова. Программы на ассемблере также являются машинно-зависимыми. Для преобразования в машинный код используется компилятор (специальная программа осуществляющая перевод команд в машинный код).

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

С середины 50-ых гг. XX в. начали появляться первые языки программирования высокого уровня (high-level language). Эти языки были машино независимыми (то есть не были привязаны к определённому типу ЭВМ). Однако для каждого языка разрабатывались собственные компиляторы.

Примеры таких языков:

  • FORTRAN (FORmula TRANslator, 1954 г.) был предназначен для научных и технических расчетов;
  • COBOL (Common Business-Oriented Language, 1959 г.) предназначался в основном для коммерческих приложений и служил для обработки больших объемов нечисловых данных;
  • BASIC (Beginner’s All Purpose Instuction Code, 1964 г.) – является универсальным языком символьных инструкций для начинающих.

4. Алгоритмические языки программирования.

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

К этим языкам относятся:

  • язык Pascal (назван его создателем Никлаусом Виртом в честь великого физика Блеза Паскаля, 1970 г.);
  • язык Си (1971 г.), позволяющий быстро и эффективно создавать программный код.

5. Языки объектно-ориентированного программирования (90-ые г. XX в.).

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

  • язык С++ (1983 г.) – продолжение алгоритмического языка Си;
  • язык Object Pascal (1989 г.) был создан на основе языка Pascal после создания среды программирования – Delphi (1995 г.);
  • язык Visual Basic (1991 г.) был создан корпорацией Microsoft на основе языка Qbasic (1975 г.) для разработки приложений с графическим интерфейсом в среде ОС Windows.

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

В 90-ые годы XX в. в связи с бурным развитием Интернета были созданы языки, обеспечивающие межплатформенную совместимость. На подключенных к Интернету компьютерах с различными операционными системами (Windows, Linux, Mac OS и др.) необходимо было иметь возможность выполнять одни и те же программы. Для этих целей исходная программа компилируется в промежуточный код, который исполняется на компьютере встроенной в браузер виртуальной машиной. К языкам, позволяющим создавать подобные программы относятся:

  • язык Java (1995 г.) – объектно-ориентированный язык был разработан фирмой Sun Microsystems для создания сетевого программного обеспечения;
  • язык JavaScript (1995 г.) – язык сценариев Web-страниц (компания Netscape).

7. Языки программирования на платформе .NET.

Интегрированная среда программирования Visual Studio .Net, разработанная корпорацией Microsoft, позволяет создавать приложения на различных языках объектно-ориентированного программирования, в том числе:

  • на языке Visual Basic .Net ( на основе Visual Basic) – 2003 г.;
  • на языке Visual C# (С-шарп) – на основе языков С++ и J – 2003 г.;
  • на языке Visual J# (J-шарп) – на основе Java и JavaScript – 2003 г.

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

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

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

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

2.1. Распространённость языков программирования

Как видно из Параграфа 1.2. Главы 1 – некоторые языки программирования создавались для написания программ для различных, особенных сред, другие же подходят для создания программ схожего функционала в смежных областях применения.

Некоторые языки программирования можно использовать для создания программ в одной и той же среде. Однако некоторые из них используются чаще других. В Параграфе 2.1. Главы 2. предпринята попытка разобраться с тем, какой язык программирования наиболее популярен в современном мире и почему.

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

Stack Overflow[8] в 2017 году для составления рейтинга самых поулярных языков опросил 64 000 разработчиков. Голоса распределились следующим образом:

  • JavaScript – 62.5%
  • SQL – 51.2%
  • Java – 39.7%
  • C# – 34.1%
  • Python – 32.0%
  • PHP – 28.1%
  • C++ – 22.3%
  • C – 19.0%
  • TypeScript – 9.5%
  • Ruby – 9.1%
  • Swift – 6.5%
  • Objective-C – 6.4%
  • VB.NET – 6.2%
  • Assembly – 5.0%
  • R – 4.5%
  • Perl – 4.3%
  • VBA – 4.3%
  • Matlab – 4.3%
  • Go – 4.3%
  • Scala – 3.6%
  • Groovy – 3.3%
  • CoffeeScript – 3.3%
  • Visual Basic 6 – 2.9%
  • Lua – 2.8%
  • Haskell – 1.8%

Здесь лидером стал JavaScript — на нем программирует 62,5% опрошенных. Однако стоит учесть, что 72,6% респондентов занимаются веб-разработкой[9], а это, в свою очередь, значительно влияет на результаты, ведь языки наиболее подходящие для веб-разработки окажутся далеко не столь востребованными для мобильных разработчиков.

Другие крупные ресурсы иначе подошли к составлению рейтинга. GitHUB[10] (крупнейший веб-сервис для хостинга IT-проектов и их совместной разработки) представил собственное исследование за 2018 год. В опубликованном рейтинге самых популярных языков программирования GitHUB приводит различную статистику.

Например, можно найти оценку по числу pull-запросов (учли даже первый pull-запрос Линуса Торвальдса). В этом рейтинге с большим отрывом лидирует опять-таки JavaScript (2,3 миллиона запросов). За ним следует Python — 1 миллион. Также в пятерку входят Java, Ruby и PHP.

А также по количеству репозиториев. Здесь самыми популярными языками стали JavaScript, Java, Python, PHP и Ruby. (см. График 1. Изменения количества репозиториев языков программирования по годам)

A close up of a map

Description automatically generated

График 1. Изменения количества репозиториев языков программирования по годам

По числу программистов вновь лидирует JavaScript, Java, Python. Сильно потерял позиции Ruby — он упал с пятой на десятую строку, а Objective-C вообще вылетел из десятки. Его место занял TypeScript, который за год поднялся с 10 на 7 место. (см. График 2. Изменение количества программистов по языкам программирования)

A close up of text on a white background

Description automatically generated

График 2. Изменение количества программистов по языкам программирования

Существуют рейтинги, которые принимают в расчет сразу несколько параметров для оценки популярности. TIOBE[11] учитывает количество специалистов, обучающих курсов, независимых поставщиков и поисковых запросов. Пятерка лидеров здесь выглядит уже иначе:

  • Java
  • C
  • C++
  • C#
  • Python
  • JavaScript

Другой рейтинг – IEEE[12] учитывает количество поисковых запросов, проектов на GitHub, а также упоминания в твиттере, на Stack Overflow, Reddit, Hacker News, CareerBuilder, Dice и IEEE Xplore. Интересно, что в нем на пятом месте расположился язык R, а JavaScript оказался на 8 месте[13]. (см. Диаграмму 1. Топ-10 языков по рейтингу IEE)

A screenshot of a cell phone

Description automatically generated

Диаграмма 1. Топ-10 языков по рейтингу IEE

2.2. Востребованность языков программирования в различных областях разработки

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

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

Приведём список наиболее распространённых языков, с описанием областей их применепния:

C (Cи)

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

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

C++

Название этого языка программирования не зря так похоже на C. C++ — это «улучшенный C», но в результате такого улучшения получился достаточно непростой в изучении и, как многие считают, и в применении язык, который, тем не менее, остается востребованным уже очень много лет. «Си плюс плюс» — это пропуск в мир разработки всего, что должно работать максимально быстро. Игры, поисковые системы, антивирусы – это только очень краткий список того, что сегодня разрабатывают с помощью C++.

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

C#

Еще один потомок языка C, разработанный корпорацией Microsoft для своей платформы .NET. В отличие от C++, курсы C# подойдут и тем, кто только начинает программировать. На C# (си-шарп) сегодня создают программы для Windows, пишут Web-приложения, также на нём разрабатывались и мобильные приложения для Windows Phone, хотя в настоящее время Microsoft скорее забросила свою мобильную операционную систему.

Objective C

Четвертый (только в данном списке) язык программирования, авторы которого вдохновлялись языком Си. Но при этом он стоит особняком от остальных «наследников Си», ведь когда-то его выбрала в качестве основного инструмента корпорация Apple. Поэтому Objective C применяется практически только для программирования под MacOS и iOS, но в связи с популярностью продуктов данной компании спрос на разработчиков, использующих Objective C, довольно высок. Впрочем, относительно недавно Apple выпустила новый язык, и, вероятно, в недалёком будущем он сможет заменить Objective C. К тому же сложность написания программного обеспечения на нем довольно высока.

Swift

На смену не всегда удобному и вызывающему немало нареканий у разработчиков Objective C компания Apple выпустила новый язык программирования – Swift. Пока что нельзя сказать, чтобы он совсем уж заменил своего предшественника в разработке под iOS и MacOS, но популярность Swift во всех рейтингах стабильно растет, в то время как популярность Objective C так же стабильно падает. Можно сделать вывод, что для разработчика, желающего в будущем программировать приложения для Apple-устройств, вполне можно сразу садиться за изучение Swift, не тратя время на Objective C.

PHP

Некогда самый популярный язык для написания сайтов и Web-приложений, сегодня PHP уже выглядит несколько устаревшим, особенно когда речь заходит о больших проектах для международных рынков.

Тем не менее, благодаря простоте освоения и большому количеству небольших проектов, PHP можно рекомендовать в качестве первого языка для изучения даже тем, кто не имеет ни малейшего представления о программировании вообще. Карьерные перспективы у PHP-разработчиков пока что тоже достаточно неплохи, потому что существует большое количество проектов, ранее уже написанных на PHP, и нуждающихся, как минимум, в поддержке. Хотя при этом зарплата даже у высококвалифицированного PHP-разработчика будет ниже, чем у его коллеги, имеющего аналогичный по продолжительности опыт работы, но разрабатывающего на C++ или Java.

Java

Второй по популярности язык программирования в мире, который применяется так же широко, как C++, но не имеет большинства его недостатков. На Java ведётся и разработка больших высоконагруженных продуктов для гигантских транснациональных компаний, и небольших приложений и даже мобильных игры для платфомры Android. Программисты, пишущие код на Java, востребованы во всем мире. Также Java уже много лет остается одной из самых хорошо оплачиваемых массовых специальностей для разработчиков. При этом вероятность того, что в обозримом будущем Java исчезнет из списка востребованных специальностей, ничтожно мала. С другой стороны, изучение Java требует гораздо больше времени и усилий, чем изучение вышеназванного же PHP.

JavaScript

Этот язык часто путают с Java, и неудивительно – когда-то название ему выбрали на волне популярности платформы Java, и с тех под JavaScript постоянно борется за звание настоящего самостоятельного языка. Сегодня, кажется, это уже в прошлом, потому что именно JavaScript – самый популярный язык программирования в мире. Своей популярностью он обязан, конечно, развитию Web, ведь именно JavaScript используется для написания Front-end (браузерной части) интерактивных Web-приложений, делающих браузер полноценным рабочим инструментом, не уступающим таким приложениям для Windows как Word, Excel и пр.

К тому же сегодня JavaScript (часто пишут сокращенно JS) используется и для серверного программирования, и количество новых сфер применения этого языка растет буквально с каждым годом. При этом порог вхождения в профессию здесь заметно ниже, чем в случае с Java, а зарплаты могут быть часто на том же уровне. Всё это делает JavaScript сегодня – одним из самых популярных языков для старта карьеры программиста.

Python

Еще один достаточно универсальный и относительно несложный для изучения язык. Python (он же питон, хотя правильно читается как «пайтон») прочно утвердился в очень и очень перспективной области, которую называют data mining. Говоря упрощенно – это применение различных данных, накопленных в бизнесе, для поиска скрытых закономерностей спроса и возможностей развития бизнеса. Также Python активно используется для написания Web-сервисов, серверной части многопользовательских игр и многих других задач. Спрос на Python-разработчиков довольно быстро растет.

R

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

Scratch

Scratch – это даже не язык, а среда визуального программирования, придуманная для обучения программированию детей. Поэтому 99% курсов Scratch адресованы детям довольно юного возраста. Курсы Scratch – отличный вариант, чтобы заинтересовать программированием детей 7-12 лет.

Ruby

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

Delphi

Еще пять-семь лет назад именно Delphi был стандартным первым языком программирования —ведь язык Pascal, который является предшественником Delphi, и был придуман для обучения школьников и студентов программированию. Но для реальной жизни Delphi подходит уже не очень хорошо, поскольку разработка на нём оплачивается заметно ниже среднего, а новых крупных проектов на этом языке практически нет.

ActionScript

Ещё один язык уходящий в прошлое – ActionScript был (да и остается) языком платформы Adobe Flash, на которой еще недавно была написана половина игр для Web. Сегодня уже Flash – это пережиток прошлого, и ActionScript тоже нужен разве что для поддержки всего того, что было раньше написано на Flash’е.

VBA

Язык программирования макросов для пакета Microsoft Office. VBA расшифровывается как Visual Basic for Applications, и используется для автоматизации рутинных действий в офисных пакетах. Программистов на VBA на рынке труда никто не ищет, и вряд ли будет искать в обозримом будущем, однако знание этого языка может оказаться весьма полезным дополнительным инструментом.

1C

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

Подытоживая изложенное выше: для начинающих изучат программирование, самыми перспективными языками являются JavaScrip, Java, Python, 1С, Swift и C#. Но, конечно, это не значит, что остальные языки второсортные или неподходящие. Главное – это стремление к цели и упорный труд, которые обязательно будут вознаграждены по достоинству, ведь высококвалифицированный специалист сможет использовать язык программирования как незаменимый инструмент в работе.

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

К примеру, обратимся к исследованию Stack Overflow — «Какие языки ассоциируются у вас с высокой зарплатой?». Вот первая десятка языков со среднегодовой зарплатой специалистов:

  • F# — 74 000 $;
  • Ocalm — 73 000 $;
  • Clojure — 72 000 $;
  • Groovy — 72 000 $;
  • Perl — 69 000 $;
  • Rust — 69 000 $;
  • Erlang — 67 000 $;
  • Scala — 67 000 $;
  • Go — 67 000 $;
  • Ruby — 64 000 $.

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

Остановимся подробнее на Российском рынке. К примеру на Хабре (крупнейший в Европе ресурс для IT-специалистов, издаваемый компанией «ТМ») каждый год можно найти рейтинг востребованности специалистов по тому или иному языку программирования, основываясь на количестве вакансий, а также на зарплатах. Рассмотрим данные за 2018 год.

Ниже представлен рейтинг языков по количеству вакансий, размещённых на HeadHunter – одном из крупнейших агрегаторов вакансий в России (см. График 3. Топ-20 языков по количеству вакансий). Стоит отметить, что в количестве вакансий по JavaScript могут учитываться вакансии с названиями вида «Python-разработчик», если JS где-то в теле таких вакансий упомянут. JS и SQL в статистике ниже абсолютные лидеры, т. к. их чаще прочих указывают в дополнение с пометкой «будет плюсом».

A screenshot of a cell phone

Description automatically generated

График 3. Топ-20 языков по количеству вакансий

Несомненно не менее интересно посмотреть и на средние зарплаты специалистов по тому или иному языку (см. Таблица 1. Зарплаты разработчиков по убыванию). В таблице указаны зарплаты предлагаемые (взяты из вакансий) — без скобок, и ожидаемые (взяты из резюме) в скобках. Значения приведены в тысячах рублей, медианные. Данные отсортированы по убыванию предлагаемых зарплат. У fortran везде указано “Н/Д” — это значит, что тридцати вакансий (минимум для анализа) с указанной зарплатой по ним не нашлось в 2018 году.[14]

A screenshot of a cell phone

Description automatically generated

Таблица 1. Зарплаты разработчиков по убыванию

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

ЗАКЛЮЧЕНИЕ

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

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

Можно посмотреть на рейтинг популярности и на количество вакансий для специалистов по языкам программирования.

Можно обратить внимание не на количество вакансий, а на уровень зарплат.

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

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

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

СПИСОК ИСТОЧНИКОВ

  1. Информатика/Курносов А.П., Кулев С.А., Улезько А.В. и др.; Под ред. А.П. Курносова.-М.: КолосС, 2005.
  2. Информатика: Базовый курс /Семакин И.А., Залогова Л., Русаков С., Шестакова Л. – Москва: БИНОМ., 2005.
  3. Информатика: Учебник для вузов. Н.В. Макарова, В.Б. Волков. – СПб.: Питер, 2011.
  4. Каким должен быть Full Stack-веб-разработчик? Егор Малышев. https://jetbrains.ru/careers/requirements/full-stack-web-developer/
  5. Наиболее востребованные языки программирования – 2018. Nkvlk. – https://habr.com/ru/company/hh/blog/418079/
  6. Язык программирования. Материал из Википедии — свободной энциклопедии https://ru.wikipedia.org/wiki/Язык_программирования
  7. GitHUB Top languages over time https://octoverse.github.com/projects
  8. IEEE he Top Programming Languages 2016 – https://spectrum.ieee.org/static/interactive-the-top-programming-languages-2016
  9. Stack Overflow Developer Survey Results. Most Popular Technologies – https://insights.stackoverflow.com/survey/2017
  10. Stack Overflow Developer Survey Results. Developer Roles – https://insights.stackoverflow.com/survey/2017
  11. The Language List. Maintained by Bill Kinnersley https://web.archive.org/web/20040612042127/http://people.ku.edu/~nkinners/LangList/Extras/langlist.htm
  1. The Language List. Maintained by Bill Kinnersley https://web.archive.org/web/20040612042127/http://people.ku.edu/~nkinners/LangList/Extras/langlist.htm ↑

  2. Каким должен быть Full Stack-веб-разработчик? Егор Малышев. https://jetbrains.ru/careers/requirements/full-stack-web-developer/ ↑

  3. Информатика/Курносов А.П., Кулев С.А., Улезько А.В. и др.; Под ред. А.П. Курносова.-М.: КолосС, 2005. ↑

  4. The Language List. Maintained by Bill Kinnersley https://web.archive.org/web/20040612042127/http://people.ku.edu/~nkinners/LangList/Extras/langlist.htm ↑

  5. Язык программирования. Материал из Википедии — свободной энциклопедии https://ru.wikipedia.org/wiki/Язык_программирования ↑

  6. Информатика: Базовый курс /Семакин И.А., Залогова Л., Русаков С., Шестакова Л. – Москва: БИНОМ.,2005. ↑

  7. Информатика: Учебник для вузов. Н.В. Макарова, В.Б. Волков. – СПб.: Питер, 2011. (С. 557-559) ↑

  8. Stack Overflow Developer Survey Results. Most Popular Technologies – https://insights.stackoverflow.com/survey/2017 ↑

  9. Stack Overflow Developer Survey Results. Developer Roles – https://insights.stackoverflow.com/survey/2017 ↑

  10. GitHUB Top languages over time https://octoverse.github.com/projects ↑

  11. TIOBE Index for August 2019 – https://www.tiobe.com/tiobe-index// ↑

  12. IEEE Top Programming Languages: Design, Methods, and Data Sources – https://spectrum.ieee.org/ns/IEEE_TPL_2016/methods.html ↑

  13. IEEE he Top Programming Languages 2016 – https://spectrum.ieee.org/static/interactive-the-top-programming-languages-2016 ↑

  14. Nkvlk. Наиболее востребованные языки программирования – 2018 – https://habr.com/ru/company/hh/blog/418079/ ↑

СПИСОК ДЛЯ ТРЕНИРОВКИ ССЫЛОК

  • Повышения производительности труда в компании: совершенствование мотивации работников»
  • Логистический менеджмент и задачи оптимизации,которые он решает в фирме
  • Корпоративная культура в организации и совершенствования (Теоретические аспекты формирования, поддержания и совершенствования))
  • Проблема оценивания учебной деятельности младших школьников в России
  • Стратегическое планирование интегрированных коммуникаций (На примере Skyteam ).
  • Проведение маркетингового исследования на рынке товаров потребительского назначение (на примере мясных продуктов ООО «Максимовское мясо»)
  • Анализ реализации операций бизнес-процесса
  • Использование электронных образовательных ресурсов в образовательном процессе
  • Управление поведением в конфликтных ситуациях (ТЕОРЕТИЧЕСКИЕ ОСНОВЫ УПРАВЛЕНИЯ КОНФЛИКТАМИ НА ПРЕДПРИЯТИИ В СОВРЕМЕННЫХ УСЛОВИЯХ)
  • Управление поведением в конфликтных ситуациях( ТЕОРЕТИЧЕСКИЕ АСПЕКТЫ УПРАВЛЕНИЯ КОНФЛИКТАМИ В ОРГАНИЗАЦИИ)
  • Организация познавательной деятельности младших школьников»
  • Проектирование реализации операций бизнес-процесса «Ведение договоров по страхованию автотранспортных средств».

Реферат: Языки программирования понятие и виды

СОДЕРЖАНИЕ

1. Оглавление

СОДЕРЖАНИЕ. 1

2.Введение. 2

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

4.Этапы решения задачи на ЭВМ.5

5.Для чего нужны языки программирования. 7

6.Какие существуют языки программирования. 9

1.1. Фортран. 9

1.2. Алгол. 10

1.3. Кобол. 11

1.4. Лисп. 12

1.5. Бейсик. 14

1.6. Форт. 15

1.7. Паскаль. 16

1.8. Ада. 17

1.9. Си. 19

1.10Пролог. 20

1.11Java. 22

1.12Object Pascal23

1.13Система визуального объектно-ориентированного проектирования Delphi.25

7.Список литературы:36

1. Введение

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

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

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

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

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

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

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

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

· Исполнение: язык программирования может использовать специальные конструкции для определения и манипулирования структурами данных и управления процессом вычислений.

3. Этапы решения задачи на ЭВМ.

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

Постановка задачи. Этот этап заключается в содержательной (физической) постановке задачи и определении конечных решений.

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

Разработка ЧМ. Поскольку ЭВМ может выполнять лишь простейшие операции, она «не понимает» постановки задачи, даже в математической формулировке. Для ее решения должен быть найден численный метод, позволяющий свести задачу к некоторому вычислительному алгоритму. В каждом конкретном случае необходимо выбрать подходящее решение из уже разработанных стандартных.

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

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

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

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

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

4. Для чего нужны языки программирования

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

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

Всё множество языков программирования можно разделить на две группы: языки низкого уровня и языки высокого уровня.

К языкам низкого уровня относятся языки ассемблера (от англ. toassemble – собирать, компоновать). В языке ассемблера используются символьные обозначения команд, которые легко понятны и быстро запоминаются. Вместо последовательности двоичных кодов команд записываются их символьные обозначения, а вместо двоичных адресов данных, используемых при выполнении команды, — символьные имена этих данных, выбранные программистом. Иногда язык ассемблера называют мнемокодом или автокодом.

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

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

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

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

1.1 Фортран

Языки программирования стали появляться уже с середины 50-х годов. Одним из первых языков такого типа стал язык Фортран (англ. FORTRAN от FORmulaTRANslator – переводчик формул), разработанный в 1957 году. Фортран применяется для описания алгоритма решения научно-технических задач с помощью ЦВМ. Так же, как и первые вычислительные машины, этот язык предназначался, в основном, для проведения естественно-научных и математических расчётов. В усовершенствованном виде этот язык сохранился до нашего времени. Среди современных языков высокого уровня он является одним из наиболее используемых при проведении научных исследований. Наиболее распространены варианты Фортран-II, Фортран-IV, EASICFortran и их обобщения.

1.2 Алгол

После Фортрана в 1958-1960 годах появился язык Алгол (Алгол-58, Алгол-60) (англ. ALGOL от ALGOrithmicLanguage – алгоритмический язык). Алгол был усовершенствован в 1964-1968 годах – Алгол-68. Алгол был разработан комитетом, в который входили европейские и американские учёные. Он относится к языкам высокого уровня (high-level language) и позволяет легко переводить алгебраические формулы в программные команды. Алгол был популярен в Европе, в том числе СССР, в то время как сравнимый с ним Фортран был распространен в США и Канаде. Алгол оказал заметное влияние на все разработанные позднее языки программирования, и, в частности, на язык Pascal. Этот язык так же, как и Фортран, предназначался для решения научно-технических задач. Кроме того, этот язык применялся как средство обучения основам программирования – искусства составления программ.

Обычно под понятием Алгол подразумевается язык Алгол-60, в то время как Алгол-68 рассматривается как самостоятельный язык. Даже когда язык Алгол почти перестал использоваться для программирования, он ещё оставался официальным языком для публикации алгоритмов.

1.3 Кобол

В 1959 – 1960 годах был разработан язык Кобол (англ. COBOL от COmmom Business Oriented Language – общий язык, ориентированный на бизнес). Это язык программирования третьего поколения, предназначенный, в первую очередь, для разработки бизнес приложений. Также Кобол предназначался для решения экономических задач, обработки данных для банков, страховых компаний и других учреждений подобного рода. Разработчиком первого единого стандарта Кобола являлась Грейс Хоппер (бабушка Кобола ).

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

1.4 Лисп

Почти одновременно с Коболом (1959 – 1960 гг.) в Массачусетском технологическом институте был создан язык Лисп (англ. LISP от LIStProcessing – обработка списков). Лисп основан на представлении программы системой линейных списков символов, которые притом являются основной структурой данных языка. Лисп считается вторым после Фортрана старейшим высокоуровневым языком программирования. Этот язык широко используется для обработки символьной информации и применяется для создания программного обеспечения, имитирующего деятельность человеческого мозга.

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

Основной смысл Лисп-программы «жизнь» в символьном пространстве: перемещение, творчество, запоминание, создание новых миров и т.д. Лисп как метафора мозга, символ, метафора сигнала: «Как происходит биологический анализ сигналов мозгом, как внешний фактор — физическое и химическое воздействие, являющееся для организма раздражителем превращается в биологически значимый сигнал, зачастую жизненно важный, определяющий все поведение человека или животного; и как происходит разделение разных сигналов на положительные, отрицательные и безразличные, индифферентные. Сигнал это уже интегративное понятие. Он представляет собой опознавательный знак группы, комплексных раздражителей, связанных между собой общей историей и причинно следственными отношениями. В этом комплексе, системе раздражителей, сигнальный стимул сам является также составляющим элементом и при иных обстоятельствах его роль может принадлежать другому стимулу из комплекса. В сигнале концентрируется весь прошлый опыт животного или человека.

1.5 Бейсик

В середине 60-х годов (1963 г.) в Дартмутском колледже (США) был создан язык Бейсик (англ. BASIC от Beginner’s Allpurpose Instruction Code – всецелевой символический код инструкций для начинающих). Со временем, когда стали появляться другие диалекты, этот «изначальный» диалект стали называть Dartmouth BASIC. Язык был основан частично на Фортран II и частично на Алгол-60, с добавлениями, делающими его удобным для работы в режиме разделения времени и, позднее, обработки текста и матричной арифметики. Первоначально Бейсик был реализован на мейнфрейме GE-265 с поддержкой множества терминалов. Вопреки распространённому убеждению, в момент своего появления это был компилируемый язык.

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

1.6 Форт

В конце 60-х – начале 70-х годов появился язык Форт (англ. FOURTH – четвёртый). Этот язык стал применяться в задачах управления различными системами после того, как его автор Чарльз Мур написал на нём программу, предназначенную для управления радиотелескопом Аризонской обсерватории.

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

1.7 Паскаль

Появившийся в 1972 году язык Паскаль был назван так в честь великого французского математика XVII века, изобретателя первой в мире арифметической машины Блеза Паскаля. Этот язык был создан швейцарским учёным, специалистом в области информатики Никлаусом Виртом как язык для обучения методам программирования. Паскаль – это язык программирования общего назначения.

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

Язык Паскаль учит не только тому, как правильно написать программу, но и тому, как правильно разработать метод решения задачи, подобрать способы представления и организации данных, используемых в задаче. С 1983 года язык Паскаль введён в учебные курсы информатики средних школ США.

1.8 Ада

В 1983 году под эгидой Министерства Обороны США был создан язык Ada. Язык замечателен тем, что очень много ошибок может быть выявлено на этапе компиляции. Кроме того, поддерживаются многие аспекты программирования, которые часто отдаются на откуп операционной системе (параллелизм, обработка исключений). В 1995 году был принят стандарт языка Ada 95, который развивает предыдущую версию, добавляя в нее объекно-ориентированность и исправляя некоторые неточности. Оба этих языка не получили широкого распространения вне военных и прочих крупномасштабных проектов (авиация, железнодорожные перевозки). Основной причиной является сложность освоения языка и достаточно громоздкий синтаксис.

Непосредственными предшественниками Ada являются Pascal и его производные, включая Euclid, Lis, Mesa, Modula и Sue. Были использованы некоторые концепции ALGOL-68, Simula, CLU и Alphard.

Разработчики Ada прежде всего беспокоились о:

· надежности и эксплуатационных качествах программ;

· программировании как разновидности человеческой деятельности;

· эффективности.

В табл. 1 приведены основные характеристики языка Ada с точки зрения объектного подхода.

Абстракции Переменные экземпляра
Методы экземпляра
Переменные класса
Методы класса
Да
Да
Нет
Нет
Инкапсуляция Переменных
Методов
Открытые, закрытые
Открытые, закрытые
Модульность Разновидности модулей Пакет
Иерархии Наследование
Шаблоны
Метаклассы
Нет (входит в Ada9x)
Да
Нет
Типизация Сильная типизация
Полиморфизм
Да
Нет (входит в Ada9x)
Параллельность Многозадачность Да
Сохраняемость Долгоживущие объекты Нет

Таблица 1. Ada.

1.9 Си

В настоящее время популярным среди программистов является язык Си (С – буква английского алфавита). Язык Си берёт своё начало от двух языков — BCPL и B. В 1967 году Мартин Ричардс разработал BCPL как язык для написания системного программного обеспечения и компиляторов. В 1970 году Кен Томпсон использовал В для создания ранних версий операционной системы UNIX на компьютере DEC PDP-7. Как в BCPL, так и в В переменные не разделялись на типы — каждое значение данных занимало одно слово в памяти и ответственность на различение, например, целых и действительных чисел целиком ложилась на плечи программиста.Язык Си был разработан (на основе В) Деннисом Ритчи из Bell Laboratories и впервые был реализован в 1972 году на компьютере DEC PDP-11. Известность Си получил в качестве языка ОС UNIX. Сегодня практически все основные операционные системы были написаны на Си или С++. По прошествии двух десятилетий Си имеется в наличии на большинстве компьютеров. Он не зависит от аппаратной части.В конце 70-х годов Си превратился в то, что мы называем «традиционный Си». В 1983 году Американским комитетом национальных стандартов в области компьютеров и обработкиинформации был учрежден единый стандарт этого языка. Этот язык имеет богатые средства, позволяет писать гибкие программы, использующие все возможности современных персональных компьютеров.

1.10 Пролог

Ещё один язык, который считается языком будущего, был создан в начале 70-х годов группой специалистов Марсельского университета. Это язык Пролог. Своё название он получил от слов «ПРОграммирование на языке ЛОГики». В основе этого языка лежат законы математической логики. Как и язык Лисп, Пролог применяется, в основном, при проведении исследований в области программной имитации деятельности мозга человека. В отличие от описанных выше языков, этот язык не является алгоритмическим. Он относится к так называемым дескриптивным (от англ. descriptive – описательный) – описательным языкам. Дескриптивный язык не требует от программиста разработки всех этапов выполнения задачи. Вместо этого, в соответствии с правилами такого языка, программист должен описать базу данных, соответствующую решаемой задаче, и набор вопросов, на которые нужно получить ответы, используя данные из этой базы.

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

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

Первый объектно-ориентированный язык Simula -67 был создан как средство моделирования работы различных приборов и механизмов. Большинство современных языков программирования – объектно-ориентированные. Среди них последние версии языка Turbo Pascal , C ++, Ada и другие.

В настоящее время широко используются системы визуального программирования Visual Basic , Visual C ++, Delphi и другие. Они позволяют создавать сложные прикладные пакеты, обладающие простым и удобным пользовательским интерфейсом.

1.11 Java

С 1995 года стал широко распространяться новый объектно-ориентированный язык программирования Java, ориентированный на сети компьютеров и, прежде всего, на Internet. Синтаксис этого языка напоминает синтаксис языка C++, однако эти языки имеют мало общего. Java интерпретируемый язык: для него определены внутреннее представление (bytecode) и интерпретатор этого представления, которые уже сейчас реализованы на большинстве платформ. Интерпретатор упрощает отладку программ, написанных на языке Java, обеспечивает их переносимость на новые платформы и адаптируемость к новым окружениям. Он позволяет исключить влияние программ, написанных на языке Java, на другие программы и файлы, имеющиеся на новой платформе, и тем самым обеспечить безопасность при выполнении этих программ. Эти свойства языка Java позволяют использовать его как основной язык программирования для программ, распространяемых по сетям (в частности, по сети Internet).

1.12 Object Pascal

Object Pascal создавался сотрудниками компании Apple Computer (некоторые из которых были участниками проекта Smalltalk) совместно с Никлаусом Виртом (Niklaus Wirth), создателем языка Pascal. Object Pascal известен с 1986 года и является первым объектно-ориентированным языком программирования, который был включен в Macintosh Programmer’s Workshop (MPW), среду разработки для компьютеров Macintosh фирмы Apple.

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

В табл. 2 приведены общие характеристики Object Pascal.

Абстракции Переменные экземпляра
Методы экземпляра
Переменные класса
Методы класса
Да
Да
Нет
Нет
Инкапсуляция Переменных
Методов
Открытые
Открытые
Модульность Разновидности модулей Модуль (unit)
Иерархии Наследование
Шаблоны
Метаклассы
Одиночное
Нет
Нет
Типизация Сильная типизация
Полиморфизм
Да
Да (одиночный)
Параллельность Многозадачность Нет
Сохраняемость Долгоживущие объекты Нет

Таблица 2. Object Pascal.

В последние годы этот язык стал очень популярен благодаря системе Delphi фирмы Borland.

1.13 Система визуального объектно-ориентированного проектирования Delphi.

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

Система Delphi позволяет решать множество задач, в частности:

· Создавать законченные приложения для Windows самой различной направленности: от чисто вычислительных и логических, до графических и мультимедиа.

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

· Создавать мощные системы работы с локальными и удаленными базами данных

· Создавать справочные системы (файлы .hlp) для своих приложений и мн. др.

Delphi – чрезвычайно быстро развивающаяся система. Первая версия – Delphi 1.0 была выпущена в феврале 1995 г. А затем новые версии выпускались ежегодно.

Каждая последующая версия Delphi дополняла предыдущую.Большинство версий Delphi выпускается в нескольких вариантах: Standart – стандартном, Professional – профессиональном, Client/Server – клиент/сервер, Enterprise – разработка баз данных предметных областей. Различаются варианты в основном разным уровнем доступа к системам управления базами данных. Последние варианты — Client/Server и Enterprise, в этом отношении наиболее мощные.

Delphi — это комбинация нескольких важнейших технологий:

· Высокопроизводительный компилятор в машинный код

· Объектно-ориентированная модель компонент

· Визуальное (а, следовательно, и скоростное) построение приложений из программных прототипов

· Масштабируемые средства для построения баз данных

Структура экрана в среде Delphi.

После вызова Delphi в Windows появляются несколько окон (рис 1.):

-главное окно,

-окно формы,

-окно инспектора объектов,

-окно дерева объектов,

-окно кода программы.

Рис1. Структура экрана в среде Delphi.

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

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

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

Окно Object Inspector — это окно, отображающее свойства либо формы, либо размещенного на форме объекта. В нашем случае текущим компонентом является форма, поэтому на рисунке окно свойств показывает свойства формы.

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

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

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

Проекты Delphi. Проект Delphiсостоит изформ, модулей, установок параметров проекта, ресурсов и т.д.Вся эта информация размещается в файлах. Многие из этих файлов автоматически создаются Delphi, когда вы строите ваше приложение. Ресурсы, такие как битовые матрицы, пиктограммы и т.д., находятся в файлах, которые вы получаете из других источников или создаете при помощи многочисленных инструментов и редакторов ресурсов, имеющихся в вашем распоряжении. Кроме того, компилятор также создает файлы.

Создающиеся в процессе проектирования файлы показаны в табл. 3.

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

Файл проекта (.dpr) Этот текстовый файл используется для хранения информации о формах и модулях. В нем содержатся операторы инициализации и запуска программ на выполнение
Файл модуля (.pas) Каждой создаваемой вами форме соответствует текстовый файл модуля, используемый для хранения кода. Можно создавать модули, не связанные с формами. Многие из функций и процедур Delphi хранятся в модулях.
Файл формы (.dfm) Это двоичный или текстовый файл, который создается Delphi для хранения информации о формах. Каждому файлу формы соответствует файл модуля (.pas)
Файл параметров проекта(.dfo) В этом файле хранятся установки параметров проекта
Файл ресурсов(.res) Этот бинарный файл содержит используемую проектом пиктограмму и прочие ресурсы
Файлы резервных копий (.~dpr, .~dfm, .~pas) Это соответственно файлы резервных копий для файлов проекта, формы и модуля. Если что-то безнадежно испорчено в проекте, можно соответственно изменить расширения этих файлов и таким образом вернуться к предыдущему не испорченному варианту
Файлконфигурации окон (.dsk) Файл хранит конфигурацию всех окон среды разработки
Исполняемыйфайл (.exe) Это исполняемый файл приложения. Он является автономным исполняемым файлом, для которого больше ничего не требуется, если только не используются библиотеки, содержащиеся в DLL, OCX и т.д.
Объектный файлмодуля (.dcu) Это откомпилированный файл модуля (.pas), который компонуется в окончательный исполняемый файл.

Таблица 3. Файлы, создающиеся в процессе проектирования.

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

Дерево эволюции программирования

Рисунок 1Дерево эволюции программирования

6. Список литературы:

1. И.Т. Зарецкая, Б.Г. Колодяжный, А.Н. Гуржий, А.Ю. Соколов. Информатика 10-11 класс. — К.: «Форум», 2001 г.

1. Структура экрана в среде Delphi (http://textbook.keldysh.ru/distant/delphi/del_2.htm)

2. Патрикеев Ю. Н. «Объектно-ориентированное проектирование» (http://www.object.newmail.ru/oop1.html)

3. С. Немнюгин, Л. Перколаб «Изучаем TurboPascal» — СПб.: Питер, 2002.

2. Х.М. Дейтел. Как программировать на С. – М.: «Бином», 2000 г.

3. Интернет-страница: ru.wikipedia.org/wiki/LISP

.

27

Реферат
на тему:

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



Стр.

1.Введение————————————————————————-3

1.1.
Интерпретаторы———————————————————–4

1.2.
Компиляторы————————————————————–5

2.
Классификация языков
программирования—————————–6

2.1.
Машинно – ориентированные
языки———————————6

2.1.1.
Машинные
языки————————————————-7

2.1.2.
Языки символического
кодирования————————-7

2.1.3.
Автокоды———————————————————–8

2.1.4.
Макрос————————————————————–8

2.2.
Машинно – независимые языки
——
——————————–9

2.2.1.
Машинно – независимые
языки——————————–9

2.2.2.
Универсальные
языки——————————————-10

2.2.3.
Диалоговые
языки————————————————10

2.2.4.
Непроцедурные
языки——————————————-11

3.
Развитие языков
программирования————————————–11

3.1.
Ассемблер——————————————————————11

3.2.
Лисп————————————————————————-12

3.3.
Фортран———————————————————————13

3.4.
Бейсик————————————————————————14

3.5.
Рефал————————————————————————-15

3.6.
Пролог и
Пролог++——————————————————–16

3.7.
Лекс—————————————————————————17

3.8.
Си——————————————————————————18

3.8.1.
Особенности языка
Си———————————————18

3.8.2.
Недостатки языка
Си———————————————–19

3.9.
Си++—————————————————————————20

3.9.1.
Замечание по проекту языка
Си++——————————-23

4.
Заключение———————————————————————–25

5.
Библиография
——————————————————————-26

        1. 1. Введение

Язык
формирует наш

способ

мышления
и определяет то,

о
чем мы можем мыслить.

Б.Л
Ворф

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

Язык
программирования служит двум связанным
между собой целям: он дает программисту
аппарат для задания действий, которые
должны быть выполнены, и формирует
концепции, которыми пользуется
программист, размышляя о том, что делать.
Первой цели идеально отвечает язык,
который настолько “близок к машине”,
что всеми основными машинными аспектами
можно легко и просто оперировать
достаточно очевидным для программиста
образом. Второй цели идеально отвечает
язык, который настолько “близок к
решаемой задаче”, чтобы концепции ее
решения можно было выражать прямо и
коротко.

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

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

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

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

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

Соседние файлы в предмете Информационные системы

  • #
  • #
  • #
  • #
  • #
  • #
  • #